Monster stat development


By treetrunk 15 Oct 2015 10:35

New member · 4 comments

I originally posted this over on github, but ShadowApex mentioned that it may be better discussed over here, so I'll be transferring over out conversation.

Here is what I initially said:

I have been thinking a little bit about this and reading up on Pokemon's IVs and EVs. Here's my idea:

For built in monster nature, we could have something like this:

nature_points {  # median range is -2 to 2
  'hp': [-2, -1, 0],
  'attack': [1, 2, 3],
  'defense': [-1, 0, 1], 
  'speed': [-3, -2, -1],
  'special_attack': [0, 1, 2],
  'special_defense': [-1, 0, 1]

Nature points would be fairly simple and similar to IVs. First an array will be generated randomly of numbers from -2 to +2. This array, when the medians are added together must equal 0 for monsters caught in the wild/traded for. Maybe legendaries will be allowed to have a total of +2 or 4 or something. Regardless, this array of numbers will then be randomly assigned to the available positions in the example above. This will be done upon monster creation and remain static. Then these numbers will be referenced during a level up to modify the new stat total. The equation might look like this: new_stat = old_stat * 0.1 + random.choice(nature_points[stat]) * (level / 10)

And then for actual battle experience modifiers we could have something like this:

battle_points { # Can range from 1 to 300
  'hp': 0,
  'attack': 0,
  'defense': 0, 
  'speed': 0,
  'special_attack': 0,
  'special_defense': 0

So this would work more so as a tally system and similar to EVs. Basically, these are points that are gained when defeating an opponent, or using stat increasing items. They are to represent the training/practice that the monster had in each area. When you defeat an enemy you will receive a number of battle points in the field that the enemy has the highest battle points in. The number of battle points you receive is determined as follows:

    1BP - if opponent is stage 1 or less than level 15
    2BP - if opponent is stage 2 or level 16 to 35
    3BP - if opponent is stage 3 or greater than level 35

These points would continue to tally throughout the monster's lifetime, and would not reset each level up. They will not be referenced when leveling up, but instead they will be checked each time an attack is made with that specific monster in battle. When referenced the code will divide the points for each stat by 4 and the result will be used in conjunction with the monsters current value of the corresponding stat. This means that every 4 BPs count as a +1 to the corresponding stat and the max bonus you can get from BPs on a single stat is 75 (= 300 / 4). To reach the maximum BPs in a single stat it would take 150 successful battles against monsters strong in that stat.

I did derive some elements from EVs and IVs, but I think it is far enough removed to call our own too. Sorry its so long. I kind of wanted to post it before I did anything for reference and to hear thoughts about it. I'll go ahead and put it together so you can try it out. In the meantime though, let me know what you think.

I realized after posting the last comment that Nature pooints would actually have to be preset and the same for all instances of that monster in the game (e.g. all rockittens have the same nature points). This way you can simulate traits of specific monsters. And then if we want to get crazy, we can add a personality modifier to it as well.

ShadowApex responded with this:

First, do you think you could repost this to I think it would give this idea more exposure to the community and I'd love to hear others input on the leveling system as well.

I really like this idea. Were you thinking of having a cap on the total number of BPs you could get overall? For example, could you max out the BPs on all stats, or would you only have a total of 300 BPs or something to distribute amongst all of the stats? I think having a finite amount of BPs would be interesting. That way, for example, you could spec your monster into ALL defense or something, but you wouldn't be able to spec in all the other stats as well.

Another thing I think would be cool, and would also further deviate us away from the EV and IV system, would be to also influence your monster's BPs through the particular moves your monster uses. Something similar to how the Elder's Scrolls series games level up your skills in a particular area the more you use them. It just feels logically that if a monster kept using a certain kind of attack (like special attacks vs physical attacks, or fire vs water attacks, etc.) they would get better at using those kinds of attacks. This kind of system could even be separate from the BP system, but affect the damage calculations or leveling.

What do you think?

Last edited by treetrunk (15 Oct 2015 13:05)


By treetrunk 15 Oct 2015 11:07

New member · 4 comments

In response to ShadowApex:

My thought wasn't to have a cap on BPs, with the thinking that with enough training you could max out the monster in all stats, but I guess that does seem unrealistic and would probably take forever. If we do put a cap on total BPs, it should probably be something like 600 or 900. That way, you could max out 2 or 3 theoretically before running out of BPs. Also because I don't think it would take terribly long to gain 300 BPs total since every fight with that monster would count towards it and give you an average of 2 BPs, depending on the opponents level of course. That's roughly 150 battles.

The thought of incorporating used techniques into the stat development is pretty cool. I do like the Elder Scrolls style of leveling individual skills. In that case, it might be worth scrapping the BPs upon victory and instead we could do something like 1 BP for each time a technique is used. That BP would go into it's respective stat whether it be one of the traditional ones (attack, defense, speed...) or attack type stats (water, fire, physical...) Maybe a dual type system would have to be set for each move. The first being the traditional stat and the second being the type of damage. Then when the move is used, one BP could be placed in each of those categories. The math for it would probably need to be adjusted as you would gain BPs much faster, but that wouldn't be hard to do.


By treetrunk 15 Oct 2015 14:33

New member · 4 comments

I just added the Nature Points to my monster_stats branch on github. If you want to test it out to get a feel for the math, you can download it here: … Every time the stats are updated, they will print out in the terminal (Note: when a monster is created, stats are updated once for each level between 0 and the monster's current level).


By ShadowApex 16 Oct 2015 00:03

Lead Developer · 374 comments

I also agree that a 600-900 BP limit would be pretty good. That way people can have relatively diverse kinds of builds that they can choose to work on. Doing 1 BP for each kind of technique used sounds pretty good. I think if we can translate it to the same roughly 150 battles needed to max up a stat, it would work well. We just need to find out the average number of techniques used in an normal battle and extrapolate from there.