Merge pull request #863 from GriffinRichards/doc-partymenu

Document party menu
This commit is contained in:
huderlem
2019-10-31 21:36:56 -05:00
committed by GitHub
101 changed files with 4411 additions and 4121 deletions
+1 -1
View File
@@ -1 +1 @@
gUnknown_03006328
gItemUseCB
+2 -2
View File
@@ -175,8 +175,8 @@ gStdScripts_End:: @ 81DC2CC
.include "data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc"
.include "data/maps/FallarborTown_PokemonCenter_1F/scripts.inc"
.include "data/maps/FallarborTown_PokemonCenter_2F/scripts.inc"
.include "data/maps/FallarborTown_House1/scripts.inc"
.include "data/maps/FallarborTown_House2/scripts.inc"
.include "data/maps/FallarborTown_CozmosHouse/scripts.inc"
.include "data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc"
.include "data/maps/VerdanturfTown_BattleTentLobby/scripts.inc"
.include "data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc"
.include "data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc"
@@ -61,10 +61,10 @@ BattleFrontier_BattlePyramidLobby_EventScript_2507D2:: @ 82507D2
msgbox BattleFrontier_BattlePyramidLobby_Text_2525F4, MSGBOX_DEFAULT
BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA
special sub_81B95E0
compare VAR_RESULT, 1
special DoBattlePyramidMonsHaveHeldItem
compare VAR_RESULT, TRUE
call_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250DDB
clearflag FLAG_SPECIAL_FLAG_0x4004
clearflag FLAG_STORING_ITEMS_IN_PYRAMID_BAG
setvar VAR_0x8004, 8
special CallFrontierUtilFunc
special LoadPlayerParty
@@ -494,8 +494,8 @@ BattleFrontier_BattlePyramidLobby_Movement_250DD8: @ 8250DD8
BattleFrontier_BattlePyramidLobby_EventScript_250DDB:: @ 8250DDB
msgbox BattleFrontier_BattlePyramidLobby_Text_2517FC, MSGBOX_DEFAULT
setflag FLAG_SPECIAL_FLAG_0x4004
special sub_81C6A94
setflag FLAG_STORING_ITEMS_IN_PYRAMID_BAG
special TryStoreHeldItemsInPyramidBag
compare VAR_RESULT, 0
goto_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250E00
message BattleFrontier_BattlePyramidLobby_Text_2518C6
@@ -525,7 +525,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250E40:: @ 8250E40
end
BattleFrontier_BattlePyramidLobby_EventScript_250E50:: @ 8250E50
special sub_81B9620
special BattlePyramidChooseMonHeldItems
waitstate
message BattleFrontier_BattlePyramidLobby_Text_25197E
waitmessage
@@ -533,8 +533,8 @@ BattleFrontier_BattlePyramidLobby_EventScript_250E50:: @ 8250E50
end
BattleFrontier_BattlePyramidLobby_EventScript_250E60:: @ 8250E60
special sub_81B95E0
compare VAR_RESULT, 1
special DoBattlePyramidMonsHaveHeldItem
compare VAR_RESULT, TRUE
goto_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250E6F
return
+1 -1
View File
@@ -11,7 +11,7 @@ BattleFrontier_Lounge1_EventScript_25E775:: @ 825E775
end
BattleFrontier_Lounge1_EventScript_25E792:: @ 825E792
special sub_81B94B0
special ChoosePartyMon
waitstate
compare VAR_0x8004, 255
goto_if_ne BattleFrontier_Lounge1_EventScript_25E7BF
+1 -1
View File
@@ -7,7 +7,7 @@ BattleFrontier_Lounge5_EventScript_NatureGirl:: @ 82645C6
msgbox BattleFrontier_Lounge5_Text_NatureGirlGreeting, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq BattleFrontier_Lounge5_EventScript_NatureGirlNoneShown
special sub_81B94B0
special ChoosePartyMon
waitstate
lock
faceplayer
+1 -1
View File
@@ -12,7 +12,7 @@ BattleFrontier_Lounge6_EventScript_264FED:: @ 8264FED
msgbox BattleFrontier_Lounge6_Text_26508D, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq BattleFrontier_Lounge6_EventScript_26506B
special sub_81B94B0
special ChoosePartyMon
waitstate
copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255
+1 -1
View File
@@ -265,7 +265,7 @@ BattleFrontier_Lounge7_EventScript_265696:: @ 8265696
fadescreen 1
special CloseBattlePointsWindow
special CloseBattleFrontierTutorWindow
special OpenPartyMenuForMoveTutor
special ChooseMonForMoveTutor
waitstate
compare VAR_RESULT, 0
goto_if_eq BattleFrontier_Lounge7_EventScript_265645
+2 -2
View File
@@ -104,14 +104,14 @@
"x": 6,
"y": 17,
"elevation": 0,
"dest_map": "MAP_FALLARBOR_TOWN_HOUSE1",
"dest_map": "MAP_FALLARBOR_TOWN_COZMOS_HOUSE",
"dest_warp_id": 0
},
{
"x": 1,
"y": 6,
"elevation": 0,
"dest_map": "MAP_FALLARBOR_TOWN_HOUSE2",
"dest_map": "MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE",
"dest_warp_id": 0
}
],
@@ -1,6 +1,6 @@
{
"id": "MAP_FALLARBOR_TOWN_HOUSE1",
"name": "FallarborTown_House1",
"id": "MAP_FALLARBOR_TOWN_COZMOS_HOUSE",
"name": "FallarborTown_CozmosHouse",
"layout": "LAYOUT_HOUSE1",
"music": "MUS_TONEKUSA",
"region_map_section": "MAPSEC_FALLARBOR_TOWN",
@@ -24,8 +24,8 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
"script": "FallarborTown_House1_EventScript_200F13",
"flag": "FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO"
"script": "FallarborTown_CozmosHouse_EventScript_200F13",
"flag": "FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO"
},
{
"graphics_id": "EVENT_OBJ_GFX_WOMAN_2",
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
"script": "FallarborTown_House1_EventScript_200FBC",
"script": "FallarborTown_CozmosHouse_EventScript_200FBC",
"flag": "0"
}
],
@@ -0,0 +1,121 @@
FallarborTown_CozmosHouse_MapScripts:: @ 8200F12
.byte 0
FallarborTown_CozmosHouse_EventScript_200F13:: @ 8200F13
lock
faceplayer
goto_if_set FLAG_RECEIVED_TM27, FallarborTown_CozmosHouse_EventScript_200FB2
checkitem ITEM_METEORITE, 1
compare VAR_RESULT, 1
goto_if_eq FallarborTown_CozmosHouse_EventScript_200F38
msgbox FallarborTown_CozmosHouse_Text_200FEE, MSGBOX_DEFAULT
release
end
FallarborTown_CozmosHouse_EventScript_200F38:: @ 8200F38
call_if_unset FLAG_TEMP_2, FallarborTown_CozmosHouse_EventScript_200F8B
call_if_set FLAG_TEMP_2, FallarborTown_CozmosHouse_EventScript_200F9C
compare VAR_RESULT, 0
goto_if_eq FallarborTown_CozmosHouse_EventScript_200FA5
msgbox FallarborTown_CozmosHouse_Text_201159, MSGBOX_DEFAULT
giveitem_std ITEM_TM27
compare VAR_RESULT, 0
goto_if_eq Common_EventScript_ShowBagIsFull
setvar VAR_0x8004, ITEM_METEORITE
call Common_EventScript_PlayerHandedOverTheItem
setflag FLAG_RECEIVED_TM27
msgbox FallarborTown_CozmosHouse_Text_2011A5, MSGBOX_DEFAULT
release
end
FallarborTown_CozmosHouse_EventScript_200F8B:: @ 8200F8B
msgbox FallarborTown_CozmosHouse_Text_200FEE, MSGBOX_DEFAULT
msgbox FallarborTown_CozmosHouse_Text_2010A2, MSGBOX_YESNO
return
FallarborTown_CozmosHouse_EventScript_200F9C:: @ 8200F9C
msgbox FallarborTown_CozmosHouse_Text_201249, MSGBOX_YESNO
return
FallarborTown_CozmosHouse_EventScript_200FA5:: @ 8200FA5
setflag FLAG_TEMP_2
msgbox FallarborTown_CozmosHouse_Text_201212, MSGBOX_DEFAULT
release
end
FallarborTown_CozmosHouse_EventScript_200FB2:: @ 8200FB2
msgbox FallarborTown_CozmosHouse_Text_2011A5, MSGBOX_DEFAULT
release
end
FallarborTown_CozmosHouse_EventScript_200FBC:: @ 8200FBC
lock
faceplayer
goto_if_set FLAG_RECEIVED_TM27, FallarborTown_CozmosHouse_EventScript_200FE4
goto_if_set FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, FallarborTown_CozmosHouse_EventScript_200FDA
msgbox FallarborTown_CozmosHouse_Text_2012BC, MSGBOX_DEFAULT
release
end
FallarborTown_CozmosHouse_EventScript_200FDA:: @ 8200FDA
msgbox FallarborTown_CozmosHouse_Text_201310, MSGBOX_DEFAULT
release
end
FallarborTown_CozmosHouse_EventScript_200FE4:: @ 8200FE4
msgbox FallarborTown_CozmosHouse_Text_20134B, MSGBOX_DEFAULT
release
end
FallarborTown_CozmosHouse_Text_200FEE: @ 8200FEE
.string "PROF. COZMO: Oh…\n"
.string "I never should have let myself be\l"
.string "conned into telling TEAM MAGMA where\l"
.string "you can find METEORITES…\p"
.string "That METEORITE from METEOR FALLS…\n"
.string "It's never going to be mine now…$"
FallarborTown_CozmosHouse_Text_2010A2: @ 82010A2
.string "Oh!\n"
.string "Hah?\p"
.string "That item…\p"
.string "Could it be?\p"
.string "Is it the METEORITE that TEAM MAGMA\n"
.string "took from METEOR FALLS?\p"
.string "Please, may I have it?\p"
.string "I'm not asking for it for free.\n"
.string "How about in exchange for this TM?$"
FallarborTown_CozmosHouse_Text_201159: @ 8201159
.string "PROF. COZMO: This TM, it represents\n"
.string "my feeling of gratitude.\l"
.string "Please use it!$"
FallarborTown_CozmosHouse_Text_2011A5: @ 82011A5
.string "PROF. COZMO: Oh, I can't believe it.\n"
.string "This is really, really great!\p"
.string "This is really going to help my research!$"
FallarborTown_CozmosHouse_Text_201212: @ 8201212
.string "PROF. COZMO: Oh, but…\n"
.string "I'm crushed with disappointment…$"
FallarborTown_CozmosHouse_Text_201249: @ 8201249
.string "PROF. COZMO: Please, may I have that\n"
.string "METEORITE?\p"
.string "I'm not asking for it for free.\n"
.string "How about in exchange for this TM?$"
FallarborTown_CozmosHouse_Text_2012BC: @ 82012BC
.string "PROF. COZMO went off to METEOR FALLS\n"
.string "on ROUTE 114 with some people from\l"
.string "TEAM MAGMA.$"
FallarborTown_CozmosHouse_Text_201310: @ 8201310
.string "Poor PROF. COZMO…\n"
.string "He's so depressed… I feel sorry for him.$"
FallarborTown_CozmosHouse_Text_20134B: @ 820134B
.string "Look at PROF. COZMO…\n"
.string "He's so happy! I think it's cute.$"
-121
View File
@@ -1,121 +0,0 @@
FallarborTown_House1_MapScripts:: @ 8200F12
.byte 0
FallarborTown_House1_EventScript_200F13:: @ 8200F13
lock
faceplayer
goto_if_set FLAG_RECEIVED_TM27, FallarborTown_House1_EventScript_200FB2
checkitem ITEM_METEORITE, 1
compare VAR_RESULT, 1
goto_if_eq FallarborTown_House1_EventScript_200F38
msgbox FallarborTown_House1_Text_200FEE, MSGBOX_DEFAULT
release
end
FallarborTown_House1_EventScript_200F38:: @ 8200F38
call_if_unset FLAG_TEMP_2, FallarborTown_House1_EventScript_200F8B
call_if_set FLAG_TEMP_2, FallarborTown_House1_EventScript_200F9C
compare VAR_RESULT, 0
goto_if_eq FallarborTown_House1_EventScript_200FA5
msgbox FallarborTown_House1_Text_201159, MSGBOX_DEFAULT
giveitem_std ITEM_TM27
compare VAR_RESULT, 0
goto_if_eq Common_EventScript_ShowBagIsFull
setvar VAR_0x8004, ITEM_METEORITE
call Common_EventScript_PlayerHandedOverTheItem
setflag FLAG_RECEIVED_TM27
msgbox FallarborTown_House1_Text_2011A5, MSGBOX_DEFAULT
release
end
FallarborTown_House1_EventScript_200F8B:: @ 8200F8B
msgbox FallarborTown_House1_Text_200FEE, MSGBOX_DEFAULT
msgbox FallarborTown_House1_Text_2010A2, MSGBOX_YESNO
return
FallarborTown_House1_EventScript_200F9C:: @ 8200F9C
msgbox FallarborTown_House1_Text_201249, MSGBOX_YESNO
return
FallarborTown_House1_EventScript_200FA5:: @ 8200FA5
setflag FLAG_TEMP_2
msgbox FallarborTown_House1_Text_201212, MSGBOX_DEFAULT
release
end
FallarborTown_House1_EventScript_200FB2:: @ 8200FB2
msgbox FallarborTown_House1_Text_2011A5, MSGBOX_DEFAULT
release
end
FallarborTown_House1_EventScript_200FBC:: @ 8200FBC
lock
faceplayer
goto_if_set FLAG_RECEIVED_TM27, FallarborTown_House1_EventScript_200FE4
goto_if_set FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, FallarborTown_House1_EventScript_200FDA
msgbox FallarborTown_House1_Text_2012BC, MSGBOX_DEFAULT
release
end
FallarborTown_House1_EventScript_200FDA:: @ 8200FDA
msgbox FallarborTown_House1_Text_201310, MSGBOX_DEFAULT
release
end
FallarborTown_House1_EventScript_200FE4:: @ 8200FE4
msgbox FallarborTown_House1_Text_20134B, MSGBOX_DEFAULT
release
end
FallarborTown_House1_Text_200FEE: @ 8200FEE
.string "PROF. COZMO: Oh…\n"
.string "I never should have let myself be\l"
.string "conned into telling TEAM MAGMA where\l"
.string "you can find METEORITES…\p"
.string "That METEORITE from METEOR FALLS…\n"
.string "It's never going to be mine now…$"
FallarborTown_House1_Text_2010A2: @ 82010A2
.string "Oh!\n"
.string "Hah?\p"
.string "That item…\p"
.string "Could it be?\p"
.string "Is it the METEORITE that TEAM MAGMA\n"
.string "took from METEOR FALLS?\p"
.string "Please, may I have it?\p"
.string "I'm not asking for it for free.\n"
.string "How about in exchange for this TM?$"
FallarborTown_House1_Text_201159: @ 8201159
.string "PROF. COZMO: This TM, it represents\n"
.string "my feeling of gratitude.\l"
.string "Please use it!$"
FallarborTown_House1_Text_2011A5: @ 82011A5
.string "PROF. COZMO: Oh, I can't believe it.\n"
.string "This is really, really great!\p"
.string "This is really going to help my research!$"
FallarborTown_House1_Text_201212: @ 8201212
.string "PROF. COZMO: Oh, but…\n"
.string "I'm crushed with disappointment…$"
FallarborTown_House1_Text_201249: @ 8201249
.string "PROF. COZMO: Please, may I have that\n"
.string "METEORITE?\p"
.string "I'm not asking for it for free.\n"
.string "How about in exchange for this TM?$"
FallarborTown_House1_Text_2012BC: @ 82012BC
.string "PROF. COZMO went off to METEOR FALLS\n"
.string "on ROUTE 114 with some people from\l"
.string "TEAM MAGMA.$"
FallarborTown_House1_Text_201310: @ 8201310
.string "Poor PROF. COZMO…\n"
.string "He's so depressed… I feel sorry for him.$"
FallarborTown_House1_Text_20134B: @ 820134B
.string "Look at PROF. COZMO…\n"
.string "He's so happy! I think it's cute.$"
-102
View File
@@ -1,102 +0,0 @@
FallarborTown_House2_MapScripts:: @ 8201382
.byte 0
FallarborTown_House2_EventScript_201383:: @ 8201383
lockall
applymovement 1, Common_Movement_FacePlayer
waitmovement 0
goto_if_set FLAG_TEMP_1, FallarborTown_House2_EventScript_2013A8
msgbox FallarborTown_House2_Text_20145C, MSGBOX_DEFAULT
setflag FLAG_TEMP_1
goto FallarborTown_House2_EventScript_2013A8
end
FallarborTown_House2_EventScript_2013A8:: @ 82013A8
checkitem ITEM_HEART_SCALE, 1
compare VAR_RESULT, 0
goto_if_eq FallarborTown_House2_EventScript_201452
msgbox FallarborTown_House2_Text_201541, MSGBOX_YESNO
switch VAR_RESULT
case 0, FallarborTown_House2_EventScript_201452
goto FallarborTown_House2_EventScript_2013D6
end
FallarborTown_House2_EventScript_2013D6:: @ 82013D6
msgbox FallarborTown_House2_Text_2015A5, MSGBOX_DEFAULT
special sub_81B951C
waitstate
compare VAR_0x8004, 255
goto_if_eq FallarborTown_House2_EventScript_201452
special sub_81B98DC
compare VAR_RESULT, 1
goto_if_eq FallarborTown_House2_EventScript_201444
compare VAR_0x8005, 0
goto_if_eq FallarborTown_House2_EventScript_201436
goto FallarborTown_House2_EventScript_20140C
end
FallarborTown_House2_EventScript_20140C:: @ 820140C
msgbox FallarborTown_House2_Text_2015C3, MSGBOX_DEFAULT
special TeachMoveRelearnerMove
waitstate
compare VAR_0x8004, 0
goto_if_eq FallarborTown_House2_EventScript_2013D6
msgbox FallarborTown_House2_Text_201627, MSGBOX_DEFAULT
takeitem ITEM_HEART_SCALE, 1
goto FallarborTown_House2_EventScript_201452
end
FallarborTown_House2_EventScript_201436:: @ 8201436
msgbox FallarborTown_House2_Text_2015DE, MSGBOX_DEFAULT
goto FallarborTown_House2_EventScript_2013D6
end
FallarborTown_House2_EventScript_201444:: @ 8201444
msgbox FallarborTown_House2_Text_201697, MSGBOX_DEFAULT
goto FallarborTown_House2_EventScript_2013D6
end
FallarborTown_House2_EventScript_201452:: @ 8201452
msgbox FallarborTown_House2_Text_201653, MSGBOX_DEFAULT
releaseall
end
FallarborTown_House2_Text_20145C: @ 820145C
.string "I'm the MOVE TUTOR.\p"
.string "I know all the moves that POKéMON\n"
.string "learn--every one of them--and I can\l"
.string "teach POKéMON those moves.\p"
.string "I can teach a move to a POKéMON\n"
.string "of yours if you'd like.\p"
.string "I'll do it for a HEART SCALE.\n"
.string "I'm collecting those now.$"
FallarborTown_House2_Text_201541: @ 8201541
.string "Oh! That's it! That's an honest to\n"
.string "goodness HEART SCALE!\p"
.string "Let me guess, you want me to teach\n"
.string "a move?$"
FallarborTown_House2_Text_2015A5: @ 82015A5
.string "Which POKéMON needs tutoring?$"
FallarborTown_House2_Text_2015C3: @ 82015C3
.string "Which move should I teach?$"
FallarborTown_House2_Text_2015DE: @ 82015DE
.string "Sorry…\p"
.string "It doesn't appear as if I have any move\n"
.string "I can teach that POKéMON.$"
FallarborTown_House2_Text_201627: @ 8201627
.string "{PLAYER} handed over one HEART SCALE\n"
.string "in exchange.$"
FallarborTown_House2_Text_201653: @ 8201653
.string "If your POKéMON need to learn a move,\n"
.string "come back with a HEART SCALE.$"
FallarborTown_House2_Text_201697: @ 8201697
.string "Hunh? There isn't a single move that\n"
.string "I can teach an EGG.$"
@@ -1,6 +1,6 @@
{
"id": "MAP_FALLARBOR_TOWN_HOUSE2",
"name": "FallarborTown_House2",
"id": "MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE",
"name": "FallarborTown_MoveRelearnersHouse",
"layout": "LAYOUT_HOUSE2",
"music": "MUS_TONEKUSA",
"region_map_section": "MAPSEC_FALLARBOR_TOWN",
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
"script": "FallarborTown_House2_EventScript_201383",
"script": "FallarborTown_MoveRelearnersHouse_EventScript_MoveRelearner",
"flag": "0"
}
],
@@ -0,0 +1,102 @@
FallarborTown_MoveRelearnersHouse_MapScripts:: @ 8201382
.byte 0
FallarborTown_MoveRelearnersHouse_EventScript_MoveRelearner:: @ 8201383
lockall
applymovement 1, Common_Movement_FacePlayer
waitmovement 0
goto_if_set FLAG_TEMP_1, FallarborTown_MoveRelearnersHouse_EventScript_AskTeachMove
msgbox FallarborTown_MoveRelearnersHouse_Text_ImTheMoveTutor, MSGBOX_DEFAULT
setflag FLAG_TEMP_1
goto FallarborTown_MoveRelearnersHouse_EventScript_AskTeachMove
end
FallarborTown_MoveRelearnersHouse_EventScript_AskTeachMove:: @ 82013A8
checkitem ITEM_HEART_SCALE, 1
compare VAR_RESULT, 0
goto_if_eq FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale
msgbox FallarborTown_MoveRelearnersHouse_Text_ThatsAHeartScaleWantMeToTeachMove, MSGBOX_YESNO
switch VAR_RESULT
case 0, FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale
goto FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon
end
FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon:: @ 82013D6
msgbox FallarborTown_MoveRelearnersHouse_Text_TutorWhichMon, MSGBOX_DEFAULT
special ChooseMonForMoveRelearner
waitstate
compare VAR_0x8004, 255
goto_if_eq FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale
special IsSelectedMonEgg
compare VAR_RESULT, TRUE
goto_if_eq FallarborTown_MoveRelearnersHouse_EventScript_CantTeachEgg
compare VAR_0x8005, 0
goto_if_eq FallarborTown_MoveRelearnersHouse_EventScript_NoMoveToTeachMon
goto FallarborTown_MoveRelearnersHouse_EventScript_ChooseMove
end
FallarborTown_MoveRelearnersHouse_EventScript_ChooseMove:: @ 820140C
msgbox FallarborTown_MoveRelearnersHouse_Text_TeachWhichMove, MSGBOX_DEFAULT
special TeachMoveRelearnerMove
waitstate
compare VAR_0x8004, 0
goto_if_eq FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon
msgbox FallarborTown_MoveRelearnersHouse_Text_HandedOverHeartScale, MSGBOX_DEFAULT
takeitem ITEM_HEART_SCALE, 1
goto FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale
end
FallarborTown_MoveRelearnersHouse_EventScript_NoMoveToTeachMon:: @ 8201436
msgbox FallarborTown_MoveRelearnersHouse_Text_DontHaveMoveToTeachPokemon, MSGBOX_DEFAULT
goto FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon
end
FallarborTown_MoveRelearnersHouse_EventScript_CantTeachEgg:: @ 8201444
msgbox FallarborTown_MoveRelearnersHouse_Text_CantTeachEgg, MSGBOX_DEFAULT
goto FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon
end
FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale:: @ 8201452
msgbox FallarborTown_MoveRelearnersHouse_Text_ComeBackWithHeartScale, MSGBOX_DEFAULT
releaseall
end
FallarborTown_MoveRelearnersHouse_Text_ImTheMoveTutor: @ 820145C
.string "I'm the MOVE TUTOR.\p"
.string "I know all the moves that POKéMON\n"
.string "learn--every one of them--and I can\l"
.string "teach POKéMON those moves.\p"
.string "I can teach a move to a POKéMON\n"
.string "of yours if you'd like.\p"
.string "I'll do it for a HEART SCALE.\n"
.string "I'm collecting those now.$"
FallarborTown_MoveRelearnersHouse_Text_ThatsAHeartScaleWantMeToTeachMove: @ 8201541
.string "Oh! That's it! That's an honest to\n"
.string "goodness HEART SCALE!\p"
.string "Let me guess, you want me to teach\n"
.string "a move?$"
FallarborTown_MoveRelearnersHouse_Text_TutorWhichMon: @ 82015A5
.string "Which POKéMON needs tutoring?$"
FallarborTown_MoveRelearnersHouse_Text_TeachWhichMove: @ 82015C3
.string "Which move should I teach?$"
FallarborTown_MoveRelearnersHouse_Text_DontHaveMoveToTeachPokemon: @ 82015DE
.string "Sorry…\p"
.string "It doesn't appear as if I have any move\n"
.string "I can teach that POKéMON.$"
FallarborTown_MoveRelearnersHouse_Text_HandedOverHeartScale: @ 8201627
.string "{PLAYER} handed over one HEART SCALE\n"
.string "in exchange.$"
FallarborTown_MoveRelearnersHouse_Text_ComeBackWithHeartScale: @ 8201653
.string "If your POKéMON need to learn a move,\n"
.string "come back with a HEART SCALE.$"
FallarborTown_MoveRelearnersHouse_Text_CantTeachEgg: @ 8201697
.string "Hunh? There isn't a single move that\n"
.string "I can teach an EGG.$"
+1 -1
View File
@@ -12,7 +12,7 @@ FortreeCity_House1_EventScript_2162BB:: @ 82162BB
msgbox FortreeCity_House1_Text_21637B, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq FortreeCity_House1_EventScript_21633D
special sub_81B94B0
special ChoosePartyMon
waitstate
copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_MoveDeletersHouse_EventScript_21EA0B",
"script": "LilycoveCity_MoveDeletersHouse_EventScript_MoveDeleter",
"flag": "0"
}
],
@@ -1,110 +1,110 @@
LilycoveCity_MoveDeletersHouse_MapScripts:: @ 821EA0A
.byte 0
LilycoveCity_MoveDeletersHouse_EventScript_21EA0B:: @ 821EA0B
LilycoveCity_MoveDeletersHouse_EventScript_MoveDeleter:: @ 821EA0B
lockall
applymovement 1, Common_Movement_FacePlayer
waitmovement 0
msgbox LilycoveCity_MoveDeletersHouse_Text_21EAFD, MSGBOX_YESNO
msgbox LilycoveCity_MoveDeletersHouse_Text_ICanMakeMonForgetMove, MSGBOX_YESNO
switch VAR_RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_21EA3B
case 0, LilycoveCity_MoveDeletersHouse_EventScript_21EAE6
case 1, LilycoveCity_MoveDeletersHouse_EventScript_ChooseMonAndMoveToForget
case 0, LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain
releaseall
end
LilycoveCity_MoveDeletersHouse_EventScript_21EA3B:: @ 821EA3B
msgbox LilycoveCity_MoveDeletersHouse_Text_21EB65, MSGBOX_DEFAULT
special sub_81B94B0
LilycoveCity_MoveDeletersHouse_EventScript_ChooseMonAndMoveToForget:: @ 821EA3B
msgbox LilycoveCity_MoveDeletersHouse_Text_WhichMonShouldForget, MSGBOX_DEFAULT
special ChoosePartyMon
waitstate
compare VAR_0x8004, 255
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EAE6
special sub_81B98DC
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain
special IsSelectedMonEgg
compare VAR_RESULT, TRUE
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_EggCantForgetMoves
special GetNumMovesSelectedMonHas
compare VAR_RESULT, 1
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EADC
special sub_81B96D0
compare VAR_RESULT, 1
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EACF
msgbox LilycoveCity_MoveDeletersHouse_Text_21EB89, MSGBOX_DEFAULT
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_MonOnlyKnowsOneMove
msgbox LilycoveCity_MoveDeletersHouse_Text_WhichMoveShouldBeForgotten, MSGBOX_DEFAULT
fadescreen 1
special sub_81B968C
special MoveDeleterChooseMoveToForget
fadescreen 0
compare VAR_0x8005, 4
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EA3B
special sub_81B9718
msgbox LilycoveCity_MoveDeletersHouse_Text_21EBDA, MSGBOX_YESNO
compare VAR_0x8005, MAX_MON_MOVES
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_ChooseMonAndMoveToForget
special BufferMoveDeleterNicknameAndMove
msgbox LilycoveCity_MoveDeletersHouse_Text_MonsMoveShouldBeForgotten, MSGBOX_YESNO
switch VAR_RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_21EAB0
case 0, LilycoveCity_MoveDeletersHouse_EventScript_21EAE6
case 1, LilycoveCity_MoveDeletersHouse_EventScript_TryForgetMove
case 0, LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain
releaseall
end
LilycoveCity_MoveDeletersHouse_EventScript_21EAB0:: @ 821EAB0
special sub_81B9918
compare VAR_RESULT, 1
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EAF0
special sub_81B9770
LilycoveCity_MoveDeletersHouse_EventScript_TryForgetMove:: @ 821EAB0
special IsLastMonThatKnowsSurf
compare VAR_RESULT, TRUE
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_LastMonWithSurf
special MoveDeleterForgetMove
playfanfare MUS_ME_WASURE
waitfanfare
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC06, MSGBOX_DEFAULT
msgbox LilycoveCity_MoveDeletersHouse_Text_MonHasForgottenMove, MSGBOX_DEFAULT
releaseall
end
LilycoveCity_MoveDeletersHouse_EventScript_21EACF:: @ 821EACF
special sub_81B9718
msgbox LilycoveCity_MoveDeletersHouse_Text_21EBA9, MSGBOX_DEFAULT
LilycoveCity_MoveDeletersHouse_EventScript_MonOnlyKnowsOneMove:: @ 821EACF
special BufferMoveDeleterNicknameAndMove
msgbox LilycoveCity_MoveDeletersHouse_Text_MonOnlyKnowsOneMove, MSGBOX_DEFAULT
releaseall
end
LilycoveCity_MoveDeletersHouse_EventScript_21EADC:: @ 821EADC
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC78, MSGBOX_DEFAULT
LilycoveCity_MoveDeletersHouse_EventScript_EggCantForgetMoves:: @ 821EADC
msgbox LilycoveCity_MoveDeletersHouse_Text_EggCantForgetMoves, MSGBOX_DEFAULT
releaseall
end
LilycoveCity_MoveDeletersHouse_EventScript_21EAE6:: @ 821EAE6
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC3F, MSGBOX_DEFAULT
LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain:: @ 821EAE6
msgbox LilycoveCity_MoveDeletersHouse_Text_ComeAgain, MSGBOX_DEFAULT
releaseall
end
LilycoveCity_MoveDeletersHouse_EventScript_21EAF0:: @ 821EAF0
special sub_81B9718
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC9C, MSGBOX_DEFAULT
LilycoveCity_MoveDeletersHouse_EventScript_LastMonWithSurf:: @ 821EAF0
special BufferMoveDeleterNicknameAndMove
msgbox LilycoveCity_MoveDeletersHouse_Text_CantForgetSurf, MSGBOX_DEFAULT
releaseall
end
LilycoveCity_MoveDeletersHouse_Text_21EAFD: @ 821EAFD
LilycoveCity_MoveDeletersHouse_Text_ICanMakeMonForgetMove: @ 821EAFD
.string "Uh…\n"
.string "Oh, yes, I'm the MOVE DELETER.\p"
.string "I can make POKéMON forget their moves.\p"
.string "Would you like me to do that?$"
LilycoveCity_MoveDeletersHouse_Text_21EB65: @ 821EB65
LilycoveCity_MoveDeletersHouse_Text_WhichMonShouldForget: @ 821EB65
.string "Which POKéMON should forget a move?$"
LilycoveCity_MoveDeletersHouse_Text_21EB89: @ 821EB89
LilycoveCity_MoveDeletersHouse_Text_WhichMoveShouldBeForgotten: @ 821EB89
.string "Which move should be forgotten?$"
LilycoveCity_MoveDeletersHouse_Text_21EBA9: @ 821EBA9
LilycoveCity_MoveDeletersHouse_Text_MonOnlyKnowsOneMove: @ 821EBA9
.string "{STR_VAR_1} knows only one move\n"
.string "so it can't be forgotten…$"
LilycoveCity_MoveDeletersHouse_Text_21EBDA: @ 821EBDA
LilycoveCity_MoveDeletersHouse_Text_MonsMoveShouldBeForgotten: @ 821EBDA
.string "Hm! {STR_VAR_1}'s {STR_VAR_2}?\n"
.string "That move should be forgotten?$"
LilycoveCity_MoveDeletersHouse_Text_21EC06: @ 821EC06
LilycoveCity_MoveDeletersHouse_Text_MonHasForgottenMove: @ 821EC06
.string "It worked to perfection!\p"
.string "{STR_VAR_1} has forgotten\n"
.string "{STR_VAR_2} completely.$"
LilycoveCity_MoveDeletersHouse_Text_21EC3F: @ 821EC3F
LilycoveCity_MoveDeletersHouse_Text_ComeAgain: @ 821EC3F
.string "Come again if there are moves that\n"
.string "need to be forgotten.$"
LilycoveCity_MoveDeletersHouse_Text_21EC78: @ 821EC78
LilycoveCity_MoveDeletersHouse_Text_EggCantForgetMoves: @ 821EC78
.string "What?\n"
.string "No EGG should know any moves.$"
LilycoveCity_MoveDeletersHouse_Text_21EC9C: @ 821EC9C
LilycoveCity_MoveDeletersHouse_Text_CantForgetSurf: @ 821EC9C
.string "Hm!\p"
.string "Your {STR_VAR_1} doesn't seem willing\n"
.string "to forget SURF.$"
+1 -1
View File
@@ -71,7 +71,7 @@ MtChimney_EventScript_22EE0B:: @ 822EE0B
removeobject 1
setflag FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA
setflag FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY
clearflag FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO
clearflag FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO
setflag FLAG_HIDE_METEOR_FALLS_1F_1R_COZMO
clearflag FLAG_HIDE_MT_CHIMNEY_LAVA_COOKIE_LADY
releaseall
+1 -1
View File
@@ -12,7 +12,7 @@ PacifidlogTown_House3_EventScript_203C11:: @ 8203C11
msgbox PacifidlogTown_House3_Text_203CBE, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq PacifidlogTown_House3_EventScript_203C93
special sub_81B94B0
special ChoosePartyMon
waitstate
copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255
+1 -1
View File
@@ -12,7 +12,7 @@ RustboroCity_House1_EventScript_21593F:: @ 821593F
msgbox RustboroCity_House1_Text_2159E8, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq RustboroCity_House1_EventScript_2159BD
special sub_81B94B0
special ChoosePartyMon
waitstate
copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255
+1 -1
View File
@@ -13,7 +13,7 @@ SlateportCity_House1_EventScript_209AA5:: @ 8209AA5
SlateportCity_House1_EventScript_209AC6:: @ 8209AC6
msgbox SlateportCity_House1_Text_209BFF, MSGBOX_DEFAULT
special sub_81B94B0
special ChoosePartyMon
waitstate
compare VAR_0x8004, 255
goto_if_ne SlateportCity_House1_EventScript_209AF3
@@ -6,7 +6,7 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_22722B:: @ 822722B
lock
faceplayer
msgbox SootopolisCity_LotadAndSeedotHouse_Text_227369, MSGBOX_DEFAULT
special sub_81B94B0
special ChoosePartyMon
waitstate
copyvar VAR_RESULT, VAR_0x8004
compare VAR_RESULT, 255
@@ -55,7 +55,7 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_2272BC:: @ 82272BC
lock
faceplayer
msgbox SootopolisCity_LotadAndSeedotHouse_Text_227676, MSGBOX_DEFAULT
special sub_81B94B0
special ChoosePartyMon
waitstate
copyvar VAR_RESULT, VAR_0x8004
compare VAR_RESULT, 255
+2 -2
View File
@@ -132,8 +132,8 @@
"FallarborTown_BattleTentBattleRoom",
"FallarborTown_PokemonCenter_1F",
"FallarborTown_PokemonCenter_2F",
"FallarborTown_House1",
"FallarborTown_House2"
"FallarborTown_CozmosHouse",
"FallarborTown_MoveRelearnersHouse"
],
"gMapGroup6": [
"VerdanturfTown_BattleTentLobby",
+2 -2
View File
@@ -911,7 +911,7 @@ EventScript_DoLinkRoomExit:: @ 8277513
CableClub_EventScript_UnionRoomAttendant:: @ 827751B
lock
faceplayer
setvar VAR_FRONTIER_FACILITY, 8
setvar VAR_FRONTIER_FACILITY, FACILITY_UNION_ROOM
goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements
specialvar VAR_RESULT, IsBadEggInParty
compare VAR_RESULT, TRUE
@@ -1019,7 +1019,7 @@ CableClub_EventScript_DontAskAboutLinking:: @ 827769A
CableClub_EventScript_DirectCornerAttendant:: @ 82776A4
lock
faceplayer
setvar VAR_FRONTIER_FACILITY, 9
setvar VAR_FRONTIER_FACILITY, FACILITY_MULTI_OR_EREADER @ Set preemptively for multi battles, ignored otherwise
goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements
specialvar VAR_RESULT, IsBadEggInParty
compare VAR_RESULT, TRUE
+1 -1
View File
@@ -289,7 +289,7 @@ MoveTutor_EventScript_ExplosionTaught:: @ 82C831C
end
MoveTutor_EventScript_OpenPartyMenu:: @ 82C8326
special OpenPartyMenuForMoveTutor
special ChooseMonForMoveTutor
waitstate
lock
faceplayer
+1 -1
View File
@@ -204,7 +204,7 @@ EventScript_ResetAllMapFlags:: @ 82715DE
setflag FLAG_HIDE_MOSSDEEP_CITY_HOUSE_2_WINGULL
setflag FLAG_HIDE_METEOR_FALLS_TEAM_AQUA
setflag FLAG_HIDE_DEWFORD_HALL_SLUDGE_BOMB_MAN
setflag FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO
setflag FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO
setflag FLAG_HIDE_WEATHER_INSTITUTE_2F_AQUA_GRUNT_M
setflag FLAG_HIDE_ROUTE_128_STEVEN
setflag FLAG_HIDE_ROUTE_128_ARCHIE
+12 -12
View File
@@ -170,7 +170,7 @@ gSpecials:: @ 81DBA64
def_special ChooseStarter
def_special StartWallyTutorialBattle
def_special ChangePokemonNickname
def_special sub_81B94B0
def_special ChoosePartyMon
def_special GetFirstFreePokeblockSlot
def_special DoBerryBlending
def_special PlayRoulette
@@ -230,11 +230,11 @@ gSpecials:: @ 81DBA64
def_special SetDeptStoreFloor
def_special DoLotteryCornerComputerEffect
def_special EndLotteryCornerComputerEffect
def_special sub_81B951C
def_special sub_81B968C
def_special sub_81B9770
def_special sub_81B9718
def_special sub_81B96D0
def_special ChooseMonForMoveRelearner
def_special MoveDeleterChooseMoveToForget
def_special MoveDeleterForgetMove
def_special BufferMoveDeleterNicknameAndMove
def_special GetNumMovesSelectedMonHas
def_special TeachMoveRelearnerMove
def_special GetRecordedCyclingRoadResults
def_special Special_BeginCyclingRoadChallenge
@@ -338,7 +338,7 @@ gSpecials:: @ 81DBA64
def_special SetRoute123Weather
def_special ScriptGetMultiplayerId
def_special ScriptGetPartyMonSpecies
def_special sub_81B98DC
def_special IsSelectedMonEgg
def_special TryInitBattleTowerAwardManEventObject
def_special MoveOutOfSecretBaseFromOutside
def_special LoadPlayerBag
@@ -457,10 +457,10 @@ gSpecials:: @ 81DBA64
def_special ShowScrollableMultichoice
def_special sub_813A630
def_special BufferBattleTowerElevatorFloors
def_special sub_81C6A94
def_special TryStoreHeldItemsInPyramidBag
def_special sub_81C4F24
def_special sub_81B95E0
def_special sub_81B9620
def_special DoBattlePyramidMonsHaveHeldItem
def_special BattlePyramidChooseMonHeldItems
def_special SetBattleTowerLinkPlayerGfx
def_special ShowNatureGirlMessage
def_special ShowBattlePointsWindow
@@ -485,7 +485,7 @@ gSpecials:: @ 81DBA64
def_special BufferBattleFrontierTutorMoveName
def_special CloseBattleFrontierTutorWindow
def_special sub_813ADD4
def_special OpenPartyMenuForMoveTutor
def_special ChooseMonForMoveTutor
def_special GetBattleFrontierTutorMoveIndex
def_special sub_813AF48
def_special DoDeoxysRockInteraction
@@ -529,7 +529,7 @@ gSpecials:: @ 81DBA64
def_special ShowTrainerHillRecords
def_special sub_80B4808
def_special ResetHealLocationFromDewford
def_special sub_81B9918
def_special IsLastMonThatKnowsSurf
def_special CountPartyAliveNonEggMons
def_special TryPrepareSecondApproachingTrainer
def_special RemoveRecordsWindow

Before

Width:  |  Height:  |  Size: 613 B

After

Width:  |  Height:  |  Size: 613 B

+1 -1
View File
@@ -409,7 +409,7 @@ $(MASKSGFXDIR)/unknown_C2EA50.4bpp: %.4bpp: %.png
$(BATTRANSGFXDIR)/vs_frame.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 16
$(INTERFACEGFXDIR)/party_menu_misc.4bpp: %.4bpp: %.png
$(INTERFACEGFXDIR)/party_menu_bg.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 62
$(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types:%=$(TYPESGFXDIR)/contest_%.4bpp)
+2 -2
View File
@@ -248,8 +248,8 @@ void nullsub_21(void);
void PlayerHandleGetRawMonData(void);
void sub_80587B0(void);
void sub_805CC00(struct Sprite *sprite);
void SetCB2ToReshowScreenAfterMenu(void);
void SetCB2ToReshowScreenAfterMenu2(void);
void CB2_SetUpReshowBattleScreenAfterMenu(void);
void CB2_SetUpReshowBattleScreenAfterMenu2(void);
void c3_0802FDF4(u8 taskId);
void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
void ActionSelectionDestroyCursorAt(u8 cursorPos);
+3 -3
View File
@@ -77,20 +77,20 @@ void sub_803B3AC(void); // unused
void sub_803B598(void); // unused
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
void sub_803BDA0(u8 battlerId);
void SwitchPartyOrder(u8 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId);
extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3];
extern struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE];
extern const struct SpriteTemplate gUnknown_0831AC88;
extern const struct OamData gOamData_831ACA8;
extern const struct OamData gOamData_831ACB0;
extern const u8 gTypeEffectiveness[336];
extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1];
extern const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1];
extern const struct TrainerMoney gTrainerMoneyTable[];
extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1];
extern const u8 *const gAbilityDescriptionPointers[];
+3 -3
View File
@@ -36,13 +36,13 @@ extern struct PyramidBagCursorData gPyramidBagCursorData;
void InitBattlePyramidBagCursorPosition(void);
void CB2_PyramidBagMenuFromStartMenu(void);
void sub_81C4F84(void);
void CB2_ReturnToPyramidBagMenu(void);
void sub_81C5924(void);
void sub_81C59BC(void);
void sub_81C4EFC(void);
void sub_81C4F98(u8 a0, void (*callback)(void));
void GoToBattlePyramidBagMenu(u8 a0, void (*callback)(void));
void sub_81C6714(u8 taskId);
void sub_81C6A94(void);
void TryStoreHeldItemsInPyramidBag(void);
void sub_81C4F24(void);
void sub_81C5B14(u8 taskId);
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId));
+1 -1
View File
@@ -4,7 +4,7 @@
void AllocateBattleResources(void);
void FreeBattleResources(void);
void AdjustFriendshipOnBattleFaint(u8 battler);
void sub_80571DC(u8 battler, u8 arg1);
void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1);
u32 sub_805725C(u8 battler);
#endif // GUARD_BATTLE_UTIL_H
+10 -9
View File
@@ -4,16 +4,17 @@
#define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode)
// Battle Frontier facility ids.
#define FRONTIER_FACILITY_TOWER 0
#define FRONTIER_FACILITY_DOME 1
#define FRONTIER_FACILITY_PALACE 2
#define FRONTIER_FACILITY_ARENA 3
#define FRONTIER_FACILITY_FACTORY 4
#define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6
#define NUM_FRONTIER_FACILITIES 7
#define FRONTIER_FACILITY_TOWER 0
#define FRONTIER_FACILITY_DOME 1
#define FRONTIER_FACILITY_PALACE 2
#define FRONTIER_FACILITY_ARENA 3
#define FRONTIER_FACILITY_FACTORY 4
#define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6
#define NUM_FRONTIER_FACILITIES 7
// The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY.
#define FRONTIER_FACILITY_DOUBLE_COLOSSEUM 9
#define FACILITY_UNION_ROOM 8
#define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles
#define TENT_VERDANTURF 2
#define TENT_FALLARBOR 3
+6
View File
@@ -16,4 +16,10 @@
#define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5
#define CANT_ENTER_CONTEST 0
#define CAN_ENTER_CONTEST_EQUAL_RANK 1
#define CAN_ENTER_CONTEST_HIGH_RANK 2
#define CANT_ENTER_CONTEST_EGG 3
#define CANT_ENTER_CONTEST_FAINTED 4
#endif // GUARD_CONSTANTS_CONTEST_H
+2 -2
View File
@@ -968,7 +968,7 @@
#define FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS 0x39D
#define FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA 0x39E
#define FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA 0x39F
#define FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO 0x3A0
#define FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO 0x3A0
#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_1 0x3A1
#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_2 0x3A2
#define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1 0x3A3
@@ -1637,6 +1637,6 @@
#define FLAG_DONT_TRANSITION_MUSIC 0x4001
#define FLAG_SPECIAL_FLAG_0x4002 0x4002
#define FLAG_SPECIAL_FLAG_0x4003 0x4003
#define FLAG_SPECIAL_FLAG_0x4004 0x4004
#define FLAG_STORING_ITEMS_IN_PYRAMID_BAG 0x4004
#endif // GUARD_CONSTANTS_FLAGS_H
+2
View File
@@ -54,6 +54,8 @@
#define TRAINER_ID_LENGTH 4
#define PARTY_SIZE 6
#define FRONTIER_PARTY_SIZE 3
#define MULTI_PARTY_SIZE PARTY_SIZE / 2
#define MAX_MON_MOVES 4
// string lengths
+2 -2
View File
@@ -98,8 +98,8 @@
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8))
#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8))
#define MAP_FALLARBOR_TOWN_COZMOS_HOUSE (6 | (5 << 8))
#define MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE (7 | (5 << 8))
// Map Group 6
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
+87 -7
View File
@@ -10,13 +10,6 @@
#define AILMENT_PKRS 6
#define AILMENT_FNT 7
#define PARTY_CHOOSE_MON 0
#define PARTY_MUST_CHOOSE_MON 1
#define PARTY_CANT_SWITCH 2
#define PARTY_USE_ITEM_ON 3
#define PARTY_ABILITY_PREVENTS 4
#define PARTY_GIVE_ITEM 5
#define TUTOR_MOVE_MEGA_PUNCH 0
#define TUTOR_MOVE_SWORDS_DANCE 1
#define TUTOR_MOVE_MEGA_KICK 2
@@ -49,4 +42,91 @@
#define TUTOR_MOVE_FURY_CUTTER 29
#define TUTOR_MOVE_COUNT 30
#define PARTY_LAYOUT_SINGLE 0
#define PARTY_LAYOUT_DOUBLE 1
#define PARTY_LAYOUT_MULTI 2
#define PARTY_LAYOUT_MULTI_SHOWCASE 3 // The layout during the screen that appears just before a multi battle
#define PARTY_LAYOUT_COUNT 4
#define KEEP_PARTY_LAYOUT 0xFF
#define PARTY_MENU_TYPE_FIELD 0
#define PARTY_MENU_TYPE_IN_BATTLE 1
#define PARTY_MENU_TYPE_CONTEST 2
#define PARTY_MENU_TYPE_CHOOSE_MON 3
#define PARTY_MENU_TYPE_CHOOSE_HALF 4 // multi battles, eReader battles, and some battle facilities
#define PARTY_MENU_TYPE_MULTI_SHOWCASE 5
#define PARTY_MENU_TYPE_DAYCARE 6
#define PARTY_MENU_TYPE_MOVE_RELEARNER 7
#define PARTY_MENU_TYPE_UNION_ROOM_REGISTER 8 // trading board
#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board
#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade
#define PARTY_MENU_TYPE_MINIGAME 11
#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12
#define PARTY_ACTION_CHOOSE_MON 0
#define PARTY_ACTION_SEND_OUT 1
#define PARTY_ACTION_CANT_SWITCH 2
#define PARTY_ACTION_USE_ITEM 3
#define PARTY_ACTION_ABILITY_PREVENTS 4
#define PARTY_ACTION_GIVE_ITEM 5
#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC
#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7
#define PARTY_ACTION_SWITCH 8
#define PARTY_ACTION_SWITCHING 9
#define PARTY_ACTION_SOFTBOILED 10
#define PARTY_ACTION_CHOOSE_AND_CLOSE 11
#define PARTY_ACTION_MOVE_TUTOR 12
#define PARTY_ACTION_MINIGAME 13
#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately
// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu
#define PARTY_MSG_CHOOSE_MON 0
#define PARTY_MSG_CHOOSE_MON_OR_CANCEL 1
#define PARTY_MSG_CHOOSE_MON_AND_CONFIRM 2
#define PARTY_MSG_MOVE_TO_WHERE 3
#define PARTY_MSG_TEACH_WHICH_MON 4
#define PARTY_MSG_USE_ON_WHICH_MON 5
#define PARTY_MSG_GIVE_TO_WHICH_MON 6
#define PARTY_MSG_NOTHING_TO_CUT 7
#define PARTY_MSG_CANT_SURF_HERE 8
#define PARTY_MSG_ALREADY_SURFING 9
#define PARTY_MSG_CURRENT_TOO_FAST 10
#define PARTY_MSG_ENJOY_CYCLING 11
#define PARTY_MSG_ALREADY_IN_USE 12
#define PARTY_MSG_CANT_USE_HERE 13
#define PARTY_MSG_NO_MON_FOR_BATTLE 14
#define PARTY_MSG_CHOOSE_MON_2 15
#define PARTY_MSG_NOT_ENOUGH_HP 16
#define PARTY_MSG_X_MONS_ARE_NEEDED 17
#define PARTY_MSG_MONS_CANT_BE_SAME 18
#define PARTY_MSG_NO_SAME_HOLD_ITEMS 19
#define PARTY_MSG_UNUSED 20
#define PARTY_MSG_DO_WHAT_WITH_MON 21
#define PARTY_MSG_RESTORE_WHICH_MOVE 22
#define PARTY_MSG_BOOST_PP_WHICH_MOVE 23
#define PARTY_MSG_DO_WHAT_WITH_ITEM 24
#define PARTY_MSG_DO_WHAT_WITH_MAIL 25
#define PARTY_MSG_ALREADY_HOLDING_ONE 26
#define PARTY_MSG_NONE 127
// IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box
#define PARTYBOX_DESC_NO_USE 0
#define PARTYBOX_DESC_ABLE_3 1
#define PARTYBOX_DESC_FIRST 2
#define PARTYBOX_DESC_SECOND 3
#define PARTYBOX_DESC_THIRD 4
#define PARTYBOX_DESC_FOURTH 5
#define PARTYBOX_DESC_ABLE 6
#define PARTYBOX_DESC_NOT_ABLE 7
#define PARTYBOX_DESC_ABLE_2 8
#define PARTYBOX_DESC_NOT_ABLE_2 9
#define PARTYBOX_DESC_LEARNED 10
#define PARTYBOX_DESC_HAVE 11
#define PARTYBOX_DESC_DONT_HAVE 12
#define SELECTWINDOW_ACTIONS 0
#define SELECTWINDOW_ITEM 1
#define SELECTWINDOW_MAIL 2
#define SELECTWINDOW_MOVES 3
#endif // GUARD_CONSTANTS_PARTY_MENU_H
+3 -1
View File
@@ -184,7 +184,6 @@
#define OT_ID_PRESET 1
#define OT_ID_RANDOM_NO_SHINY 2
#define MON_GIVEN_TO_PARTY 0
#define MON_GIVEN_TO_PC 1
#define MON_CANT_GIVE 2
@@ -193,6 +192,9 @@
#define PLAYER_HAS_ONE_MON 1
#define PLAYER_HAS_ONE_USABLE_MON 2
#define MON_ALREADY_KNOWS_MOVE 0xFFFE
#define MON_HAS_MAX_MOVES 0xFFFF
#define MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
+3 -3
View File
@@ -20,13 +20,13 @@
#define READY_FINISH_TRADE 1
#define FINISH_TRADE 2
// Return values for CanTradeSelectedMon and CanTradeSelectedPartyMenuMon
// Return values for CanTradeSelectedMon and CanSpinTradeMon
#define CAN_TRADE_MON 0
#define CANT_TRADE_LAST_MON 1
#define CANT_TRADE_NATIONAL 2
#define CANT_TRADE_EGG 3
#define CANT_TRADE_EGG_YET 3
#define CANT_TRADE_INVALID_MON 4
#define CANT_TRADE_EGG2 5
#define CANT_TRADE_EGG_YET2 5
// Return values for CheckValidityOfTradeMons
#define PLAYER_MON_INVALID 0
+1 -1
View File
@@ -466,7 +466,7 @@ void CB2_StartContest(void);
void sub_80DA8C8(u8 partyIndex);
void sub_80DAB8C(u8 contestType, u8 rank);
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
u8 sub_80DAE0C(struct Pokemon *pkmn);
u8 GetContestEntryEligibility(struct Pokemon *pkmn);
void sub_80DB09C(u8 contestCategory);
bool8 IsSpeciesNotUnown(u16 species);
bool8 Contest_IsMonsTurnDisabled(u8 a);
+1 -1
View File
@@ -12,7 +12,7 @@ extern bool8 (*gFieldCallback2)(void);
u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
void FieldEffectActiveListClear(void);
void sub_80B69DC(void);
void ReturnToFieldFromFlyMapSelect(void);
u8 AddNewGameBirchObject(s16, s16, u8);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
+2 -2
View File
@@ -28,8 +28,8 @@ bool8 sub_80E1584(void);
// soft-boiled
bool8 SetUpFieldMove_SoftBoiled(void);
void sub_81615A8(u8 taskId);
void sub_8161560(u8 taskId);
void Task_TryUseSoftboiledOnPartyMon(u8 taskId);
void ChooseMonForSoftboiled(u8 taskId);
// flash
bool8 SetUpFieldMove_Flash(void);
+6 -6
View File
@@ -220,7 +220,7 @@ struct Apprentice
u8 lvlMode:2; // + 1
u8 field_1;
u8 number;
struct ApprenticeMon party[3];
struct ApprenticeMon party[MULTI_PARTY_SIZE];
u16 easyChatWords[6];
u8 playerId[TRAINER_ID_LENGTH];
u8 playerName[PLAYER_NAME_LENGTH];
@@ -282,7 +282,7 @@ struct BattleTowerEReaderTrainer
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 farewellPlayerLost[6];
/*0x28*/ u16 farewellPlayerWon[6];
/*0x34*/ struct BattleTowerPokemon party[3];
/*0x34*/ struct BattleTowerPokemon party[FRONTIER_PARTY_SIZE];
/*0xB8*/ u32 checksum;
};
@@ -329,7 +329,7 @@ struct BattleFrontier
/*0xCA9*/ u8 field_CA9_d:1; // 0x20
/*0xCA9*/ u8 field_CA9_e:1; // 0x40
/*0xCA9*/ u8 field_CA9_f:1; // 0x80
/*0xCAA*/ u16 selectedPartyMons[3];
/*0xCAA*/ u16 selectedPartyMons[FRONTIER_PARTY_SIZE];
/*0xCB0*/ u16 field_CB0;
/*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor.
/*0xCB4*/ u16 trainerIds[20];
@@ -356,7 +356,7 @@ struct BattleFrontier
/*0xD14*/ u16 domeRecordWinStreaks[2][2];
/*0xD1C*/ u16 domeTotalChampionships[2][2];
/*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT];
/*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][3];
/*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][FRONTIER_PARTY_SIZE];
/*0xDC4*/ u16 field_DC4;
/*0xDC6*/ u16 field_DC6;
/*0xDC8*/ u16 palaceWinStreaks[2][2];
@@ -375,7 +375,7 @@ struct BattleFrontier
/*0xE10*/ u8 pikeHintedRoomIndex:3;
/*0xE10*/ u8 pikeHintedRoomType:4;
/*0xE10*/ u8 pikeHealingRoomsDisabled:1;
/*0xE12*/ u16 pikeHeldItemsBackup[3];
/*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE];
/*0xE18*/ u16 pyramidRewardItem;
/*0xE1A*/ u16 pyramidWinStreaks[2];
/*0xE1E*/ u16 pyramidRecordStreaks[2];
@@ -419,7 +419,7 @@ struct PlayersApprentice
/*0xB2*/ u8 field_B2_0:3;
/*0xB2*/ u8 field_B2_1:2;
/*0xB3*/ u8 field_B3;
/*0xB4*/ u8 monIds[3];
/*0xB4*/ u8 monIds[MULTI_PARTY_SIZE];
/*0xB8*/ struct Sav2_B8 field_B8[9];
};
+3 -3
View File
@@ -3916,9 +3916,9 @@ extern const u16 gIntro2FlygonPal[];
extern const u32 gIntro2FlygonGfx[];
// party menu graphics
extern const u32 gPartyMenuMisc_Gfx[];
extern const u32 gPartyMenuMisc_Tilemap[];
extern const u32 gPartyMenuMisc_Pal[];
extern const u32 gPartyMenuBg_Gfx[];
extern const u32 gPartyMenuBg_Tilemap[];
extern const u32 gPartyMenuBg_Pal[];
// berry pics
extern const u32 gBerryPic_Cheri[];
+2 -3
View File
@@ -1,4 +1,3 @@
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
@@ -87,7 +86,7 @@ void RemoveMapNamePopUpWindow(void);
u8 GetMapNamePopUpWindowId(void);
u8 AddMapNamePopUpWindow(void);
void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP);
void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram);
void sub_8197AE8(bool8 copyToVram);
@@ -95,7 +94,7 @@ void PrintMenuGridTable(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const
s8 Menu_ProcessInputGridLayout(void);
u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted);
s8 Menu_ProcessInputNoWrapAround_other(void);
void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile);
void sub_8198314(void);
void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram);
+5 -2
View File
@@ -4,6 +4,9 @@
#include "task.h"
#include "window.h"
#define MENU_L_PRESSED 1
#define MENU_R_PRESSED 2
// Exported type declarations
struct YesNoFuncTable
@@ -23,8 +26,8 @@ bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
u8 GetLRKeysState(void);
u8 sub_812210C(void);
u8 GetLRKeysPressed(void);
u8 GetLRKeysPressedAndHeld(void);
bool8 sub_8122148(u16 itemId);
bool8 itemid_80BF6D8_mail_related(u16 itemId);
bool8 sub_81221AC(void);
+60 -63
View File
@@ -4,93 +4,90 @@
#include "main.h"
#include "task.h"
#include "constants/party_menu.h"
struct Struct203CEC8
// seems like the last two fields may have been left as all-purpose vars
// and the second of the two just happens to only be used in one case
struct PartyMenu
{
MainCallback exitCallback;
TaskFunc unk4;
u8 unk8_0:4;
u8 mode:2;
u8 unk8_2:2;
TaskFunc task;
u8 menuType:4;
u8 layout:2;
s8 slotId;
s8 unkA;
u8 unkB;
u16 unkC;
s16 unkE;
s16 unk10;
s8 slotId2;
u8 action;
u16 bagItem;
s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos
s16 learnMoveState; // data2, used only as a learn move state
};
extern struct Struct203CEC8 gUnknown_0203CEC8;
extern u8 gUnknown_0203CEE8;
extern u8 gUnknown_0203CEE9;
extern struct PartyMenu gPartyMenu;
extern bool8 gPartyMenuUseExitCallback;
extern u8 gSelectedMonPartyId;
extern MainCallback gPostMenuFieldCallback;
extern u8 gSelectedOrderFromParty[4];
extern u8 gUnknown_0203CF00[3];
extern u8 gBattlePartyCurrentOrder[3];
extern void (*gUnknown_03006328)(u8, TaskFunc);
extern void (*gItemUseCB)(u8, TaskFunc);
extern const u16 gTutorMoves[];
void sub_81B0FCC(u8 slot, u8 b);
void AnimatePartySlot(u8 slot, u8 animNum);
bool8 IsMultiBattle(void);
u8 GetCursorSelectionMonId(void);
u8 sub_81B1360(void);
void sub_81B1370(u8 taskId);
u8 GetPartyMenuType(void);
void Task_HandleChooseMonInput(u8 taskId);
u8* GetMonNickname(struct Pokemon *mon, u8 *dest);
u8 DisplayPartyMenuMessage(const u8* str, u8 b);
bool8 sub_81B1BD4(void);
void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func);
u8 pokemon_ailments_get_primary(u32 status);
u8 DisplayPartyMenuMessage(const u8* str, bool8 keepOpen);
bool8 IsPartyMenuTextPrinterActive(void);
void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 HPDifference, TaskFunc task);
u8 GetAilmentFromStatus(u32 status);
u8 GetMonAilment(struct Pokemon *mon);
void DisplayPartyMenuStdMessage(u32 stringID);
void sub_81B47E0(u8 taskId);
void DisplayPartyMenuStdMessage(u32 stringId);
bool8 FieldCallback_PrepareFadeInFromMenu(void);
void sub_81B58A8(void);
void CB2_ReturnToPartyMenuFromFlyMap(void);
void LoadHeldItemIcons(void);
void DrawHeldItemIconsForTrade(u8 *a, u8 *b, u8 c);
void sub_81B617C(void);
void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty);
void CB2_ShowPartyMenuForItemUse(void);
void ItemUseCB_Medicine(u8 taskId, TaskFunc task);
void sub_81B67C8(u8 taskId, TaskFunc task);
void dp05_ether(u8 taskId, TaskFunc task);
void dp05_pp_up(u8 taskId, TaskFunc task);
void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task);
void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task);
void ItemUseCB_PPUp(u8 taskId, TaskFunc task);
u16 ItemIdToBattleMoveId(u16 item);
bool8 IsMoveHm(u16 move);
bool8 MonKnowsMove(struct Pokemon *mon, u16 move);
void sub_81B6DC4(u8 taskId, TaskFunc task);
void dp05_rare_candy(u8 taskId, TaskFunc task);
void sub_81B79E8(u8 taskId, TaskFunc task);
void sub_81B7C74(u8 taskId, TaskFunc task);
void ItemUseCB_TMHM(u8 taskId, TaskFunc task);
void ItemUseCB_RareCandy(u8 taskId, TaskFunc task);
void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task);
void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task);
u8 GetItemEffectType(u16 item);
void CB2_PartyMenuFromStartMenu(void);
void sub_81B7F60(void);
void sub_81B8448(void);
void CB2_ChooseMonToGiveItem(void);
void ChooseMonToGiveMailFromMailbox(void);
void InitChooseHalfPartyForBattle(u8 unused);
void sub_81B8558(void);
void sub_81B8904(u8 initArg, MainCallback callback);
void OpenPartyMenuForMoveTutor(void);
void ClearSelectedPartyOrder(void);
void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);
void ChooseMonForMoveTutor(void);
void ChooseMonForWirelessMinigame(void);
void ChooseMonForWirelessMinigame(void);
void OpenPartyMenuInBattle(u8 arg);
void sub_81B89F0(void);
void sub_81B8C68(void);
void sub_81B8D64(u8 battlerId, u8 multiplayerFlag);
void sub_81B8E80(u8 battlerId, u8 unk, u8 arrayIndex);
void sub_81B8FB0(u8 slot, u8 slot2);
u8 pokemon_order_func(u8 slot);
void sub_81B9150(void);
void sub_81B9328(void);
bool8 hm_add_c3_without_phase_2(void);
void sub_81B9404(void);
void sub_81B94B0(void);
void sub_81B951C(void);
void sub_81B9620(void);
void sub_81B95E0(void);
void sub_81B98DC(void);
void sub_81B9918(void);
void sub_81B9770(void);
void sub_81B9718(void);
void sub_81B96D0(void);
void sub_81B968C(void);
void OpenPartyMenuInBattle(u8 partyAction);
void ChooseMonForInBattleItem(void);
void BufferBattlePartyCurrentOrder(void);
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 arrayIndex);
void SwitchPartyMonSlots(u8 slot, u8 slot2);
u8 GetPartyIdFromBattlePartyId(u8 slot);
void ShowPartyMenuToShowcaseMultiBattleParty(void);
void ChooseMonForDaycare(void);
bool8 CB2_FadeFromPartyMenu(void);
void ChooseContestMon(void);
void ChoosePartyMon(void);
void ChooseMonForMoveRelearner(void);
void BattlePyramidChooseMonHeldItems(void);
void DoBattlePyramidMonsHaveHeldItem(void);
void IsSelectedMonEgg(void);
void IsLastMonThatKnowsSurf(void);
void MoveDeleterForgetMove(void);
void BufferMoveDeleterNicknameAndMove(void);
void GetNumMovesSelectedMonHas(void);
void MoveDeleterChooseMoveToForget(void);
#endif // GUARD_PARTY_MENU_H
+2 -3
View File
@@ -287,7 +287,6 @@ void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
@@ -357,8 +356,8 @@ u16 SpeciesToCryId(u16 species);
void sub_806D544(u16 species, u32 personality, u8 *dest);
void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
bool8 sub_806D7EC(void);
bool16 GetLinkTrainerFlankId(u8 id);
u8 GetPlayerFlankId(void);
u16 GetLinkTrainerFlankId(u8 id);
s32 GetBattlerMultiplayerId(u16 a1);
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
+1 -1
View File
@@ -21,7 +21,7 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
u8 UpdateMonIconFrame(struct Sprite *sprite);
void LoadMonIconPalette(u16 species);
void sub_80D328C(struct Sprite *sprite);
void UpdateTradeMonIconFrame(struct Sprite *sprite);
void SpriteCB_MonIcon(struct Sprite *sprite);
void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum);
u8 GetMonIconPaletteIndexFromSpecies(u16 species);
+1 -2
View File
@@ -9,10 +9,9 @@ extern const u8 *const gMoveDescriptionPointers[];
extern const u8 *const gNatureNamePointers[];
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void sub_81C4F98(u8, void(*)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
u8 sub_81C1B94(void);
u8 GetMoveSlotToReplace(void);
void SummaryScreen_SetUnknownTaskId(u8 a0);
void SummaryScreen_DestroyUnknownTask(void);
+1 -1
View File
@@ -102,7 +102,7 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y);
void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
u8 *sub_81245DC(u8 *dest, u16 mapSecId);
u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId);
u8 *sub_8124610(u8 *dest, u16 mapSecId);
u16 CorrectSpecialMapSecId(u16 mapSecId);
void sub_8122D88(struct RegionMap *regionMap);
-6
View File
@@ -1,6 +0,0 @@
#ifndef GUARD_SCRIPTPOKE81B9_H
#define GUARD_SCRIPTPOKE81B9_H
void sub_81B9404(void);
#endif
+2 -2
View File
@@ -411,7 +411,7 @@ extern const u8 gText_CantBeUsedOnPkmn[];
extern const u8 gText_CancelParticipation[];
extern const u8 gText_PkmnWasGivenItem[];
extern const u8 gText_ReceivedItemFromPkmn[];
extern const u8 gText_SwitchPkmnItem[];
extern const u8 gText_PkmnAlreadyHoldingItemSwitch[];
extern const u8 gText_SwitchedPkmnItem[];
extern const u8 gText_BagFullCouldNotRemoveItem[];
extern const u8 gText_PkmnCantParticipate[];
@@ -427,7 +427,7 @@ extern const u8 gText_NoMoreThanVar1Pkmn[];
extern const u8 gText_PkmnCantBeTradedNow[];
extern const u8 gText_EggCantBeTradedNow[];
extern const u8 gText_OnlyPkmnForBattle[];
extern const u8 gJPText_PutVar1IntoSpinner[];
extern const u8 gJPText_AreYouSureYouWantToSpinTradeMon[];
extern const u8 gText_PauseUntilPress[];
extern const u8 gText_CantUseUntilNewBadge[];
extern const u8 gText_ReturnToHealingSpot[];
+1 -1
View File
@@ -18,7 +18,7 @@ void CB2_StartCreateTradeMenu(void);
void CB2_LinkTrade(void);
int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8);
int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6);
int CanTradeSelectedPartyMenuMon(struct Pokemon*, u16);
int CanSpinTradeMon(struct Pokemon*, u16);
void InitTradeSequenceBgGpuRegs(void);
void LinkTradeDrawWindow(void);
void InitTradeBg(void);
+12 -11
View File
@@ -31,6 +31,7 @@
#include "constants/battle_anim.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/songs.h"
#include "constants/trainers.h"
#include "constants/rgb.h"
@@ -1341,10 +1342,10 @@ static void WaitForMonSelection(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
if (gUnknown_0203CEE8 == 1)
BtlController_EmitChosenMonReturnValue(1, gUnknown_0203CEE9, gUnknown_0203CF00);
if (gPartyMenuUseExitCallback == TRUE)
BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder);
else
BtlController_EmitChosenMonReturnValue(1, 6, NULL);
BtlController_EmitChosenMonReturnValue(1, PARTY_SIZE, NULL);
if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
PrintLinkStandbyMsg();
@@ -1531,12 +1532,12 @@ void ActionSelectionDestroyCursorAt(u8 cursorPosition)
CopyBgTilemapBufferToVram(0);
}
void SetCB2ToReshowScreenAfterMenu(void)
void CB2_SetUpReshowBattleScreenAfterMenu(void)
{
SetMainCallback2(ReshowBattleScreenAfterMenu);
}
void SetCB2ToReshowScreenAfterMenu2(void)
void CB2_SetUpReshowBattleScreenAfterMenu2(void)
{
SetMainCallback2(ReshowBattleScreenAfterMenu);
}
@@ -2632,20 +2633,20 @@ static void PlayerHandleChooseItem(void)
gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem;
gBattlerInMenuId = gActiveBattler;
for (i = 0; i < 3; i++)
gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][1 + i];
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][1 + i];
}
static void PlayerHandleChoosePokemon(void)
{
s32 i;
for (i = 0; i < 3; i++)
gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][4 + i];
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i];
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != PARTY_CANT_SWITCH)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != PARTY_ACTION_CANT_SWITCH)
{
BtlController_EmitChosenMonReturnValue(1, gBattlerPartyIndexes[gActiveBattler] + 1, gUnknown_0203CF00);
BtlController_EmitChosenMonReturnValue(1, gBattlerPartyIndexes[gActiveBattler] + 1, gBattlePartyCurrentOrder);
PlayerBufferExecCompleted();
}
else
+23 -23
View File
@@ -95,7 +95,7 @@ void sub_8032768(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
for (i = 0; i < gBattlersCount; i++)
sub_81B8D64(i, 0);
BufferBattlePartyCurrentOrderBySide(i, 0);
}
for (i = 0; i < sizeof(gBattleStruct->tvMovePoints); i++)
@@ -144,10 +144,10 @@ static void InitSinglePlayerBtlControllers(void)
gBattlersCount = MAX_BATTLERS_COUNT;
sub_81B8D64(0, 0);
sub_81B8D64(1, 0);
sub_81B8D64(2, 1);
sub_81B8D64(3, 1);
BufferBattlePartyCurrentOrderBySide(0, 0);
BufferBattlePartyCurrentOrderBySide(1, 0);
BufferBattlePartyCurrentOrderBySide(2, 1);
BufferBattlePartyCurrentOrderBySide(3, 1);
gBattlerPartyIndexes[0] = 0;
gBattlerPartyIndexes[1] = 0;
@@ -247,10 +247,10 @@ static void InitSinglePlayerBtlControllers(void)
gBattlersCount = MAX_BATTLERS_COUNT;
sub_81B8D64(0, 0);
sub_81B8D64(1, 0);
sub_81B8D64(2, 1);
sub_81B8D64(3, 1);
BufferBattlePartyCurrentOrderBySide(0, 0);
BufferBattlePartyCurrentOrderBySide(1, 0);
BufferBattlePartyCurrentOrderBySide(2, 1);
BufferBattlePartyCurrentOrderBySide(3, 1);
gBattlerPartyIndexes[0] = 0;
gBattlerPartyIndexes[1] = 0;
@@ -267,11 +267,11 @@ static void InitSinglePlayerBtlControllers(void)
{
case 0:
case 3:
sub_81B8D64(gLinkPlayers[i].id, 0);
BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 0);
break;
case 1:
case 2:
sub_81B8D64(gLinkPlayers[i].id, 1);
BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1);
break;
}
@@ -487,10 +487,10 @@ static void InitLinkBtlControllers(void)
gBattlersCount = MAX_BATTLERS_COUNT;
}
sub_81B8D64(0, 0);
sub_81B8D64(1, 0);
sub_81B8D64(2, 1);
sub_81B8D64(3, 1);
BufferBattlePartyCurrentOrderBySide(0, 0);
BufferBattlePartyCurrentOrderBySide(1, 0);
BufferBattlePartyCurrentOrderBySide(2, 1);
BufferBattlePartyCurrentOrderBySide(3, 1);
gBattlerPartyIndexes[0] = 0;
gBattlerPartyIndexes[1] = 0;
gBattlerPartyIndexes[2] = 3;
@@ -509,11 +509,11 @@ static void InitLinkBtlControllers(void)
{
case 0:
case 3:
sub_81B8D64(gLinkPlayers[i].id, 0);
BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 0);
break;
case 1:
case 2:
sub_81B8D64(gLinkPlayers[i].id, 1);
BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1);
break;
}
@@ -1175,13 +1175,13 @@ void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4)
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *arg4)
{
s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON;
sBattleBuffersTransferData[1] = caseId;
sBattleBuffersTransferData[2] = arg2;
sBattleBuffersTransferData[2] = slotId;
sBattleBuffersTransferData[3] = abilityId;
for (i = 0; i < 3; i++)
sBattleBuffersTransferData[4 + i] = arg4[i];
@@ -1311,14 +1311,14 @@ void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battlePartyOrder)
{
s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE;
sBattleBuffersTransferData[1] = b;
for (i = 0; i < 3; i++)
sBattleBuffersTransferData[2 + i] = c[i];
sBattleBuffersTransferData[1] = partyId;
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
sBattleBuffersTransferData[2 + i] = battlePartyOrder[i];
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5);
}
+1 -1
View File
@@ -2330,7 +2330,7 @@ static void GetDomeData(void)
}
break;
case 8:
sub_81B8558();
ClearSelectedPartyOrder();
gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0;
gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
break;
+3 -3
View File
@@ -811,7 +811,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
break;
case 6:
LoadAndCreateEnemyShadowSprites();
sub_81B8C68();
BufferBattlePartyCurrentOrder();
retVal = TRUE;
break;
}
@@ -1061,8 +1061,8 @@ void HandleBattleLowHpMusicChange(void)
{
u8 playerBattler1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
u8 playerBattler2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
u8 battler1PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler1]);
u8 battler2PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler2]);
u8 battler1PartyId = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[playerBattler1]);
u8 battler2PartyId = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[playerBattler2]);
if (GetMonData(&gPlayerParty[battler1PartyId], MON_DATA_HP) != 0)
HandleLowHpMusicChange(&gPlayerParty[battler1PartyId], playerBattler1);
+55 -54
View File
@@ -54,6 +54,7 @@
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/species.h"
@@ -166,8 +167,8 @@ EWRAM_DATA static u32 sUnusedUnknownArray[25] = {0};
EWRAM_DATA u32 gBattleTypeFlags = 0;
EWRAM_DATA u8 gBattleTerrain = 0;
EWRAM_DATA u32 gUnknown_02022FF4 = 0;
EWRAM_DATA struct UnknownPokemonStruct4 gUnknown_02022FF8[3] = {0}; // what is it used for?
EWRAM_DATA struct UnknownPokemonStruct4* gUnknown_02023058 = NULL; // what is it used for?
EWRAM_DATA struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE] = {0};
EWRAM_DATA static struct UnknownPokemonStruct4* sMultiPartnerPartyBuffer = NULL;
EWRAM_DATA u8 *gUnknown_0202305C = NULL;
EWRAM_DATA u8 *gUnknown_02023060 = NULL;
EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0};
@@ -453,7 +454,7 @@ const u8 gTypeEffectiveness[336] =
TYPE_ENDTABLE, TYPE_ENDTABLE, TYPE_MUL_NO_EFFECT
};
const u8 gTypeNames[][TYPE_NAME_LENGTH + 1] =
const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1] =
{
_("NORMAL"),
_("FIGHT"),
@@ -1248,12 +1249,12 @@ static void CB2_HandleStartMultiPartnerBattle(void)
if (gLinkPlayers[playerMultiplayerId].id != 0)
{
memcpy(gPlayerParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
memcpy(gPlayerParty + 3, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
}
else
{
memcpy(gPlayerParty, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
memcpy(gPlayerParty + 3, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
}
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1396,22 +1397,22 @@ static void sub_80379F8(u8 arrayIdPlus)
{
s32 i;
for (i = 0; i < 3; i++)
for (i = 0; i < (int)ARRAY_COUNT(gMultiPartnerParty); i++)
{
gUnknown_02022FF8[i].species = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_SPECIES);
gUnknown_02022FF8[i].heldItem = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HELD_ITEM);
GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_NICKNAME, gUnknown_02022FF8[i].nickname);
gUnknown_02022FF8[i].level = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LEVEL);
gUnknown_02022FF8[i].hp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HP);
gUnknown_02022FF8[i].maxhp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_MAX_HP);
gUnknown_02022FF8[i].status = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_STATUS);
gUnknown_02022FF8[i].personality = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_PERSONALITY);
gUnknown_02022FF8[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]);
StripExtCtrlCodes(gUnknown_02022FF8[i].nickname);
gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_SPECIES);
gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HELD_ITEM);
GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_NICKNAME, gMultiPartnerParty[i].nickname);
gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LEVEL);
gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HP);
gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_MAX_HP);
gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_STATUS);
gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_PERSONALITY);
gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]);
StripExtCtrlCodes(gMultiPartnerParty[i].nickname);
if (GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE)
PadNameString(gUnknown_02022FF8[i].nickname, CHAR_SPACE);
PadNameString(gMultiPartnerParty[i].nickname, CHAR_SPACE);
}
memcpy(gUnknown_02023058, gUnknown_02022FF8, sizeof(gUnknown_02022FF8));
memcpy(sMultiPartnerPartyBuffer, gMultiPartnerParty, sizeof(gMultiPartnerParty));
}
static void CB2_PreInitMultiBattle(void)
@@ -1443,9 +1444,9 @@ static void CB2_PreInitMultiBattle(void)
case 0:
if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
{
gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct4) * 3);
sMultiPartnerPartyBuffer = Alloc(sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
sub_80379F8(0);
SendBlock(bitmask_all_link_players_but_self(), gUnknown_02023058, sizeof(struct UnknownPokemonStruct4) * 3);
SendBlock(bitmask_all_link_players_but_self(), sMultiPartnerPartyBuffer, sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
@@ -1458,24 +1459,24 @@ static void CB2_PreInitMultiBattle(void)
if (i == playerMultiplierId)
continue;
if (numPlayers == 4)
if (numPlayers == MAX_LINK_PLAYERS)
{
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerMultiplierId].id & 1))
|| (gLinkPlayers[i].id & 1 && gLinkPlayers[playerMultiplierId].id & 1))
{
memcpy(gUnknown_02022FF8, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * 3);
memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
}
}
else
{
memcpy(gUnknown_02022FF8, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * 3);
memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
}
}
gBattleCommunication[MULTIUSE_STATE]++;
*savedCallback = gMain.savedCallback;
*savedBattleTypeFlags = gBattleTypeFlags;
gMain.savedCallback = CB2_PreInitMultiBattle;
sub_81B9150();
ShowPartyMenuToShowcaseMultiBattleParty();
}
break;
case 2:
@@ -1496,8 +1497,8 @@ static void CB2_PreInitMultiBattle(void)
gBattleTypeFlags = *savedBattleTypeFlags;
gMain.savedCallback = *savedCallback;
SetMainCallback2(CB2_InitBattleInternal);
Free(gUnknown_02023058);
gUnknown_02023058 = NULL;
Free(sMultiPartnerPartyBuffer);
sMultiPartnerPartyBuffer = NULL;
}
}
else if (gReceivedRemoteLinkPlayers == 0)
@@ -1505,8 +1506,8 @@ static void CB2_PreInitMultiBattle(void)
gBattleTypeFlags = *savedBattleTypeFlags;
gMain.savedCallback = *savedCallback;
SetMainCallback2(CB2_InitBattleInternal);
Free(gUnknown_02023058);
gUnknown_02023058 = NULL;
Free(sMultiPartnerPartyBuffer);
sMultiPartnerPartyBuffer = NULL;
}
break;
}
@@ -1527,13 +1528,13 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void)
switch (gBattleCommunication[MULTIUSE_STATE])
{
case 0:
gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct4) * 3);
sMultiPartnerPartyBuffer = Alloc(sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
sub_80379F8(3);
gBattleCommunication[MULTIUSE_STATE]++;
*savedCallback = gMain.savedCallback;
*savedBattleTypeFlags = gBattleTypeFlags;
gMain.savedCallback = CB2_PreInitIngamePlayerPartnerBattle;
sub_81B9150();
ShowPartyMenuToShowcaseMultiBattleParty();
break;
case 1:
if (!gPaletteFade.active)
@@ -1542,8 +1543,8 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void)
gBattleTypeFlags = *savedBattleTypeFlags;
gMain.savedCallback = *savedCallback;
SetMainCallback2(CB2_InitBattleInternal);
Free(gUnknown_02023058);
gUnknown_02023058 = NULL;
Free(sMultiPartnerPartyBuffer);
sMultiPartnerPartyBuffer = NULL;
}
break;
}
@@ -1666,7 +1667,7 @@ static void CB2_HandleStartMultiBattle(void)
break;
case 1:
case 2:
memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
break;
}
}
@@ -1683,7 +1684,7 @@ static void CB2_HandleStartMultiBattle(void)
break;
case 1:
case 2:
memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
break;
}
}
@@ -1697,7 +1698,7 @@ static void CB2_HandleStartMultiBattle(void)
break;
case 1:
case 2:
memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
memcpy(gEnemyParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
break;
}
}
@@ -4121,34 +4122,34 @@ u8 IsRunningFromBattleImpossible(void)
return 0;
}
void sub_803BDA0(u8 battler)
void SwitchPartyOrder(u8 battler)
{
s32 i;
u8 r4;
u8 r1;
u8 partyId1;
u8 partyId2;
// gBattleStruct->field_60[battler][i]
for (i = 0; i < 3; i++)
gUnknown_0203CF00[i] = *(battler * 3 + i + (u8*)(gBattleStruct->field_60));
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8*)(gBattleStruct->field_60));
r4 = pokemon_order_func(gBattlerPartyIndexes[battler]);
r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + battler));
sub_81B8FB0(r4, r1);
partyId1 = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battler]);
partyId2 = GetPartyIdFromBattlePartyId(*(gBattleStruct->monToSwitchIntoId + battler));
SwitchPartyMonSlots(partyId1, partyId2);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
for (i = 0; i < 3; i++)
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
{
*(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
*(BATTLE_PARTNER(battler) * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
*(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
*(BATTLE_PARTNER(battler) * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
}
}
else
{
for (i = 0; i < 3; i++)
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
{
*(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
*(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
}
}
}
@@ -4283,7 +4284,7 @@ static void HandleTurnActionSelectionState(void)
|| gBattleTypeFlags & BATTLE_TYPE_ARENA
|| gStatuses3[gActiveBattler] & STATUS3_ROOTED)
{
BtlController_EmitChoosePokemon(0, PARTY_CANT_SWITCH, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
BtlController_EmitChoosePokemon(0, PARTY_ACTION_CANT_SWITCH, PARTY_SIZE, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
}
else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG))
|| ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP))
@@ -4292,16 +4293,16 @@ static void HandleTurnActionSelectionState(void)
|| ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
&& IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL)))
{
BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ABILITY_PREVENTS, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]);
BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, PARTY_SIZE, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]);
}
else
{
if (gActiveBattler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH)
BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
else if (gActiveBattler == 3 && gChosenActionByBattler[1] == B_ACTION_SWITCH)
BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
else
BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
}
MarkBattlerForControllerExec(gActiveBattler);
break;
@@ -4589,7 +4590,7 @@ static void HandleTurnActionSelectionState(void)
for (i = 0; i < gBattlersCount; i++)
{
if (gChosenActionByBattler[i] == B_ACTION_SWITCH)
sub_80571DC(i, *(gBattleStruct->monToSwitchIntoId + i));
SwitchPartyOrderInGameMulti(i, *(gBattleStruct->monToSwitchIntoId + i));
}
}
}
+6 -5
View File
@@ -22,6 +22,7 @@
#include "constants/trainers.h"
#include "constants/species.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/battle_pike.h"
struct PikeRoomNPC
@@ -922,7 +923,7 @@ static bool8 TryInflictRandomStatus(void)
for (i = 0; i < 3; i++)
{
mon = &gPlayerParty[indices[i]];
if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0
if (GetAilmentFromStatus(GetMonData(mon, MON_DATA_STATUS)) == AILMENT_NONE
&& GetMonData(mon, MON_DATA_HP) != 0)
{
j++;
@@ -964,7 +965,7 @@ static bool8 TryInflictRandomStatus(void)
for (i = 0; i < 3; i++)
{
mon = &gPlayerParty[indices[i]];
if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0
if (GetAilmentFromStatus(GetMonData(mon, MON_DATA_STATUS)) == AILMENT_NONE
&& GetMonData(mon, MON_DATA_HP) != 0)
{
j++;
@@ -996,7 +997,7 @@ static bool8 AtLeastOneHealthyMon(void)
for (i = 0; i < 3; i++)
{
struct Pokemon *mon = &gPlayerParty[i];
if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0
if (GetAilmentFromStatus(GetMonData(mon, MON_DATA_STATUS)) == AILMENT_NONE
&& GetMonData(mon, MON_DATA_HP) != 0)
{
healthyMonsCount++;
@@ -1285,7 +1286,7 @@ static void TryHealMons(u8 healCount)
{
canBeHealed = TRUE;
}
else if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) != 0)
else if (GetAilmentFromStatus(GetMonData(mon, MON_DATA_STATUS)) != AILMENT_NONE)
{
canBeHealed = TRUE;
}
@@ -1556,7 +1557,7 @@ static void CanAnyPartyMonsBeHealed(void)
struct Pokemon *mon = &gPlayerParty[i];
u16 curr = GetMonData(mon, MON_DATA_HP);
u16 max = GetMonData(mon, MON_DATA_MAX_HP);
if (curr >= max && pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0)
if (curr >= max && GetAilmentFromStatus(GetMonData(mon, MON_DATA_STATUS)) == AILMENT_NONE)
{
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
for (j = 0; j < MAX_MON_MOVES; j++)
+14 -13
View File
@@ -346,12 +346,12 @@ void InitBattlePyramidBagCursorPosition(void)
void CB2_PyramidBagMenuFromStartMenu(void)
{
sub_81C4F98(0, CB2_ReturnToFieldWithOpenMenu);
GoToBattlePyramidBagMenu(0, CB2_ReturnToFieldWithOpenMenu);
}
static void sub_81C4F10(void)
{
sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2);
GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2);
}
void sub_81C4F24(void)
@@ -366,18 +366,18 @@ static void sub_81C4F44(u8 taskId)
if (!gPaletteFade.active)
{
CleanupOverworldWindowsAndTilemaps();
gFieldCallback2 = hm_add_c3_without_phase_2;
sub_81C4F98(3, CB2_ReturnToField);
gFieldCallback2 = CB2_FadeFromPartyMenu;
GoToBattlePyramidBagMenu(3, CB2_ReturnToField);
DestroyTask(taskId);
}
}
void sub_81C4F84(void)
void CB2_ReturnToPyramidBagMenu(void)
{
sub_81C4F98(4, gPyramidBagCursorData.callback);
GoToBattlePyramidBagMenu(4, gPyramidBagCursorData.callback);
}
void sub_81C4F98(u8 a0, void (*callback)(void))
void GoToBattlePyramidBagMenu(u8 a0, void (*callback)(void))
{
gPyramidBagResources = AllocZeroed(sizeof(*gPyramidBagResources));
@@ -981,7 +981,7 @@ static void HandleMenuActionInput(u8 taskId)
sub_8199134(0, 1);
}
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
{
if (id & 1 && IsValidMenuAction(id - 1))
{
@@ -989,7 +989,7 @@ static void HandleMenuActionInput(u8 taskId)
sub_8199134(-1, 0);
}
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (!(id & 1) && IsValidMenuAction(id + 1))
{
@@ -1202,7 +1202,7 @@ static void BagAction_Give(u8 taskId)
}
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
{
gPyramidBagResources->callback2 = sub_81B7F60;
gPyramidBagResources->callback2 = CB2_ChooseMonToGiveItem;
sub_81C5B14(taskId);
}
else
@@ -1350,7 +1350,7 @@ static void sub_81C6A14(u8 taskId)
SetTaskToMainPyramidBagInputHandler(taskId);
}
void sub_81C6A94(void)
void TryStoreHeldItemsInPyramidBag(void)
{
u8 i;
struct Pokemon *party = gPlayerParty;
@@ -1363,8 +1363,9 @@ void sub_81C6A94(void)
for (i = 0; i < 3; i++)
{
heldItem = GetMonData(&party[i], MON_DATA_HELD_ITEM);
if (heldItem != 0 && !AddBagItem(heldItem, 1))
if (heldItem != ITEM_NONE && !AddBagItem(heldItem, 1))
{
// Cant store party held items in pyramid bag because bag is full
memcpy(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16));
memcpy(gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8));
Free(newItems);
@@ -1374,7 +1375,7 @@ void sub_81C6A94(void)
}
}
heldItem = 0;
heldItem = ITEM_NONE;
for (i = 0; i < 3; i++)
{
SetMonData(&party[i], MON_DATA_HELD_ITEM, &heldItem);
+24 -23
View File
@@ -52,6 +52,7 @@
#include "menu_specialized.h"
#include "constants/rgb.h"
#include "data.h"
#include "constants/party_menu.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
@@ -5107,13 +5108,13 @@ static void atk4F_jumpifcantswitch(void)
}
}
static void sub_804CF10(u8 arg0)
static void sub_804CF10(u8 slotId)
{
*(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
BtlController_EmitChoosePokemon(0, PARTY_MUST_CHOOSE_MON, arg0, 0, gBattleStruct->field_60[gActiveBattler]);
BtlController_EmitChoosePokemon(0, PARTY_ACTION_SEND_OUT, slotId, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -5145,7 +5146,7 @@ static void atk50_openpartyscreen(void)
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(6);
sub_804CF10(PARTY_SIZE);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
}
@@ -5352,9 +5353,9 @@ static void atk50_openpartyscreen(void)
else
{
if (gBattlescriptCurrInstr[1] & 0x80)
hitmarkerFaintBits = PARTY_CHOOSE_MON; // Used here as the caseId for the EmitChoose function.
hitmarkerFaintBits = PARTY_ACTION_CHOOSE_MON; // Used here as the caseId for the EmitChoose function.
else
hitmarkerFaintBits = PARTY_MUST_CHOOSE_MON;
hitmarkerFaintBits = PARTY_ACTION_SEND_OUT;
battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
if (gSpecialStatuses[battlerId].flag40)
@@ -5375,7 +5376,7 @@ static void atk50_openpartyscreen(void)
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), 0, gBattleStruct->field_60[gActiveBattler]);
BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 6;
@@ -5433,7 +5434,7 @@ static void atk51_switchhandleorder(void)
break;
case 1:
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
sub_803BDA0(gActiveBattler);
SwitchPartyOrder(gActiveBattler);
break;
case 2:
if (!(gBattleStruct->field_93 & gBitTable[gActiveBattler]))
@@ -5458,11 +5459,11 @@ static void atk51_switchhandleorder(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
sub_80571DC(gActiveBattler, *(gBattleStruct->monToSwitchIntoId + gActiveBattler));
SwitchPartyOrderInGameMulti(gActiveBattler, *(gBattleStruct->monToSwitchIntoId + gActiveBattler));
}
else
{
sub_803BDA0(gActiveBattler);
SwitchPartyOrder(gActiveBattler);
}
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species)
@@ -5615,15 +5616,15 @@ static void atk59_handlelearnnewmove(void)
const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5);
u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (ret == 0xFFFE)
ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
u16 learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (learnMove == MON_ALREADY_KNOWS_MOVE)
learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], FALSE);
if (ret == 0)
if (learnMove == 0)
{
gBattlescriptCurrInstr = jumpPtr2;
}
else if (ret == 0xFFFF)
else if (learnMove == MON_HAS_MAX_MOVES)
{
gBattlescriptCurrInstr += 10;
}
@@ -5634,7 +5635,7 @@ static void atk59_handlelearnnewmove(void)
if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], learnMove);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@@ -5642,7 +5643,7 @@ static void atk59_handlelearnnewmove(void)
if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], learnMove);
}
}
@@ -5715,8 +5716,8 @@ static void atk5A_yesnoboxlearnmove(void)
case 4:
if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2)
{
u8 movePosition = sub_81C1B94();
if (movePosition == 4)
u8 movePosition = GetMoveSlotToReplace();
if (movePosition == MAX_MON_MOVES)
{
gBattleScripting.learnMoveState = 5;
}
@@ -7566,19 +7567,19 @@ static void atk8F_forcerandomswitch(void)
*(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i;
if (!IsMultiBattle())
sub_803BDA0(gBattlerTarget);
SwitchPartyOrder(gBattlerTarget);
if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|| (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
|| (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|| (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
sub_81B8E80(gBattlerTarget, i, 0);
sub_81B8E80(gBattlerTarget ^ BIT_FLANK, i, 1);
SwitchPartyOrderLinkMulti(gBattlerTarget, i, 0);
SwitchPartyOrderLinkMulti(gBattlerTarget ^ BIT_FLANK, i, 1);
}
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
sub_80571DC(gBattlerTarget, i);
SwitchPartyOrderInGameMulti(gBattlerTarget, i);
}
}
else
+1 -1
View File
@@ -3191,7 +3191,7 @@ static void FillPartnerParty(u16 trainerId)
sStevenMons[i].fixedIV,
TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
OT_ID_PRESET, STEVEN_OTID);
for (j = 0; j < 6; j++)
for (j = 0; j < PARTY_SIZE; j++)
SetMonData(&gPlayerParty[3 + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]);
for (j = 0; j < MAX_MON_MOVES; j++)
SetMonMoveSlot(&gPlayerParty[3 + i], sStevenMons[i].moves[j], j);
+6 -6
View File
@@ -102,7 +102,7 @@ void AdjustFriendshipOnBattleFaint(u8 battlerId)
}
}
void sub_80571DC(u8 battlerId, u8 arg1)
void SwitchPartyOrderInGameMulti(u8 battlerId, u8 arg1)
{
if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
{
@@ -110,13 +110,13 @@ void sub_80571DC(u8 battlerId, u8 arg1)
// gBattleStruct->field_60[0][i]
for (i = 0; i < 3; i++)
gUnknown_0203CF00[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60));
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gBattlePartyCurrentOrder[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60));
sub_81B8FB0(pokemon_order_func(gBattlerPartyIndexes[battlerId]), pokemon_order_func(arg1));
SwitchPartyMonSlots(GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battlerId]), GetPartyIdFromBattlePartyId(arg1));
for (i = 0; i < 3; i++)
*(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
*(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
}
}
+9 -10
View File
@@ -2799,16 +2799,15 @@ void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame)
}
}
// GetContestAvailability?
u8 sub_80DAE0C(struct Pokemon *pkmn)
u8 GetContestEntryEligibility(struct Pokemon *pkmn)
{
u8 ribbon;
u8 retVal;
u8 eligibility;
if (GetMonData(pkmn, MON_DATA_IS_EGG))
return 3;
return CANT_ENTER_CONTEST_EGG;
if (GetMonData(pkmn, MON_DATA_HP) == 0)
return 4;
return CANT_ENTER_CONTEST_FAINTED;
switch (gSpecialVar_ContestCategory)
{
case CONTEST_CATEGORY_COOL:
@@ -2827,19 +2826,19 @@ u8 sub_80DAE0C(struct Pokemon *pkmn)
ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON);
break;
default:
return 0;
return CANT_ENTER_CONTEST;
}
// Couldn't get this to match any other way.
// Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below
// the current contest rank.
if (ribbon > gSpecialVar_ContestRank)
retVal = 2;
eligibility = CAN_ENTER_CONTEST_HIGH_RANK;
else if (ribbon >= gSpecialVar_ContestRank)
retVal = 1;
eligibility = CAN_ENTER_CONTEST_EQUAL_RANK;
else
retVal = 0;
return retVal;
eligibility = CANT_ENTER_CONTEST;
return eligibility;
}
static void DrawContestantWindowText(void)
+5 -3
View File
@@ -1935,14 +1935,16 @@ static void sub_80F7ED0(int windowId, u8 *str, int arg2)
void sub_80F7F30(void)
{
u8 result = sub_80DAE0C(&gPlayerParty[gContestMonPartyIndex]);
if (result)
u8 eligibility = GetContestEntryEligibility(&gPlayerParty[gContestMonPartyIndex]);
// Nonzero eligibility can still be non-eligibile, if mon is fainted or egg
if (eligibility)
{
sub_80DAB8C(gSpecialVar_ContestCategory, gSpecialVar_ContestRank);
sub_80DB09C(gSpecialVar_ContestCategory);
}
gSpecialVar_Result = result;
gSpecialVar_Result = eligibility;
}
u16 sub_80F7F7C(void)
File diff suppressed because it is too large Load Diff
+6 -9
View File
@@ -231,11 +231,8 @@ static void ApplyDaycareExperience(struct Pokemon *mon)
while ((learnedMove = MonTryLearningNewMove(mon, firstMove)) != 0)
{
firstMove = FALSE;
if (learnedMove == 0xFFFF)
{
// Mon already knows 4 moves.
if (learnedMove == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
}
}
}
else
@@ -666,7 +663,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{
if (sHatchedEggFatherMoves[i] == sHatchedEggEggMoves[j])
{
if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xFFFF)
if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
break;
}
@@ -685,7 +682,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{
if (sHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j) && CanMonLearnTMHM(egg, j))
{
if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xFFFF)
if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
}
}
@@ -710,7 +707,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{
if (sHatchedEggLevelUpMoves[j] != MOVE_NONE && sHatchedEggFinalMoves[i] == sHatchedEggLevelUpMoves[j])
{
if (GiveMoveToMon(egg, sHatchedEggFinalMoves[i]) == 0xFFFF)
if (GiveMoveToMon(egg, sHatchedEggFinalMoves[i]) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFinalMoves[i]);
break;
}
@@ -755,7 +752,7 @@ static void GiveVoltTackleIfLightBall(struct Pokemon *mon, struct DayCare *dayca
if (motherItem == ITEM_LIGHT_BALL || fatherItem == ITEM_LIGHT_BALL)
{
if (GiveMoveToMon(mon, MOVE_VOLT_TACKLE) == 0xFFFF)
if (GiveMoveToMon(mon, MOVE_VOLT_TACKLE) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(mon, MOVE_VOLT_TACKLE);
}
}
@@ -1295,6 +1292,6 @@ void ShowDaycareLevelMenu(void)
void ChooseSendDaycareMon(void)
{
sub_81B9328();
ChooseMonForDaycare();
gMain.savedCallback = CB2_ReturnToField;
}
+9 -9
View File
@@ -743,12 +743,12 @@ static void Task_EvolutionScene(u8 taskID)
GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text);
if (var == 0xFFFF) // no place to learn it
if (var == MON_HAS_MAX_MOVES)
gTasks[taskID].tState = 22;
else if (var == 0xFFFE) // it already knows that move
else if (var == MON_ALREADY_KNOWS_MOVE)
break;
else
gTasks[taskID].tState = 20; // has less than 4 moves, so it's been learned
gTasks[taskID].tState = 20; // move has been learned
}
else // no move to learn
{
@@ -909,8 +909,8 @@ static void Task_EvolutionScene(u8 taskID)
case 6:
if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate)
{
var = sub_81C1B94(); // moveID
if (var == 4)
var = GetMoveSlotToReplace();
if (var == MAX_MON_MOVES)
{
gTasks[taskID].tLearnMoveState = 10;
}
@@ -1100,9 +1100,9 @@ static void Task_TradeEvolutionScene(u8 taskID)
GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text);
if (var == 0xFFFF)
if (var == MON_HAS_MAX_MOVES)
gTasks[taskID].tState = 20;
else if (var == 0xFFFE)
else if (var == MON_ALREADY_KNOWS_MOVE)
break;
else
gTasks[taskID].tState = 18;
@@ -1243,8 +1243,8 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 6:
if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate)
{
var = sub_81C1B94(); // moveID
if (var == 4)
var = GetMoveSlotToReplace();
if (var == MAX_MON_MOVES)
{
gTasks[taskID].tLearnMoveState = 9;
}
+4 -4
View File
@@ -63,7 +63,7 @@ static void PokeballGlowEffect_7(struct Sprite *);
static u8 PokecenterHealEffectHelper(s16, s16);
static void HallOfFameRecordEffectHelper(s16, s16, s16, u8);
static void mapldr_080842E8(void);
static void FieldCallback_Fly(void);
static void task00_8084310(u8);
static void mapldr_08084390(void);
static void c3_080843F8(u8);
@@ -1364,13 +1364,13 @@ void SpriteCB_HallOfFameMonitor(struct Sprite *sprite)
}
void sub_80B69DC(void)
void ReturnToFieldFromFlyMapSelect(void)
{
SetMainCallback2(CB2_ReturnToField);
gFieldCallback = mapldr_080842E8;
gFieldCallback = FieldCallback_Fly;
}
static void mapldr_080842E8(void)
static void FieldCallback_Fly(void)
{
pal_fill_black();
CreateTask(task00_8084310, 0);
+3 -2
View File
@@ -15,6 +15,7 @@
#include "task.h"
#include "trainer_hill.h"
#include "constants/field_poison.h"
#include "constants/party_menu.h"
#include "constants/species.h"
static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
@@ -56,7 +57,7 @@ static void FaintFromFieldPoison(u8 partyIdx)
static bool32 MonFaintedFromPoison(u8 partyIdx)
{
struct Pokemon *pokemon = gPlayerParty + partyIdx;
if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP) == 0 && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP) == 0 && GetAilmentFromStatus(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
{
return TRUE;
}
@@ -124,7 +125,7 @@ s32 DoPoisonFieldEffect(void)
u32 numFainted = 0;
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(pokemon, MON_DATA_SANITY_HAS_SPECIES) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
if (GetMonData(pokemon, MON_DATA_SANITY_HAS_SPECIES) && GetAilmentFromStatus(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
{
hp = GetMonData(pokemon, MON_DATA_HP);
if (hp == 0 || --hp == 0)
+1 -1
View File
@@ -1124,7 +1124,7 @@ static void sub_80B0318(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 7));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ);
sub_8199C30(0, 0, 0, 0x1E, 0x14, 0xF);
SetBgTilemapPalette(0, 0, 0, 0x1E, 0x14, 0xF);
schedule_bg_copy_tilemap_to_vram(0);
SetFlash2ScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1);
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
+1
View File
@@ -60,6 +60,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/vars.h"
#include "constants/battle_frontier.h"
#include "constants/weather.h"
+46 -44
View File
@@ -7,12 +7,13 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "constants/party_menu.h"
#include "constants/songs.h"
static void sub_816166C(u8 taskId);
static void sub_81616C0(u8 taskId);
static void sub_8161724(u8 taskId);
static void sub_81617B8(u8 taskId);
static void Task_SoftboiledRestoreHealth(u8 taskId);
static void Task_DisplayHPRestoredMessage(u8 taskId);
static void Task_FinishSoftboiled(u8 taskId);
static void CantUseSoftboiledOnMon(u8 taskId);
bool8 SetUpFieldMove_SoftBoiled(void)
{
@@ -29,81 +30,82 @@ bool8 SetUpFieldMove_SoftBoiled(void)
return FALSE;
}
void sub_8161560(u8 taskId)
void ChooseMonForSoftboiled(u8 taskId)
{
gUnknown_0203CEC8.unkB = 0xA;
gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.slotId;
sub_81B0FCC(GetCursorSelectionMonId(), 0x1);
DisplayPartyMenuStdMessage(5);
gTasks[taskId].func = sub_81B1370;
gPartyMenu.action = PARTY_ACTION_SOFTBOILED;
gPartyMenu.slotId2 = gPartyMenu.slotId;
AnimatePartySlot(GetCursorSelectionMonId(), 1);
DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON);
gTasks[taskId].func = Task_HandleChooseMonInput;
}
void sub_81615A8(u8 taskId)
void Task_TryUseSoftboiledOnPartyMon(u8 taskId)
{
u16 hp;
u8 slotId = gUnknown_0203CEC8.slotId;
u8 pokemonIndex = gUnknown_0203CEC8.unkA;
if(pokemonIndex > 6)
u8 userPartyId = gPartyMenu.slotId;
u8 recipientPartyId = gPartyMenu.slotId2;
if(recipientPartyId > PARTY_SIZE)
{
gUnknown_0203CEC8.unkB = 0;
DisplayPartyMenuStdMessage(0);
gTasks[taskId].func = sub_81B1370;
gPartyMenu.action = 0;
DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
gTasks[taskId].func = Task_HandleChooseMonInput;
return;
}
hp = GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_HP);
if(hp == 0 || slotId == pokemonIndex || GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_MAX_HP) == hp)
hp = GetMonData(&gPlayerParty[recipientPartyId], MON_DATA_HP);
if(hp == 0 || userPartyId == recipientPartyId || GetMonData(&gPlayerParty[recipientPartyId], MON_DATA_MAX_HP) == hp)
{
sub_81617B8(taskId);
CantUseSoftboiledOnMon(taskId);
return;
}
// Take away Softboiled user's health first (-1)
PlaySE(SE_KAIFUKU);
sub_81B1F18(taskId, slotId, -1, GetMonData(&gPlayerParty[slotId], MON_DATA_MAX_HP)/5, sub_816166C);
PartyMenuModifyHP(taskId, userPartyId, -1, GetMonData(&gPlayerParty[userPartyId], MON_DATA_MAX_HP)/5, Task_SoftboiledRestoreHealth);
}
static void sub_816166C(u8 taskId)
static void Task_SoftboiledRestoreHealth(u8 taskId)
{
PlaySE(SE_KAIFUKU);
sub_81B1F18(taskId, gUnknown_0203CEC8.unkA, 1, GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_MAX_HP)/5, sub_81616C0);
PartyMenuModifyHP(taskId, gPartyMenu.slotId2, 1, GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAX_HP)/5, Task_DisplayHPRestoredMessage);
}
static void sub_81616C0(u8 taskId)
static void Task_DisplayHPRestoredMessage(u8 taskId)
{
GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unkA], gStringVar1);
GetMonNickname(&gPlayerParty[gPartyMenu.slotId2], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
DisplayPartyMenuMessage(gStringVar4, 0);
DisplayPartyMenuMessage(gStringVar4, FALSE);
schedule_bg_copy_tilemap_to_vram(2);
gTasks[taskId].func = sub_8161724;
gTasks[taskId].func = Task_FinishSoftboiled;
}
static void sub_8161724(u8 taskId)
static void Task_FinishSoftboiled(u8 taskId)
{
if(sub_81B1BD4() == 1)
if(IsPartyMenuTextPrinterActive() == TRUE)
return;
gUnknown_0203CEC8.unkB = 0x0;
sub_81B0FCC(gUnknown_0203CEC8.slotId, 0);
gUnknown_0203CEC8.slotId = gUnknown_0203CEC8.unkA;
sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
ClearStdWindowAndFrameToTransparent(0x6, FALSE);
ClearWindowTilemap(0x6);
DisplayPartyMenuStdMessage(0);
gTasks[taskId].func = sub_81B1370;
gPartyMenu.action = 0;
AnimatePartySlot(gPartyMenu.slotId, 0);
gPartyMenu.slotId = gPartyMenu.slotId2;
AnimatePartySlot(gPartyMenu.slotId2, 1);
ClearStdWindowAndFrameToTransparent(6, FALSE);
ClearWindowTilemap(6);
DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
gTasks[taskId].func = Task_HandleChooseMonInput;
}
static void sub_8161784(u8 taskId)
static void Task_ChooseNewMonForSoftboiled(u8 taskId)
{
if(sub_81B1BD4() == 1)
if(IsPartyMenuTextPrinterActive() == TRUE)
return;
DisplayPartyMenuStdMessage(5);
gTasks[taskId].func = sub_81B1370;
DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON);
gTasks[taskId].func = Task_HandleChooseMonInput;
}
static void sub_81617B8(u8 taskId)
static void CantUseSoftboiledOnMon(u8 taskId)
{
PlaySE(SE_SELECT);
DisplayPartyMenuMessage(gText_CantBeUsedOnPkmn, 0);
DisplayPartyMenuMessage(gText_CantBeUsedOnPkmn, FALSE);
schedule_bg_copy_tilemap_to_vram(2);
gTasks[taskId].func = sub_8161784;
gTasks[taskId].func = Task_ChooseNewMonForSoftboiled;
}
+1 -1
View File
@@ -884,7 +884,7 @@ static void sub_81A1AD4(void)
{
s32 i;
sub_81B8558();
ClearSelectedPartyOrder();
for (i = 0; i < gSpecialVar_0x8005; i++)
gSelectedOrderFromParty[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i];
ReducePlayerPartyToSelectedMons();
+3 -3
View File
@@ -1138,9 +1138,9 @@ const u32 gBattleAnimSpritePal_Slash2[] = INCBIN_U32("graphics/battle_anims/spri
const u32 gBattleAnimSpriteGfx_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.4bpp.lz");
const u32 gBattleAnimSpritePal_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.gbapal.lz");
const u32 gPartyMenuMisc_Gfx[] = INCBIN_U32("graphics/interface/party_menu_misc.4bpp.lz");
const u32 gPartyMenuMisc_Pal[] = INCBIN_U32("graphics/interface/party_menu_misc.gbapal.lz");
const u32 gPartyMenuMisc_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_misc.bin.lz");
const u32 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/interface/party_menu_bg.4bpp.lz");
const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/interface/party_menu_bg.gbapal.lz");
const u32 gPartyMenuBg_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_bg.bin.lz");
const u32 gPartyMenuPokeball_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball.4bpp.lz");
const u32 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball_small.4bpp.lz"); //unused
+4 -4
View File
@@ -142,7 +142,7 @@ bool8 CheckBagHasItem(u16 itemId, u16 count)
if (ItemId_GetPocket(itemId) == 0)
return FALSE;
if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE)
if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
return CheckPyramidBagHasItem(itemId, count);
pocket = ItemId_GetPocket(itemId) - 1;
// Check for item slots that contain the item
@@ -189,7 +189,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
if (ItemId_GetPocket(itemId) == POCKET_NONE)
return FALSE;
if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE)
if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
{
return CheckPyramidBagHasSpace(itemId, count);
}
@@ -404,7 +404,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
return FALSE;
// check Battle Pyramid Bag
if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE)
if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
{
return AddPyramidBagItem(itemId, count);
}
@@ -517,7 +517,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
return FALSE;
// check Battle Pyramid Bag
if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE)
if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
{
return RemovePyramidBagItem(itemId, count);
}
+10 -9
View File
@@ -4,6 +4,7 @@
#include "battle_controllers.h"
#include "battle_pyramid.h"
#include "frontier_util.h"
#include "battle_pyramid_bag.h"
#include "berry_tag_screen.h"
#include "bg.h"
#include "constants/items.h"
@@ -466,9 +467,9 @@ void CB2_BagMenuFromStartMenu(void)
void sub_81AABB0(void)
{
if (!InBattlePyramid())
GoToBagMenu(RETURN_LOCATION_BATTLE, POCKETS_COUNT, SetCB2ToReshowScreenAfterMenu2);
GoToBagMenu(RETURN_LOCATION_BATTLE, POCKETS_COUNT, CB2_SetUpReshowBattleScreenAfterMenu2);
else
sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2);
GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2);
}
void CB2_ChooseBerry(void)
@@ -1148,13 +1149,13 @@ u8 GetSwitchBagPocketDirection(void)
u8 LRKeys;
if (gBagMenu->unk81B != 0)
return 0;
LRKeys = GetLRKeysState();
if ((gMain.newKeys & DPAD_LEFT) || LRKeys == 1)
LRKeys = GetLRKeysPressed();
if ((gMain.newKeys & DPAD_LEFT) || LRKeys == MENU_L_PRESSED)
{
PlaySE(SE_SELECT);
return 1;
}
if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == 2)
if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == MENU_R_PRESSED)
{
PlaySE(SE_SELECT);
return 2;
@@ -1581,7 +1582,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
sub_8199134(0, 1);
}
}
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1)
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{
if ((cursorPos & 1) && sub_81ACDFC(cursorPos - 1))
{
@@ -1589,7 +1590,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
sub_8199134(-1, 0);
}
}
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2)
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (!(cursorPos & 1) && sub_81ACDFC(cursorPos + 1))
{
@@ -1782,7 +1783,7 @@ void ItemMenu_Give(u8 taskId)
BagMenu_PrintThereIsNoPokemon(taskId);
else
{
gBagMenu->mainCallback2 = sub_81B7F60;
gBagMenu->mainCallback2 = CB2_ChooseMonToGiveItem;
unknown_ItemMenu_Confirm(taskId);
}
}
@@ -2157,7 +2158,7 @@ void DoWallyTutorialBagMenu(void)
PrepareBagForWallyTutorial();
AddBagItem(ITEM_POTION, 1);
AddBagItem(ITEM_POKE_BALL, 1);
GoToBagMenu(RETURN_LOCATION_BATTLE_2, ITEMS_POCKET, SetCB2ToReshowScreenAfterMenu2);
GoToBagMenu(RETURN_LOCATION_BATTLE_2, ITEMS_POCKET, CB2_SetUpReshowBattleScreenAfterMenu2);
}
void Task_WallyTutorialBagMenu(u8 taskId)
+35 -34
View File
@@ -64,10 +64,10 @@ void sub_80FDC00(u8 taskId);
void ItemUseOnFieldCB_Berry(u8 taskId);
void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId);
void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId);
void sub_80FDF90(u8 taskId);
void task08_0809AD8C(u8 taskId);
void sub_80FE024(u8 taskId);
void sub_80FE03C(u8 taskId);
static void BootUpSoundTMHM(u8 taskId);
static void Task_ShowTMHMContainedMessage(u8 taskId);
static void UseTMHMYesNo(u8 taskId);
static void UseTMHM(u8 taskId);
void sub_80FE124(u8 taskId);
void sub_80FE164(u8 taskId);
@@ -91,16 +91,16 @@ EWRAM_DATA static void(*gUnknown_0203A0F4)(u8 taskId) = NULL;
static const MainCallback gUnknown_085920D8[] =
{
sub_81B617C,
CB2_ShowPartyMenuForItemUse,
CB2_ReturnToField,
NULL,
};
static const u8 gUnknown_085920E4[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
static const struct YesNoFuncTable gUnknown_085920E8 =
static const struct YesNoFuncTable sUseTMHMYesNoFuncTable =
{
.yesFunc = sub_80FE03C,
.yesFunc = UseTMHM,
.noFunc = BagMenu_InitListsMenu,
};
@@ -722,72 +722,72 @@ void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId)
void ItemUseOutOfBattle_Medicine(u8 taskId)
{
gUnknown_03006328 = ItemUseCB_Medicine;
gItemUseCB = ItemUseCB_Medicine;
SetUpItemUseCallback(taskId);
}
void ItemUseOutOfBattle_ReduceEV(u8 taskId)
{
gUnknown_03006328 = sub_81B67C8;
gItemUseCB = ItemUseCB_ReduceEV;
SetUpItemUseCallback(taskId);
}
void ItemUseOutOfBattle_SacredAsh(u8 taskId)
{
gUnknown_03006328 = sub_81B79E8;
gItemUseCB = ItemUseCB_SacredAsh;
SetUpItemUseCallback(taskId);
}
void ItemUseOutOfBattle_PPRecovery(u8 taskId)
{
gUnknown_03006328 = dp05_ether;
gItemUseCB = ItemUseCB_PPRecovery;
SetUpItemUseCallback(taskId);
}
void ItemUseOutOfBattle_PPUp(u8 taskId)
{
gUnknown_03006328 = dp05_pp_up;
gItemUseCB = ItemUseCB_PPUp;
SetUpItemUseCallback(taskId);
}
void ItemUseOutOfBattle_RareCandy(u8 taskId)
{
gUnknown_03006328 = dp05_rare_candy;
gItemUseCB = ItemUseCB_RareCandy;
SetUpItemUseCallback(taskId);
}
void ItemUseOutOfBattle_TMHM(u8 taskId)
{
if (gSpecialVar_ItemId >= ITEM_HM01_CUT)
DisplayItemMessage(taskId, 1, gText_BootedUpHM, sub_80FDF90); // HM
DisplayItemMessage(taskId, 1, gText_BootedUpHM, BootUpSoundTMHM); // HM
else
DisplayItemMessage(taskId, 1, gText_BootedUpTM, sub_80FDF90); // TM
DisplayItemMessage(taskId, 1, gText_BootedUpTM, BootUpSoundTMHM); // TM
}
void sub_80FDF90(u8 taskId)
static void BootUpSoundTMHM(u8 taskId)
{
PlaySE(SE_PC_LOGIN);
gTasks[taskId].func = task08_0809AD8C;
gTasks[taskId].func = Task_ShowTMHMContainedMessage;
}
void task08_0809AD8C(u8 taskId)
static void Task_ShowTMHMContainedMessage(u8 taskId)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]);
StringExpandPlaceholders(gStringVar4, gText_TMHMContainedVar1);
DisplayItemMessage(taskId, 1, gStringVar4, sub_80FE024);
DisplayItemMessage(taskId, 1, gStringVar4, UseTMHMYesNo);
}
}
void sub_80FE024(u8 taskId)
static void UseTMHMYesNo(u8 taskId)
{
BagMenu_YesNo(taskId, 6, &gUnknown_085920E8);
BagMenu_YesNo(taskId, 6, &sUseTMHMYesNoFuncTable);
}
void sub_80FE03C(u8 taskId)
static void UseTMHM(u8 taskId)
{
gUnknown_03006328 = sub_81B6DC4;
gItemUseCB = ItemUseCB_TMHM;
SetUpItemUseCallback(taskId);
}
@@ -912,7 +912,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
void ItemUseOutOfBattle_EvolutionStone(u8 taskId)
{
gUnknown_03006328 = sub_81B7C74;
gItemUseCB = ItemUseCB_EvolutionStone;
SetUpItemUseCallback(taskId);
}
@@ -976,36 +976,37 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
}
}
void sub_80FE54C(u8 taskId)
static void ItemUseInBattle_ShowPartyMenu(u8 taskId)
{
if (!InBattlePyramid())
{
gBagMenu->mainCallback2 = sub_81B89F0;
gBagMenu->mainCallback2 = ChooseMonForInBattleItem;
unknown_ItemMenu_Confirm(taskId);
}
else
{
gPyramidBagResources->callback2 = sub_81B89F0;
gPyramidBagResources->callback2 = ChooseMonForInBattleItem;
sub_81C5B14(taskId);
}
}
void ItemUseInBattle_Medicine(u8 taskId)
{
gUnknown_03006328 = ItemUseCB_Medicine;
sub_80FE54C(taskId);
gItemUseCB = ItemUseCB_Medicine;
ItemUseInBattle_ShowPartyMenu(taskId);
}
void sub_80FE5AC(u8 taskId)
// Unused. Sacred Ash cannot be used in battle
void ItemUseInBattle_SacredAsh(u8 taskId)
{
gUnknown_03006328 = sub_81B79E8;
sub_80FE54C(taskId);
gItemUseCB = ItemUseCB_SacredAsh;
ItemUseInBattle_ShowPartyMenu(taskId);
}
void ItemUseInBattle_PPRecovery(u8 taskId)
{
gUnknown_03006328 = dp05_ether;
sub_80FE54C(taskId);
gItemUseCB = ItemUseCB_PPRecovery;
ItemUseInBattle_ShowPartyMenu(taskId);
}
void ItemUseInBattle_Escape(u8 taskId)
+1 -1
View File
@@ -63,7 +63,7 @@ u8 GiveMailToMon(struct Pokemon *mon, u16 itemId)
gSaveBlock1Ptr->mail[id].playerName[i] = EOS;
PadNameString(gSaveBlock1Ptr->mail[id].playerName, CHAR_SPACE);
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
gSaveBlock1Ptr->mail[id].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
species = GetBoxMonData(&mon->box, MON_DATA_SPECIES);
+11 -11
View File
@@ -1433,13 +1433,13 @@ s8 sub_8199284(void)
sub_8199134(0, 1);
return MENU_NOTHING_CHOSEN;
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
{
PlaySE(SE_SELECT);
sub_8199134(-1, 0);
return MENU_NOTHING_CHOSEN;
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
{
PlaySE(SE_SELECT);
sub_8199134(1, 0);
@@ -1474,13 +1474,13 @@ s8 Menu_ProcessInputGridLayout(void)
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
{
if (oldPos != sub_81991F8(-1, 0))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (oldPos != sub_81991F8(1, 0))
PlaySE(SE_SELECT);
@@ -1513,13 +1513,13 @@ s8 sub_81993D8(void)
sub_8199134(0, 1);
return MENU_NOTHING_CHOSEN;
}
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || sub_812210C() == 1)
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
{
PlaySE(SE_SELECT);
sub_8199134(-1, 0);
return MENU_NOTHING_CHOSEN;
}
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || sub_812210C() == 2)
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
{
PlaySE(SE_SELECT);
sub_8199134(1, 0);
@@ -1554,13 +1554,13 @@ s8 sub_8199484(void)
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || sub_812210C() == 1)
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
{
if (oldPos != sub_81991F8(-1, 0))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || sub_812210C() == 2)
else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
{
if (oldPos != sub_81991F8(1, 0))
PlaySE(SE_SELECT);
@@ -1868,7 +1868,7 @@ u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16
}
}
void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette)
void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette)
{
u8 i;
u8 j;
@@ -1883,7 +1883,7 @@ void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette)
}
}
void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height)
void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height)
{
u8 i;
u8 j;
@@ -2159,7 +2159,7 @@ void sub_819A344(u8 a0, u8 *dest, u8 color)
ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
break;
case 3:
sub_81245DC(string, gMapHeader.regionMapSectionId);
GetMapNameGeneric(string, gMapHeader.regionMapSectionId);
break;
case 4:
for (curFlag = FLAG_BADGE01_GET, flagCount = 0, endOfString = string + 1; curFlag <= FLAG_BADGE08_GET; curFlag++)
+6 -6
View File
@@ -251,27 +251,27 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1)
return FALSE;
}
u8 GetLRKeysState(void)
u8 GetLRKeysPressed(void)
{
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
if (gMain.newKeys & L_BUTTON)
return 1;
return MENU_L_PRESSED;
if (gMain.newKeys & R_BUTTON)
return 2;
return MENU_R_PRESSED;
}
return 0;
}
u8 sub_812210C(void)
u8 GetLRKeysPressedAndHeld(void)
{
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
if (gMain.newAndRepeatedKeys & L_BUTTON)
return 1;
return MENU_L_PRESSED;
if (gMain.newAndRepeatedKeys & R_BUTTON)
return 2;
return MENU_R_PRESSED;
}
return 0;
+2 -2
View File
@@ -513,7 +513,7 @@ static void DoMoveRelearnerMain(void)
if (selection == 0)
{
if (GiveMoveToMon(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove()) != 0xFFFF)
if (GiveMoveToMon(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove()) != MON_HAS_MAX_MOVES)
{
FormatAndPrintText(gText_MoveRelearnerPkmnLearnedMove);
gSpecialVar_0x8004 = TRUE;
@@ -778,7 +778,7 @@ static void HandleInput(bool8 showContest)
switch (itemId)
{
case LIST_NOTHING_CHOSEN:
if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysState())
if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysPressed())
{
break;
}
+2245 -3310
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -824,7 +824,7 @@ static void Mailbox_DoGiveMailPokeMenu(u8 taskId)
{
sub_81D1EC0();
CleanupOverworldWindowsAndTilemaps();
sub_81B8448();
ChooseMonToGiveMailFromMailbox();
DestroyTask(taskId);
}
}
+1 -1
View File
@@ -462,7 +462,7 @@ void OpenPokeblockCase(u8 caseId, void (*callback)(void))
void OpenPokeblockCaseInBattle(void)
{
OpenPokeblockCase(PBLOCK_CASE_BATTLE, SetCB2ToReshowScreenAfterMenu2);
OpenPokeblockCase(PBLOCK_CASE_BATTLE, CB2_SetUpReshowBattleScreenAfterMenu2);
}
void OpenPokeblockCaseOnFeeder(void)
+16 -13
View File
@@ -60,6 +60,7 @@ static void EncryptBoxMon(struct BoxPokemon *boxMon);
static void DecryptBoxMon(struct BoxPokemon *boxMon);
static void sub_806E6CC(u8 taskId);
static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
// EWRAM vars
EWRAM_DATA static u8 sLearningMoveTableID = 0;
@@ -2879,22 +2880,22 @@ u16 GiveMoveToMon(struct Pokemon *mon, u16 move)
return GiveMoveToBoxMon(&mon->box, move);
}
u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
{
s32 i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
u16 existingMove = GetBoxMonData(boxMon, MON_DATA_MOVE1 + i, NULL);
if (!existingMove)
if (existingMove == MOVE_NONE)
{
SetBoxMonData(boxMon, MON_DATA_MOVE1 + i, &move);
SetBoxMonData(boxMon, MON_DATA_PP1 + i, &gBattleMoves[move].pp);
return move;
}
if (existingMove == move)
return -2;
return MON_ALREADY_KNOWS_MOVE;
}
return 0xFFFF;
return MON_HAS_MAX_MOVES;
}
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move)
@@ -2949,7 +2950,7 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
move = (gLevelUpLearnsets[species][i] & 0x1FF);
if (GiveMoveToBoxMon(boxMon, move) == 0xFFFF)
if (GiveMoveToBoxMon(boxMon, move) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToBoxMon(boxMon, move);
}
}
@@ -4860,7 +4861,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (battlerId != 4)
{
gAbsentBattlerFlags &= ~gBitTable[battlerId];
CopyPlayerPartyMonToBattleData(battlerId, pokemon_order_func(gBattlerPartyIndexes[battlerId]));
CopyPlayerPartyMonToBattleData(battlerId, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battlerId]));
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255)
gBattleResults.numRevivesUsed++;
}
@@ -5657,21 +5658,23 @@ void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies)
SetMonData(mon, MON_DATA_NICKNAME, gSpeciesNames[newSpecies]);
}
bool8 sub_806D7EC(void)
// The below two functions determine which side of a multi battle the trainer battles on
// 0 is the left (top in party menu), 1 is right (bottom in party menu)
u8 GetPlayerFlankId(void)
{
bool8 retVal = FALSE;
u8 flankId = 0;
switch (gLinkPlayers[GetMultiplayerId()].id)
{
case 0:
case 3:
retVal = FALSE;
flankId = 0;
break;
case 1:
case 2:
retVal = TRUE;
flankId = 1;
break;
}
return retVal;
return flankId;
}
u16 GetLinkTrainerFlankId(u8 linkPlayerId)
@@ -6439,11 +6442,11 @@ void SetMonPreventsSwitchingString(void)
gBattleTextBuff1[4] = B_BUFF_EOS;
if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER)
gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]);
gBattleTextBuff1[3] = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]);
else
gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout];
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, pokemon_order_func(gBattlerPartyIndexes[gBattlerInMenuId]))
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattlerInMenuId]))
BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4);
}
+8 -8
View File
@@ -1029,13 +1029,13 @@ const u16 sSpriteImageSizes[3][4] =
},
};
u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra)
u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 handleDeoxys)
{
u8 spriteId;
struct MonIconSpriteTemplate iconTemplate =
{
.oam = &sMonIconOamData,
.image = GetMonIconPtr(species, personality, extra),
.image = GetMonIconPtr(species, personality, handleDeoxys),
.anims = sMonIconAnims,
.affineAnims = sMonIconAffineAnims,
.callback = callback,
@@ -1125,9 +1125,9 @@ u16 sub_80D2E84(u16 species)
}
}
const u8 *GetMonIconPtr(u16 species, u32 personality, bool32 extra)
const u8 *GetMonIconPtr(u16 species, u32 personality, bool32 handleDeoxys)
{
return GetMonIconTiles(GetIconSpecies(species, personality), extra);
return GetMonIconTiles(GetIconSpecies(species, personality), handleDeoxys);
}
void sub_80D2EF8(struct Sprite *sprite)
@@ -1184,17 +1184,17 @@ void FreeMonIconPalette(u16 species)
FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
}
void UpdateTradeMonIconFrame(struct Sprite *sprite)
void SpriteCB_MonIcon(struct Sprite *sprite)
{
UpdateMonIconFrame(sprite);
}
const u8* GetMonIconTiles(u16 species, bool32 extra)
const u8* GetMonIconTiles(u16 species, bool32 handleDeoxys)
{
const u8* iconSprite = gMonIconTable[species];
if (species == SPECIES_DEOXYS && extra == TRUE)
if (species == SPECIES_DEOXYS && handleDeoxys == TRUE)
{
iconSprite = (const u8*)(0x400 + (u32)iconSprite); //WTF?
iconSprite = (const u8*)(0x400 + (u32)iconSprite); // use the specific Deoxys form icon (Speed in this case)
}
return iconSprite;
}
+16 -15
View File
@@ -42,6 +42,7 @@
#include "window.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/region_map_sections.h"
#include "constants/rgb.h"
#include "constants/songs.h"
@@ -162,7 +163,7 @@ static EWRAM_DATA struct PokemonSummaryScreenData
u8 unk_filler4[6];
} *sMonSummaryScreen = NULL;
EWRAM_DATA u8 gLastViewedMonIndex = 0;
static EWRAM_DATA u8 sUnknown_0203CF21 = 0;
static EWRAM_DATA u8 sMoveSlotToReplace = 0;
ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0;
struct UnkStruct_61CC04
@@ -1491,11 +1492,11 @@ static void HandleInput(u8 taskId)
{
ChangeSummaryPokemon(taskId, 1);
}
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1)
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{
ChangePage(taskId, -1);
}
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2)
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{
ChangePage(taskId, 1);
}
@@ -2159,11 +2160,11 @@ static void HandleReplaceMoveInput(u8 taskId)
data[0] = 4;
sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
{
ChangePage(taskId, -1);
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
{
ChangePage(taskId, 1);
}
@@ -2173,8 +2174,8 @@ static void HandleReplaceMoveInput(u8 taskId)
{
StopPokemonAnimations();
PlaySE(SE_SELECT);
sUnknown_0203CF21 = sMonSummaryScreen->firstMoveIndex;
gSpecialVar_0x8005 = sUnknown_0203CF21;
sMoveSlotToReplace = sMonSummaryScreen->firstMoveIndex;
gSpecialVar_0x8005 = sMoveSlotToReplace;
BeginCloseSummaryScreen(taskId);
}
else
@@ -2188,8 +2189,8 @@ static void HandleReplaceMoveInput(u8 taskId)
u32 var1;
StopPokemonAnimations();
PlaySE(SE_SELECT);
sUnknown_0203CF21 = 4;
gSpecialVar_0x8005 = 4;
sMoveSlotToReplace = MAX_MON_MOVES;
gSpecialVar_0x8005 = MAX_MON_MOVES;
BeginCloseSummaryScreen(taskId);
}
}
@@ -2238,7 +2239,7 @@ static void HandleHMMovesCantBeForgottenInput(u8 taskId)
data[1] = 0;
gTasks[taskId].func = HandleReplaceMoveInput;
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
{
if (sMonSummaryScreen->currPageIndex != 2)
{
@@ -2252,7 +2253,7 @@ static void HandleHMMovesCantBeForgottenInput(u8 taskId)
sub_81C1EFC(9, -2, move);
}
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (sMonSummaryScreen->currPageIndex != 3)
{
@@ -2281,9 +2282,9 @@ static void HandleHMMovesCantBeForgottenInput(u8 taskId)
}
}
u8 sub_81C1B94(void)
u8 GetMoveSlotToReplace(void)
{
return sUnknown_0203CF21;
return sMoveSlotToReplace;
}
static void DrawPagination(void) // Updates the pagination dots at the top of the summary screen
@@ -2574,9 +2575,9 @@ static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mo
static void SetDexNumberColor(bool8 isMonShiny)
{
if (!isMonShiny)
sub_8199C30(3, 1, 4, 8, 8, 0);
SetBgTilemapPalette(3, 1, 4, 8, 8, 0);
else
sub_8199C30(3, 1, 4, 8, 8, 5);
SetBgTilemapPalette(3, 1, 4, 8, 8, 5);
schedule_bg_copy_tilemap_to_vram(3);
}
+9 -8
View File
@@ -55,7 +55,7 @@ static EWRAM_DATA struct {
/*0x008*/ struct RegionMap regionMap;
/*0x88c*/ u8 unk_88c[0x1c0];
/*0xa4c*/ u8 unk_a4c[0x26];
/*0xa72*/ bool8 unk_a72;
/*0xa72*/ bool8 choseFlyLocation;
} *sFlyMap = NULL; // a74
static bool32 gUnknown_03001180;
@@ -1605,7 +1605,8 @@ u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
return str;
}
u8 *sub_81245DC(u8 *dest, u16 mapSecId)
// TODO: probably needs a better name
u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId)
{
switch (mapSecId)
{
@@ -1626,7 +1627,7 @@ u8 *sub_8124610(u8 *dest, u16 mapSecId)
}
else
{
return sub_81245DC(dest, mapSecId);
return GetMapNameGeneric(dest, mapSecId);
}
}
@@ -1972,13 +1973,13 @@ static void sub_8124D64(void)
if (sFlyMap->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || sFlyMap->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER)
{
m4aSongNumStart(SE_SELECT);
sFlyMap->unk_a72 = TRUE;
sFlyMap->choseFlyLocation = TRUE;
sub_81248F4(sub_8124E0C);
}
break;
case INPUT_EVENT_B_BUTTON:
m4aSongNumStart(SE_SELECT);
sFlyMap->unk_a72 = FALSE;
sFlyMap->choseFlyLocation = FALSE;
sub_81248F4(sub_8124E0C);
break;
}
@@ -1997,7 +1998,7 @@ static void sub_8124E0C(void)
if (!UpdatePaletteFade())
{
FreeRegionMapIconResources();
if (sFlyMap->unk_a72)
if (sFlyMap->choseFlyLocation)
{
switch (sFlyMap->regionMap.mapSecId)
{
@@ -2024,11 +2025,11 @@ static void sub_8124E0C(void)
}
break;
}
sub_80B69DC();
ReturnToFieldFromFlyMapSelect();
}
else
{
SetMainCallback2(sub_81B58A8);
SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap);
}
if (sFlyMap != NULL)
{
+1 -2
View File
@@ -39,7 +39,6 @@
#include "script_menu.h"
#include "script_movement.h"
#include "script_pokemon_80F8.h"
#include "script_pokemon_81B9.h"
#include "shop.h"
#include "slot_machine.h"
#include "sound.h"
@@ -1938,7 +1937,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx)
bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx)
{
sub_81B9404();
ChooseContestMon();
ScriptContext1_Stop();
return TRUE;
}
+1 -1
View File
@@ -646,7 +646,7 @@ void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
void ChooseHalfPartyForBattle(void)
{
gMain.savedCallback = CB2_ReturnFromChooseHalfParty;
VarSet(VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOUBLE_COLOSSEUM);
VarSet(VAR_FRONTIER_FACILITY, FACILITY_MULTI_OR_EREADER);
InitChooseHalfPartyForBattle(0);
}
+2 -2
View File
@@ -388,7 +388,7 @@ const u8 gText_PCMailboxFull[] = _("Your PC's MAILBOX is full.{PAUSE_UNTIL_PRESS
const u8 gText_MailMessageWillBeLost[] = _("If the MAIL is removed, the\nmessage will be lost. Okay?");
const u8 gText_RemoveMailBeforeItem[] = _("MAIL must be removed before\nholding an item.{PAUSE_UNTIL_PRESS}");
const u8 gText_PkmnWasGivenItem[] = _("{STR_VAR_1} was given the\n{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}");
const u8 gText_SwitchPkmnItem[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?");
const u8 gText_PkmnAlreadyHoldingItemSwitch[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?");
const u8 gText_PkmnNotHolding[] = _("{STR_VAR_1} isn't holding\nanything.{PAUSE_UNTIL_PRESS}");
const u8 gText_ReceivedItemFromPkmn[] = _("Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}");
const u8 gText_MailTakenFromPkmn[] = _("MAIL was taken from the\nPOKéMON.{PAUSE_UNTIL_PRESS}");
@@ -471,7 +471,7 @@ const u8 gText_CancelChallenge[] = _("Cancel the challenge?");
const u8 gText_EscapeFromHere[] = _("Want to escape from here and return\nto {STR_VAR_1}?");
const u8 gText_ReturnToHealingSpot[] = _("Want to return to the healing spot\nused last in {STR_VAR_1}?");
const u8 gText_PauseUntilPress[] = _("{PAUSE_UNTIL_PRESS}");
const u8 gJPText_PutVar1IntoSpinner[] = _("{STR_VAR_1}を ぐるぐるこうかんに\nだして よろしいですか?");
const u8 gJPText_AreYouSureYouWantToSpinTradeMon[] = _("{STR_VAR_1}を ぐるぐるこうかんに\nだして よろしいですか?");
ALIGNED(4) const u8 gText_OnlyPkmnForBattle[] = _("That's your only\nPOKéMON for battle.");
ALIGNED(4) const u8 gText_PkmnCantBeTradedNow[] = _("That POKéMON can't be traded\nnow.");
ALIGNED(4) const u8 gText_EggCantBeTradedNow[] = _("An EGG can't be traded now.");
+15 -13
View File
@@ -481,7 +481,7 @@ static void CB2_CreateTradeMenu(void)
{
struct Pokemon *mon = &gPlayerParty[i];
sTradeMenuData->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2),
UpdateTradeMonIconFrame,
SpriteCB_MonIcon,
(sTradeMonSpriteCoords[i][0] * 8) + 14,
(sTradeMonSpriteCoords[i][1] * 8) - 12,
1,
@@ -493,7 +493,7 @@ static void CB2_CreateTradeMenu(void)
{
struct Pokemon *mon = &gEnemyParty[i];
sTradeMenuData->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL),
UpdateTradeMonIconFrame,
SpriteCB_MonIcon,
(sTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14,
(sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12,
1,
@@ -668,7 +668,7 @@ static void CB2_ReturnToTradeMenu(void)
{
struct Pokemon *mon = &gPlayerParty[i];
sTradeMenuData->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL),
UpdateTradeMonIconFrame,
SpriteCB_MonIcon,
(sTradeMonSpriteCoords[i][0] * 8) + 14,
(sTradeMonSpriteCoords[i][1] * 8) - 12,
1,
@@ -680,7 +680,7 @@ static void CB2_ReturnToTradeMenu(void)
{
struct Pokemon *mon = &gEnemyParty[i];
sTradeMenuData->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL),
UpdateTradeMonIconFrame,
SpriteCB_MonIcon,
(sTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14,
(sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12,
1,
@@ -1439,8 +1439,8 @@ static void TradeMenuProcessInput_SelectedMon(void)
QueueAction(QUEUE_DELAY_MSG, QUEUE_MON_CANT_BE_TRADED);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_REDRAW_MAIN_MENU;
break;
case CANT_TRADE_EGG:
case CANT_TRADE_EGG2:
case CANT_TRADE_EGG_YET:
case CANT_TRADE_EGG_YET2:
QueueAction(QUEUE_DELAY_MSG, QUEUE_EGG_CANT_BE_TRADED);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_REDRAW_MAIN_MENU;
break;
@@ -1809,7 +1809,7 @@ static void DrawTradeMenuParty(u8 whichParty)
gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].data[0] = 20;
gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].data[2] = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].data[4] = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][1] * 8) - 12;
StoreSpriteCallbackInData6(&gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]], UpdateTradeMonIconFrame);
StoreSpriteCallbackInData6(&gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]], SpriteCB_MonIcon);
sTradeMenuData->drawPartyState[whichParty]++;
TradeMenuBouncePartySprites(&gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]]);
CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, whichParty * 15, 0, 15, 17, 0);
@@ -1820,7 +1820,7 @@ static void DrawTradeMenuParty(u8 whichParty)
PrintNicknamesForTradeMenu();
break;
case 2:
if (gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].callback == UpdateTradeMonIconFrame)
if (gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].callback == SpriteCB_MonIcon)
sTradeMenuData->drawPartyState[whichParty] = 3;
break;
case 3:
@@ -2352,7 +2352,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int
if (!IsNationalPokedexEnabled())
{
if (species2[monIdx] == SPECIES_EGG)
return CANT_TRADE_EGG;
return CANT_TRADE_EGG_YET;
if (!IsSpeciesInHoennDex(species2[monIdx]))
return CANT_TRADE_NATIONAL;
@@ -2366,7 +2366,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int
if (!(player->progressFlagsCopy & 0xF))
{
if (species2[monIdx] == SPECIES_EGG)
return CANT_TRADE_EGG2;
return CANT_TRADE_EGG_YET2;
if (!IsSpeciesInHoennDex(species2[monIdx]))
return CANT_TRADE_INVALID_MON;
@@ -2542,8 +2542,10 @@ int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuP
}
// r6/r7 flip. Ugh.
// Spin Trade wasnt fully implemented, but this checks if a mon would be valid to Spin Trade
// Unlike later generations, this version of Spin Trade isnt only for Eggs
#ifdef NONMATCHING
int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 monIdx)
int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
{
int i, version, versions, canTradeAnyMon, numMonsLeft;
int speciesArray[PARTY_SIZE];
@@ -2592,7 +2594,7 @@ int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 monIdx)
return CANT_TRADE_NATIONAL;
if (speciesArray[monIdx] == SPECIES_NONE)
return CANT_TRADE_EGG;
return CANT_TRADE_EGG_YET;
}
numMonsLeft = 0;
@@ -2611,7 +2613,7 @@ int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 monIdx)
}
#else
NAKED
int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 a1)
int CanSpinTradeMon(struct Pokemon *mon, u16 a1)
{
asm_unified("push {r4-r7,lr}\n\
mov r7, r8\n\

Some files were not shown because too many files have changed in this diff Show More