PDA

View Full Version : [Essentials tutorial] Rock Climb


zingzags
March 31st, 2011, 04:59 PM
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.

QVVl18V4jgQ

TM.txt:

[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

RockClimb=16
RockCrest=17
Hopefully you know where a def (its a method, function w.e u want to call it) goes.

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

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_:

elsif pbIsPassableRockTag?(@terrain_tags[tile_id])&&
$PokemonGlobal.rock
in Walk_Run:

if $PokemonGlobal.playerID>=0 && meta && $PokemonGlobal &&
!$PokemonGlobal.bicycle &&
!$PokemonGlobal.diving &&
!$PokemonGlobal.surfing &&
!$PokemonGlobal.rock
PokemonMap:

attr_accessor :rock
@rock=false
PokemonHiddenMoves:

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

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.

zingzags
April 2nd, 2011, 08:36 PM
Surprised there is no comments yet.

Maruno
April 3rd, 2011, 03:02 PM
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 (http://pokemonessentials.wikia.com/wiki/Tutorial:Adding_new_move_effects_outside_battle). Doing so is, of course, complicated.

oldsnake90
April 3rd, 2011, 06:20 PM
This would work great for my game. looks good.

zingzags
April 5th, 2011, 10:51 AM
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 (http://pokemonessentials.wikia.com/wiki/Tutorial:Adding_new_move_effects_outside_battle). Doing so is, of course, complicated.

You know what?, you may actually have a point there.

Peeky Chew
April 6th, 2011, 09:02 AM
Looks great, I'm sure it'll be helpful to people, and me if I decide to use Rock Climb.

joeyhugg
March 24th, 2014, 05:14 PM
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...

Luka S.J.
March 25th, 2014, 02:11 PM
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.

joeyhugg
March 25th, 2014, 02:50 PM
Yeah, I figured. I may have to open a new Question topic to ask how to implement this.