- 2
- Posts
- 10
- Years
- Age 33
- Seen Jul 21, 2014
I have never seen such a option in essentials so I have done a water stream like in first pokemon generation in SeaFoam islands or in pokemon third gen the routes near Rayquaza tower.
It is my first Ruby Script. I simple overwrote some methods. You dont need to put in her original position, this lines works in another page.
You can change the terrain tags to the number you prefer.
Good night,
Spoiler:
################################################################################
# Terrain tags
################################################################################
class PBTerrain
StreamWater = 19
StreamWaterRight = 20
StreamWaterDown = 21
StreamWaterLeft = 22
end
def pbIsSurfableTag?(tag)
return pbIsWaterTag?(tag)
end
def pbIsWaterTag?(tag)
return tag==PBTerrain::DeepWater ||
tag==PBTerrain::Water ||
tag==PBTerrain::StillWater ||
tag==PBTerrain::WaterfallCrest ||
tag==PBTerrain::Waterfall ||
tag==PBTerrain::StreamWater||
tag==PBTerrain::StreamWaterRight||
tag==PBTerrain::StreamWaterDown||
tag==PBTerrain::StreamWaterLeft
end
def pbIsPassableWaterTag?(tag)
return tag==PBTerrain::DeepWater ||
tag==PBTerrain::Water ||
tag==PBTerrain::StillWater ||
tag==PBTerrain::WaterfallCrest ||
tag==PBTerrain::StreamWater||
tag==PBTerrain::StreamWaterRight||
tag==PBTerrain::StreamWaterDown||
tag==PBTerrain::StreamWaterLeft
end
def pbIsJustWaterTag?(tag)
return tag==PBTerrain::DeepWater ||
tag==PBTerrain::Water ||
tag==PBTerrain::StillWater||
tag==PBTerrain::StreamWater||
tag==PBTerrain::StreamWaterRight||
tag==PBTerrain::StreamWaterDown||
tag==PBTerrain::StreamWaterLeft
end
def Kernel.pbWaterStreaming(event=nil)
event=$game_player if !event
return if !event
return if pbGetTerrainTag(event)!=PBTerrain::StreamWater && pbGetTerrainTag(event)!=PBTerrain::StreamWaterRight && pbGetTerrainTag(event)!=PBTerrain::StreamWaterDown && pbGetTerrainTag(event)!=PBTerrain::StreamWaterLeft
$PokemonGlobal.sliding=true
direction=event.direction
oldwalkanime=event.walk_anime
event.straighten
event.pattern=1
event.walk_anime=false
loop do
#break if !event.passable?(event.x,event.y,direction)
break if pbGetTerrainTag(event)!=PBTerrain::StreamWater && pbGetTerrainTag(event)!=PBTerrain::StreamWaterRight && pbGetTerrainTag(event)!=PBTerrain::StreamWaterDown && pbGetTerrainTag(event)!=PBTerrain::StreamWaterLeft
if(pbGetTerrainTag(event)==PBTerrain::StreamWater)
event.move_up # event.move_forward
elsif(pbGetTerrainTag(event)==PBTerrain::StreamWaterRight)
event.move_right
elsif(pbGetTerrainTag(event)==PBTerrain::StreamWaterDown)
event.move_down
elsif(pbGetTerrainTag(event)==PBTerrain::StreamWaterLeft)
event.move_left
end
while event.moving?
Graphics.update
Input.update
pbUpdateSceneMap
end
end
event.center(event.x,event.y)
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)
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::Ice && !$PokemonGlobal.sliding
Kernel.pbSlideOnIce(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWater && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWaterRight && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWaterDown && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWaterLeft && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a psiquic soil
elsif event==$game_player && currentTag==PBTerrain::PsiSoil && !$PokemonGlobal.sliding
Kernel.pbPsiSoil(event)
end
}
# Terrain tags
################################################################################
class PBTerrain
StreamWater = 19
StreamWaterRight = 20
StreamWaterDown = 21
StreamWaterLeft = 22
end
def pbIsSurfableTag?(tag)
return pbIsWaterTag?(tag)
end
def pbIsWaterTag?(tag)
return tag==PBTerrain::DeepWater ||
tag==PBTerrain::Water ||
tag==PBTerrain::StillWater ||
tag==PBTerrain::WaterfallCrest ||
tag==PBTerrain::Waterfall ||
tag==PBTerrain::StreamWater||
tag==PBTerrain::StreamWaterRight||
tag==PBTerrain::StreamWaterDown||
tag==PBTerrain::StreamWaterLeft
end
def pbIsPassableWaterTag?(tag)
return tag==PBTerrain::DeepWater ||
tag==PBTerrain::Water ||
tag==PBTerrain::StillWater ||
tag==PBTerrain::WaterfallCrest ||
tag==PBTerrain::StreamWater||
tag==PBTerrain::StreamWaterRight||
tag==PBTerrain::StreamWaterDown||
tag==PBTerrain::StreamWaterLeft
end
def pbIsJustWaterTag?(tag)
return tag==PBTerrain::DeepWater ||
tag==PBTerrain::Water ||
tag==PBTerrain::StillWater||
tag==PBTerrain::StreamWater||
tag==PBTerrain::StreamWaterRight||
tag==PBTerrain::StreamWaterDown||
tag==PBTerrain::StreamWaterLeft
end
def Kernel.pbWaterStreaming(event=nil)
event=$game_player if !event
return if !event
return if pbGetTerrainTag(event)!=PBTerrain::StreamWater && pbGetTerrainTag(event)!=PBTerrain::StreamWaterRight && pbGetTerrainTag(event)!=PBTerrain::StreamWaterDown && pbGetTerrainTag(event)!=PBTerrain::StreamWaterLeft
$PokemonGlobal.sliding=true
direction=event.direction
oldwalkanime=event.walk_anime
event.straighten
event.pattern=1
event.walk_anime=false
loop do
#break if !event.passable?(event.x,event.y,direction)
break if pbGetTerrainTag(event)!=PBTerrain::StreamWater && pbGetTerrainTag(event)!=PBTerrain::StreamWaterRight && pbGetTerrainTag(event)!=PBTerrain::StreamWaterDown && pbGetTerrainTag(event)!=PBTerrain::StreamWaterLeft
if(pbGetTerrainTag(event)==PBTerrain::StreamWater)
event.move_up # event.move_forward
elsif(pbGetTerrainTag(event)==PBTerrain::StreamWaterRight)
event.move_right
elsif(pbGetTerrainTag(event)==PBTerrain::StreamWaterDown)
event.move_down
elsif(pbGetTerrainTag(event)==PBTerrain::StreamWaterLeft)
event.move_left
end
while event.moving?
Graphics.update
Input.update
pbUpdateSceneMap
end
end
event.center(event.x,event.y)
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)
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::Ice && !$PokemonGlobal.sliding
Kernel.pbSlideOnIce(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWater && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWaterRight && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWaterDown && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a water stream
elsif event==$game_player && currentTag==PBTerrain::StreamWaterLeft && !$PokemonGlobal.sliding
Kernel.pbWaterStreaming(event)
# If the player across a psiquic soil
elsif event==$game_player && currentTag==PBTerrain::PsiSoil && !$PokemonGlobal.sliding
Kernel.pbPsiSoil(event)
end
}
It is my first Ruby Script. I simple overwrote some methods. You dont need to put in her original position, this lines works in another page.
You can change the terrain tags to the number you prefer.
Good night,