• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • Cyndy, May, Hero (Conquest), or Wes - which Pokémon protagonist is your favorite? Let us know by voting in our poll!
  • 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.

Anyone added Rock Climb in Essentials?

PokeVec40

Pokémon Exile Developer
  • 64
    Posts
    9
    Years
    Hey, just wanted to throw it out there:
    Has anyone made additional HM script sections for Pokémon Essentials that include the move Rock Climb? I am thinking of putting it in there myself, but can't seem to find any documentation that would make it easier.
    Does anyone know if this has already been done?

    Reply would be great!
    -PokeVec40
     
    First for each one of the scripts just search out rock climb stuff and you'll find it. remeber you are essentially copying waterfall.

    Under Settings around line 80 to 110 add the appropriate hiddenmovesbadge count for your version of Rock Climb:

    Code:
    #===============================================================================
    # * The minimum number of badges required to boost each stat of a player's
    #      Pokémon by 1.1x, while using moves in battle only.
    # * Whether the badge restriction on using certain hidden moves is either owning
    #      at least a certain number of badges (true), or owning a particular badge
    #      (false).
    # * Depending on HIDDENMOVESCOUNTBADGES, either the number of badges required to
    #      use each hidden move, or the specific badge number required to use each
    #      move.  Remember that badge 0 is the first badge, badge 1 is the second
    #      badge, etc.
    # e.g. To require the second badge, put false and 1.
    #      To require at least 2 badges, put true and 2.
    #===============================================================================
    BADGESBOOSTATTACK      = 3
    BADGESBOOSTDEFENSE     = 7
    BADGESBOOSTSPEED       = 11
    BADGESBOOSTSPATK       = 13
    BADGESBOOSTSPDEF       = 17
    HIDDENMOVESCOUNTBADGES = true
    BADGEFORCUT            = 1
    BADGEFORROCKSMASH      = 2
    BADGEFORFLY            = 3
    BADGEFORDEFOG          = 4
    BADGEFORFLASH          = 5
    BADGEFORSTRENGTH       = 6
    BADGEFORHEADBUTT       = 7
    BADGEFORSURF           = 8
    BADGEFORWATERFALL      = 9
    BADGEFORLAVASURF       = 10
    BADGEFORDIVE           = 11
    BADGEFORROCKCLIMB      = 12
    BADGEFORWHIRLPOOL      = 13
    BADGEFORDREAMEAT       = 14
    BADGEFORICICLEDANCE    = 15
    BADGEFOREXCAVATE       = 16
    BADGEFORSPIRITCHANT    = 17
    BADGEFORSHINESCENT     = 18

    Under pbterrain near the beginning, add the appropriate terrain tags for two different terrains, one for rockclimb and one for rock crest, use the next available tags. you aslo have to put in their passability under that module.

    Code:
    ################################################################################
    # Terrain tags
    ################################################################################
    module PBTerrain
      Ledge           = 1
      Grass           = 2
      Sand            = 3
      Rock            = 4
      DeepWater       = 5
      StillWater      = 6
      Water           = 7
      Waterfall       = 8
      WaterfallCrest  = 9
      TallGrass       = 10
      UnderwaterGrass = 11
      Ice             = 12
      Neutral         = 13
      SootGrass       = 14
      Bridge          = 15
      Lava            = 16
      Icicle          = 17
      RockClimb       = 18
      RockCrest       = 19
    end
    
    
    
    def pbIsSurfableTag?(tag)
      return pbIsWaterTag?(tag)
    end
    
    def pbIsPassableLavaTag?(tag)
      return tag==PBTerrain::Lava
    end
    
    def pbIsPassableIcicleTag?(tag)
      return tag==PBTerrain::Icicle
    end
    
    def pbIsPassableRockTag?(tag)
      return tag==PBTerrain::RockCrest
    end
    
    def pbIsRockTag?(tag)
      return tag==PBTerrain::RockCrest||
             tag==PBTerrain::RockClimb
    end
           
    def pbIsWaterTag?(tag)
      return tag==PBTerrain::DeepWater ||
             tag==PBTerrain::Water ||
             tag==PBTerrain::StillWater ||
             tag==PBTerrain::WaterfallCrest ||
             tag==PBTerrain::Waterfall
    end

    under PField_Field under "Events.onStepTakenFieldMovement+=proc{|sender,e|" you have to add rockclimb so it should look like this:
    Code:
    Events.onStepTakenFieldMovement+=proc{|sender,e|
      event=e[0] # Get the event affected by field movement
      currentTag=pbGetTerrainTag(event)
      if pbGetTerrainTag(event,true)==PBTerrain::Grass  # Won't show if under bridge
        $scene.spriteset.addUserAnimation(GRASS_ANIMATION_ID,event.x,event.y,true)
      elsif event==$game_player && currentTag==PBTerrain::WaterfallCrest
        # Descend waterfall, but only if this event is the player
        Kernel.pbDescendWaterfall(event)
      elsif event==$game_player && currentTag==PBTerrain::RockCrest
        # Descend RockClimb, but only if this event is the player
        Kernel.pbDescendRock(event)
      end
    }

    Under Pfield_HiddenMoves add this [litterally can be anywhere as long as its between two hidden moves and not in the middle of one] I put mine just after waterfall for easy comparison.

    Code:
    #===============================================================================
    # Rock Climb
    #===============================================================================
    
    def Kernel.pbAscendRock(event=nil)
      event=$game_player if !event
      return if !event
      return if event.direction!=8 # can't ascend if not facing up
      oldthrough=event.through
      oldmovespeed=event.move_speed
      terrain=Kernel.pbFacingTerrainTag
      return if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest
      event.through=true
      event.move_speed=2
      loop do
        event.move_up
        terrain=pbGetTerrainTag(event)
        break if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest
      end
      event.through=oldthrough
      event.move_speed=oldmovespeed
    end
    
    def Kernel.pbDescendRock(event=nil)
      event=$game_player if !event
      return if !event
      return if event.direction!=2 # Can't descend if not facing down
      oldthrough=event.through
      oldmovespeed=event.move_speed
      terrain=Kernel.pbFacingTerrainTag
      return if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest
      event.through=true
      event.move_speed=2
      loop do
        event.move_down
        terrain=pbGetTerrainTag(event)
        break if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest
      end
      event.through=oldthrough
      event.move_speed=oldmovespeed
    end
    
    def Kernel.pbRockClimb
      if $DEBUG ||
        (HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORROCKCLIMB : $Trainer.badges[BADGEFORROCKCLIMB])
        movefinder=Kernel.pbCheckMove(:ROCKCLIMB)
        if $DEBUG || movefinder
          if Kernel.pbConfirmMessage(_INTL("These rocks look like they can be climbed upon. Would you like to use Rock Climb?"))
            speciesname=!movefinder ? $Trainer.name : movefinder.name
            Kernel.pbMessage(_INTL("{1} used Rock Climb.",speciesname))
            pbHiddenMoveAnimation(movefinder)
            pbAscendRock
            return true
          end
        else
          Kernel.pbMessage(_INTL("A wall of Rock is in Front of you."))
        end
      else
        Kernel.pbMessage(_INTL("A wall of Rock is in Front of you."))
      end
      return false
    end
    
    Events.onAction+=proc{|sender,e|
       terrain=Kernel.pbFacingTerrainTag
       if terrain==PBTerrain::RockClimb
         Kernel.pbRockClimb
         return
       end
       if terrain==PBTerrain::RockCrest
         Kernel.pbMessage(_INTL("A wall of Rock is in Front of you."))
         return
       end
    }
    
    HiddenMoveHandlers::CanUseMove.add(:ROCKCLIMB,proc{|move,pkmn|
       if !$DEBUG &&
          !(HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORROCKCLIMB : $Trainer.badges[BADGEFORROCKCLIMB])
         Kernel.pbMessage(_INTL("Sorry, a new Badge is required."))
         return false
       end
       terrain=Kernel.pbFacingTerrainTag
       if terrain!=PBTerrain::RockClimb
         Kernel.pbMessage(_INTL("Can't use that here."))
         return false
       end
       return true
    })
    
    HiddenMoveHandlers::UseMove.add(:ROCKCLIMB,proc{|move,pokemon|
       if !pbHiddenMoveAnimation(pokemon)
         Kernel.pbMessage(_INTL("{1} used {2}.",pokemon.name,PBMoves.getName(move)))
       end
       Kernel.pbAscendRock
       return true
    })

    Then you need to modify items.txt in your PBS folder make sure you use the appropriate number for the item, ie the 600 won't necessarily be available if you have added more items just make it the next available number. also make sure you give it the next available HM number in my case it was 10:

    Code:
    600,HM10,HM10,4,0,"The user attacks the target by smashing into it with incredible force and confusing them. It may also be used outside of battle to traverse cliffs.",4,0,0,ROCKCLIMB

    Then you have to modify tm.txt under the PBS folder, again make sure the HM number matches in my case it was 10

    Code:
    #HM10
    [ROCKCLIMB]
    VENUSAUR,BLASTOISE,SANDSHREW,SANDSLASH,NIDOQUEEN,NIDOKING,GOLDUCK,MANKEY,PRIMEAPE,ARCANINE,POLIWRATH,MACHOP,MACHOKE,MACHAMP,GEODUDE,GRAVELER,GOLEM,ONIX,CUBONE,MAROWAK,HITMONLEE,HITMONCHAN,LICKITUNG,RHYHORN,RHYDON,CHANSEY,KANGASKHAN,ELECTABUZZ,MAGMAR,PINSIR,TAUROS,OMASTAR,KABUTOPS,SNORLAX,MEWTWO,MEW,MEGANIUM,TYPHLOSION,FERALIGATR,AMPHAROS,STEELIX,GRANBULL,URSARING,BLISSEY,RAIKOU,ENTEI,SUICUNE,TYRANITAR,SCEPTILE,BLAZIKEN,SWAMPERT,LUDICOLO,VIGOROTH,SLAKING,EXPLOUD,MAKUHITA,HARIYAMA,AGGRON,ZANGOOSE,REGIROCK,REGICE,REGISTEEL,GROUDON,TURTWIG,GROTLE,TORTERRA,CHIMCHAR,MONFERNO,INFERNAPE,EMPOLEON,BIBAREL,CRANIDOS,RAMPARDOS,GIBLE,GABITE,GARCHOMP,MUNCHLAX,LUCARIO,DRAPION,CROAGUNK,TOXICROAK,ABOMASNOW,LICKILICKY,RHYPERIOR,ELECTIVIRE,MAGMORTAR,MAMOSWINE,HEATRAN,REGIGIGAS,GIRATINA,DARKRAI,ARCEUS,VENIPEDE,WHIRLIPEDE,SCOLIPEDE,SCRAGGY,SCRAFTY,FERROTHORN,DRUDDIGON

    lastly you have to correctly tag the terrains with both rockclimb and rockcrest tags in your tiles with the same numbers you did in the pbterrain script in my case 18 and 19 respectively. you have to do this through the ingame editor, its labeled as editor.exe in your essentials folder. rpgmaker only goes upto 7 so you have to use the editor because it goes upto 99.

    before you do this you can added new tiles to your outside tileset using Paint [i will attach my tiles which I made by hand in the next post] then make sure that "white" color is still marked as transparent because the tileset transparency disappears when you modify it in paint, then mark the new tiles in the tileset with the terrain tags. if you don't know how to do this you need to look up a tutorial, me explaining that would take a whole new post.

    after you have properly tagged the terrain make sure they are both impassible [again tutorial] except make the RockCrest passable from above [again tutorial]. this will allow the player to 'fall' back down from the top of the rockclimb-able ladder like they do on a waterfall or the original rockclimb.

    then wherever you have put in the rockclimb stuff in you map make sure the bottom and middle tiles are the 'rockclimb' terrain and that the top of the rockclimb is the 'rockcrest' terrain. so it should look like this:

    rockcrest
    rockclimb
    rockclimb
    rockclimb
    normal ground terrain

    your player should be able to walk up and activate rockclimb if one of their pokemon has the move and they have the badges.
     
    the tiles are attached. the first one on the left is RockClimb terrain then RockCrest terrain. they are mostly white which allow them to be placed over any cliff terrain and not have to change the color, because they show up as mostly clear when placed on a map.
     

    Attachments

    • [PokeCommunity.com] Anyone added Rock Climb in Essentials?
      rockclimb.png
      344 bytes · Views: 152
    • [PokeCommunity.com] Anyone added Rock Climb in Essentials?
      rockcrest.png
      333 bytes · Views: 152
    Thanks, I already had a tileset working- I was doing this with events as a placeholder, but didn't think I could copy waterfall if the rocks were oriented on the X axis- guess it can.
    Also I don't think I want the player to necessarily "fall" from the crest without having the HM, so I'll do some playing with the script from here- Thanks!
     
    Keep in mind that if they can't fall back down the rock climb then they could easily get stuck up on a ledge because the rock climb and its activation only work one way.
     
    Back
    Top