Buenas, quería mostrarles mi problema para ver si ustedes encuentran la solución porque yo ya no se que hacer.
Estoy haciendo un mapa en mi hackrom, donde hacer surf en el agua hace un daño constante a cada paso (como el efecto de poison). Hasta cierto punto, funciona bien. Los pokemon reciben daño, mientras que aparece el flash de pantalla típico del veneno. El problema es cuando el hp de los pokemon llega a 0 y soy teletransportado de regreso al ultimo punto de control. Cuando eso sucede, el efecto de flash continua y no se va.
Otro gran problema, es que luego de llegar al punto de control y revivir a mis pokemon, si regreso al mapa en cuestión, el efecto de daño comienza a aplicarse sin necesidad de hacer surf (eso no debería ser así).
Otra consulta que quería hacerles es cómo hacer para que el efecto este del que les estoy hablando deje de aplicarse cuando se posee cierto item.
Les paso el codigo completo que tengo hasta ahora:
Estoy haciendo un mapa en mi hackrom, donde hacer surf en el agua hace un daño constante a cada paso (como el efecto de poison). Hasta cierto punto, funciona bien. Los pokemon reciben daño, mientras que aparece el flash de pantalla típico del veneno. El problema es cuando el hp de los pokemon llega a 0 y soy teletransportado de regreso al ultimo punto de control. Cuando eso sucede, el efecto de flash continua y no se va.
Otro gran problema, es que luego de llegar al punto de control y revivir a mis pokemon, si regreso al mapa en cuestión, el efecto de daño comienza a aplicarse sin necesidad de hacer surf (eso no debería ser así).
Otra consulta que quería hacerles es cómo hacer para que el efecto este del que les estoy hablando deje de aplicarse cuando se posee cierto item.
Les paso el codigo completo que tengo hasta ahora:
Código:
def Kernel.pbSurf
if $game_player.pbHasDependentEvents?
return false
end
if $DEBUG ||
(HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORSURF : $Trainer.badges[BADGEFORSURF])
movefinder=Kernel.pbCheckMove(:SURF)
if $DEBUG || movefinder
if Kernel.pbConfirmMessage(_INTL("The water is a deep blue...\nWould you like to surf on it?"))
speciesname=!movefinder ? $Trainer.name : movefinder.name
Kernel.pbMessage(_INTL("{1} used Surf!",speciesname))
pbHiddenMoveAnimation(movefinder)
if $game_map && $game_map.map_id != 43 && $game_map.map_id != 48
surfbgm=pbGetMetadata(0,MetadataSurfBGM)
end
# Si estamos en el mapa con ID 43
if $game_map && $game_map.map_id == 43
surfbgm = "AOsurfing"
# Poison event on each step taken
Events.onStepTakenTransferPossible+=proc {|sender,e|
handled=e[0]
next if handled[0]
if $PokemonGlobal.stepcount % 4 == 0 && surfbgm = "AOsurfing"
flashed=false
for i in $Trainer.party
if i.hp>0 && !i.isEgg?
!isConst?(i.ability,PBAbilities,:IMMUNITY)
if !flashed && i.hp !=0
$game_screen.start_flash(Color.new(255,0,0,128), 4)
flashed=true
end
if $game_map && $game_map.map_id == 43
i.hp-=1
end
if i.hp==0
i.changeHappiness("faint")
i.status=0
Kernel.pbMessage(_INTL("{1} fainted...\\1",i.name))
flashed=false
end
handled[0]=true if pbAllFainted
pbCheckAllFainted()
end
end
end
}
end
# Si estamos en el mapa con ID 48
if $game_map && $game_map.map_id == 48
surfbgm = "AOsurfing"
end
if surfbgm
pbCueBGM(surfbgm,0.5)
end
pbStartSurfing()
return true
end
end
end
return false
end