• 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.

[Scripting Question] Stat Multipliers depending on 'Modes'

Pokeminer20

PDM20, Coder of Chaos!
412
Posts
10
Years
  • I plan on making a mechanic where when a Pokemon has a certain 'mode' as I am calling it, it's base stats get multiplied. for example:
    if (Pokemon) is Shiny -> Stats = BaseStats X 2
    if (Pokemon) is Shadow -> Stats = Basestats X 4
    if (Pokemon) is (Custom Mode) -> Stats = Basestats X 6
    I found something similar in Pokemon Empyrean with it's card system but I'm unsure how they did it. any help would be appreciated, because the alternative is making multiform calls with each individual stat for each Pokemon.

    P.S. what I call a "Mode" is just a way of saying Shadow Pokemon, Shiny Pokemon, and Normal Pokemon
     
    1,403
    Posts
    10
    Years
    • Seen Apr 29, 2024
    Seems like the most sensible place to try and hook into things would be PokeBattle_Pokemon. Hopefully there's a def for each stat and you can simply add your multipliers there, but if not it shouldn't be too tricky to work out how the stats get computed and modify that instead.
     
    1,403
    Posts
    10
    Years
    • Seen Apr 29, 2024
    Awesome! Mind sharing your solution so that anyone else who comes across this thread can use it? :)
     

    Pokeminer20

    PDM20, Coder of Chaos!
    412
    Posts
    10
    Years
  • To begin, go into PokeBattle_Pokemon and locate "def isCompatibleWithMove?(move)"
    After it, but before "#Contest Attrtibutes" Add the following.
    Code:
    Def Placeholder#Replace Placeholder with whatever you want
    #return (Number) if (Mode name)
     return 1.0
    end

    or

    Code:
    Def #Multiplier Name (Repeat this Def for each new mode you add to your game)
     return (number) if #Mode Name
     return 1.0
    end
    Def Placeholder#Replace Placeholder with whatever you want
     return 1.0 * #(All Multipler Name you add)
    end
    [The difference between the first and second one is the first only allows one 'mode' to give it's multiplier, the second lets you stack it]
    after that, locate "def calcHP" and "Def calcStats" and replace with the following

    Code:
    # Returns the maximum HP of this Pokémon.
      def calcHP(base,level,iv,ev)
        return 1 if base==1
        base= (base * Placeholder).floor
        ret = ((base*2+iv+(ev>>2))*level/100).floor+level+10
        return ret
      end
    
    # Returns the specified stat of this Pokémon (not used for total HP).
      def calcStat(base,level,iv,ev,pv)
        base= (base * Placeholder).floor
        return ((((base*2+iv+(ev>>2))*level/100).floor+5)*pv/100).floor
      end
    afterwards you will need to find a way to trigger the custom modes however you want, be it an item or debug.
     
    Last edited:
    Back
    Top