• 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] [V20.1/21] How do I change SAFARI_STEPS Based on Switch Status?

  • 1
    Posts
    261
    Days
    • He/Him
    • USA
    • Seen Sep 30, 2023
    I simply want to change it to 0 if $game_switches[60] is on. I tried doing this in "settings":

    Code:
      if $game_switches[60]
        SAFARI_STEPS                               = 0
      else
        SAFARI_STEPS                               = 600
      end

    But that gives an error (Undefined method [] for nil:NilClass) that implies that game_switches[60] does not exist yet when compiling the scripts. Is there another way I can edit this value to what I want?
     

    Swdfm

    Game Developer
  • 245
    Posts
    5
    Years
    • he/him
    • UK
    • Seen Dec 8, 2023
    Hello, @the_metal_invader
    Because SAFARI_STEPS is a constant, it is essentially decided before the compiling of the game, so any changes to $game_switches would not work, even if there was no error.

    To solve this, you instead have to change the line(s) where SAFARI_STEPS is is used.
    1) Ctrl Shift F, then paste "SAFARI_STEPS" in scripts
    2) There's about six or seven times this is used. Change every instance of SAFARI_STEPS (except for the line where is it assigned (ie. the line you tried to edit)), to pbGetSafariSteps, (or another method name if you wish)
    3) Let's write the method pbGetSafariSteps:

    Code:
    # Obtains the number of steps allowed in the Safari Zone
    def pbGetSafariSteps
      # Unlimited Steps if switch 60 is on, or else  600 Steps
      return $game_switches[60] ? 0 : 600
    end

    NOTE: If you don't want to mess with the original code, you can take the methods outside of the original scripts. Consult me if you're not sure how to do this
    ADVICE: Because lots of numbers are annoying, and hard to keep track of, it might help to set switch 60 to a constant, so put:
    Code:
    UNLIMITED_SAFARI_ZONE_STEPS = 60
    somewhere, and then change the "60" in the pbGetSafariSteps method to "UNLIMITED_SAFARI_ZONE_STEPS "

    Hope this helps,
    Swdfm
     
    Back
    Top