pokeemerald/data/scripts/berry_blender.inc
Eduardo Quezada 4649d1eddd (234/665)
2022-08-15 14:27:41 -04:00

477 lines
16 KiB
C++

@ Note: local IDs shared with scripts.inc for LilycoveCity_ContestLobby
.set LOCALID_MAN, 3
.set LOCALID_BOY, 9
.set LOCALID_TWIN, 10
.set LOCALID_POKEFAN_F, 15
.set LOCALID_EXPERT_M, 16
.set LOCALID_GIRL, 17
.set NUM_OPPONENTS, VAR_0x8009
BerryBlender_EventScript_BerryBlender1::
lockall
goto_if_unset FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER, BerryBlender_EventScript_BlendMasterPresent
setvar NUM_OPPONENTS, 1
applymovement LOCALID_EXPERT_M, BerryBlender_Movement_BlendLeaderWalkInPlace
waitmovement 0
msgbox BerryBlender_Text_WantToMakePokeblocks, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_TryUseBerryBlender1
goto BerryBlender_EventScript_DeclineBlender1
end
BerryBlender_EventScript_DeclineBlender1:
msgbox BerryBlender_Text_MadeOldTimerSad, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender1NoBerries:
msgbox BerryBlender_Text_DontHaveAnyBerries, MSGBOX_DEFAULT
dotimebasedevents
goto_if_set FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY, BerryBlender_EventScript_Blender1NoSpareBerries
goto BerryBlender_EventScript_Blender1GiveSpareBerry
end
BerryBlender_EventScript_Blender1NoSpareBerries:
msgbox BerryBlender_Text_DontHaveAnyBerriesToSpare, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender1GiveSpareBerry:
msgbox BerryBlender_Text_CanHaveOneOfMyBerries, MSGBOX_DEFAULT
giveitem ITEM_PECHA_BERRY
setflag FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY
goto BerryBlender_EventScript_UseBerryBlender1
end
BerryBlender_EventScript_UseBerryBlender1:
msgbox BerryBlender_Text_KnowHowToMakePokeblocks, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_StartBlender1
goto BerryBlender_EventScript_ExplainBlending1
end
BerryBlender_EventScript_StartBlender1:
msgbox BerryBlender_Text_LetsBerryBlender, MSGBOX_DEFAULT
goto BerryBlender_EventScript_DoBerryBlending
end
BerryBlender_EventScript_ExplainBlending1:
msgbox BerryBlender_Text_ExplainBerryBlending, MSGBOX_DEFAULT
goto BerryBlender_EventScript_StartBlender1
end
BerryBlender_EventScript_TryUseBerryBlender1:
checkitem ITEM_POKEBLOCK_CASE
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_Blender1NoCase
specialvar VAR_RESULT, GetFirstFreePokeblockSlot
goto_if_eq VAR_RESULT, 65535, BerryBlender_EventScript_Blender1CaseFull
specialvar VAR_RESULT, PlayerHasBerries
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_Blender1NoBerries
msgbox BerryBlender_Text_Excellent, MSGBOX_DEFAULT
goto BerryBlender_EventScript_UseBerryBlender1
end
BerryBlender_EventScript_DoBerryBlending:
copyvar VAR_0x8004, NUM_OPPONENTS
fadescreen FADE_TO_BLACK
special DoBerryBlending
waitstate
releaseall
end
BerryBlender_EventScript_Blender1CaseFull:
msgbox BerryBlender_Text_PokeblockCaseIsFull, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender1NoCase:
msgbox BerryBlender_Text_DontHavePokeblockCase, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_BerryBlender2::
lockall
setvar NUM_OPPONENTS, 2
applymovement LOCALID_TWIN, Common_Movement_FaceOriginalDirection
applymovement LOCALID_MAN, BerryBlender_Movement_BlendLeaderWalkInPlace
waitmovement 0
msgbox BerryBlender_Text_WantToBlendPokeblocksWithUs, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_TryUseBerryBlender2
goto BerryBlender_EventScript_DeclineBlender2
end
BerryBlender_EventScript_DeclineBlender2:
msgbox BerryBlender_Text_ThatsTooBad, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender2NoBerries:
msgbox BerryBlender_Text_DontHaveAnyBerries2, MSGBOX_DEFAULT
release
end
BerryBlender_EventScript_UseBerryBlender2:
msgbox BerryBlender_Text_KnowHowToMakePokeblocks2, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_StartBlender2
goto BerryBlender_EventScript_ExplainBlending2
end
BerryBlender_EventScript_StartBlender2:
msgbox BerryBlender_Text_LetsBerryBlender2, MSGBOX_DEFAULT
goto BerryBlender_EventScript_DoBerryBlending
end
BerryBlender_EventScript_ExplainBlending2:
msgbox BerryBlender_Text_ExplainBerryBlending2, MSGBOX_DEFAULT
goto BerryBlender_EventScript_StartBlender2
end
BerryBlender_EventScript_TryUseBerryBlender2:
specialvar VAR_RESULT, PlayerHasBerries
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_Blender2NoBerries
checkitem ITEM_POKEBLOCK_CASE
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_Blender2NoCase
msgbox BerryBlender_Text_Okay, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetFirstFreePokeblockSlot
goto_if_ne VAR_RESULT, 65535, BerryBlender_EventScript_UseBerryBlender2
goto_if_eq VAR_RESULT, 65535, BerryBlender_EventScript_Blender2CaseFull
end
BerryBlender_EventScript_Blender2CaseFull:
msgbox BerryBlender_Text_PokeblockCaseIsFull2, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender2NoCase:
msgbox BerryBlender_Text_DontHavePokeblockCase2, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_BerryBlender3::
lockall
setvar VAR_0x8008, LOCALID_POKEFAN_F
setvar NUM_OPPONENTS, 3
applymovement LOCALID_BOY, Common_Movement_FaceOriginalDirection
applymovement LOCALID_GIRL, Common_Movement_FaceOriginalDirection
applymovement VAR_0x8008, BerryBlender_Movement_BlendLeaderWalkInPlace
waitmovement 0
msgbox BerryBlender_Text_LookGoodAtBlendingJoinUs, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_TryUseBlender3
goto BerryBlender_EventScript_DeclineBlender3
end
BerryBlender_EventScript_DeclineBlender3:
msgbox BerryBlender_Text_LeftUsInShock, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender3NoBerries:
msgbox BerryBlender_Text_DontHaveAnyBerries3, MSGBOX_DEFAULT
release
end
BerryBlender_EventScript_UseBerryBlender3:
msgbox BerryBlender_Text_KnowHowToMakePokeblocks3, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_StartBlender3
goto BerryBlender_EventScript_ExplainBlending3
end
BerryBlender_EventScript_StartBlender3:
msgbox BerryBlender_Text_LetsBerryBlender3, MSGBOX_DEFAULT
goto BerryBlender_EventScript_DoBerryBlending
end
BerryBlender_EventScript_ExplainBlending3:
msgbox BerryBlender_Text_ExplainBerryBlending3, MSGBOX_DEFAULT
goto BerryBlender_EventScript_StartBlender3
end
BerryBlender_EventScript_TryUseBlender3:
specialvar VAR_RESULT, PlayerHasBerries
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_Blender3NoBerries
checkitem ITEM_POKEBLOCK_CASE
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_Blender3NoCase
msgbox BerryBlender_Text_OhDear, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetFirstFreePokeblockSlot
goto_if_ne VAR_RESULT, 65535, BerryBlender_EventScript_UseBerryBlender3
goto_if_eq VAR_RESULT, 65535, BerryBlender_EventScript_Blender3CaseFull
end
BerryBlender_EventScript_Blender3CaseFull:
msgbox BerryBlender_Text_PokeblockCaseIsFull3, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender3NoCase:
msgbox BerryBlender_Text_DontHavePokeblockCase3, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_BlendMasterPresent:
lockall
setvar NUM_OPPONENTS, 1
msgbox BerryBlender_Text_SeeMyMasteryInAction, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_TryBlendWithBlendMaster
msgbox BerryBlender_Text_TooBusyNowIsee, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_BlendMasterNoBerries:
msgbox BerryBlender_Text_BlendMasterNoBerries, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_TryBlendWithBlendMaster:
checkitem ITEM_POKEBLOCK_CASE
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_BlendMasterNoCase
specialvar VAR_RESULT, PlayerHasBerries
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_BlendMasterNoBerries
specialvar VAR_RESULT, GetFirstFreePokeblockSlot
goto_if_ne VAR_RESULT, 65535, BerryBlender_EventScript_BlendWithBlendMaster
goto_if_eq VAR_RESULT, 65535, BerryBlender_EventScript_BlendMasterCaseFull
end
BerryBlender_EventScript_BlendWithBlendMaster:
msgbox BerryBlender_Text_BlendMasterKnowHowToMakePokeblocks, MSGBOX_YESNO
call_if_eq VAR_RESULT, NO, BerryBlender_EventScript_BlendMasterExplainBlending
msgbox BerryBlender_Text_BlendMasterLetsBerryBlender, MSGBOX_DEFAULT
goto BerryBlender_EventScript_DoBerryBlending
end
BerryBlender_EventScript_BlendMasterExplainBlending:
msgbox BerryBlender_Text_BlendMasterExplainBerryBlending, MSGBOX_DEFAULT
return
BerryBlender_EventScript_BlendMasterNoCase:
msgbox BerryBlender_Text_BlendMasterNoPokeblockCase, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_BlendMasterCaseFull:
msgbox BerryBlender_Text_BlendMasterPokeblockCaseFull, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_Blender2Man::
msgbox BerryBlender_Text_SetNewBlenderRecord, MSGBOX_NPC
end
BerryBlender_EventScript_Blender3PokefanF::
msgbox BerryBlender_Text_LookGoodAtBlendingJoinUs, MSGBOX_NPC
end
BerryBlender_EventScript_Blender2Twin::
msgbox BerryBlender_Text_MakeDeliciousPokeblocks, MSGBOX_NPC
end
BerryBlender_EventScript_Blender1ExpertM::
setvar VAR_0x8008, 15
goto BerryBlender_EventScript_ExpertMCheckGiveBerry
end
BerryBlender_EventScript_ExpertMCheckGiveBerry:
lock
faceplayer
msgbox BerryBlender_Text_LoveMakingPokeblocks, MSGBOX_DEFAULT
specialvar VAR_RESULT, PlayerHasBerries
goto_if_eq VAR_RESULT, TRUE, BerryBlender_EventScript_ExpertMPlayerHasBerries
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_ExpertMNoBerries
end
BerryBlender_EventScript_ExpertMPlayerHasBerries:
msgbox BerryBlender_Text_MakePokeblocksUsingBerryBlender, MSGBOX_DEFAULT
release
end
BerryBlender_EventScript_ExpertMNoBerries:
checkitem ITEM_POKEBLOCK_CASE
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_ExpertMNoSpareBerries
specialvar VAR_RESULT, GetFirstFreePokeblockSlot
goto_if_eq VAR_RESULT, 65535, BerryBlender_EventScript_ExpertMNoSpareBerries
dotimebasedevents
goto_if_set FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY, BerryBlender_EventScript_ExpertMNoSpareBerries
goto BerryBlender_EventScript_ExpertMGiveBerry
end
BerryBlender_EventScript_ExpertMNoSpareBerries:
msgbox BerryBlender_Text_DontHaveAnyBerriesNoneToSpare, MSGBOX_DEFAULT
release
end
BerryBlender_EventScript_ExpertMGiveBerry:
msgbox BerryBlender_Text_DontHaveAnyBerriesHaveOne, MSGBOX_DEFAULT
giveitem ITEM_PECHA_BERRY
setflag FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY
msgbox BerryBlender_Text_UseItToMakePokeblocksTogether, MSGBOX_DEFAULT
release
end
BerryBlender_Movement_BlendLeaderWalkInPlace:
walk_in_place_faster_right
step_end
BerryBlender_EventScript_BerryBlenderLink::
lockall
specialvar VAR_RESULT, PlayerHasBerries
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_LinkBlenderNoBerries
checkitem ITEM_POKEBLOCK_CASE
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_LinkBlenderNoCase
specialvar VAR_RESULT, GetFirstFreePokeblockSlot
goto_if_ne VAR_RESULT, 65535, BerryBlender_EventScript_LinkBlenderSaveGame
goto_if_eq VAR_RESULT, 65535, BerryBlender_EventScript_LinkBlenderCaseFull
end
BerryBlender_EventScript_LinkBlenderSaveGame:
msgbox BerryBlender_Text_SaveGameBeforeBerryBlenderLink, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, BerryBlender_EventScript_TryDoLinkBlender
goto_if_eq VAR_RESULT, NO, BerryBlender_EventScript_CancelLinkBlender
end
BerryBlender_EventScript_LinkBlenderNoBerries:
msgbox BerryBlender_Text_NoBerriesLink, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_TryDoLinkBlender:
call Common_EventScript_SaveGame
goto_if_eq VAR_RESULT, FALSE, BerryBlender_EventScript_CancelLinkBlender
specialvar VAR_RESULT, IsWirelessAdapterConnected
goto_if_eq VAR_RESULT, TRUE, BerryBlender_EventScript_StartDecideLinkLeader
message BerryBlender_Text_SearchingForFriends
waitmessage
special TryBerryBlenderLinkup
waitstate
goto_if_eq VAR_RESULT, LINKUP_SUCCESS, BerryBlender_EventScript_SpawnLinkPartners
goto_if_eq VAR_RESULT, LINKUP_SOMEONE_NOT_READY, BerryBlender_EventScript_CloseLinkNotReady
goto_if_eq VAR_RESULT, LINKUP_DIFF_SELECTIONS, BerryBlender_EventScript_CloseLinkDifferentSelections
goto_if_eq VAR_RESULT, LINKUP_FAILED, BerryBlender_EventScript_CloseLink
goto_if_eq VAR_RESULT, LINKUP_CONNECTION_ERROR, BerryBlender_EventScript_LinkError
end
BerryBlender_EventScript_TwoPlayerLink:
msgbox BerryBlender_Text_Player1Arrived, MSGBOX_DEFAULT
goto BerryBlender_EventScript_DoLinkBerryBlending
end
BerryBlender_EventScript_ThreePlayerLink:
msgbox BerryBlender_Text_Player1And2Arrived, MSGBOX_DEFAULT
goto BerryBlender_EventScript_DoLinkBerryBlending
end
BerryBlender_EventScript_FourPlayerLink:
msgbox BerryBlender_Text_AllPlayersArrived, MSGBOX_DEFAULT
goto BerryBlender_EventScript_DoLinkBerryBlending
end
BerryBlender_EventScript_DoLinkBerryBlending:
setvar VAR_0x8004, 0 @ number of opponents, 0 indicates Link
fadescreen FADE_TO_BLACK
removeobject 240 @ Unclear where these local IDs come from,
removeobject 239 @ but presumably they'd be the 4 link players
removeobject 238
removeobject 237
special DoBerryBlending
waitstate
releaseall
end
BerryBlender_EventScript_CancelLinkBlender:
releaseall
end
BerryBlender_EventScript_LinkBlenderCaseFull:
msgbox BerryBlender_Text_PokeblockCaseIsFullLink, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_LinkBlenderNoCase:
msgbox BerryBlender_Text_DontHavePokeblockCaseLink, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_CloseLinkNotReady:
special CloseLink
msgbox Text_SomeoneIsNotReadyToLink, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_CloseLinkDifferentSelections:
special CloseLink
msgbox Text_PlayersMadeDifferentSelections, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_CloseLink:
special CloseLink
msgbox gText_PokeblockLinkCanceled, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_LinkError:
special CloseLink
msgbox Text_LinkErrorPleaseReset, MSGBOX_DEFAULT
releaseall
end
BerryBlender_EventScript_SpawnLinkPartners:
fadescreen FADE_TO_BLACK
specialvar VAR_RESULT, GetLinkPartnerNames
copyvar VAR_0x8008, VAR_RESULT
copyvar VAR_0x8004, VAR_0x8008
special SpawnLinkPartnerObjectEvent
goto BerryBlender_EventScript_LinkPlayersArrived
end
BerryBlender_EventScript_LinkPlayersArrived:
fadescreen FADE_FROM_BLACK
switch VAR_0x8008
case 2, BerryBlender_EventScript_TwoPlayerLink
case 3, BerryBlender_EventScript_ThreePlayerLink
case 4, BerryBlender_EventScript_FourPlayerLink
end
BerryBlender_EventScript_StartDecideLinkLeader:
setvar VAR_0x8004, LINK_GROUP_BERRY_BLENDER
goto BerryBlender_EventScript_DecideLinkLeader
end
BerryBlender_EventScript_DecideLinkLeader:
message LilycoveCity_ContestLobby_Text_PleaseDecideLinkLeader
waitmessage
multichoice 16, 6, MULTI_LINK_LEADER, FALSE
switch VAR_RESULT
case 0, BerryBlender_EventScript_TryJoinGroup
case 1, BerryBlender_EventScript_TryLeadGroup
case 2, BerryBlender_EventScript_CloseLink
case MULTI_B_PRESSED, BerryBlender_EventScript_CloseLink
end
BerryBlender_EventScript_TryLeadGroup:
call BerryBlender_EventScript_TryBecomeLinkLeader
goto_if_eq VAR_RESULT, LINKUP_SUCCESS, BerryBlender_EventScript_LinkLeaderDecided
goto_if_eq VAR_RESULT, LINKUP_FAILED, BerryBlender_EventScript_DecideLinkLeader
goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, BerryBlender_EventScript_TryLeadGroup
release
end
BerryBlender_EventScript_TryJoinGroup:
call BerryBlender_EventScript_TryJoinLinkGroup
goto_if_eq VAR_RESULT, LINKUP_SUCCESS, BerryBlender_EventScript_LinkLeaderDecided
goto_if_eq VAR_RESULT, LINKUP_FAILED, BerryBlender_EventScript_DecideLinkLeader
goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, BerryBlender_EventScript_TryJoinGroup
release
end
BerryBlender_EventScript_TryBecomeLinkLeader:
special TryBecomeLinkLeader
waitstate
return
BerryBlender_EventScript_TryJoinLinkGroup:
special TryJoinLinkGroup
waitstate
return
BerryBlender_EventScript_LinkLeaderDecided:
goto BerryBlender_EventScript_SpawnLinkPartners
end