- 220
- Posts
- 13
- Years
- Seen Nov 29, 2021
So I've been playing around getting a version of Rock Climb to work, and I've come up with the following:
The problem is, the first movement before the loop just... doesn't occur. Thus the character ends up off by a tile.
Update: Swapping the first one to "Kernel.pbJumpToward" works, now I just need to figure out how to get it move off without moving up/down too.
Update 2: Changed the code to include a length variable, but there's now a new issue: Going up and left is fine, works perfectly. Going down and right, they go down one step, then jumps to the final destination.
Code:
def Kernel.pbNERockwall(event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
event.move_right
event.move_speed = 2
loop do
event.move_right
event.move_up
terrain = pbGetTerrainTag(event)
break if !PBTerrain.isRockwall?(terrain)
end
event.through = oldthrough
event.move_speed = oldmovespeed
end
def Kernel.pbSERockwall(event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
event.move_right
event.move_speed = 2
loop do
event.move_down
event.move_right
terrain = pbGetTerrainTag(event)
break if !PBTerrain.isRockwall?(terrain)
end
event.through = oldthrough
event.move_speed = oldmovespeed
end
def Kernel.pbSWRockwall(event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
event.move_left
event.move_speed = 2
loop do
event.move_down
event.move_left
terrain = pbGetTerrainTag(event)
break if !PBTerrain.isRockwall?(terrain)
end
event.through = oldthrough
event.move_speed = oldmovespeed
end
def Kernel.pbNWRockwall(event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
event.move_left
event.move_speed = 2
loop do
event.move_up
event.move_left
terrain = pbGetTerrainTag(event)
break if !PBTerrain.isRockwall?(terrain)
end
event.through = oldthrough
event.move_speed = oldmovespeed
end
The problem is, the first movement before the loop just... doesn't occur. Thus the character ends up off by a tile.
Update: Swapping the first one to "Kernel.pbJumpToward" works, now I just need to figure out how to get it move off without moving up/down too.
Update 2: Changed the code to include a length variable, but there's now a new issue: Going up and left is fine, works perfectly. Going down and right, they go down one step, then jumps to the final destination.
Code:
def Kernel.pbNERockwall(i,event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
Kernel.pbJumpToward
event.move_speed = 2
loop do
event.move_right
event.move_up
i=i-1
break if i<2
end
Kernel.pbJumpToward
event.through = oldthrough
event.move_speed = oldmovespeed
end
def Kernel.pbSERockwall(i,event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
Kernel.pbJumpToward
event.move_speed = 2
loop do
event.move_down
event.move_right
i=i-1
break if i<2
end
Kernel.pbJumpToward
event.through = oldthrough
event.move_speed = oldmovespeed
end
def Kernel.pbSWRockwall(i,event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
Kernel.pbJumpToward
event.move_speed = 2
loop do
event.move_down
event.move_left
i=i-1
break if i<2
end
Kernel.pbJumpToward
event.through = oldthrough
event.move_speed = oldmovespeed
end
def Kernel.pbNWRockwall(i,event=nil)
event = $game_player if !event
return if !event
oldthrough = event.through
oldmovespeed = event.move_speed
terrain = Kernel.pbFacingTerrainTag
return if !PBTerrain.isRockwall?(terrain)
event.through = true
Kernel.pbJumpToward
event.move_speed = 2
loop do
event.move_up
event.move_left
i=i-1
break if i<2
end
Kernel.pbJumpToward
event.through = oldthrough
event.move_speed = oldmovespeed
end
Last edited: