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

Rock Climb

zingzags

PokemonGDX creator
536
Posts
15
Years
Hey guys, another release to you guys from me. This is about 80% complete I guess. I forgot completely how does rock climb work in game, but it is similar to waterfall. This does not support side-stair's yet, but it can take you up and down a wall of rock.



TM.txt:
Code:
[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
^ All of that belong in TM.txt it is so that a pokemon can learn the TM/HM rock climb. Rock climb uses the same player graphics as surf, but it can be changed.

Pokemon Field:
this belongs in the PBTerrain class
Code:
RockClimb=16
RockCrest=17
Hopefully you know where a def (its a method, function w.e u want to call it) goes.
Code:
def pbIsPassableRockTag?(tag)
 return tag==PBTerrain::RockCrest
end

def pbIsRockTag?(tag)
 return tag==PBTerrain::RockCrest||
        tag==PBTerrain::RockClimb
end
in def Kernel.pbUpdateVehicle , just replace ALMOST everything
Code:
if meta
  if $PokemonGlobal.diving
   $game_player.character_name=meta[6] && meta[6]!="" ? meta[6] : meta[1] # Diving graphic
  elsif $PokemonGlobal.surfing
   $game_player.character_name=meta[4] && meta[4]!="" ? meta[4] : meta[1] # Surfing graphic
  elsif $PokemonGlobal.rock
   $game_player.character_name=meta[4] && meta[4]!="" ? meta[4] : meta[1] # Climbing graphic
  elsif $PokemonGlobal.bicycle
   $game_player.character_name=meta[2] && meta[2]!="" ? meta[2] : meta[1] # Bicycle graphic
  else
   $game_player.character_name=meta[1] # Regular graphic
  end
 end
end
in Game_Map_:
Code:
 elsif pbIsPassableRockTag?(@terrain_tags[tile_id])&&
        $PokemonGlobal.rock
in Walk_Run:
Code:
if $PokemonGlobal.playerID>=0 && meta && $PokemonGlobal && 
   !$PokemonGlobal.bicycle &&
   !$PokemonGlobal.diving &&
   !$PokemonGlobal.surfing &&
   !$PokemonGlobal.rock
PokemonMap:
Code:
 attr_accessor :rock
  @rock=false
PokemonHiddenMoves:
Code:
def Kernel.pbAscendRock(event=nil)
  x=$game_player.x
  y=$game_player.y
 currentTag=$game_map.terrain_tag(x,y) 
 facingTag=Kernel.pbFacingTerrainTag
 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#(nil,event)
 # Kernel.pbJumpToward 
 return if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest
  event.through=true
 event.move_speed=2
 Kernel.pbCancelVehicles
   $PokemonEncounters.clearStepCount
   $PokemonGlobal.rock=true
   Kernel.pbJumpToward
   Kernel.pbUpdateVehicle
# Kernel.pbJumpToward 
 # Kernel.pbJumpToward 
 loop do
  event.move_up
  terrain=pbGetTerrainTag(event)
 break if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest || $PokemonGlobal.rock=false #||
#$game_map.autoplayAsCue || $game_player.increase_steps
end
 event.through=oldthrough
 event.move_speed=oldmovespeed
 $game_map.autoplayAsCue
 $game_player.increase_steps
end


def Kernel.pbDescendRock(event=nil)
 x=$game_player.x
  y=$game_player.y
 currentTag=$game_map.terrain_tag(x,y) 
 facingTag=Kernel.pbFacingTerrainTag
 event=$game_player if !event
 return if !event
 return if event.direction!=2 # can't ascend if not facing up
 oldthrough=event.through
 oldmovespeed=event.move_speed
 terrain=Kernel.pbFacingTerrainTag#(nil,event)
 # Kernel.pbJumpToward 
 return if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest
  event.through=true
 event.move_speed=2
 Kernel.pbCancelVehicles
   $PokemonEncounters.clearStepCount
   $PokemonGlobal.rock=true
   Kernel.pbJumpToward
   Kernel.pbUpdateVehicle
# Kernel.pbJumpToward 
 # Kernel.pbJumpToward 
 loop do
  event.move_down
  terrain=pbGetTerrainTag(event)
 break if terrain!=PBTerrain::RockClimb && terrain!=PBTerrain::RockCrest || $PokemonGlobal.rock=false #||
#$game_map.autoplayAsCue || $game_player.increase_steps
end
 event.through=oldthrough
 event.move_speed=oldmovespeed
 $game_map.autoplayAsCue
 $game_player.increase_steps
end


def Kernel.pbRockClimb(event=nil)
  event=$game_player
 if $DEBUG #|| $Trainer.badges[BADGEFORCLIMB]
   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
  case $game_player.direction
when 2
pbDescendRock
when 8
pbAscendRock
end

    return true
      end
   else
    Kernel.pbMessage(_INTL("These rocks look like they can be climbed upon."))
   end
 else
  Kernel.pbMessage(_INTL("These rocks look like they can be climbed upon."))
 end
 return false
end

HiddenMoveHandlers::CanUseMove.add(:ROCKCLIMB,proc{|move,pkmn|
   if !$DEBUG# && !$Trainer.badges[BADGEFORCLIMB]
    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
   case $game_player.direction
when 2
pbDescendRock
when 8
pbAscendRock
end
in def Kernel.pbHiddenMoveEvent
Code:
if terrain==PBTerrain::RockClimb
  Kernel.pbRockClimb
  return
 end
NOTE:
I do not recommend adding this if you do not know how to code. I will not help with error messages. Find out where to implement the if statements on your own. Also do not ask for whirlpool(I think I have it 100% working as an event, but I realized it would be better to make it work as a terrain tag), or Defog ( which I am working on right now).

I will take Credits.
 
Last edited:

Maruno

Lead Dev of Pokémon Essentials
5,285
Posts
16
Years
The Waterfall move uses two different terrain tiles because it's possible to automatically descend the waterfall just by surfing too close to it, whereas you need to use the move to ascend it. Rock Climb doesn't have that feature - you'll always use the move to go up/down.

I think these scripts can be simplified to use just one terrain tag, as I mentioned to you and in my tutorial. Doing so is, of course, complicated.
 

zingzags

PokemonGDX creator
536
Posts
15
Years
The Waterfall move uses two different terrain tiles because it's possible to automatically descend the waterfall just by surfing too close to it, whereas you need to use the move to ascend it. Rock Climb doesn't have that feature - you'll always use the move to go up/down.

I think these scripts can be simplified to use just one terrain tag, as I mentioned to you and in my tutorial. Doing so is, of course, complicated.

You know what?, you may actually have a point there.
 
378
Posts
10
Years
  • Seen Oct 18, 2017
Where do "Game_Map_", "Walk_Run", and "PokemonMap" go? I possess basic scripting knowledge and I cannot decipher this.

Edit: I figured out everything but Game_Map_. I have no idea where to put this.

Edit 2: Nevermind, nothing seems to be working. I would give you my code, but you said you won't respond, so... Oh well...
 
Last edited:

Luka S.J.

Jealous Croatian
1,270
Posts
15
Years
Where do "Game_Map_", "Walk_Run", and "PokemonMap" go? I possess basic scripting knowledge and I cannot decipher this.

Edit: I figured out everything but Game_Map_. I have no idea where to put this.

Edit 2: Nevermind, nothing seems to be working. I would give you my code, but you said you won't respond, so... Oh well...

Again, this post along with its code was written in 2011. It may not apply to the current version of Essentials.
 
378
Posts
10
Years
  • Seen Oct 18, 2017
Yeah, I figured. I may have to open a new Question topic to ask how to implement this.
 

Maruno

Lead Dev of Pokémon Essentials
5,285
Posts
16
Years
It is expected that you know how to use RPG Maker XP before delving into Essentials. If you don't, go away and learn.
 
Back
Top