• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Level cap (For player only) variable

IceGod64

In the Lost & Found bin!
624
Posts
15
Years
  • In my eternal effort to figure out new ways to stop the player from breaking the game by overleveling too much (like, over ten levels about the next gym leader), I've thought about giving the player a level cap that changes as the player acquires badges. If the Pokemon is under the REAL level cap (100), they should still be able to acquire EXP from battles, and keep on getting EXP even after they should've leveled up, but they won't really level until the player gets their next badge, after which, the underleveled Pokemon would level up to their real level (Asumming it doesn't go over the next level cap), learning the missed moves along the way, and getting the normal stat bonuses.

    Here are my questions:
    1: Is this a good idea? It was a spur of the moment idea, and I need opinions on this.
    2: Assuming it's not a dumb idea, how would I implement such a thing?
     

    UnderMybrella

    Wandering Programmer
    280
    Posts
    13
    Years
  • 1. It seems like a good idea, prevents people bringing a lvl 100 to the 2nd gym.
    2. To implement it would require scripting or extensive events.

    Nice idea though
    ~Anglican
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen May 3, 2024
    I don't think it is a good idea. If you're seriously worried about the average player being over-levelled, your Gyms need their levels upped. I don't think you should punish players who like to power-level.

    I wouldn't even suggest a "diminishing returns" approach, where less Exp is gained after hitting the level threshold for your current number of badges, because the normal Exp amount gained is relatively little enough as it is at that point. Strangely, discarding all excess Exp would be more suitable than saving it up (i.e. the level threshold behaves as a strict level limit which just changes throughout the game rather than remain constant).

    If you do implement this, you would be interested to know that Shadow Pokémon do the exact same thing, i.e. store excess Exp and gain it all at once later on. You would need to make a few scripts of your own to check the level threshold, and make sure (only) excess Exp gets diverted into the Exp storage pool. Rare Candy probably shouldn't be usable on a Pokémon storing its Exp, or more evilly, it should be consumed but with no effect at all.

    It'd look a bit odd defeating a Gym Leader with a Pokémon at the (old) threshold, only for that Pokémon to not gain any Exp from it (because you haven't been given the new badge yet so the old threshold still applies). If anything, I would say that Gym Leader battles should always provide Exp normally, because it's definitely an experience and it couldn't be abused for power-levelling anyway (either your Pokémon are weak and could more easily gain Exp from wild Pokémon, or are at the threshold and the Leader is intended to be beatable at that level anyway). In that vein, you may want to expand this "always normal Exp gaining" rule to all trainers, and just have the thresholds apply to Exp gained from wild Pokémon.

    Personally, if I had to choose a system, it would be that Exp from trainer battles is unaffected, and a strict level limit applies to Exp gained from wild battles. No Exp is stored, Exp from wild battles is discarded if not usable, and Rare Candy is unaffected. It's also fairly straightforward to code - I think it could be done by tweaking 3 lines and adding 1 more.
     

    IceGod64

    In the Lost & Found bin!
    624
    Posts
    15
    Years
  • Personally, if I had to choose a system, it would be that Exp from trainer battles is unaffected, and a strict level limit applies to Exp gained from wild battles. No Exp is stored, Exp from wild battles is discarded if not usable, and Rare Candy is unaffected. It's also fairly straightforward to code - I think it could be done by tweaking 3 lines and adding 1 more.

    I think you're right actually, it would be a bit to punishing to do that I suppose. Overleveling takes time and I guess that investing the extra time is part of what makes Pokemon Pokemon.

    One other thing I can think of is simply adjusting only the important battles, and upping their levels to be inline with the players. No messing around with EXP's or limits, just adjusting their party (Assuming your level is above there's). All of there Pokémon would be leveled up one at a time in a loop until the highest level Pokémon is equal to your highest level. Is this a better idea?

    May I add that your idea makes it extremely difficult to EV Train.
    If you store up the EXP, you might have to store up effort values, which I believe is impractical.

    It doesn't...
    Effort Values are not calculated in the exact same spot as EXP. I could easily add the effort values in without affecting EXP if I wanted. If I wanted to take the fun out of it, I could make the EV Gain visible by having stats recalculated after ever battle (Though I am against that because getting +40 in one level is awfully satisfactory.)
     

    pkmn.master

    Hobbyist Game Developer
    299
    Posts
    16
    Years
  • Yea, EV'ng has nothing to do with the levels of the Pokémon. I think it is a great idea. For one, you have to assume that your player will play your game for its story, and forcing the focus away from trying to overlevel would be beneficial in keeping them attached to the story, unlike those games in which players end up over-leveled. Maruno makes a good point about the disappointment that would come from no longer being able to get the exp, but this could be looked around also. I would do some kind of script that counts the exp earned after the level cap is hit, and stores it away, similar to how exp is stored on shadow Pokémon. Then, after the gym leader is beaten, that variable is called upon and the player is rewarded with any experience they didn't get, all at once.
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen May 3, 2024
    One other thing I can think of is simply adjusting only the important battles, and upping their levels to be inline with the players. No messing around with EXP's or limits, just adjusting their party (Assuming your level is above there's). All of there Pokémon would be leveled up one at a time in a loop until the highest level Pokémon is equal to your highest level. Is this a better idea?
    I think so, yes. Compared to your first idea, at least.

    There's already a method which returns a challenging level, calculated from the levels of the player's Pokémon (pbBalancedLevel($Trainer.party)). You would need to edit the script where a trainer's Pokémon are loaded (pbLoadTrainer), and have the level of each Pokémon be set not to the value of poke[1] (the level as defined in trainers.txt), but to the value of pbBalancedLevel. You could still use the defined level in a different way, such as adding it on to the result (I suggest with this that you add the level and then subtract 10, to allow weakening the trainer's Pokémon if needed), or having it as the minimum level allowed for that Pokémon.

    There are a couple of drawbacks with this. One is that the levels depend on what's in the player's party, so players could manipulate that to make their fights easier. You can also face the same Pokémon multiple times (e.g. by repeatedly losing against them) but have a different party each time, meaning their levels can fluctuate. Another might be predefined movesets, where a Pokémon could be a lower-than-expected level and know a move it couldn't legally learn yet, but that's just a matter of how pure you want to be - all the official games have hax somewhere.

    pbBalancedLevel seems to have been made for use on wild Pokémon, and while it can just as easily be used for trainers' Pokémon, that "can face the same Pokémon multiple times" problem is tricky to solve.
     

    IceGod64

    In the Lost & Found bin!
    624
    Posts
    15
    Years
  • I think so, yes. Compared to your first idea, at least.

    I think I'm going to go with my idea, where basically all of the opponent's Pokemon are leveled up until the highest level one is equal to the player's highest, though I need to think about how exactly I could make that work right.
     
    1,748
    Posts
    14
    Years
  • Why not just balance the gym's levels out? I thought there was already a subject like this before that was simply answered by saying "use the pbBalancedParty" method (or was it BalancedLevel) either way just balance the levels out a bit.
     
    Back
    Top