Coder Social home page Coder Social logo

Comments (9)

ShadowApex avatar ShadowApex commented on June 7, 2024

Yes, the modifiers were really just placeholders for a potential future design on how we might handle increasing stats upon level up. The actual stat leveling is still up for discussion and modification. The initial design was that each monster has a "base" stat (e.g. hp_base) and each time the monster leveled up, a random "mod" stat (e.g. hp_mod) would be multiplied by the base stat and added to the current stat.

Something like this when a monster levels up:

hp_base = 50
hp_mod = [0.9, 1.0, 1.1]

max_hp += (hp_base * random.choice(hp_mod))

Again, this was just a simple system I thought of when I first started the project. I'm open to any suggestions for how we handle stat leveling. It would be nice if we could come up with a system equal in depth as the EV & IV system of the original Pokemon games.

from tuxemon.

treetrnk avatar treetrnk commented on June 7, 2024

Okay cool. I have been thinking a little bit about this and reading up on 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.

from tuxemon.

treetrnk avatar treetrnk commented on June 7, 2024

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.

from tuxemon.

ShadowApex avatar ShadowApex commented on June 7, 2024

First, do you think you could repost this to forum.tuxemon.org? 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?

from tuxemon.

treetrnk avatar treetrnk commented on June 7, 2024

Good idea. I'll move it over to the forum and respond to you there.

from tuxemon.

bitcraft avatar bitcraft commented on June 7, 2024

@treetrnk How's it going with this issue? Are you still interested in tackling it?

from tuxemon.

tomwjerry avatar tomwjerry commented on June 7, 2024

Looks this have been done already?

from tuxemon.

ceo-of-insecurity avatar ceo-of-insecurity commented on June 7, 2024

This Issue haven't been touched in a while. Did anyone test it so far? I guess there's been major code changes - is this fixed? Or does this need testing?

from tuxemon.

bitcraft avatar bitcraft commented on June 7, 2024

Looking it over, to me it looks like some parts of it have been merged in, but BP is not implemented. I'm just going to close it becasue I think most of the discussion here is no longer relevant. If Anyone would want to address monster stats or BP, a new ticket can be added.

from tuxemon.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.