pokeplatinum/res/field/scripts/scripts_battle_castle.s
Viperio 3c0d1255a4
Some checks are pending
build / build (push) Waiting to run
Introduce macros for common message script structures (#975)
2026-03-03 21:20:51 -05:00

541 lines
10 KiB
ArmAsm

#include "macros/scrcmd.inc"
#include "res/text/bank/battle_castle.h"
#include "constants/battle_frontier.h"
ScriptEntry _0059
ScriptEntry _06A4
ScriptEntry _06DD
ScriptEntry _06EC
ScriptEntry _0760
ScriptEntry _0075
ScriptEntry _0788
ScriptEntry _079B
ScriptEntry _07AE
ScriptEntry _07C1
ScriptEntry _07D4
ScriptEntry _07E7
ScriptEntry _07FA
ScriptEntry _003A
ScriptEntryEnd
_003A:
CheckTVInterviewEligible TV_PROGRAM_SEGMENT_BATTLE_FRONTIER_FRONTLINE_NEWS_MULTI, VAR_MAP_LOCAL_0
GoToIfEq VAR_MAP_LOCAL_0, 0, _0053
ClearFlag FLAG_UNK_0x02C3
End
_0053:
SetFlag FLAG_UNK_0x02C3
End
_0059:
PlayFanfare SEQ_SE_CONFIRM
LockAll
FacePlayer
SetVar VAR_MAP_LOCAL_3, 0
SetVar VAR_MAP_LOCAL_4, 0
GoTo _0091
End
_0075:
PlayFanfare SEQ_SE_CONFIRM
LockAll
FacePlayer
SetVar VAR_MAP_LOCAL_3, 0
SetVar VAR_MAP_LOCAL_4, 1
GoTo _0091
End
_0091:
RecordHeapMemory
CallIfEq VAR_MAP_LOCAL_4, 0, _0664
CallIfEq VAR_MAP_LOCAL_4, 1, _0669
GoTo _00B7
End
_00B7:
CallIfEq VAR_MAP_LOCAL_4, 0, _066E
CallIfEq VAR_MAP_LOCAL_4, 1, _0686
AddMenuEntryImm 41, 2
AddMenuEntryImm 42, 3
ShowMenu
GoToIfEq VAR_RESULT, 0, _0152
GoToIfEq VAR_RESULT, 1, _017F
GoToIfEq VAR_RESULT, 2, _0117
GoToIfEq VAR_RESULT, 4, _01AC
GoTo _0139
End
_0117:
CallIfEq VAR_MAP_LOCAL_4, 0, _069A
CallIfEq VAR_MAP_LOCAL_4, 1, _069F
GoTo _00B7
End
_0139:
GoTo _0141
End
_0141:
SetVar VAR_UNK_0x40BC, 0
Message 6
WaitABXPadPress
CloseMessage
ReleaseAll
End
_0152:
SetVar VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_SINGLE
ScrCmd_2D2 0, 3, VAR_RESULT
BufferNumber 0, 3
BufferNumber 1, 3
GoToIfEq VAR_RESULT, 0, _01D9
GoTo _01FF
End
_017F:
SetVar VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_DOUBLE
ScrCmd_2D2 0, 3, VAR_RESULT
BufferNumber 0, 3
BufferNumber 1, 3
GoToIfEq VAR_RESULT, 0, _01D9
GoTo _01FF
End
_01AC:
SetVar VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI
ScrCmd_2D2 0, 2, VAR_RESULT
BufferNumber 0, 2
BufferNumber 1, 2
GoToIfEq VAR_RESULT, 0, _01EC
GoTo _01FF
End
_01D9:
Message 8
MessageSeenBanlistSpecies 9, 3
GoTo _0139
End
_01EC:
Message 8
MessageSeenBanlistSpecies 9, 2
GoTo _0139
End
_01FF:
Message 7
CloseMessage
FadeScreenOut
WaitFadeScreen
ScrCmd_2D2 4, VAR_BATTLE_CASTLE_CHALLENGE_TYPE, VAR_RESULT
ScrCmd_2D4 VAR_MAP_LOCAL_2, VAR_MAP_LOCAL_5, VAR_MAP_LOCAL_6
ReturnToField
FadeScreenIn
WaitFadeScreen
GoToIfEq VAR_MAP_LOCAL_2, 0xFF, _0139
TryRevertPokemonForm VAR_MAP_LOCAL_2, VAR_RESULT
GoToIfEq VAR_RESULT, 0xFF, _05D5
TryRevertPokemonForm VAR_MAP_LOCAL_5, VAR_RESULT
GoToIfEq VAR_RESULT, 0xFF, _05D5
TryRevertPokemonForm VAR_MAP_LOCAL_6, VAR_RESULT
GoToIfEq VAR_RESULT, 0xFF, _05D5
GetPartyMonSpecies VAR_MAP_LOCAL_2, VAR_MAP_LOCAL_1
GoToIfEq VAR_MAP_LOCAL_1, 0, _0139
GoTo _028F
End
_028F:
GoTo _0297
End
_0297:
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_SINGLE, _043C
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_DOUBLE, _043C
SetVar VAR_MAP_LOCAL_0, 0
HealParty
Common_SaveGame
SetVar VAR_RESULT, VAR_MAP_LOCAL_0
GoToIfEq VAR_RESULT, 0, _0139
GoToIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, _02E5
GoTo _049D
End
_02E5:
Message 43
InitGlobalTextMenu 30, 1, 0, VAR_RESULT
SetMenuXOriginToRight
AddMenuEntryImm 13, 0
AddMenuEntryImm 14, 1
AddMenuEntryImm 5, 2
ShowMenu
SetVar VAR_0x8008, VAR_RESULT
GoToIfEq VAR_0x8008, 0, _0329
GoToIfEq VAR_0x8008, 1, _037D
GoTo _0139
End
_0329:
Message 44
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _02E5
CloseMessage
StartBattleClient 31, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _036B
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _0373
GoTo _03D1
End
_036B:
GoTo _02E5
End
_0373:
EndCommunication
GoTo _02E5
End
_037D:
Message 44
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _02E5
CloseMessage
StartBattleServer 31, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _03BF
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _03C7
GoTo _03D1
End
_03BF:
GoTo _02E5
End
_03C7:
EndCommunication
GoTo _02E5
End
_03D1:
ClearReceivedTempDataAllPlayers
ScrCmd_135 136
GetPartyMonSpecies VAR_MAP_LOCAL_2, VAR_0x8000
GetPartyMonSpecies VAR_MAP_LOCAL_5, VAR_0x8001
ScrCmd_2D3 VAR_0x8000, VAR_0x8001, VAR_RESULT
SetVar VAR_0x8008, VAR_RESULT
GoToIfEq VAR_0x8008, 1, _0444
GoToIfEq VAR_0x8008, 2, _045A
GoToIfEq VAR_0x8008, 3, _0470
ClearReceivedTempDataAllPlayers
ScrCmd_135 138
Message 45
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, _043C
Call _06CB
GoTo _049D
End
_043C:
SetVar VAR_UNK_0x40BC, 0xFF
Return
_0444:
Call _0493
BufferPartyMonSpecies 0, VAR_MAP_LOCAL_2
Message 29
GoTo _048B
End
_045A:
Call _0493
BufferPartyMonSpecies 0, VAR_MAP_LOCAL_5
Message 29
GoTo _048B
End
_0470:
Call _0493
BufferPartyMonSpecies 0, VAR_MAP_LOCAL_2
BufferPartyMonSpecies 1, VAR_MAP_LOCAL_5
Message 30
GoTo _048B
End
_048B:
GoTo _0139
End
_0493:
ClearReceivedTempDataAllPlayers
ScrCmd_135 139
EndCommunication
Return
_049D:
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_SINGLE, _053D
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_DOUBLE, _0558
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, _0573
PlayFanfare SEQ_SE_DP_KAIDAN2
GoTo _04D0
End
_04D0:
FadeScreenOut
WaitFadeScreen
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_SINGLE, _0599
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_DOUBLE, _05AD
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, _05C1
IncrementGameRecord RECORD_UNK_058
CreateJournalEvent LOCATION_EVENT_BATTLE_CASTLE, 0, 0, 0, 0
WaitForTransition
ScrCmd_2C4 11
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, _0539
ReturnToField
FadeScreenIn
WaitFadeScreen
AssertHeapMemory
End
_0539:
EndCommunication
Return
_053D:
Message 32
WaitABPress
CloseMessage
ApplyMovement LOCALID_PLAYER, _05E4
ApplyMovement VAR_LAST_TALKED, _0604
WaitMovement
Return
_0558:
Message 32
WaitABPress
CloseMessage
ApplyMovement LOCALID_PLAYER, _05E4
ApplyMovement VAR_LAST_TALKED, _0604
WaitMovement
Return
_0573:
MessageNoSkip 32
WaitTime 10, VAR_RESULT
ClearReceivedTempDataAllPlayers
ScrCmd_135 137
CloseMessage
ApplyMovement LOCALID_PLAYER, _05F0
ApplyMovement VAR_LAST_TALKED, _0610
WaitMovement
Return
_0599:
ApplyMovement LOCALID_PLAYER, _0624
ApplyMovement VAR_LAST_TALKED, _0648
WaitMovement
Return
_05AD:
ApplyMovement LOCALID_PLAYER, _0624
ApplyMovement VAR_LAST_TALKED, _0648
WaitMovement
Return
_05C1:
ApplyMovement LOCALID_PLAYER, _0634
ApplyMovement VAR_LAST_TALKED, _0654
WaitMovement
Return
_05D5:
SetVar VAR_UNK_0x40BC, 0
Common_GriseousOrbCouldNotBeRemoved
End
.balign 4, 0
_05E4:
WalkNormalWest 6
SetInvisible
EndMovement
.balign 4, 0
_05F0:
WalkNormalWest 3
WalkNormalNorth
WalkNormalWest 3
SetInvisible
EndMovement
.balign 4, 0
_0604:
WalkNormalWest 5
SetInvisible
EndMovement
.balign 4, 0
_0610:
WalkNormalWest 2
WalkNormalNorth
WalkNormalWest 3
SetInvisible
EndMovement
.balign 4, 0
_0624:
WalkFasterEast 6
SetVisible
FaceWest
EndMovement
.balign 4, 0
_0634:
WalkFasterEast 6
WalkFasterSouth
SetVisible
FaceWest
EndMovement
.balign 4, 0
_0648:
WalkFasterEast 5
SetVisible
EndMovement
.balign 4, 0
_0654:
WalkFasterSouth
WalkFasterEast 5
SetVisible
EndMovement
_0664:
Message 0
Return
_0669:
Message 3
Return
_066E:
InitLocalTextMenu 31, 9, 0, VAR_RESULT
SetMenuXOriginToRight
AddMenuEntryImm 38, 0
AddMenuEntryImm 39, 1
Message 1
Return
_0686:
InitLocalTextMenu 31, 11, 0, VAR_RESULT
SetMenuXOriginToRight
AddMenuEntryImm 40, 4
Message 4
Return
_069A:
Message 2
Return
_069F:
Message 5
Return
_06A4:
RecordHeapMemory
SetVar VAR_MAP_LOCAL_3, 1
SetVar VAR_UNK_0x40BC, 0
Message 33
Call _043C
Call _06CB
GoTo _049D
End
_06CB:
ShowSavingIcon
TrySaveGame VAR_RESULT
HideSavingIcon
PlayFanfare SEQ_SE_DP_SAVE
WaitFanfare SEQ_SE_DP_SAVE
Return
_06DD:
Message 34
ScrCmd_2D5 VAR_BATTLE_CASTLE_CHALLENGE_TYPE
GoTo _0139
End
_06EC:
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_SINGLE, _0728
CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_DOUBLE, _0728
CallIfEq VAR_BATTLE_CASTLE_PRINT_STATE, 1, _072E
CallIfEq VAR_BATTLE_CASTLE_PRINT_STATE, 3, _0745
GoTo _0139
End
_0728:
IncrementTrainerScore TRAINER_SCORE_EVENT_UNK_39
Return
_072E:
Message 35
BufferPlayerName 0
Message 37
PlaySound SEQ_FANFA4
WaitSound
SetVar VAR_BATTLE_CASTLE_PRINT_STATE, 2
Return
_0745:
Message 35
BufferPlayerName 0
Message 36
PlaySound SEQ_FANFA4
WaitSound
SetVar VAR_BATTLE_CASTLE_PRINT_STATE, 4
Common_CheckAllFrontierGoldPrintsObtained
Return
_0760:
GoTo _0139
End
BattleCastle_UnusedMovement:
WalkNormalNorth 2
Delay8
WalkNormalNorth
EndMovement
BattleCastle_UnusedMovement2:
WalkNormalNorth 2
Delay8
WalkNormalNorth
EndMovement
_0788:
NPCMessage 46
End
_079B:
NPCMessage 47
End
_07AE:
NPCMessage 48
End
_07C1:
NPCMessage 49
End
_07D4:
NPCMessage 50
End
_07E7:
NPCMessage 51
End
_07FA:
NPCMessage 52
End
.balign 4, 0