The RPG Maker Resource Kit

Other Game Creation => Game Creation General Chat => Topic started by: Andromeda on April 08, 2006, 05:13:12 AM

Title: Character exp/stats etc.
Post by: Andromeda on April 08, 2006, 05:13:12 AM
This post isn't so much that I don't know what to do, but rather if anyone has any suggestions I wouldn't mind a reply.:-D Anyway, I'm going to rebalance the stat thing (strength, agility, etc.) and make new monsters balanced with the characters growth. So at the beginning of the game (main character = thief) I want his hp to be like around 50 and I need a suggestion on what his stats should be like. Should I make strength (since he is a thief and at lvl 1) like 10 and agility like 14 or something along that lines? What do you guys think would make his stats proportional to his hp and enemies at that level. Once I figure what I should make his lvl 1 stats I'll be able to calculate the progress. Also, how much attk power should his starting dagger be so as not be overpowering? Again, I'm just looking for suggestions on what you guys (the players) think the stats should be (at start) for balance.
Title: Re: Character exp/stats etc.
Post by: Nightwolf on April 08, 2006, 06:56:14 AM
Why u post it in truoubleshooting..
which maker
Title: Re: Character exp/stats etc.
Post by: Blizzard on April 08, 2006, 11:39:45 AM
Why don
Title: Re: Character exp/stats etc.
Post by: Tyhan on April 08, 2006, 01:32:37 PM
Be sure to lower the weapon stats, they are the main damage.
Title: Re: Character exp/stats etc.
Post by: Blizzard on April 08, 2006, 01:48:36 PM
Yeah, right! And the armor stats, too! And skill stats!
Title: Re: Character exp/stats etc.
Post by: Andromeda on April 08, 2006, 03:59:12 PM
Alright I'll do that.
Title: Re: Character exp/stats etc.
Post by: dwarra on April 09, 2006, 11:06:54 AM
I tend to stick to final fantasy 9 style and have their strength start at 2 or 3.
Title: Re: Character exp/stats etc.
Post by: Erniewan on April 12, 2006, 02:47:33 PM
I am new to RPG Maker XP and I just have a basic question about the stats.  I know the different attributes are Strength, dexterity, agility, and intelligence, but what do they actually represent and how do they affect the battles exactly?  e.g. I am assuming Strength increases you attack power.  That makes for more damage in a battle.
Title: Re: Character exp/stats etc.
Post by: Anaryu on April 13, 2006, 05:05:05 PM
Quote
if hit_result == true
      # Calculate basic damage
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20
      # Element correction
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Critical correction
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        # Guard correction
        if self.guarding?
          self.damage /= 2
        end
      end
      # Dispersion
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # Second hit detection
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end

That's the code that determines a Physical "Attack" damage:

Quote
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20

What this means is that your initial "attack value" is your attack, minus half your targets PDEF, or zero, whichever value is higher. The actual DAMAGE you cause is that "attack value" * (20 + your characters strength) all divided by 20.

So...
A weapon with 100 Attack, and a character with 10 STR versus a monster with 50 PDEF will cause:
100 - (50/2) = 75
75 * (20 + 10) / 20 = 105 damage total

The rest of the lines consider in Elemental reductions/additions, and evasion.

You could just go in there and CHANGE the formulas too, you can find that code in the "Game Battler 3" section in the scripting page.




Quote
if hit_result == true
      # Calculate power
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # Calculate rate
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      # Calculate basic damage
      self.damage = power * rate / 20
      # Element correction
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Guard correction
        if self.guarding?
          self.damage /= 2
        end
      end

This is damage for a regular SKILL (magic spell, or skill, etc): (It's a bit more complicated)

Quote
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end

So first it determines the base "power" of the skill, which is done by taking the skill's Power value (We will assume 100 for this hypothetical skill), then it adds the (user.atk * skill.atk_f /100) value, let me clarify quickly:

skill.X_f is the value on the skill screen which says how much that value influences total damage; in this case, if you the skill had an ATK_F of 50, that would mean 50% of the users's atk value (from weapon) is calculated into the damage.   200 ATK * (50 / 100) => 200 ATK * 50% = 100 ATK.

So using those stats, right now the "Power" is 100 for the skill's power + 100 from the users ATK value to equal 200.

NOW it does that same % thing and applies it to the PDEF_F and MDEF_F values of the skill, for example an MDEF of 50 on this skill and a PDEF of 10 on this skill would do this: (We will assume that the monster you are attacking has 50 PDEF and 50 MDEF)
Monsters PDEF of 50 * (skills PDEF modifer of 10 / 100) = 5
Monsters MDEF of 50 * (skills MDEF modifer of 50 / 100) = 25
So after those two lines your "Power" is:
200 - 5 - 25 = 170 damage

After it does that, it takes either that number or zero, whichever is higher. (This ensures no negative damage!)

Quote
rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      ...
     self.damage = power * rate / 20

THESE lines are VERY important. These are where those other _F values on the Database page come into play. It's JUST like the one I showed above, it takes the _f value and turns it into a %, then applies that to the user's value and creates a "rate". The "rate" is basically a multiplier which, after it's calculated, will change that "power" we calculated above.

Let's assume the skill has a STR-F of 20, and an INT-F of 90, the rest are zero, your character has 50 STR and 60 INT, and a DEX of 20 and an AGI of 10.

Rate starts at 20.
Caster STR of 50 * (Skill STR-F of 20 / 100) = 50 * 20% = 10
Rate is now 20 + 10 = 30
Caster DEX of 20 * (Skill DEX-F of 0 / 100) = 20 * 0% = 0
Rate is now 30 + 0 = 30
Caster AGI of 10 * (Skill DEX-F of 0 / 100) = 10 * 0% = 0
Rate is now 30 + 0 = 30
Caster INT of 60 * (Skill INT-F of 90 / 100) = 60 * 90% = 54
Rate is now 30 + 54 = 84

Now we take the last line, self.damage = power * rate / 20

Power of 170 * Rate of 84 / 20 = 714 damage

The self.damage = power * (rate/20) will determine the almost final damage received by the monsters. Once that's calculated it will (as the rest of the lines show) do other things like apply elemental weaknesses/resists. Once that's done another script takes that damage and displays/applies it to the monster for real, possibly killing it.

Make sure you note how in the example the skill totally snowballed out of control thanks to that rate created, and also thanks to the high weapon ATK. These values can get out of control if you don't have a VERY careful mathematical idea of what and how you're doing the whole game!



I will stress that if you play with those numbers in a test project for a while, you will find ways to "tweak" your combat system to something you like, I took out all those static values and make STR, etc, all % based too, makes it REALLY easy to do math, since damage is basically your weapon's Attack value * STR/100, etc.

That makes it really easy to determine attack values and damage/armor values later in the game as well!