Essentials Script Rock Climb

Started by zingzags March 31st, 2011 4:59 PM
  • 6894 views
  • 12 replies

zingzags

PokemonGDX creator

Age 26
Boston
Seen October 13th, 2016
Posted August 14th, 2016
536 posts
11.5 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:
[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.
Check out the Pokemon Game Engine I am working on:
https://github.com/sjosegarcia/Pokemon

Maruno

Lead Dev of Pokémon Essentials

England
Seen 1 Day Ago
Posted 1 Week Ago
5,247 posts
12.5 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.
Go to the Essentials Docs Wiki

Essentials Docs Wiki

Follow me on Twitter: @maruno42


zingzags

PokemonGDX creator

Age 26
Boston
Seen October 13th, 2016
Posted August 14th, 2016
536 posts
11.5 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.
Check out the Pokemon Game Engine I am working on:
https://github.com/sjosegarcia/Pokemon
Male
Seen October 18th, 2017
Posted March 1st, 2015
378 posts
7.3 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...
This signature has been disabled.
Signature exceeds height limit.
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.

Luka S.J.

Jealous Croatian

Age 27
Male
Croatia
Seen 1 Week Ago
Posted 2 Weeks Ago
1,204 posts
11.6 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.
Male
Seen October 18th, 2017
Posted March 1st, 2015
378 posts
7.3 Years
Yeah, I figured. I may have to open a new Question topic to ask how to implement this.
This signature has been disabled.
Signature exceeds height limit.
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.