pokeemmo/data/scripts/field_move_scripts.inc
2025-04-27 15:01:24 +08:00

421 lines
10 KiB
PHP

@ Interact with cuttable tree
EventScript_CutTree::
lockall
goto_if_unset FLAG_BADGE01_GET, EventScript_CheckTreeCantCut
checkpartymove MOVE_CUT
goto_if_eq VAR_RESULT, PARTY_SIZE, EventScript_CheckTreeCantCut
setfieldeffectargument 0, VAR_RESULT
bufferpartymonnick STR_VAR_1, VAR_RESULT
buffermovename STR_VAR_2, MOVE_CUT
msgbox Text_WantToCut, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, EventScript_CancelCut
msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT
closemessage
EventScript_CutTreeCommon:
isfollowerfieldmoveuser VAR_0x8004
setfieldeffectargument 3, VAR_0x8004 @ skip pose if so
dofieldeffect FLDEFF_USE_CUT_ON_TREE
waitstate
EventScript_CutTreeDown:: @ fallthrough
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove
applymovement VAR_LAST_TALKED, Movement_CutTreeDown
waitmovement 0
removeobject VAR_LAST_TALKED
releaseall
end
@ Use cut from party menu
EventScript_UseCut::
lockall
goto EventScript_CutTreeCommon
Movement_CutTreeDown:
cut_tree
step_end
EventScript_CheckTreeCantCut::
msgbox Text_CantCut, MSGBOX_DEFAULT
releaseall
end
EventScript_CancelCut::
closemessage
releaseall
end
Text_WantToCut:
.string "这棵树好像可以砍断!\n"
.string "要用居合劈来砍吗?$"
Text_MonUsedFieldMove:
.string "{STR_VAR_1}使用了{STR_VAR_2}!$"
Text_CantCut:
.string "这棵树好像可以用\n\n"
.string "秘传招式砍断!$"
@ Use rock smash from party menu
EventScript_UseRockSmash::
lockall
goto EventScript_RockSmashCommon
@ Interact with smashable rock
EventScript_RockSmash::
lockall
goto_if_unset FLAG_BADGE03_GET, EventScript_CantSmashRock
checkpartymove MOVE_ROCK_SMASH
goto_if_eq VAR_RESULT, PARTY_SIZE, EventScript_CantSmashRock
setfieldeffectargument 0, VAR_RESULT
bufferpartymonnick STR_VAR_1, VAR_RESULT
buffermovename STR_VAR_2, MOVE_ROCK_SMASH
msgbox Text_WantToSmash, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, EventScript_CancelSmash
msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT
closemessage
EventScript_RockSmashCommon:
@ check if follower should use the field move
isfollowerfieldmoveuser VAR_0x8004
setfieldeffectargument 3, VAR_0x8004 @ skip pose if so
dofieldeffect FLDEFF_USE_ROCK_SMASH
waitstate
EventScript_SmashRock:: @ fallthrough
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove
applymovement VAR_LAST_TALKED, Movement_SmashRock
waitmovement 0
removeobject VAR_LAST_TALKED
specialvar VAR_RESULT, TryUpdateRusturfTunnelState
goto_if_eq VAR_RESULT, TRUE, EventScript_EndSmash
special RockSmashWildEncounter
goto_if_eq VAR_RESULT, FALSE, EventScript_EndSmash
waitstate
releaseall
end
EventScript_FollowerFieldMove:
getdirectiontoface VAR_0x8005, OBJ_EVENT_ID_FOLLOWER, OBJ_EVENT_ID_PLAYER
specialvar VAR_0x8006, GetPlayerFacingDirection
goto_if_eq VAR_0x8005, DIR_NONE, EventScript_FollowerFieldMoveEnd
@ Swap follower and player
call EventScript_FollowerSwap
@ Face follower in direction and jump
switch VAR_0x8006
case DIR_NORTH, EventScript_FollowerJumpNorth
case DIR_EAST, EventScript_FollowerJumpEast
case DIR_SOUTH, EventScript_FollowerJumpSouth
case DIR_WEST, EventScript_FollowerJumpWest
EventScript_FollowerFieldMoveEnd:
return
EventScript_FollowerSwap:
switch VAR_0x8005
case DIR_NORTH, EventScript_FollowerMoveNorth
case DIR_EAST, EventScript_FollowerMoveEast
case DIR_SOUTH, EventScript_FollowerMoveSouth
case DIR_WEST, EventScript_FollowerMoveWest
return
EventScript_FollowerMoveNorth:
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkDown
waitmovement 0
applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp
waitmovement 0
return
EventScript_FollowerMoveEast:
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkLeft
waitmovement 0
applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceRight
waitmovement 0
return
EventScript_FollowerMoveSouth:
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkUp
waitmovement 0
applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceDown
waitmovement 0
return
EventScript_FollowerMoveWest:
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkRight
waitmovement 0
applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceLeft
waitmovement 0
return
EventScript_FollowerJumpNorth:
applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpUp
waitmovement 0
return
EventScript_FollowerJumpEast:
applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpRight
waitmovement 0
return
EventScript_FollowerJumpSouth:
applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpDown
waitmovement 0
return
EventScript_FollowerJumpWest:
applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpLeft
waitmovement 0
return
EventScript_EndSmash::
releaseall
end
Movement_WalkUp:
walk_up
step_end
Movement_JumpUp:
jump_in_place_up
step_end
Movement_WalkRight:
walk_right
step_end
Movement_JumpRight:
jump_in_place_right
step_end
Movement_WalkDown:
walk_down
step_end
Movement_JumpDown:
jump_in_place_down
step_end
Movement_WalkLeft:
walk_left
step_end
Movement_JumpLeft:
jump_in_place_left
step_end
Movement_SmashRock:
rock_smash_break
step_end
EventScript_CantSmashRock::
msgbox Text_CantSmash, MSGBOX_DEFAULT
releaseall
end
EventScript_CancelSmash::
closemessage
releaseall
end
Text_WantToSmash:
.string "好像可以用秘传招式击碎!\n"
.string "要使用碎岩吗?$"
Text_CantSmash:
.string "看起来很硬的岩石……\n"
.string "或许可以用秘传招式击碎?$"
EventScript_StrengthBoulder::
lockall
goto_if_unset FLAG_BADGE04_GET, EventScript_CantStrength
goto_if_set FLAG_SYS_USE_STRENGTH, EventScript_CheckActivatedBoulder
checkpartymove MOVE_STRENGTH
goto_if_eq VAR_RESULT, PARTY_SIZE, EventScript_CantStrength
setfieldeffectargument 0, VAR_RESULT
msgbox Text_WantToStrength, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, EventScript_CancelStrength
closemessage
dofieldeffect FLDEFF_USE_STRENGTH
waitstate
goto EventScript_ActivateStrength
end
EventScript_UseStrength::
lockall
dofieldeffect FLDEFF_USE_STRENGTH
waitstate
goto EventScript_ActivateStrength
end
EventScript_ActivateStrength::
setflag FLAG_SYS_USE_STRENGTH
msgbox Text_MonUsedStrength, MSGBOX_DEFAULT
releaseall
end
EventScript_CantStrength::
msgbox Text_CantStrength, MSGBOX_DEFAULT
releaseall
end
EventScript_CheckActivatedBoulder::
msgbox Text_StrengthActivated, MSGBOX_DEFAULT
releaseall
end
EventScript_CancelStrength::
closemessage
releaseall
end
Text_WantToStrength:
.string "好大的岩石……\n"
.string "或许可以用秘传招式推动?\l"
.string "要使用怪力吗?$"
Text_MonUsedStrength:
.string "{STR_VAR_1}使用了怪力!\p"
.string "使出了怪力后,\n"
.string "可以推动岩石了!$"
Text_CantStrength:
.string "好大的岩石……\n"
.string "或许可以用秘传招式推动?$"
Text_StrengthActivated:
.string "使出了怪力后,\n"
.string "可以推动岩石了!$"
EventScript_UseWaterfall::
lockall
checkpartymove MOVE_WATERFALL
goto_if_eq VAR_RESULT, PARTY_SIZE, EventScript_CantWaterfall
bufferpartymonnick STR_VAR_1, VAR_RESULT
setfieldeffectargument 0, VAR_RESULT
msgbox Text_WantToWaterfall, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, EventScript_EndWaterfall
msgbox Text_MonUsedWaterfall, MSGBOX_DEFAULT
dofieldeffect FLDEFF_USE_WATERFALL
goto EventScript_EndWaterfall
EventScript_CannotUseWaterfall::
lockall
EventScript_CantWaterfall::
msgbox Text_CantWaterfall, MSGBOX_DEFAULT
EventScript_EndWaterfall::
releaseall
end
Text_CantWaterfall:
.string "伴随着巨大的轰响,\n"
.string "大量的水从上方倾泻而下!\n"
.string "或许可以用秘传招式攀上去?$"
Text_WantToWaterfall:
.string "好大的瀑布啊!\n"
.string "要使用攀瀑吗?$"
Text_MonUsedWaterfall:
.string "{STR_VAR_1}使用了攀瀑。$"
EventScript_UseDive::
lockall
checkpartymove MOVE_DIVE
goto_if_eq VAR_RESULT, PARTY_SIZE, EventScript_CantDive
bufferpartymonnick STR_VAR_1, VAR_RESULT
setfieldeffectargument 0, VAR_RESULT
setfieldeffectargument 1, 1
msgbox Text_WantToDive, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, EventScript_EndDive
msgbox Text_MonUsedDive, MSGBOX_DEFAULT
dofieldeffect FLDEFF_USE_DIVE
goto EventScript_EndDive
end
EventScript_CantDive::
msgbox Text_CantDive, MSGBOX_DEFAULT
releaseall
end
EventScript_EndDive::
releaseall
end
EventScript_UseDiveUnderwater::
lockall
checkpartymove MOVE_DIVE
goto_if_eq VAR_RESULT, PARTY_SIZE, EventScript_CantSurface
bufferpartymonnick STR_VAR_1, VAR_RESULT
setfieldeffectargument 0, VAR_RESULT
setfieldeffectargument 1, 1
msgbox Text_WantToSurface, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, EventScript_EndSurface
msgbox Text_MonUsedDive, MSGBOX_DEFAULT
dofieldeffect FLDEFF_USE_DIVE
goto EventScript_EndSurface
end
EventScript_CantSurface::
lockall
msgbox Text_CantSurface, MSGBOX_DEFAULT
goto EventScript_EndSurface
end
EventScript_EndSurface::
releaseall
end
EventScript_DigCommon:
isfollowerfieldmoveuser VAR_0x8004
setfieldeffectargument 3, VAR_0x8004 @ skip pose if true
dofieldeffect FLDEFF_USE_DIG
waitstate
EventScript_DigSealedChamber:: @ fallthrough
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove
callnative DoBrailleDigEffect
releaseall
end
@ Use Dig from party menu
EventScript_UseDig::
lockall
goto EventScript_DigCommon
EventScript_CutGrassCommon:
isfollowerfieldmoveuser VAR_0x8004
setfieldeffectargument 3, VAR_0x8004 @ skip pose if true
dofieldeffect FLDEFF_USE_CUT_ON_GRASS
waitstate
@ Use Cut grass from party menu
EventScript_UseCutGrass::
lockall
goto EventScript_CutGrassCommon
Text_CantDive:
.string "这里的水很深。好像\n"
.string "可以用秘传招式潜下去。$"
Text_WantToDive:
.string "这里的水很深。\n"
.string "要使用潜水吗?$"
Text_MonUsedDive:
.string "{STR_VAR_1}使用了潜水。$"
Text_CantSurface:
.string "上方有亮光洒下。\n"
.string "好像可以从这里浮出水面。$"
Text_WantToSurface:
.string "上方有亮光洒下。\n"
.string "要使用潜水吗?$"
EventScript_FailSweetScent::
msgbox Text_FailSweetScent, MSGBOX_SIGN
end
Text_FailSweetScent:
.string "看起来这里什么也没有……$"