@ 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 "This tree looks like it can be\n" .string "CUT down!\p" .string "Would you like to CUT it?$" Text_MonUsedFieldMove: .string "{STR_VAR_1} used {STR_VAR_2}!$" Text_CantCut: .string "This tree looks like it can be\n" .string "CUT down!$" @ 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_FOLLOWER, Movement_WalkUp 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_FOLLOWER, Movement_WalkRight 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_FOLLOWER, Movement_WalkDown 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_FOLLOWER, Movement_WalkLeft 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 "This rock appears to be breakable.\n" .string "Would you like to use ROCK SMASH?$" Text_CantSmash: .string "It's a rugged rock, but a POKéMON\n" .string "may be able to smash it.$" 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 "It's a big boulder, but a POKéMON\n" .string "may be able to push it aside.\p" .string "Would you like to use STRENGTH?$" Text_MonUsedStrength: .string "{STR_VAR_1} used STRENGTH!\p" .string "{STR_VAR_1}'s STRENGTH made it\n" .string "possible to move boulders around!$" Text_CantStrength: .string "It's a big boulder, but a POKéMON\n" .string "may be able to push it aside.$" Text_StrengthActivated: .string "STRENGTH made it possible to move\n" .string "boulders around.$" 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 "A wall of water is crashing down with\n" .string "a mighty roar.$" Text_WantToWaterfall: .string "It's a large waterfall.\n" .string "Would you like to use WATERFALL?$" Text_MonUsedWaterfall: .string "{STR_VAR_1} used WATERFALL.$" 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 "The sea is deep here. A POKéMON\n" .string "may be able to go underwater.$" Text_WantToDive: .string "The sea is deep here.\n" .string "Would you like to use DIVE?$" Text_MonUsedDive: .string "{STR_VAR_1} used DIVE.$" Text_CantSurface: .string "Light is filtering down from above.\n" .string "A POKéMON may be able to surface.$" Text_WantToSurface: .string "Light is filtering down from above.\n" .string "Would you like to use DIVE?$" EventScript_FailSweetScent:: msgbox Text_FailSweetScent, MSGBOX_SIGN end Text_FailSweetScent: .string "Looks like there's nothing here…$"