Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # Terrain tags (initializes current terrain tags and adds water properties)
- #===============================================================================
- module PBTerrain
- CurrentNorth = 17
- CurrentEast = 18
- CurrentSouth = 19
- CurrentWest = 20
- end
- def PBTerrain.isSurfable?(tag)
- return PBTerrain.isWater?(tag)
- end
- def PBTerrain.isWater?(tag)
- return tag==PBTerrain::Water ||
- tag==PBTerrain::StillWater ||
- tag==PBTerrain::DeepWater ||
- tag==PBTerrain::WaterfallCrest ||
- tag==PBTerrain::Waterfall ||
- tag==PBTerrain::CurrentNorth ||
- tag==PBTerrain::CurrentEast ||
- tag==PBTerrain::CurrentSouth ||
- tag==PBTerrain::CurrentWest
- end
- def PBTerrain.isPassableWater?(tag)
- return tag==PBTerrain::Water ||
- tag==PBTerrain::StillWater ||
- tag==PBTerrain::DeepWater ||
- tag==PBTerrain::WaterfallCrest ||
- tag==PBTerrain::CurrentNorth ||
- tag==PBTerrain::CurrentEast ||
- tag==PBTerrain::CurrentSouth ||
- tag==PBTerrain::CurrentWest
- end
- def PBTerrain.isJustWater?(tag)
- return tag==PBTerrain::Water ||
- tag==PBTerrain::StillWater ||
- tag==PBTerrain::DeepWater ||
- tag==PBTerrain::CurrentNorth ||
- tag==PBTerrain::CurrentEast ||
- tag==PBTerrain::CurrentSouth ||
- tag==PBTerrain::CurrentWest
- end
- #===============================================================================
- # Current Movement
- #===============================================================================
- def Kernel.pbWaterCurrent(event=nil)
- event=$game_player if !event
- return if !event
- return if (pbGetTerrainTag(event)!=PBTerrain::CurrentSouth &&
- pbGetTerrainTag(event)!=PBTerrain::CurrentWest && pbGetTerrainTag(event)!=PBTerrain::CurrentEast &&
- pbGetTerrainTag(event)!=PBTerrain::CurrentNorth)
- $PokemonGlobal.sliding=true
- oldwalkanime=event.walk_anime
- event.straighten
- event.pattern=0
- event.walk_anime=false
- loop do
- case pbGetTerrainTag(event)
- when PBTerrain::CurrentSouth
- direction=2
- when PBTerrain::CurrentWest
- direction=4
- when PBTerrain::CurrentEast
- direction=6
- when PBTerrain::CurrentNorth
- direction=8
- end
- break if (pbGetTerrainTag(event)!=PBTerrain::CurrentSouth && pbGetTerrainTag(event)!=PBTerrain::CurrentWest &&
- pbGetTerrainTag(event)!=PBTerrain::CurrentEast && pbGetTerrainTag(event)!=PBTerrain::CurrentNorth)
- break if !event.passable?(event.x,event.y,direction)
- case pbGetTerrainTag(event)
- when PBTerrain::CurrentSouth
- event.move_down(false)
- when PBTerrain::CurrentWest
- event.move_left(false)
- when PBTerrain::CurrentEast
- event.move_right(false)
- when PBTerrain::CurrentNorth
- event.move_up(false)
- end
- while event.moving?
- Graphics.update
- Input.update
- pbUpdateSceneMap
- end
- end
- event.center(event.x,event.y) if event==$game_player
- event.straighten
- event.walk_anime=oldwalkanime
- $PokemonGlobal.sliding=false
- end
- 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 (currentTag==PBTerrain::CurrentSouth || currentTag==PBTerrain::CurrentWest ||
- currentTag==PBTerrain::CurrentEast || currentTag==PBTerrain::CurrentNorth) && !$PokemonGlobal.sliding
- Kernel.pbWaterCurrent(event)
- elsif currentTag==PBTerrain::Ice && !$PokemonGlobal.sliding
- Kernel.pbSlideOnIce(event)
- end
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement