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_BattleTentBattleRoom/scripts.inc"
.include "data/maps/FallarborTown_PokemonCenter_1F/scripts.inc" .include "data/maps/FallarborTown_PokemonCenter_1F/scripts.inc"
.include "data/maps/FallarborTown_PokemonCenter_2F/scripts.inc" .include "data/maps/FallarborTown_PokemonCenter_2F/scripts.inc"
.include "data/maps/FallarborTown_House1/scripts.inc" .include "data/maps/FallarborTown_CozmosHouse/scripts.inc"
.include "data/maps/FallarborTown_House2/scripts.inc" .include "data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc"
.include "data/maps/VerdanturfTown_BattleTentLobby/scripts.inc" .include "data/maps/VerdanturfTown_BattleTentLobby/scripts.inc"
.include "data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc" .include "data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc"
.include "data/maps/VerdanturfTown_BattleTentBattleRoom/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 msgbox BattleFrontier_BattlePyramidLobby_Text_2525F4, MSGBOX_DEFAULT
BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA
special sub_81B95E0 special DoBattlePyramidMonsHaveHeldItem
compare VAR_RESULT, 1 compare VAR_RESULT, TRUE
call_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250DDB call_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250DDB
clearflag FLAG_SPECIAL_FLAG_0x4004 clearflag FLAG_STORING_ITEMS_IN_PYRAMID_BAG
setvar VAR_0x8004, 8 setvar VAR_0x8004, 8
special CallFrontierUtilFunc special CallFrontierUtilFunc
special LoadPlayerParty special LoadPlayerParty
@@ -494,8 +494,8 @@ BattleFrontier_BattlePyramidLobby_Movement_250DD8: @ 8250DD8
BattleFrontier_BattlePyramidLobby_EventScript_250DDB:: @ 8250DDB BattleFrontier_BattlePyramidLobby_EventScript_250DDB:: @ 8250DDB
msgbox BattleFrontier_BattlePyramidLobby_Text_2517FC, MSGBOX_DEFAULT msgbox BattleFrontier_BattlePyramidLobby_Text_2517FC, MSGBOX_DEFAULT
setflag FLAG_SPECIAL_FLAG_0x4004 setflag FLAG_STORING_ITEMS_IN_PYRAMID_BAG
special sub_81C6A94 special TryStoreHeldItemsInPyramidBag
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250E00 goto_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250E00
message BattleFrontier_BattlePyramidLobby_Text_2518C6 message BattleFrontier_BattlePyramidLobby_Text_2518C6
@@ -525,7 +525,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250E40:: @ 8250E40
end end
BattleFrontier_BattlePyramidLobby_EventScript_250E50:: @ 8250E50 BattleFrontier_BattlePyramidLobby_EventScript_250E50:: @ 8250E50
special sub_81B9620 special BattlePyramidChooseMonHeldItems
waitstate waitstate
message BattleFrontier_BattlePyramidLobby_Text_25197E message BattleFrontier_BattlePyramidLobby_Text_25197E
waitmessage waitmessage
@@ -533,8 +533,8 @@ BattleFrontier_BattlePyramidLobby_EventScript_250E50:: @ 8250E50
end end
BattleFrontier_BattlePyramidLobby_EventScript_250E60:: @ 8250E60 BattleFrontier_BattlePyramidLobby_EventScript_250E60:: @ 8250E60
special sub_81B95E0 special DoBattlePyramidMonsHaveHeldItem
compare VAR_RESULT, 1 compare VAR_RESULT, TRUE
goto_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250E6F goto_if_eq BattleFrontier_BattlePyramidLobby_EventScript_250E6F
return return
+1 -1
View File
@@ -11,7 +11,7 @@ BattleFrontier_Lounge1_EventScript_25E775:: @ 825E775
end end
BattleFrontier_Lounge1_EventScript_25E792:: @ 825E792 BattleFrontier_Lounge1_EventScript_25E792:: @ 825E792
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
compare VAR_0x8004, 255 compare VAR_0x8004, 255
goto_if_ne BattleFrontier_Lounge1_EventScript_25E7BF 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 msgbox BattleFrontier_Lounge5_Text_NatureGirlGreeting, MSGBOX_YESNO
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq BattleFrontier_Lounge5_EventScript_NatureGirlNoneShown goto_if_eq BattleFrontier_Lounge5_EventScript_NatureGirlNoneShown
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
lock lock
faceplayer faceplayer
+1 -1
View File
@@ -12,7 +12,7 @@ BattleFrontier_Lounge6_EventScript_264FED:: @ 8264FED
msgbox BattleFrontier_Lounge6_Text_26508D, MSGBOX_YESNO msgbox BattleFrontier_Lounge6_Text_26508D, MSGBOX_YESNO
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq BattleFrontier_Lounge6_EventScript_26506B goto_if_eq BattleFrontier_Lounge6_EventScript_26506B
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
copyvar VAR_0x800A, VAR_0x8004 copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255 compare VAR_0x8004, 255
+1 -1
View File
@@ -265,7 +265,7 @@ BattleFrontier_Lounge7_EventScript_265696:: @ 8265696
fadescreen 1 fadescreen 1
special CloseBattlePointsWindow special CloseBattlePointsWindow
special CloseBattleFrontierTutorWindow special CloseBattleFrontierTutorWindow
special OpenPartyMenuForMoveTutor special ChooseMonForMoveTutor
waitstate waitstate
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq BattleFrontier_Lounge7_EventScript_265645 goto_if_eq BattleFrontier_Lounge7_EventScript_265645
+2 -2
View File
@@ -104,14 +104,14 @@
"x": 6, "x": 6,
"y": 17, "y": 17,
"elevation": 0, "elevation": 0,
"dest_map": "MAP_FALLARBOR_TOWN_HOUSE1", "dest_map": "MAP_FALLARBOR_TOWN_COZMOS_HOUSE",
"dest_warp_id": 0 "dest_warp_id": 0
}, },
{ {
"x": 1, "x": 1,
"y": 6, "y": 6,
"elevation": 0, "elevation": 0,
"dest_map": "MAP_FALLARBOR_TOWN_HOUSE2", "dest_map": "MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE",
"dest_warp_id": 0 "dest_warp_id": 0
} }
], ],
@@ -1,6 +1,6 @@
{ {
"id": "MAP_FALLARBOR_TOWN_HOUSE1", "id": "MAP_FALLARBOR_TOWN_COZMOS_HOUSE",
"name": "FallarborTown_House1", "name": "FallarborTown_CozmosHouse",
"layout": "LAYOUT_HOUSE1", "layout": "LAYOUT_HOUSE1",
"music": "MUS_TONEKUSA", "music": "MUS_TONEKUSA",
"region_map_section": "MAPSEC_FALLARBOR_TOWN", "region_map_section": "MAPSEC_FALLARBOR_TOWN",
@@ -24,8 +24,8 @@
"movement_range_y": 1, "movement_range_y": 1,
"trainer_type": "0", "trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "FallarborTown_House1_EventScript_200F13", "script": "FallarborTown_CozmosHouse_EventScript_200F13",
"flag": "FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO" "flag": "FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO"
}, },
{ {
"graphics_id": "EVENT_OBJ_GFX_WOMAN_2", "graphics_id": "EVENT_OBJ_GFX_WOMAN_2",
@@ -37,7 +37,7 @@
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "0", "trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "FallarborTown_House1_EventScript_200FBC", "script": "FallarborTown_CozmosHouse_EventScript_200FBC",
"flag": "0" "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", "id": "MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE",
"name": "FallarborTown_House2", "name": "FallarborTown_MoveRelearnersHouse",
"layout": "LAYOUT_HOUSE2", "layout": "LAYOUT_HOUSE2",
"music": "MUS_TONEKUSA", "music": "MUS_TONEKUSA",
"region_map_section": "MAPSEC_FALLARBOR_TOWN", "region_map_section": "MAPSEC_FALLARBOR_TOWN",
@@ -24,7 +24,7 @@
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "0", "trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "FallarborTown_House2_EventScript_201383", "script": "FallarborTown_MoveRelearnersHouse_EventScript_MoveRelearner",
"flag": "0" "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 msgbox FortreeCity_House1_Text_21637B, MSGBOX_YESNO
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq FortreeCity_House1_EventScript_21633D goto_if_eq FortreeCity_House1_EventScript_21633D
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
copyvar VAR_0x800A, VAR_0x8004 copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255 compare VAR_0x8004, 255
@@ -24,7 +24,7 @@
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "0", "trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_MoveDeletersHouse_EventScript_21EA0B", "script": "LilycoveCity_MoveDeletersHouse_EventScript_MoveDeleter",
"flag": "0" "flag": "0"
} }
], ],
@@ -1,110 +1,110 @@
LilycoveCity_MoveDeletersHouse_MapScripts:: @ 821EA0A LilycoveCity_MoveDeletersHouse_MapScripts:: @ 821EA0A
.byte 0 .byte 0
LilycoveCity_MoveDeletersHouse_EventScript_21EA0B:: @ 821EA0B LilycoveCity_MoveDeletersHouse_EventScript_MoveDeleter:: @ 821EA0B
lockall lockall
applymovement 1, Common_Movement_FacePlayer applymovement 1, Common_Movement_FacePlayer
waitmovement 0 waitmovement 0
msgbox LilycoveCity_MoveDeletersHouse_Text_21EAFD, MSGBOX_YESNO msgbox LilycoveCity_MoveDeletersHouse_Text_ICanMakeMonForgetMove, MSGBOX_YESNO
switch VAR_RESULT switch VAR_RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_21EA3B case 1, LilycoveCity_MoveDeletersHouse_EventScript_ChooseMonAndMoveToForget
case 0, LilycoveCity_MoveDeletersHouse_EventScript_21EAE6 case 0, LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain
releaseall releaseall
end end
LilycoveCity_MoveDeletersHouse_EventScript_21EA3B:: @ 821EA3B LilycoveCity_MoveDeletersHouse_EventScript_ChooseMonAndMoveToForget:: @ 821EA3B
msgbox LilycoveCity_MoveDeletersHouse_Text_21EB65, MSGBOX_DEFAULT msgbox LilycoveCity_MoveDeletersHouse_Text_WhichMonShouldForget, MSGBOX_DEFAULT
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
compare VAR_0x8004, 255 compare VAR_0x8004, 255
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EAE6 goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain
special sub_81B98DC special IsSelectedMonEgg
compare VAR_RESULT, TRUE
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_EggCantForgetMoves
special GetNumMovesSelectedMonHas
compare VAR_RESULT, 1 compare VAR_RESULT, 1
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EADC goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_MonOnlyKnowsOneMove
special sub_81B96D0 msgbox LilycoveCity_MoveDeletersHouse_Text_WhichMoveShouldBeForgotten, MSGBOX_DEFAULT
compare VAR_RESULT, 1
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EACF
msgbox LilycoveCity_MoveDeletersHouse_Text_21EB89, MSGBOX_DEFAULT
fadescreen 1 fadescreen 1
special sub_81B968C special MoveDeleterChooseMoveToForget
fadescreen 0 fadescreen 0
compare VAR_0x8005, 4 compare VAR_0x8005, MAX_MON_MOVES
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EA3B goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_ChooseMonAndMoveToForget
special sub_81B9718 special BufferMoveDeleterNicknameAndMove
msgbox LilycoveCity_MoveDeletersHouse_Text_21EBDA, MSGBOX_YESNO msgbox LilycoveCity_MoveDeletersHouse_Text_MonsMoveShouldBeForgotten, MSGBOX_YESNO
switch VAR_RESULT switch VAR_RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_21EAB0 case 1, LilycoveCity_MoveDeletersHouse_EventScript_TryForgetMove
case 0, LilycoveCity_MoveDeletersHouse_EventScript_21EAE6 case 0, LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain
releaseall releaseall
end end
LilycoveCity_MoveDeletersHouse_EventScript_21EAB0:: @ 821EAB0 LilycoveCity_MoveDeletersHouse_EventScript_TryForgetMove:: @ 821EAB0
special sub_81B9918 special IsLastMonThatKnowsSurf
compare VAR_RESULT, 1 compare VAR_RESULT, TRUE
goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_21EAF0 goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_LastMonWithSurf
special sub_81B9770 special MoveDeleterForgetMove
playfanfare MUS_ME_WASURE playfanfare MUS_ME_WASURE
waitfanfare waitfanfare
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC06, MSGBOX_DEFAULT msgbox LilycoveCity_MoveDeletersHouse_Text_MonHasForgottenMove, MSGBOX_DEFAULT
releaseall releaseall
end end
LilycoveCity_MoveDeletersHouse_EventScript_21EACF:: @ 821EACF LilycoveCity_MoveDeletersHouse_EventScript_MonOnlyKnowsOneMove:: @ 821EACF
special sub_81B9718 special BufferMoveDeleterNicknameAndMove
msgbox LilycoveCity_MoveDeletersHouse_Text_21EBA9, MSGBOX_DEFAULT msgbox LilycoveCity_MoveDeletersHouse_Text_MonOnlyKnowsOneMove, MSGBOX_DEFAULT
releaseall releaseall
end end
LilycoveCity_MoveDeletersHouse_EventScript_21EADC:: @ 821EADC LilycoveCity_MoveDeletersHouse_EventScript_EggCantForgetMoves:: @ 821EADC
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC78, MSGBOX_DEFAULT msgbox LilycoveCity_MoveDeletersHouse_Text_EggCantForgetMoves, MSGBOX_DEFAULT
releaseall releaseall
end end
LilycoveCity_MoveDeletersHouse_EventScript_21EAE6:: @ 821EAE6 LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain:: @ 821EAE6
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC3F, MSGBOX_DEFAULT msgbox LilycoveCity_MoveDeletersHouse_Text_ComeAgain, MSGBOX_DEFAULT
releaseall releaseall
end end
LilycoveCity_MoveDeletersHouse_EventScript_21EAF0:: @ 821EAF0 LilycoveCity_MoveDeletersHouse_EventScript_LastMonWithSurf:: @ 821EAF0
special sub_81B9718 special BufferMoveDeleterNicknameAndMove
msgbox LilycoveCity_MoveDeletersHouse_Text_21EC9C, MSGBOX_DEFAULT msgbox LilycoveCity_MoveDeletersHouse_Text_CantForgetSurf, MSGBOX_DEFAULT
releaseall releaseall
end end
LilycoveCity_MoveDeletersHouse_Text_21EAFD: @ 821EAFD LilycoveCity_MoveDeletersHouse_Text_ICanMakeMonForgetMove: @ 821EAFD
.string "Uh…\n" .string "Uh…\n"
.string "Oh, yes, I'm the MOVE DELETER.\p" .string "Oh, yes, I'm the MOVE DELETER.\p"
.string "I can make POKéMON forget their moves.\p" .string "I can make POKéMON forget their moves.\p"
.string "Would you like me to do that?$" .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?$" .string "Which POKéMON should forget a move?$"
LilycoveCity_MoveDeletersHouse_Text_21EB89: @ 821EB89 LilycoveCity_MoveDeletersHouse_Text_WhichMoveShouldBeForgotten: @ 821EB89
.string "Which move should be forgotten?$" .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 "{STR_VAR_1} knows only one move\n"
.string "so it can't be forgotten…$" .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 "Hm! {STR_VAR_1}'s {STR_VAR_2}?\n"
.string "That move should be forgotten?$" .string "That move should be forgotten?$"
LilycoveCity_MoveDeletersHouse_Text_21EC06: @ 821EC06 LilycoveCity_MoveDeletersHouse_Text_MonHasForgottenMove: @ 821EC06
.string "It worked to perfection!\p" .string "It worked to perfection!\p"
.string "{STR_VAR_1} has forgotten\n" .string "{STR_VAR_1} has forgotten\n"
.string "{STR_VAR_2} completely.$" .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 "Come again if there are moves that\n"
.string "need to be forgotten.$" .string "need to be forgotten.$"
LilycoveCity_MoveDeletersHouse_Text_21EC78: @ 821EC78 LilycoveCity_MoveDeletersHouse_Text_EggCantForgetMoves: @ 821EC78
.string "What?\n" .string "What?\n"
.string "No EGG should know any moves.$" .string "No EGG should know any moves.$"
LilycoveCity_MoveDeletersHouse_Text_21EC9C: @ 821EC9C LilycoveCity_MoveDeletersHouse_Text_CantForgetSurf: @ 821EC9C
.string "Hm!\p" .string "Hm!\p"
.string "Your {STR_VAR_1} doesn't seem willing\n" .string "Your {STR_VAR_1} doesn't seem willing\n"
.string "to forget SURF.$" .string "to forget SURF.$"
+1 -1
View File
@@ -71,7 +71,7 @@ MtChimney_EventScript_22EE0B:: @ 822EE0B
removeobject 1 removeobject 1
setflag FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA setflag FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA
setflag FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY 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 setflag FLAG_HIDE_METEOR_FALLS_1F_1R_COZMO
clearflag FLAG_HIDE_MT_CHIMNEY_LAVA_COOKIE_LADY clearflag FLAG_HIDE_MT_CHIMNEY_LAVA_COOKIE_LADY
releaseall releaseall
+1 -1
View File
@@ -12,7 +12,7 @@ PacifidlogTown_House3_EventScript_203C11:: @ 8203C11
msgbox PacifidlogTown_House3_Text_203CBE, MSGBOX_YESNO msgbox PacifidlogTown_House3_Text_203CBE, MSGBOX_YESNO
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq PacifidlogTown_House3_EventScript_203C93 goto_if_eq PacifidlogTown_House3_EventScript_203C93
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
copyvar VAR_0x800A, VAR_0x8004 copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255 compare VAR_0x8004, 255
+1 -1
View File
@@ -12,7 +12,7 @@ RustboroCity_House1_EventScript_21593F:: @ 821593F
msgbox RustboroCity_House1_Text_2159E8, MSGBOX_YESNO msgbox RustboroCity_House1_Text_2159E8, MSGBOX_YESNO
compare VAR_RESULT, 0 compare VAR_RESULT, 0
goto_if_eq RustboroCity_House1_EventScript_2159BD goto_if_eq RustboroCity_House1_EventScript_2159BD
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
copyvar VAR_0x800A, VAR_0x8004 copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, 255 compare VAR_0x8004, 255
+1 -1
View File
@@ -13,7 +13,7 @@ SlateportCity_House1_EventScript_209AA5:: @ 8209AA5
SlateportCity_House1_EventScript_209AC6:: @ 8209AC6 SlateportCity_House1_EventScript_209AC6:: @ 8209AC6
msgbox SlateportCity_House1_Text_209BFF, MSGBOX_DEFAULT msgbox SlateportCity_House1_Text_209BFF, MSGBOX_DEFAULT
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
compare VAR_0x8004, 255 compare VAR_0x8004, 255
goto_if_ne SlateportCity_House1_EventScript_209AF3 goto_if_ne SlateportCity_House1_EventScript_209AF3
@@ -6,7 +6,7 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_22722B:: @ 822722B
lock lock
faceplayer faceplayer
msgbox SootopolisCity_LotadAndSeedotHouse_Text_227369, MSGBOX_DEFAULT msgbox SootopolisCity_LotadAndSeedotHouse_Text_227369, MSGBOX_DEFAULT
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
copyvar VAR_RESULT, VAR_0x8004 copyvar VAR_RESULT, VAR_0x8004
compare VAR_RESULT, 255 compare VAR_RESULT, 255
@@ -55,7 +55,7 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_2272BC:: @ 82272BC
lock lock
faceplayer faceplayer
msgbox SootopolisCity_LotadAndSeedotHouse_Text_227676, MSGBOX_DEFAULT msgbox SootopolisCity_LotadAndSeedotHouse_Text_227676, MSGBOX_DEFAULT
special sub_81B94B0 special ChoosePartyMon
waitstate waitstate
copyvar VAR_RESULT, VAR_0x8004 copyvar VAR_RESULT, VAR_0x8004
compare VAR_RESULT, 255 compare VAR_RESULT, 255
+2 -2
View File
@@ -132,8 +132,8 @@
"FallarborTown_BattleTentBattleRoom", "FallarborTown_BattleTentBattleRoom",
"FallarborTown_PokemonCenter_1F", "FallarborTown_PokemonCenter_1F",
"FallarborTown_PokemonCenter_2F", "FallarborTown_PokemonCenter_2F",
"FallarborTown_House1", "FallarborTown_CozmosHouse",
"FallarborTown_House2" "FallarborTown_MoveRelearnersHouse"
], ],
"gMapGroup6": [ "gMapGroup6": [
"VerdanturfTown_BattleTentLobby", "VerdanturfTown_BattleTentLobby",
+2 -2
View File
@@ -911,7 +911,7 @@ EventScript_DoLinkRoomExit:: @ 8277513
CableClub_EventScript_UnionRoomAttendant:: @ 827751B CableClub_EventScript_UnionRoomAttendant:: @ 827751B
lock lock
faceplayer faceplayer
setvar VAR_FRONTIER_FACILITY, 8 setvar VAR_FRONTIER_FACILITY, FACILITY_UNION_ROOM
goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements
specialvar VAR_RESULT, IsBadEggInParty specialvar VAR_RESULT, IsBadEggInParty
compare VAR_RESULT, TRUE compare VAR_RESULT, TRUE
@@ -1019,7 +1019,7 @@ CableClub_EventScript_DontAskAboutLinking:: @ 827769A
CableClub_EventScript_DirectCornerAttendant:: @ 82776A4 CableClub_EventScript_DirectCornerAttendant:: @ 82776A4
lock lock
faceplayer 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 goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements
specialvar VAR_RESULT, IsBadEggInParty specialvar VAR_RESULT, IsBadEggInParty
compare VAR_RESULT, TRUE compare VAR_RESULT, TRUE
+1 -1
View File
@@ -289,7 +289,7 @@ MoveTutor_EventScript_ExplosionTaught:: @ 82C831C
end end
MoveTutor_EventScript_OpenPartyMenu:: @ 82C8326 MoveTutor_EventScript_OpenPartyMenu:: @ 82C8326
special OpenPartyMenuForMoveTutor special ChooseMonForMoveTutor
waitstate waitstate
lock lock
faceplayer faceplayer
+1 -1
View File
@@ -204,7 +204,7 @@ EventScript_ResetAllMapFlags:: @ 82715DE
setflag FLAG_HIDE_MOSSDEEP_CITY_HOUSE_2_WINGULL setflag FLAG_HIDE_MOSSDEEP_CITY_HOUSE_2_WINGULL
setflag FLAG_HIDE_METEOR_FALLS_TEAM_AQUA setflag FLAG_HIDE_METEOR_FALLS_TEAM_AQUA
setflag FLAG_HIDE_DEWFORD_HALL_SLUDGE_BOMB_MAN 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_WEATHER_INSTITUTE_2F_AQUA_GRUNT_M
setflag FLAG_HIDE_ROUTE_128_STEVEN setflag FLAG_HIDE_ROUTE_128_STEVEN
setflag FLAG_HIDE_ROUTE_128_ARCHIE setflag FLAG_HIDE_ROUTE_128_ARCHIE
+12 -12
View File
@@ -170,7 +170,7 @@ gSpecials:: @ 81DBA64
def_special ChooseStarter def_special ChooseStarter
def_special StartWallyTutorialBattle def_special StartWallyTutorialBattle
def_special ChangePokemonNickname def_special ChangePokemonNickname
def_special sub_81B94B0 def_special ChoosePartyMon
def_special GetFirstFreePokeblockSlot def_special GetFirstFreePokeblockSlot
def_special DoBerryBlending def_special DoBerryBlending
def_special PlayRoulette def_special PlayRoulette
@@ -230,11 +230,11 @@ gSpecials:: @ 81DBA64
def_special SetDeptStoreFloor def_special SetDeptStoreFloor
def_special DoLotteryCornerComputerEffect def_special DoLotteryCornerComputerEffect
def_special EndLotteryCornerComputerEffect def_special EndLotteryCornerComputerEffect
def_special sub_81B951C def_special ChooseMonForMoveRelearner
def_special sub_81B968C def_special MoveDeleterChooseMoveToForget
def_special sub_81B9770 def_special MoveDeleterForgetMove
def_special sub_81B9718 def_special BufferMoveDeleterNicknameAndMove
def_special sub_81B96D0 def_special GetNumMovesSelectedMonHas
def_special TeachMoveRelearnerMove def_special TeachMoveRelearnerMove
def_special GetRecordedCyclingRoadResults def_special GetRecordedCyclingRoadResults
def_special Special_BeginCyclingRoadChallenge def_special Special_BeginCyclingRoadChallenge
@@ -338,7 +338,7 @@ gSpecials:: @ 81DBA64
def_special SetRoute123Weather def_special SetRoute123Weather
def_special ScriptGetMultiplayerId def_special ScriptGetMultiplayerId
def_special ScriptGetPartyMonSpecies def_special ScriptGetPartyMonSpecies
def_special sub_81B98DC def_special IsSelectedMonEgg
def_special TryInitBattleTowerAwardManEventObject def_special TryInitBattleTowerAwardManEventObject
def_special MoveOutOfSecretBaseFromOutside def_special MoveOutOfSecretBaseFromOutside
def_special LoadPlayerBag def_special LoadPlayerBag
@@ -457,10 +457,10 @@ gSpecials:: @ 81DBA64
def_special ShowScrollableMultichoice def_special ShowScrollableMultichoice
def_special sub_813A630 def_special sub_813A630
def_special BufferBattleTowerElevatorFloors def_special BufferBattleTowerElevatorFloors
def_special sub_81C6A94 def_special TryStoreHeldItemsInPyramidBag
def_special sub_81C4F24 def_special sub_81C4F24
def_special sub_81B95E0 def_special DoBattlePyramidMonsHaveHeldItem
def_special sub_81B9620 def_special BattlePyramidChooseMonHeldItems
def_special SetBattleTowerLinkPlayerGfx def_special SetBattleTowerLinkPlayerGfx
def_special ShowNatureGirlMessage def_special ShowNatureGirlMessage
def_special ShowBattlePointsWindow def_special ShowBattlePointsWindow
@@ -485,7 +485,7 @@ gSpecials:: @ 81DBA64
def_special BufferBattleFrontierTutorMoveName def_special BufferBattleFrontierTutorMoveName
def_special CloseBattleFrontierTutorWindow def_special CloseBattleFrontierTutorWindow
def_special sub_813ADD4 def_special sub_813ADD4
def_special OpenPartyMenuForMoveTutor def_special ChooseMonForMoveTutor
def_special GetBattleFrontierTutorMoveIndex def_special GetBattleFrontierTutorMoveIndex
def_special sub_813AF48 def_special sub_813AF48
def_special DoDeoxysRockInteraction def_special DoDeoxysRockInteraction
@@ -529,7 +529,7 @@ gSpecials:: @ 81DBA64
def_special ShowTrainerHillRecords def_special ShowTrainerHillRecords
def_special sub_80B4808 def_special sub_80B4808
def_special ResetHealLocationFromDewford def_special ResetHealLocationFromDewford
def_special sub_81B9918 def_special IsLastMonThatKnowsSurf
def_special CountPartyAliveNonEggMons def_special CountPartyAliveNonEggMons
def_special TryPrepareSecondApproachingTrainer def_special TryPrepareSecondApproachingTrainer
def_special RemoveRecordsWindow 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 $(BATTRANSGFXDIR)/vs_frame.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 16 $(GFX) $< $@ -num_tiles 16
$(INTERFACEGFXDIR)/party_menu_misc.4bpp: %.4bpp: %.png $(INTERFACEGFXDIR)/party_menu_bg.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 62 $(GFX) $< $@ -num_tiles 62
$(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types:%=$(TYPESGFXDIR)/contest_%.4bpp) $(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 PlayerHandleGetRawMonData(void);
void sub_80587B0(void); void sub_80587B0(void);
void sub_805CC00(struct Sprite *sprite); void sub_805CC00(struct Sprite *sprite);
void SetCB2ToReshowScreenAfterMenu(void); void CB2_SetUpReshowBattleScreenAfterMenu(void);
void SetCB2ToReshowScreenAfterMenu2(void); void CB2_SetUpReshowBattleScreenAfterMenu2(void);
void c3_0802FDF4(u8 taskId); void c3_0802FDF4(u8 taskId);
void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
void ActionSelectionDestroyCursorAt(u8 cursorPos); void ActionSelectionDestroyCursorAt(u8 cursorPos);
+3 -3
View File
@@ -77,20 +77,20 @@ void sub_803B3AC(void); // unused
void sub_803B598(void); // unused void sub_803B598(void); // unused
void BattleTurnPassed(void); void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void); u8 IsRunningFromBattleImpossible(void);
void sub_803BDA0(u8 battlerId); void SwitchPartyOrder(u8 battlerId);
void SwapTurnOrder(u8 id1, u8 id2); void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves); u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void); void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId); 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 SpriteTemplate gUnknown_0831AC88;
extern const struct OamData gOamData_831ACA8; extern const struct OamData gOamData_831ACA8;
extern const struct OamData gOamData_831ACB0; extern const struct OamData gOamData_831ACB0;
extern const u8 gTypeEffectiveness[336]; 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 struct TrainerMoney gTrainerMoneyTable[];
extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1];
extern const u8 *const gAbilityDescriptionPointers[]; extern const u8 *const gAbilityDescriptionPointers[];
+3 -3
View File
@@ -36,13 +36,13 @@ extern struct PyramidBagCursorData gPyramidBagCursorData;
void InitBattlePyramidBagCursorPosition(void); void InitBattlePyramidBagCursorPosition(void);
void CB2_PyramidBagMenuFromStartMenu(void); void CB2_PyramidBagMenuFromStartMenu(void);
void sub_81C4F84(void); void CB2_ReturnToPyramidBagMenu(void);
void sub_81C5924(void); void sub_81C5924(void);
void sub_81C59BC(void); void sub_81C59BC(void);
void sub_81C4EFC(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_81C6714(u8 taskId);
void sub_81C6A94(void); void TryStoreHeldItemsInPyramidBag(void);
void sub_81C4F24(void); void sub_81C4F24(void);
void sub_81C5B14(u8 taskId); void sub_81C5B14(u8 taskId);
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(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 AllocateBattleResources(void);
void FreeBattleResources(void); void FreeBattleResources(void);
void AdjustFriendshipOnBattleFaint(u8 battler); void AdjustFriendshipOnBattleFaint(u8 battler);
void sub_80571DC(u8 battler, u8 arg1); void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1);
u32 sub_805725C(u8 battler); u32 sub_805725C(u8 battler);
#endif // GUARD_BATTLE_UTIL_H #endif // GUARD_BATTLE_UTIL_H
+10 -9
View File
@@ -4,16 +4,17 @@
#define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode) #define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode)
// Battle Frontier facility ids. // Battle Frontier facility ids.
#define FRONTIER_FACILITY_TOWER 0 #define FRONTIER_FACILITY_TOWER 0
#define FRONTIER_FACILITY_DOME 1 #define FRONTIER_FACILITY_DOME 1
#define FRONTIER_FACILITY_PALACE 2 #define FRONTIER_FACILITY_PALACE 2
#define FRONTIER_FACILITY_ARENA 3 #define FRONTIER_FACILITY_ARENA 3
#define FRONTIER_FACILITY_FACTORY 4 #define FRONTIER_FACILITY_FACTORY 4
#define FRONTIER_FACILITY_PIKE 5 #define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6 #define FRONTIER_FACILITY_PYRAMID 6
#define NUM_FRONTIER_FACILITIES 7 #define NUM_FRONTIER_FACILITIES 7
// The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY. // 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_VERDANTURF 2
#define TENT_FALLARBOR 3 #define TENT_FALLARBOR 3
+6
View File
@@ -16,4 +16,10 @@
#define CONTEST_CATEGORY_TOUGH 4 #define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5 #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 #endif // GUARD_CONSTANTS_CONTEST_H
+2 -2
View File
@@ -968,7 +968,7 @@
#define FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS 0x39D #define FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS 0x39D
#define FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA 0x39E #define FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA 0x39E
#define FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA 0x39F #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_1 0x3A1
#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_2 0x3A2 #define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_2 0x3A2
#define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1 0x3A3 #define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1 0x3A3
@@ -1637,6 +1637,6 @@
#define FLAG_DONT_TRANSITION_MUSIC 0x4001 #define FLAG_DONT_TRANSITION_MUSIC 0x4001
#define FLAG_SPECIAL_FLAG_0x4002 0x4002 #define FLAG_SPECIAL_FLAG_0x4002 0x4002
#define FLAG_SPECIAL_FLAG_0x4003 0x4003 #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 #endif // GUARD_CONSTANTS_FLAGS_H
+2
View File
@@ -54,6 +54,8 @@
#define TRAINER_ID_LENGTH 4 #define TRAINER_ID_LENGTH 4
#define PARTY_SIZE 6 #define PARTY_SIZE 6
#define FRONTIER_PARTY_SIZE 3
#define MULTI_PARTY_SIZE PARTY_SIZE / 2
#define MAX_MON_MOVES 4 #define MAX_MON_MOVES 4
// string lengths // 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_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (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_POKEMON_CENTER_2F (5 | (5 << 8))
#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8)) #define MAP_FALLARBOR_TOWN_COZMOS_HOUSE (6 | (5 << 8))
#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8)) #define MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE (7 | (5 << 8))
// Map Group 6 // Map Group 6
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8)) #define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
+87 -7
View File
@@ -10,13 +10,6 @@
#define AILMENT_PKRS 6 #define AILMENT_PKRS 6
#define AILMENT_FNT 7 #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_MEGA_PUNCH 0
#define TUTOR_MOVE_SWORDS_DANCE 1 #define TUTOR_MOVE_SWORDS_DANCE 1
#define TUTOR_MOVE_MEGA_KICK 2 #define TUTOR_MOVE_MEGA_KICK 2
@@ -49,4 +42,91 @@
#define TUTOR_MOVE_FURY_CUTTER 29 #define TUTOR_MOVE_FURY_CUTTER 29
#define TUTOR_MOVE_COUNT 30 #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 #endif // GUARD_CONSTANTS_PARTY_MENU_H
+3 -1
View File
@@ -184,7 +184,6 @@
#define OT_ID_PRESET 1 #define OT_ID_PRESET 1
#define OT_ID_RANDOM_NO_SHINY 2 #define OT_ID_RANDOM_NO_SHINY 2
#define MON_GIVEN_TO_PARTY 0 #define MON_GIVEN_TO_PARTY 0
#define MON_GIVEN_TO_PC 1 #define MON_GIVEN_TO_PC 1
#define MON_CANT_GIVE 2 #define MON_CANT_GIVE 2
@@ -193,6 +192,9 @@
#define PLAYER_HAS_ONE_MON 1 #define PLAYER_HAS_ONE_MON 1
#define PLAYER_HAS_ONE_USABLE_MON 2 #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_MALE 0x00
#define MON_FEMALE 0xFE #define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF #define MON_GENDERLESS 0xFF
+3 -3
View File
@@ -20,13 +20,13 @@
#define READY_FINISH_TRADE 1 #define READY_FINISH_TRADE 1
#define FINISH_TRADE 2 #define FINISH_TRADE 2
// Return values for CanTradeSelectedMon and CanTradeSelectedPartyMenuMon // Return values for CanTradeSelectedMon and CanSpinTradeMon
#define CAN_TRADE_MON 0 #define CAN_TRADE_MON 0
#define CANT_TRADE_LAST_MON 1 #define CANT_TRADE_LAST_MON 1
#define CANT_TRADE_NATIONAL 2 #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_INVALID_MON 4
#define CANT_TRADE_EGG2 5 #define CANT_TRADE_EGG_YET2 5
// Return values for CheckValidityOfTradeMons // Return values for CheckValidityOfTradeMons
#define PLAYER_MON_INVALID 0 #define PLAYER_MON_INVALID 0
+1 -1
View File
@@ -466,7 +466,7 @@ void CB2_StartContest(void);
void sub_80DA8C8(u8 partyIndex); void sub_80DA8C8(u8 partyIndex);
void sub_80DAB8C(u8 contestType, u8 rank); void sub_80DAB8C(u8 contestType, u8 rank);
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame); 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); void sub_80DB09C(u8 contestCategory);
bool8 IsSpeciesNotUnown(u16 species); bool8 IsSpeciesNotUnown(u16 species);
bool8 Contest_IsMonsTurnDisabled(u8 a); bool8 Contest_IsMonsTurnDisabled(u8 a);
+1 -1
View File
@@ -12,7 +12,7 @@ extern bool8 (*gFieldCallback2)(void);
u32 FieldEffectStart(u8); u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id); bool8 FieldEffectActiveListContains(u8 id);
void FieldEffectActiveListClear(void); void FieldEffectActiveListClear(void);
void sub_80B69DC(void); void ReturnToFieldFromFlyMapSelect(void);
u8 AddNewGameBirchObject(s16, s16, u8); u8 AddNewGameBirchObject(s16, s16, u8);
void FieldEffectStop(struct Sprite *sprite, u8 id); void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); 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 // soft-boiled
bool8 SetUpFieldMove_SoftBoiled(void); bool8 SetUpFieldMove_SoftBoiled(void);
void sub_81615A8(u8 taskId); void Task_TryUseSoftboiledOnPartyMon(u8 taskId);
void sub_8161560(u8 taskId); void ChooseMonForSoftboiled(u8 taskId);
// flash // flash
bool8 SetUpFieldMove_Flash(void); bool8 SetUpFieldMove_Flash(void);
+6 -6
View File
@@ -220,7 +220,7 @@ struct Apprentice
u8 lvlMode:2; // + 1 u8 lvlMode:2; // + 1
u8 field_1; u8 field_1;
u8 number; u8 number;
struct ApprenticeMon party[3]; struct ApprenticeMon party[MULTI_PARTY_SIZE];
u16 easyChatWords[6]; u16 easyChatWords[6];
u8 playerId[TRAINER_ID_LENGTH]; u8 playerId[TRAINER_ID_LENGTH];
u8 playerName[PLAYER_NAME_LENGTH]; u8 playerName[PLAYER_NAME_LENGTH];
@@ -282,7 +282,7 @@ struct BattleTowerEReaderTrainer
/*0x10*/ u16 greeting[6]; /*0x10*/ u16 greeting[6];
/*0x1C*/ u16 farewellPlayerLost[6]; /*0x1C*/ u16 farewellPlayerLost[6];
/*0x28*/ u16 farewellPlayerWon[6]; /*0x28*/ u16 farewellPlayerWon[6];
/*0x34*/ struct BattleTowerPokemon party[3]; /*0x34*/ struct BattleTowerPokemon party[FRONTIER_PARTY_SIZE];
/*0xB8*/ u32 checksum; /*0xB8*/ u32 checksum;
}; };
@@ -329,7 +329,7 @@ struct BattleFrontier
/*0xCA9*/ u8 field_CA9_d:1; // 0x20 /*0xCA9*/ u8 field_CA9_d:1; // 0x20
/*0xCA9*/ u8 field_CA9_e:1; // 0x40 /*0xCA9*/ u8 field_CA9_e:1; // 0x40
/*0xCA9*/ u8 field_CA9_f:1; // 0x80 /*0xCA9*/ u8 field_CA9_f:1; // 0x80
/*0xCAA*/ u16 selectedPartyMons[3]; /*0xCAA*/ u16 selectedPartyMons[FRONTIER_PARTY_SIZE];
/*0xCB0*/ u16 field_CB0; /*0xCB0*/ u16 field_CB0;
/*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor. /*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor.
/*0xCB4*/ u16 trainerIds[20]; /*0xCB4*/ u16 trainerIds[20];
@@ -356,7 +356,7 @@ struct BattleFrontier
/*0xD14*/ u16 domeRecordWinStreaks[2][2]; /*0xD14*/ u16 domeRecordWinStreaks[2][2];
/*0xD1C*/ u16 domeTotalChampionships[2][2]; /*0xD1C*/ u16 domeTotalChampionships[2][2];
/*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT]; /*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; /*0xDC4*/ u16 field_DC4;
/*0xDC6*/ u16 field_DC6; /*0xDC6*/ u16 field_DC6;
/*0xDC8*/ u16 palaceWinStreaks[2][2]; /*0xDC8*/ u16 palaceWinStreaks[2][2];
@@ -375,7 +375,7 @@ struct BattleFrontier
/*0xE10*/ u8 pikeHintedRoomIndex:3; /*0xE10*/ u8 pikeHintedRoomIndex:3;
/*0xE10*/ u8 pikeHintedRoomType:4; /*0xE10*/ u8 pikeHintedRoomType:4;
/*0xE10*/ u8 pikeHealingRoomsDisabled:1; /*0xE10*/ u8 pikeHealingRoomsDisabled:1;
/*0xE12*/ u16 pikeHeldItemsBackup[3]; /*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE];
/*0xE18*/ u16 pyramidRewardItem; /*0xE18*/ u16 pyramidRewardItem;
/*0xE1A*/ u16 pyramidWinStreaks[2]; /*0xE1A*/ u16 pyramidWinStreaks[2];
/*0xE1E*/ u16 pyramidRecordStreaks[2]; /*0xE1E*/ u16 pyramidRecordStreaks[2];
@@ -419,7 +419,7 @@ struct PlayersApprentice
/*0xB2*/ u8 field_B2_0:3; /*0xB2*/ u8 field_B2_0:3;
/*0xB2*/ u8 field_B2_1:2; /*0xB2*/ u8 field_B2_1:2;
/*0xB3*/ u8 field_B3; /*0xB3*/ u8 field_B3;
/*0xB4*/ u8 monIds[3]; /*0xB4*/ u8 monIds[MULTI_PARTY_SIZE];
/*0xB8*/ struct Sav2_B8 field_B8[9]; /*0xB8*/ struct Sav2_B8 field_B8[9];
}; };
+3 -3
View File
@@ -3916,9 +3916,9 @@ extern const u16 gIntro2FlygonPal[];
extern const u32 gIntro2FlygonGfx[]; extern const u32 gIntro2FlygonGfx[];
// party menu graphics // party menu graphics
extern const u32 gPartyMenuMisc_Gfx[]; extern const u32 gPartyMenuBg_Gfx[];
extern const u32 gPartyMenuMisc_Tilemap[]; extern const u32 gPartyMenuBg_Tilemap[];
extern const u32 gPartyMenuMisc_Pal[]; extern const u32 gPartyMenuBg_Pal[];
// berry pics // berry pics
extern const u32 gBerryPic_Cheri[]; extern const u32 gBerryPic_Cheri[];
+2 -3
View File
@@ -1,4 +1,3 @@
#ifndef GUARD_MENU_H #ifndef GUARD_MENU_H
#define GUARD_MENU_H #define GUARD_MENU_H
@@ -87,7 +86,7 @@ void RemoveMapNamePopUpWindow(void);
u8 GetMapNamePopUpWindowId(void); u8 GetMapNamePopUpWindowId(void);
u8 AddMapNamePopUpWindow(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 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_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_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram);
void sub_8197AE8(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); s8 Menu_ProcessInputGridLayout(void);
u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted); u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted);
s8 Menu_ProcessInputNoWrapAround_other(void); 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); u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile);
void sub_8198314(void); void sub_8198314(void);
void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram); void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram);
+5 -2
View File
@@ -4,6 +4,9 @@
#include "task.h" #include "task.h"
#include "window.h" #include "window.h"
#define MENU_L_PRESSED 1
#define MENU_R_PRESSED 2
// Exported type declarations // Exported type declarations
struct YesNoFuncTable struct YesNoFuncTable
@@ -23,8 +26,8 @@ bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data); 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); 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); bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
u8 GetLRKeysState(void); u8 GetLRKeysPressed(void);
u8 sub_812210C(void); u8 GetLRKeysPressedAndHeld(void);
bool8 sub_8122148(u16 itemId); bool8 sub_8122148(u16 itemId);
bool8 itemid_80BF6D8_mail_related(u16 itemId); bool8 itemid_80BF6D8_mail_related(u16 itemId);
bool8 sub_81221AC(void); bool8 sub_81221AC(void);
+60 -63
View File
@@ -4,93 +4,90 @@
#include "main.h" #include "main.h"
#include "task.h" #include "task.h"
#include "constants/party_menu.h" // 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 Struct203CEC8 struct PartyMenu
{ {
MainCallback exitCallback; MainCallback exitCallback;
TaskFunc unk4; TaskFunc task;
u8 unk8_0:4; u8 menuType:4;
u8 mode:2; u8 layout:2;
u8 unk8_2:2;
s8 slotId; s8 slotId;
s8 unkA; s8 slotId2;
u8 unkB; u8 action;
u16 unkC; u16 bagItem;
s16 unkE; s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos
s16 unk10; s16 learnMoveState; // data2, used only as a learn move state
}; };
extern struct Struct203CEC8 gUnknown_0203CEC8; extern struct PartyMenu gPartyMenu;
extern u8 gUnknown_0203CEE8; extern bool8 gPartyMenuUseExitCallback;
extern u8 gUnknown_0203CEE9; extern u8 gSelectedMonPartyId;
extern MainCallback gPostMenuFieldCallback; extern MainCallback gPostMenuFieldCallback;
extern u8 gSelectedOrderFromParty[4]; 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[]; extern const u16 gTutorMoves[];
void sub_81B0FCC(u8 slot, u8 b); void AnimatePartySlot(u8 slot, u8 animNum);
bool8 IsMultiBattle(void); bool8 IsMultiBattle(void);
u8 GetCursorSelectionMonId(void); u8 GetCursorSelectionMonId(void);
u8 sub_81B1360(void); u8 GetPartyMenuType(void);
void sub_81B1370(u8 taskId); void Task_HandleChooseMonInput(u8 taskId);
u8* GetMonNickname(struct Pokemon *mon, u8 *dest); u8* GetMonNickname(struct Pokemon *mon, u8 *dest);
u8 DisplayPartyMenuMessage(const u8* str, u8 b); u8 DisplayPartyMenuMessage(const u8* str, bool8 keepOpen);
bool8 sub_81B1BD4(void); bool8 IsPartyMenuTextPrinterActive(void);
void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func); void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 HPDifference, TaskFunc task);
u8 pokemon_ailments_get_primary(u32 status); u8 GetAilmentFromStatus(u32 status);
u8 GetMonAilment(struct Pokemon *mon); u8 GetMonAilment(struct Pokemon *mon);
void DisplayPartyMenuStdMessage(u32 stringID); void DisplayPartyMenuStdMessage(u32 stringId);
void sub_81B47E0(u8 taskId);
bool8 FieldCallback_PrepareFadeInFromMenu(void); bool8 FieldCallback_PrepareFadeInFromMenu(void);
void sub_81B58A8(void); void CB2_ReturnToPartyMenuFromFlyMap(void);
void LoadHeldItemIcons(void); void LoadHeldItemIcons(void);
void DrawHeldItemIconsForTrade(u8 *a, u8 *b, u8 c); void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty);
void sub_81B617C(void); void CB2_ShowPartyMenuForItemUse(void);
void ItemUseCB_Medicine(u8 taskId, TaskFunc task); void ItemUseCB_Medicine(u8 taskId, TaskFunc task);
void sub_81B67C8(u8 taskId, TaskFunc task); void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task);
void dp05_ether(u8 taskId, TaskFunc task); void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task);
void dp05_pp_up(u8 taskId, TaskFunc task); void ItemUseCB_PPUp(u8 taskId, TaskFunc task);
u16 ItemIdToBattleMoveId(u16 item); u16 ItemIdToBattleMoveId(u16 item);
bool8 IsMoveHm(u16 move); bool8 IsMoveHm(u16 move);
bool8 MonKnowsMove(struct Pokemon *mon, u16 move); bool8 MonKnowsMove(struct Pokemon *mon, u16 move);
void sub_81B6DC4(u8 taskId, TaskFunc task); void ItemUseCB_TMHM(u8 taskId, TaskFunc task);
void dp05_rare_candy(u8 taskId, TaskFunc task); void ItemUseCB_RareCandy(u8 taskId, TaskFunc task);
void sub_81B79E8(u8 taskId, TaskFunc task); void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task);
void sub_81B7C74(u8 taskId, TaskFunc task); void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task);
u8 GetItemEffectType(u16 item); u8 GetItemEffectType(u16 item);
void CB2_PartyMenuFromStartMenu(void); void CB2_PartyMenuFromStartMenu(void);
void sub_81B7F60(void); void CB2_ChooseMonToGiveItem(void);
void sub_81B8448(void); void ChooseMonToGiveMailFromMailbox(void);
void InitChooseHalfPartyForBattle(u8 unused); void InitChooseHalfPartyForBattle(u8 unused);
void sub_81B8558(void); void ClearSelectedPartyOrder(void);
void sub_81B8904(u8 initArg, MainCallback callback); void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);
void OpenPartyMenuForMoveTutor(void); void ChooseMonForMoveTutor(void);
void ChooseMonForWirelessMinigame(void); void ChooseMonForWirelessMinigame(void);
void ChooseMonForWirelessMinigame(void); void OpenPartyMenuInBattle(u8 partyAction);
void OpenPartyMenuInBattle(u8 arg); void ChooseMonForInBattleItem(void);
void sub_81B89F0(void); void BufferBattlePartyCurrentOrder(void);
void sub_81B8C68(void); void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
void sub_81B8D64(u8 battlerId, u8 multiplayerFlag); void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 arrayIndex);
void sub_81B8E80(u8 battlerId, u8 unk, u8 arrayIndex); void SwitchPartyMonSlots(u8 slot, u8 slot2);
void sub_81B8FB0(u8 slot, u8 slot2); u8 GetPartyIdFromBattlePartyId(u8 slot);
u8 pokemon_order_func(u8 slot); void ShowPartyMenuToShowcaseMultiBattleParty(void);
void sub_81B9150(void); void ChooseMonForDaycare(void);
void sub_81B9328(void); bool8 CB2_FadeFromPartyMenu(void);
bool8 hm_add_c3_without_phase_2(void); void ChooseContestMon(void);
void sub_81B9404(void); void ChoosePartyMon(void);
void sub_81B94B0(void); void ChooseMonForMoveRelearner(void);
void sub_81B951C(void); void BattlePyramidChooseMonHeldItems(void);
void sub_81B9620(void); void DoBattlePyramidMonsHaveHeldItem(void);
void sub_81B95E0(void); void IsSelectedMonEgg(void);
void sub_81B98DC(void); void IsLastMonThatKnowsSurf(void);
void sub_81B9918(void); void MoveDeleterForgetMove(void);
void sub_81B9770(void); void BufferMoveDeleterNicknameAndMove(void);
void sub_81B9718(void); void GetNumMovesSelectedMonHas(void);
void sub_81B96D0(void); void MoveDeleterChooseMoveToForget(void);
void sub_81B968C(void);
#endif // GUARD_PARTY_MENU_H #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 GetLevelFromMonExp(struct Pokemon *mon);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move); u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *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 sub_806D544(u16 species, u32 personality, u8 *dest);
void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
bool8 sub_806D7EC(void); u8 GetPlayerFlankId(void);
bool16 GetLinkTrainerFlankId(u8 id); u16 GetLinkTrainerFlankId(u8 id);
s32 GetBattlerMultiplayerId(u16 a1); s32 GetBattlerMultiplayerId(u16 a1);
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId); u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex); 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); u8 UpdateMonIconFrame(struct Sprite *sprite);
void LoadMonIconPalette(u16 species); void LoadMonIconPalette(u16 species);
void sub_80D328C(struct Sprite *sprite); void sub_80D328C(struct Sprite *sprite);
void UpdateTradeMonIconFrame(struct Sprite *sprite); void SpriteCB_MonIcon(struct Sprite *sprite);
void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum); void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum);
u8 GetMonIconPaletteIndexFromSpecies(u16 species); u8 GetMonIconPaletteIndexFromSpecies(u16 species);
+1 -2
View File
@@ -9,10 +9,9 @@ extern const u8 *const gMoveDescriptionPointers[];
extern const u8 *const gNatureNamePointers[]; extern const u8 *const gNatureNamePointers[];
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); 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 ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); 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_SetUnknownTaskId(u8 a0);
void SummaryScreen_DestroyUnknownTask(void); void SummaryScreen_DestroyUnknownTask(void);
+1 -1
View File
@@ -102,7 +102,7 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y);
void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16); u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId); 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); u8 *sub_8124610(u8 *dest, u16 mapSecId);
u16 CorrectSpecialMapSecId(u16 mapSecId); u16 CorrectSpecialMapSecId(u16 mapSecId);
void sub_8122D88(struct RegionMap *regionMap); 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_CancelParticipation[];
extern const u8 gText_PkmnWasGivenItem[]; extern const u8 gText_PkmnWasGivenItem[];
extern const u8 gText_ReceivedItemFromPkmn[]; extern const u8 gText_ReceivedItemFromPkmn[];
extern const u8 gText_SwitchPkmnItem[]; extern const u8 gText_PkmnAlreadyHoldingItemSwitch[];
extern const u8 gText_SwitchedPkmnItem[]; extern const u8 gText_SwitchedPkmnItem[];
extern const u8 gText_BagFullCouldNotRemoveItem[]; extern const u8 gText_BagFullCouldNotRemoveItem[];
extern const u8 gText_PkmnCantParticipate[]; extern const u8 gText_PkmnCantParticipate[];
@@ -427,7 +427,7 @@ extern const u8 gText_NoMoreThanVar1Pkmn[];
extern const u8 gText_PkmnCantBeTradedNow[]; extern const u8 gText_PkmnCantBeTradedNow[];
extern const u8 gText_EggCantBeTradedNow[]; extern const u8 gText_EggCantBeTradedNow[];
extern const u8 gText_OnlyPkmnForBattle[]; extern const u8 gText_OnlyPkmnForBattle[];
extern const u8 gJPText_PutVar1IntoSpinner[]; extern const u8 gJPText_AreYouSureYouWantToSpinTradeMon[];
extern const u8 gText_PauseUntilPress[]; extern const u8 gText_PauseUntilPress[];
extern const u8 gText_CantUseUntilNewBadge[]; extern const u8 gText_CantUseUntilNewBadge[];
extern const u8 gText_ReturnToHealingSpot[]; extern const u8 gText_ReturnToHealingSpot[];
+1 -1
View File
@@ -18,7 +18,7 @@ void CB2_StartCreateTradeMenu(void);
void CB2_LinkTrade(void); void CB2_LinkTrade(void);
int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8); 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 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 InitTradeSequenceBgGpuRegs(void);
void LinkTradeDrawWindow(void); void LinkTradeDrawWindow(void);
void InitTradeBg(void); void InitTradeBg(void);
+12 -11
View File
@@ -31,6 +31,7 @@
#include "constants/battle_anim.h" #include "constants/battle_anim.h"
#include "constants/items.h" #include "constants/items.h"
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/trainers.h" #include "constants/trainers.h"
#include "constants/rgb.h" #include "constants/rgb.h"
@@ -1341,10 +1342,10 @@ static void WaitForMonSelection(void)
{ {
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{ {
if (gUnknown_0203CEE8 == 1) if (gPartyMenuUseExitCallback == TRUE)
BtlController_EmitChosenMonReturnValue(1, gUnknown_0203CEE9, gUnknown_0203CF00); BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder);
else else
BtlController_EmitChosenMonReturnValue(1, 6, NULL); BtlController_EmitChosenMonReturnValue(1, PARTY_SIZE, NULL);
if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1) if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
PrintLinkStandbyMsg(); PrintLinkStandbyMsg();
@@ -1531,12 +1532,12 @@ void ActionSelectionDestroyCursorAt(u8 cursorPosition)
CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(0);
} }
void SetCB2ToReshowScreenAfterMenu(void) void CB2_SetUpReshowBattleScreenAfterMenu(void)
{ {
SetMainCallback2(ReshowBattleScreenAfterMenu); SetMainCallback2(ReshowBattleScreenAfterMenu);
} }
void SetCB2ToReshowScreenAfterMenu2(void) void CB2_SetUpReshowBattleScreenAfterMenu2(void)
{ {
SetMainCallback2(ReshowBattleScreenAfterMenu); SetMainCallback2(ReshowBattleScreenAfterMenu);
} }
@@ -2632,20 +2633,20 @@ static void PlayerHandleChooseItem(void)
gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem;
gBattlerInMenuId = gActiveBattler; gBattlerInMenuId = gActiveBattler;
for (i = 0; i < 3; i++) for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][1 + i]; gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][1 + i];
} }
static void PlayerHandleChoosePokemon(void) static void PlayerHandleChoosePokemon(void)
{ {
s32 i; s32 i;
for (i = 0; i < 3; i++) for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][4 + 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(); PlayerBufferExecCompleted();
} }
else else
+23 -23
View File
@@ -95,7 +95,7 @@ void sub_8032768(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{ {
for (i = 0; i < gBattlersCount; i++) for (i = 0; i < gBattlersCount; i++)
sub_81B8D64(i, 0); BufferBattlePartyCurrentOrderBySide(i, 0);
} }
for (i = 0; i < sizeof(gBattleStruct->tvMovePoints); i++) for (i = 0; i < sizeof(gBattleStruct->tvMovePoints); i++)
@@ -144,10 +144,10 @@ static void InitSinglePlayerBtlControllers(void)
gBattlersCount = MAX_BATTLERS_COUNT; gBattlersCount = MAX_BATTLERS_COUNT;
sub_81B8D64(0, 0); BufferBattlePartyCurrentOrderBySide(0, 0);
sub_81B8D64(1, 0); BufferBattlePartyCurrentOrderBySide(1, 0);
sub_81B8D64(2, 1); BufferBattlePartyCurrentOrderBySide(2, 1);
sub_81B8D64(3, 1); BufferBattlePartyCurrentOrderBySide(3, 1);
gBattlerPartyIndexes[0] = 0; gBattlerPartyIndexes[0] = 0;
gBattlerPartyIndexes[1] = 0; gBattlerPartyIndexes[1] = 0;
@@ -247,10 +247,10 @@ static void InitSinglePlayerBtlControllers(void)
gBattlersCount = MAX_BATTLERS_COUNT; gBattlersCount = MAX_BATTLERS_COUNT;
sub_81B8D64(0, 0); BufferBattlePartyCurrentOrderBySide(0, 0);
sub_81B8D64(1, 0); BufferBattlePartyCurrentOrderBySide(1, 0);
sub_81B8D64(2, 1); BufferBattlePartyCurrentOrderBySide(2, 1);
sub_81B8D64(3, 1); BufferBattlePartyCurrentOrderBySide(3, 1);
gBattlerPartyIndexes[0] = 0; gBattlerPartyIndexes[0] = 0;
gBattlerPartyIndexes[1] = 0; gBattlerPartyIndexes[1] = 0;
@@ -267,11 +267,11 @@ static void InitSinglePlayerBtlControllers(void)
{ {
case 0: case 0:
case 3: case 3:
sub_81B8D64(gLinkPlayers[i].id, 0); BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 0);
break; break;
case 1: case 1:
case 2: case 2:
sub_81B8D64(gLinkPlayers[i].id, 1); BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1);
break; break;
} }
@@ -487,10 +487,10 @@ static void InitLinkBtlControllers(void)
gBattlersCount = MAX_BATTLERS_COUNT; gBattlersCount = MAX_BATTLERS_COUNT;
} }
sub_81B8D64(0, 0); BufferBattlePartyCurrentOrderBySide(0, 0);
sub_81B8D64(1, 0); BufferBattlePartyCurrentOrderBySide(1, 0);
sub_81B8D64(2, 1); BufferBattlePartyCurrentOrderBySide(2, 1);
sub_81B8D64(3, 1); BufferBattlePartyCurrentOrderBySide(3, 1);
gBattlerPartyIndexes[0] = 0; gBattlerPartyIndexes[0] = 0;
gBattlerPartyIndexes[1] = 0; gBattlerPartyIndexes[1] = 0;
gBattlerPartyIndexes[2] = 3; gBattlerPartyIndexes[2] = 3;
@@ -509,11 +509,11 @@ static void InitLinkBtlControllers(void)
{ {
case 0: case 0:
case 3: case 3:
sub_81B8D64(gLinkPlayers[i].id, 0); BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 0);
break; break;
case 1: case 1:
case 2: case 2:
sub_81B8D64(gLinkPlayers[i].id, 1); BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1);
break; break;
} }
@@ -1175,13 +1175,13 @@ void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); 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; s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON; sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON;
sBattleBuffersTransferData[1] = caseId; sBattleBuffersTransferData[1] = caseId;
sBattleBuffersTransferData[2] = arg2; sBattleBuffersTransferData[2] = slotId;
sBattleBuffersTransferData[3] = abilityId; sBattleBuffersTransferData[3] = abilityId;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
sBattleBuffersTransferData[4 + i] = arg4[i]; sBattleBuffersTransferData[4 + i] = arg4[i];
@@ -1311,14 +1311,14 @@ void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c) void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battlePartyOrder)
{ {
s32 i; s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE; sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE;
sBattleBuffersTransferData[1] = b; sBattleBuffersTransferData[1] = partyId;
for (i = 0; i < 3; i++) for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
sBattleBuffersTransferData[2 + i] = c[i]; sBattleBuffersTransferData[2 + i] = battlePartyOrder[i];
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5);
} }
+1 -1
View File
@@ -2330,7 +2330,7 @@ static void GetDomeData(void)
} }
break; break;
case 8: case 8:
sub_81B8558(); ClearSelectedPartyOrder();
gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0; gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0;
gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8; gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
break; break;
+3 -3
View File
@@ -811,7 +811,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
break; break;
case 6: case 6:
LoadAndCreateEnemyShadowSprites(); LoadAndCreateEnemyShadowSprites();
sub_81B8C68(); BufferBattlePartyCurrentOrder();
retVal = TRUE; retVal = TRUE;
break; break;
} }
@@ -1061,8 +1061,8 @@ void HandleBattleLowHpMusicChange(void)
{ {
u8 playerBattler1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); u8 playerBattler1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
u8 playerBattler2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); u8 playerBattler2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
u8 battler1PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler1]); u8 battler1PartyId = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[playerBattler1]);
u8 battler2PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler2]); u8 battler2PartyId = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[playerBattler2]);
if (GetMonData(&gPlayerParty[battler1PartyId], MON_DATA_HP) != 0) if (GetMonData(&gPlayerParty[battler1PartyId], MON_DATA_HP) != 0)
HandleLowHpMusicChange(&gPlayerParty[battler1PartyId], playerBattler1); HandleLowHpMusicChange(&gPlayerParty[battler1PartyId], playerBattler1);
+55 -54
View File
@@ -54,6 +54,7 @@
#include "constants/hold_effects.h" #include "constants/hold_effects.h"
#include "constants/items.h" #include "constants/items.h"
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/rgb.h" #include "constants/rgb.h"
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/species.h" #include "constants/species.h"
@@ -166,8 +167,8 @@ EWRAM_DATA static u32 sUnusedUnknownArray[25] = {0};
EWRAM_DATA u32 gBattleTypeFlags = 0; EWRAM_DATA u32 gBattleTypeFlags = 0;
EWRAM_DATA u8 gBattleTerrain = 0; EWRAM_DATA u8 gBattleTerrain = 0;
EWRAM_DATA u32 gUnknown_02022FF4 = 0; EWRAM_DATA u32 gUnknown_02022FF4 = 0;
EWRAM_DATA struct UnknownPokemonStruct4 gUnknown_02022FF8[3] = {0}; // what is it used for? EWRAM_DATA struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE] = {0};
EWRAM_DATA struct UnknownPokemonStruct4* gUnknown_02023058 = NULL; // what is it used for? EWRAM_DATA static struct UnknownPokemonStruct4* sMultiPartnerPartyBuffer = NULL;
EWRAM_DATA u8 *gUnknown_0202305C = NULL; EWRAM_DATA u8 *gUnknown_0202305C = NULL;
EWRAM_DATA u8 *gUnknown_02023060 = NULL; EWRAM_DATA u8 *gUnknown_02023060 = NULL;
EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0}; 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 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"), _("NORMAL"),
_("FIGHT"), _("FIGHT"),
@@ -1248,12 +1249,12 @@ static void CB2_HandleStartMultiPartnerBattle(void)
if (gLinkPlayers[playerMultiplayerId].id != 0) if (gLinkPlayers[playerMultiplayerId].id != 0)
{ {
memcpy(gPlayerParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); 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 else
{ {
memcpy(gPlayerParty, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2); 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]++; gBattleCommunication[MULTIUSE_STATE]++;
} }
@@ -1396,22 +1397,22 @@ static void sub_80379F8(u8 arrayIdPlus)
{ {
s32 i; 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); gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_SPECIES);
gUnknown_02022FF8[i].heldItem = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HELD_ITEM); gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HELD_ITEM);
GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_NICKNAME, gUnknown_02022FF8[i].nickname); GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_NICKNAME, gMultiPartnerParty[i].nickname);
gUnknown_02022FF8[i].level = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LEVEL); gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LEVEL);
gUnknown_02022FF8[i].hp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HP); gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HP);
gUnknown_02022FF8[i].maxhp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_MAX_HP); gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_MAX_HP);
gUnknown_02022FF8[i].status = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_STATUS); gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_STATUS);
gUnknown_02022FF8[i].personality = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_PERSONALITY); gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_PERSONALITY);
gUnknown_02022FF8[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]); gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]);
StripExtCtrlCodes(gUnknown_02022FF8[i].nickname); StripExtCtrlCodes(gMultiPartnerParty[i].nickname);
if (GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) 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) static void CB2_PreInitMultiBattle(void)
@@ -1443,9 +1444,9 @@ static void CB2_PreInitMultiBattle(void)
case 0: case 0:
if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
{ {
gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct4) * 3); sMultiPartnerPartyBuffer = Alloc(sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
sub_80379F8(0); 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]++; gBattleCommunication[MULTIUSE_STATE]++;
} }
break; break;
@@ -1458,24 +1459,24 @@ static void CB2_PreInitMultiBattle(void)
if (i == playerMultiplierId) if (i == playerMultiplierId)
continue; continue;
if (numPlayers == 4) if (numPlayers == MAX_LINK_PLAYERS)
{ {
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerMultiplierId].id & 1)) if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerMultiplierId].id & 1))
|| (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 else
{ {
memcpy(gUnknown_02022FF8, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * 3); memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
} }
} }
gBattleCommunication[MULTIUSE_STATE]++; gBattleCommunication[MULTIUSE_STATE]++;
*savedCallback = gMain.savedCallback; *savedCallback = gMain.savedCallback;
*savedBattleTypeFlags = gBattleTypeFlags; *savedBattleTypeFlags = gBattleTypeFlags;
gMain.savedCallback = CB2_PreInitMultiBattle; gMain.savedCallback = CB2_PreInitMultiBattle;
sub_81B9150(); ShowPartyMenuToShowcaseMultiBattleParty();
} }
break; break;
case 2: case 2:
@@ -1496,8 +1497,8 @@ static void CB2_PreInitMultiBattle(void)
gBattleTypeFlags = *savedBattleTypeFlags; gBattleTypeFlags = *savedBattleTypeFlags;
gMain.savedCallback = *savedCallback; gMain.savedCallback = *savedCallback;
SetMainCallback2(CB2_InitBattleInternal); SetMainCallback2(CB2_InitBattleInternal);
Free(gUnknown_02023058); Free(sMultiPartnerPartyBuffer);
gUnknown_02023058 = NULL; sMultiPartnerPartyBuffer = NULL;
} }
} }
else if (gReceivedRemoteLinkPlayers == 0) else if (gReceivedRemoteLinkPlayers == 0)
@@ -1505,8 +1506,8 @@ static void CB2_PreInitMultiBattle(void)
gBattleTypeFlags = *savedBattleTypeFlags; gBattleTypeFlags = *savedBattleTypeFlags;
gMain.savedCallback = *savedCallback; gMain.savedCallback = *savedCallback;
SetMainCallback2(CB2_InitBattleInternal); SetMainCallback2(CB2_InitBattleInternal);
Free(gUnknown_02023058); Free(sMultiPartnerPartyBuffer);
gUnknown_02023058 = NULL; sMultiPartnerPartyBuffer = NULL;
} }
break; break;
} }
@@ -1527,13 +1528,13 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void)
switch (gBattleCommunication[MULTIUSE_STATE]) switch (gBattleCommunication[MULTIUSE_STATE])
{ {
case 0: case 0:
gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct4) * 3); sMultiPartnerPartyBuffer = Alloc(sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
sub_80379F8(3); sub_80379F8(3);
gBattleCommunication[MULTIUSE_STATE]++; gBattleCommunication[MULTIUSE_STATE]++;
*savedCallback = gMain.savedCallback; *savedCallback = gMain.savedCallback;
*savedBattleTypeFlags = gBattleTypeFlags; *savedBattleTypeFlags = gBattleTypeFlags;
gMain.savedCallback = CB2_PreInitIngamePlayerPartnerBattle; gMain.savedCallback = CB2_PreInitIngamePlayerPartnerBattle;
sub_81B9150(); ShowPartyMenuToShowcaseMultiBattleParty();
break; break;
case 1: case 1:
if (!gPaletteFade.active) if (!gPaletteFade.active)
@@ -1542,8 +1543,8 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void)
gBattleTypeFlags = *savedBattleTypeFlags; gBattleTypeFlags = *savedBattleTypeFlags;
gMain.savedCallback = *savedCallback; gMain.savedCallback = *savedCallback;
SetMainCallback2(CB2_InitBattleInternal); SetMainCallback2(CB2_InitBattleInternal);
Free(gUnknown_02023058); Free(sMultiPartnerPartyBuffer);
gUnknown_02023058 = NULL; sMultiPartnerPartyBuffer = NULL;
} }
break; break;
} }
@@ -1666,7 +1667,7 @@ static void CB2_HandleStartMultiBattle(void)
break; break;
case 1: case 1:
case 2: case 2:
memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
break; break;
} }
} }
@@ -1683,7 +1684,7 @@ static void CB2_HandleStartMultiBattle(void)
break; break;
case 1: case 1:
case 2: case 2:
memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
break; break;
} }
} }
@@ -1697,7 +1698,7 @@ static void CB2_HandleStartMultiBattle(void)
break; break;
case 1: case 1:
case 2: case 2:
memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); memcpy(gEnemyParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
break; break;
} }
} }
@@ -4121,34 +4122,34 @@ u8 IsRunningFromBattleImpossible(void)
return 0; return 0;
} }
void sub_803BDA0(u8 battler) void SwitchPartyOrder(u8 battler)
{ {
s32 i; s32 i;
u8 r4; u8 partyId1;
u8 r1; u8 partyId2;
// gBattleStruct->field_60[battler][i] // gBattleStruct->field_60[battler][i]
for (i = 0; i < 3; i++) for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gUnknown_0203CF00[i] = *(battler * 3 + i + (u8*)(gBattleStruct->field_60)); gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8*)(gBattleStruct->field_60));
r4 = pokemon_order_func(gBattlerPartyIndexes[battler]); partyId1 = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battler]);
r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + battler)); partyId2 = GetPartyIdFromBattlePartyId(*(gBattleStruct->monToSwitchIntoId + battler));
sub_81B8FB0(r4, r1); SwitchPartyMonSlots(partyId1, partyId2);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) 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]; *(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
*(BATTLE_PARTNER(battler) * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i]; *(BATTLE_PARTNER(battler) * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
} }
} }
else 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 || gBattleTypeFlags & BATTLE_TYPE_ARENA
|| gStatuses3[gActiveBattler] & STATUS3_ROOTED) || 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)) else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG))
|| ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP)) || ((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)) || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
&& IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL))) && 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 else
{ {
if (gActiveBattler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH) 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) 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 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); MarkBattlerForControllerExec(gActiveBattler);
break; break;
@@ -4589,7 +4590,7 @@ static void HandleTurnActionSelectionState(void)
for (i = 0; i < gBattlersCount; i++) for (i = 0; i < gBattlersCount; i++)
{ {
if (gChosenActionByBattler[i] == B_ACTION_SWITCH) 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/trainers.h"
#include "constants/species.h" #include "constants/species.h"
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/battle_pike.h" #include "constants/battle_pike.h"
struct PikeRoomNPC struct PikeRoomNPC
@@ -922,7 +923,7 @@ static bool8 TryInflictRandomStatus(void)
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
{ {
mon = &gPlayerParty[indices[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) && GetMonData(mon, MON_DATA_HP) != 0)
{ {
j++; j++;
@@ -964,7 +965,7 @@ static bool8 TryInflictRandomStatus(void)
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
{ {
mon = &gPlayerParty[indices[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) && GetMonData(mon, MON_DATA_HP) != 0)
{ {
j++; j++;
@@ -996,7 +997,7 @@ static bool8 AtLeastOneHealthyMon(void)
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
{ {
struct Pokemon *mon = &gPlayerParty[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) && GetMonData(mon, MON_DATA_HP) != 0)
{ {
healthyMonsCount++; healthyMonsCount++;
@@ -1285,7 +1286,7 @@ static void TryHealMons(u8 healCount)
{ {
canBeHealed = TRUE; 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; canBeHealed = TRUE;
} }
@@ -1556,7 +1557,7 @@ static void CanAnyPartyMonsBeHealed(void)
struct Pokemon *mon = &gPlayerParty[i]; struct Pokemon *mon = &gPlayerParty[i];
u16 curr = GetMonData(mon, MON_DATA_HP); u16 curr = GetMonData(mon, MON_DATA_HP);
u16 max = GetMonData(mon, MON_DATA_MAX_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); u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
for (j = 0; j < MAX_MON_MOVES; j++) for (j = 0; j < MAX_MON_MOVES; j++)
+14 -13
View File
@@ -346,12 +346,12 @@ void InitBattlePyramidBagCursorPosition(void)
void CB2_PyramidBagMenuFromStartMenu(void) void CB2_PyramidBagMenuFromStartMenu(void)
{ {
sub_81C4F98(0, CB2_ReturnToFieldWithOpenMenu); GoToBattlePyramidBagMenu(0, CB2_ReturnToFieldWithOpenMenu);
} }
static void sub_81C4F10(void) static void sub_81C4F10(void)
{ {
sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2); GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2);
} }
void sub_81C4F24(void) void sub_81C4F24(void)
@@ -366,18 +366,18 @@ static void sub_81C4F44(u8 taskId)
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
CleanupOverworldWindowsAndTilemaps(); CleanupOverworldWindowsAndTilemaps();
gFieldCallback2 = hm_add_c3_without_phase_2; gFieldCallback2 = CB2_FadeFromPartyMenu;
sub_81C4F98(3, CB2_ReturnToField); GoToBattlePyramidBagMenu(3, CB2_ReturnToField);
DestroyTask(taskId); 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)); gPyramidBagResources = AllocZeroed(sizeof(*gPyramidBagResources));
@@ -981,7 +981,7 @@ static void HandleMenuActionInput(u8 taskId)
sub_8199134(0, 1); 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)) if (id & 1 && IsValidMenuAction(id - 1))
{ {
@@ -989,7 +989,7 @@ static void HandleMenuActionInput(u8 taskId)
sub_8199134(-1, 0); 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)) if (!(id & 1) && IsValidMenuAction(id + 1))
{ {
@@ -1202,7 +1202,7 @@ static void BagAction_Give(u8 taskId)
} }
else if (!ItemId_GetImportance(gSpecialVar_ItemId)) else if (!ItemId_GetImportance(gSpecialVar_ItemId))
{ {
gPyramidBagResources->callback2 = sub_81B7F60; gPyramidBagResources->callback2 = CB2_ChooseMonToGiveItem;
sub_81C5B14(taskId); sub_81C5B14(taskId);
} }
else else
@@ -1350,7 +1350,7 @@ static void sub_81C6A14(u8 taskId)
SetTaskToMainPyramidBagInputHandler(taskId); SetTaskToMainPyramidBagInputHandler(taskId);
} }
void sub_81C6A94(void) void TryStoreHeldItemsInPyramidBag(void)
{ {
u8 i; u8 i;
struct Pokemon *party = gPlayerParty; struct Pokemon *party = gPlayerParty;
@@ -1363,8 +1363,9 @@ void sub_81C6A94(void)
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
{ {
heldItem = GetMonData(&party[i], MON_DATA_HELD_ITEM); 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.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)); memcpy(gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8));
Free(newItems); Free(newItems);
@@ -1374,7 +1375,7 @@ void sub_81C6A94(void)
} }
} }
heldItem = 0; heldItem = ITEM_NONE;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
{ {
SetMonData(&party[i], MON_DATA_HELD_ITEM, &heldItem); SetMonData(&party[i], MON_DATA_HELD_ITEM, &heldItem);
+24 -23
View File
@@ -52,6 +52,7 @@
#include "menu_specialized.h" #include "menu_specialized.h"
#include "constants/rgb.h" #include "constants/rgb.h"
#include "data.h" #include "data.h"
#include "constants/party_menu.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM; 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->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6; *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]); 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); MarkBattlerForControllerExec(gActiveBattler);
} }
@@ -5145,7 +5146,7 @@ static void atk50_openpartyscreen(void)
} }
else if (!gSpecialStatuses[gActiveBattler].flag40) else if (!gSpecialStatuses[gActiveBattler].flag40)
{ {
sub_804CF10(6); sub_804CF10(PARTY_SIZE);
gSpecialStatuses[gActiveBattler].flag40 = 1; gSpecialStatuses[gActiveBattler].flag40 = 1;
} }
} }
@@ -5352,9 +5353,9 @@ static void atk50_openpartyscreen(void)
else else
{ {
if (gBattlescriptCurrInstr[1] & 0x80) 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 else
hitmarkerFaintBits = PARTY_MUST_CHOOSE_MON; hitmarkerFaintBits = PARTY_ACTION_SEND_OUT;
battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80)); battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
if (gSpecialStatuses[battlerId].flag40) if (gSpecialStatuses[battlerId].flag40)
@@ -5375,7 +5376,7 @@ static void atk50_openpartyscreen(void)
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6; *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]); 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); MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 6; gBattlescriptCurrInstr += 6;
@@ -5433,7 +5434,7 @@ static void atk51_switchhandleorder(void)
break; break;
case 1: case 1:
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
sub_803BDA0(gActiveBattler); SwitchPartyOrder(gActiveBattler);
break; break;
case 2: case 2:
if (!(gBattleStruct->field_93 & gBitTable[gActiveBattler])) if (!(gBattleStruct->field_93 & gBitTable[gActiveBattler]))
@@ -5458,11 +5459,11 @@ static void atk51_switchhandleorder(void)
} }
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{ {
sub_80571DC(gActiveBattler, *(gBattleStruct->monToSwitchIntoId + gActiveBattler)); SwitchPartyOrderInGameMulti(gActiveBattler, *(gBattleStruct->monToSwitchIntoId + gActiveBattler));
} }
else else
{ {
sub_803BDA0(gActiveBattler); SwitchPartyOrder(gActiveBattler);
} }
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species) 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 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5); const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5);
u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]); u16 learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (ret == 0xFFFE) while (learnMove == MON_ALREADY_KNOWS_MOVE)
ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0); learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], FALSE);
if (ret == 0) if (learnMove == 0)
{ {
gBattlescriptCurrInstr = jumpPtr2; gBattlescriptCurrInstr = jumpPtr2;
} }
else if (ret == 0xFFFF) else if (learnMove == MON_HAS_MAX_MOVES)
{ {
gBattlescriptCurrInstr += 10; gBattlescriptCurrInstr += 10;
} }
@@ -5634,7 +5635,7 @@ static void atk59_handlelearnnewmove(void)
if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{ {
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); GiveMoveToBattleMon(&gBattleMons[gActiveBattler], learnMove);
} }
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{ {
@@ -5642,7 +5643,7 @@ static void atk59_handlelearnnewmove(void)
if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{ {
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); GiveMoveToBattleMon(&gBattleMons[gActiveBattler], learnMove);
} }
} }
@@ -5715,8 +5716,8 @@ static void atk5A_yesnoboxlearnmove(void)
case 4: case 4:
if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2) if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2)
{ {
u8 movePosition = sub_81C1B94(); u8 movePosition = GetMoveSlotToReplace();
if (movePosition == 4) if (movePosition == MAX_MON_MOVES)
{ {
gBattleScripting.learnMoveState = 5; gBattleScripting.learnMoveState = 5;
} }
@@ -7566,19 +7567,19 @@ static void atk8F_forcerandomswitch(void)
*(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i; *(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i;
if (!IsMultiBattle()) if (!IsMultiBattle())
sub_803BDA0(gBattlerTarget); SwitchPartyOrder(gBattlerTarget);
if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|| (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI) || (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
|| (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|| (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_MULTI)) || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_MULTI))
{ {
sub_81B8E80(gBattlerTarget, i, 0); SwitchPartyOrderLinkMulti(gBattlerTarget, i, 0);
sub_81B8E80(gBattlerTarget ^ BIT_FLANK, i, 1); SwitchPartyOrderLinkMulti(gBattlerTarget ^ BIT_FLANK, i, 1);
} }
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
sub_80571DC(gBattlerTarget, i); SwitchPartyOrderInGameMulti(gBattlerTarget, i);
} }
} }
else else
+1 -1
View File
@@ -3191,7 +3191,7 @@ static void FillPartnerParty(u16 trainerId)
sStevenMons[i].fixedIV, 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. 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); 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]); SetMonData(&gPlayerParty[3 + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]);
for (j = 0; j < MAX_MON_MOVES; j++) for (j = 0; j < MAX_MON_MOVES; j++)
SetMonMoveSlot(&gPlayerParty[3 + i], sStevenMons[i].moves[j], 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) if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
{ {
@@ -110,13 +110,13 @@ void sub_80571DC(u8 battlerId, u8 arg1)
// gBattleStruct->field_60[0][i] // gBattleStruct->field_60[0][i]
for (i = 0; i < 3; i++) for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
gUnknown_0203CF00[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60)); 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++) for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
*(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[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 GetContestEntryEligibility(struct Pokemon *pkmn)
u8 sub_80DAE0C(struct Pokemon *pkmn)
{ {
u8 ribbon; u8 ribbon;
u8 retVal; u8 eligibility;
if (GetMonData(pkmn, MON_DATA_IS_EGG)) if (GetMonData(pkmn, MON_DATA_IS_EGG))
return 3; return CANT_ENTER_CONTEST_EGG;
if (GetMonData(pkmn, MON_DATA_HP) == 0) if (GetMonData(pkmn, MON_DATA_HP) == 0)
return 4; return CANT_ENTER_CONTEST_FAINTED;
switch (gSpecialVar_ContestCategory) switch (gSpecialVar_ContestCategory)
{ {
case CONTEST_CATEGORY_COOL: case CONTEST_CATEGORY_COOL:
@@ -2827,19 +2826,19 @@ u8 sub_80DAE0C(struct Pokemon *pkmn)
ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON); ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON);
break; break;
default: default:
return 0; return CANT_ENTER_CONTEST;
} }
// Couldn't get this to match any other way. // Couldn't get this to match any other way.
// Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below // Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below
// the current contest rank. // the current contest rank.
if (ribbon > gSpecialVar_ContestRank) if (ribbon > gSpecialVar_ContestRank)
retVal = 2; eligibility = CAN_ENTER_CONTEST_HIGH_RANK;
else if (ribbon >= gSpecialVar_ContestRank) else if (ribbon >= gSpecialVar_ContestRank)
retVal = 1; eligibility = CAN_ENTER_CONTEST_EQUAL_RANK;
else else
retVal = 0; eligibility = CANT_ENTER_CONTEST;
return retVal; return eligibility;
} }
static void DrawContestantWindowText(void) 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) void sub_80F7F30(void)
{ {
u8 result = sub_80DAE0C(&gPlayerParty[gContestMonPartyIndex]); u8 eligibility = GetContestEntryEligibility(&gPlayerParty[gContestMonPartyIndex]);
if (result)
// Nonzero eligibility can still be non-eligibile, if mon is fainted or egg
if (eligibility)
{ {
sub_80DAB8C(gSpecialVar_ContestCategory, gSpecialVar_ContestRank); sub_80DAB8C(gSpecialVar_ContestCategory, gSpecialVar_ContestRank);
sub_80DB09C(gSpecialVar_ContestCategory); sub_80DB09C(gSpecialVar_ContestCategory);
} }
gSpecialVar_Result = result; gSpecialVar_Result = eligibility;
} }
u16 sub_80F7F7C(void) 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) while ((learnedMove = MonTryLearningNewMove(mon, firstMove)) != 0)
{ {
firstMove = FALSE; firstMove = FALSE;
if (learnedMove == 0xFFFF) if (learnedMove == MON_HAS_MAX_MOVES)
{
// Mon already knows 4 moves.
DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn); DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
}
} }
} }
else else
@@ -666,7 +663,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{ {
if (sHatchedEggFatherMoves[i] == sHatchedEggEggMoves[j]) if (sHatchedEggFatherMoves[i] == sHatchedEggEggMoves[j])
{ {
if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xFFFF) if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]); DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
break; 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 (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]); 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 (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]); DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFinalMoves[i]);
break; break;
} }
@@ -755,7 +752,7 @@ static void GiveVoltTackleIfLightBall(struct Pokemon *mon, struct DayCare *dayca
if (motherItem == ITEM_LIGHT_BALL || fatherItem == ITEM_LIGHT_BALL) 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); DeleteFirstMoveAndGiveMoveToMon(mon, MOVE_VOLT_TACKLE);
} }
} }
@@ -1295,6 +1292,6 @@ void ShowDaycareLevelMenu(void)
void ChooseSendDaycareMon(void) void ChooseSendDaycareMon(void)
{ {
sub_81B9328(); ChooseMonForDaycare();
gMain.savedCallback = CB2_ReturnToField; gMain.savedCallback = CB2_ReturnToField;
} }
+9 -9
View File
@@ -743,12 +743,12 @@ static void Task_EvolutionScene(u8 taskID)
GetMonData(mon, MON_DATA_NICKNAME, text); GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text); StringCopy10(gBattleTextBuff1, text);
if (var == 0xFFFF) // no place to learn it if (var == MON_HAS_MAX_MOVES)
gTasks[taskID].tState = 22; gTasks[taskID].tState = 22;
else if (var == 0xFFFE) // it already knows that move else if (var == MON_ALREADY_KNOWS_MOVE)
break; break;
else 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 else // no move to learn
{ {
@@ -909,8 +909,8 @@ static void Task_EvolutionScene(u8 taskID)
case 6: case 6:
if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate) if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate)
{ {
var = sub_81C1B94(); // moveID var = GetMoveSlotToReplace();
if (var == 4) if (var == MAX_MON_MOVES)
{ {
gTasks[taskID].tLearnMoveState = 10; gTasks[taskID].tLearnMoveState = 10;
} }
@@ -1100,9 +1100,9 @@ static void Task_TradeEvolutionScene(u8 taskID)
GetMonData(mon, MON_DATA_NICKNAME, text); GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text); StringCopy10(gBattleTextBuff1, text);
if (var == 0xFFFF) if (var == MON_HAS_MAX_MOVES)
gTasks[taskID].tState = 20; gTasks[taskID].tState = 20;
else if (var == 0xFFFE) else if (var == MON_ALREADY_KNOWS_MOVE)
break; break;
else else
gTasks[taskID].tState = 18; gTasks[taskID].tState = 18;
@@ -1243,8 +1243,8 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 6: case 6:
if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate) if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate)
{ {
var = sub_81C1B94(); // moveID var = GetMoveSlotToReplace();
if (var == 4) if (var == MAX_MON_MOVES)
{ {
gTasks[taskID].tLearnMoveState = 9; gTasks[taskID].tLearnMoveState = 9;
} }
+4 -4
View File
@@ -63,7 +63,7 @@ static void PokeballGlowEffect_7(struct Sprite *);
static u8 PokecenterHealEffectHelper(s16, s16); static u8 PokecenterHealEffectHelper(s16, s16);
static void HallOfFameRecordEffectHelper(s16, s16, s16, u8); static void HallOfFameRecordEffectHelper(s16, s16, s16, u8);
static void mapldr_080842E8(void); static void FieldCallback_Fly(void);
static void task00_8084310(u8); static void task00_8084310(u8);
static void mapldr_08084390(void); static void mapldr_08084390(void);
static void c3_080843F8(u8); 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); SetMainCallback2(CB2_ReturnToField);
gFieldCallback = mapldr_080842E8; gFieldCallback = FieldCallback_Fly;
} }
static void mapldr_080842E8(void) static void FieldCallback_Fly(void)
{ {
pal_fill_black(); pal_fill_black();
CreateTask(task00_8084310, 0); CreateTask(task00_8084310, 0);
+3 -2
View File
@@ -15,6 +15,7 @@
#include "task.h" #include "task.h"
#include "trainer_hill.h" #include "trainer_hill.h"
#include "constants/field_poison.h" #include "constants/field_poison.h"
#include "constants/party_menu.h"
#include "constants/species.h" #include "constants/species.h"
static bool32 IsMonValidSpecies(struct Pokemon *pokemon) static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
@@ -56,7 +57,7 @@ static void FaintFromFieldPoison(u8 partyIdx)
static bool32 MonFaintedFromPoison(u8 partyIdx) static bool32 MonFaintedFromPoison(u8 partyIdx)
{ {
struct Pokemon *pokemon = gPlayerParty + 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; return TRUE;
} }
@@ -124,7 +125,7 @@ s32 DoPoisonFieldEffect(void)
u32 numFainted = 0; u32 numFainted = 0;
for (i = 0; i < PARTY_SIZE; i++) 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); hp = GetMonData(pokemon, MON_DATA_HP);
if (hp == 0 || --hp == 0) 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_BLDALPHA, BLDALPHA_BLEND(12, 7));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); 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); 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); schedule_bg_copy_tilemap_to_vram(0);
SetFlash2ScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1); SetFlash2ScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1);
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
+1
View File
@@ -60,6 +60,7 @@
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/species.h" #include "constants/species.h"
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/vars.h" #include "constants/vars.h"
#include "constants/battle_frontier.h" #include "constants/battle_frontier.h"
#include "constants/weather.h" #include "constants/weather.h"
+46 -44
View File
@@ -7,12 +7,13 @@
#include "string_util.h" #include "string_util.h"
#include "strings.h" #include "strings.h"
#include "task.h" #include "task.h"
#include "constants/party_menu.h"
#include "constants/songs.h" #include "constants/songs.h"
static void sub_816166C(u8 taskId); static void Task_SoftboiledRestoreHealth(u8 taskId);
static void sub_81616C0(u8 taskId); static void Task_DisplayHPRestoredMessage(u8 taskId);
static void sub_8161724(u8 taskId); static void Task_FinishSoftboiled(u8 taskId);
static void sub_81617B8(u8 taskId); static void CantUseSoftboiledOnMon(u8 taskId);
bool8 SetUpFieldMove_SoftBoiled(void) bool8 SetUpFieldMove_SoftBoiled(void)
{ {
@@ -29,81 +30,82 @@ bool8 SetUpFieldMove_SoftBoiled(void)
return FALSE; return FALSE;
} }
void sub_8161560(u8 taskId) void ChooseMonForSoftboiled(u8 taskId)
{ {
gUnknown_0203CEC8.unkB = 0xA; gPartyMenu.action = PARTY_ACTION_SOFTBOILED;
gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.slotId; gPartyMenu.slotId2 = gPartyMenu.slotId;
sub_81B0FCC(GetCursorSelectionMonId(), 0x1); AnimatePartySlot(GetCursorSelectionMonId(), 1);
DisplayPartyMenuStdMessage(5); DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON);
gTasks[taskId].func = sub_81B1370; gTasks[taskId].func = Task_HandleChooseMonInput;
} }
void sub_81615A8(u8 taskId) void Task_TryUseSoftboiledOnPartyMon(u8 taskId)
{ {
u16 hp; u16 hp;
u8 slotId = gUnknown_0203CEC8.slotId; u8 userPartyId = gPartyMenu.slotId;
u8 pokemonIndex = gUnknown_0203CEC8.unkA; u8 recipientPartyId = gPartyMenu.slotId2;
if(pokemonIndex > 6) if(recipientPartyId > PARTY_SIZE)
{ {
gUnknown_0203CEC8.unkB = 0; gPartyMenu.action = 0;
DisplayPartyMenuStdMessage(0); DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
gTasks[taskId].func = sub_81B1370; gTasks[taskId].func = Task_HandleChooseMonInput;
return; return;
} }
hp = GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_HP); hp = GetMonData(&gPlayerParty[recipientPartyId], MON_DATA_HP);
if(hp == 0 || slotId == pokemonIndex || GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_MAX_HP) == hp) if(hp == 0 || userPartyId == recipientPartyId || GetMonData(&gPlayerParty[recipientPartyId], MON_DATA_MAX_HP) == hp)
{ {
sub_81617B8(taskId); CantUseSoftboiledOnMon(taskId);
return; return;
} }
// Take away Softboiled user's health first (-1)
PlaySE(SE_KAIFUKU); 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); 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); StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
DisplayPartyMenuMessage(gStringVar4, 0); DisplayPartyMenuMessage(gStringVar4, FALSE);
schedule_bg_copy_tilemap_to_vram(2); 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; return;
gUnknown_0203CEC8.unkB = 0x0; gPartyMenu.action = 0;
sub_81B0FCC(gUnknown_0203CEC8.slotId, 0); AnimatePartySlot(gPartyMenu.slotId, 0);
gUnknown_0203CEC8.slotId = gUnknown_0203CEC8.unkA; gPartyMenu.slotId = gPartyMenu.slotId2;
sub_81B0FCC(gUnknown_0203CEC8.unkA, 1); AnimatePartySlot(gPartyMenu.slotId2, 1);
ClearStdWindowAndFrameToTransparent(0x6, FALSE); ClearStdWindowAndFrameToTransparent(6, FALSE);
ClearWindowTilemap(0x6); ClearWindowTilemap(6);
DisplayPartyMenuStdMessage(0); DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
gTasks[taskId].func = sub_81B1370; 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; return;
DisplayPartyMenuStdMessage(5); DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON);
gTasks[taskId].func = sub_81B1370; gTasks[taskId].func = Task_HandleChooseMonInput;
} }
static void sub_81617B8(u8 taskId) static void CantUseSoftboiledOnMon(u8 taskId)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
DisplayPartyMenuMessage(gText_CantBeUsedOnPkmn, 0); DisplayPartyMenuMessage(gText_CantBeUsedOnPkmn, FALSE);
schedule_bg_copy_tilemap_to_vram(2); 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; s32 i;
sub_81B8558(); ClearSelectedPartyOrder();
for (i = 0; i < gSpecialVar_0x8005; i++) for (i = 0; i < gSpecialVar_0x8005; i++)
gSelectedOrderFromParty[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i]; gSelectedOrderFromParty[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i];
ReducePlayerPartyToSelectedMons(); 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 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 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 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/interface/party_menu_bg.4bpp.lz");
const u32 gPartyMenuMisc_Pal[] = INCBIN_U32("graphics/interface/party_menu_misc.gbapal.lz"); const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/interface/party_menu_bg.gbapal.lz");
const u32 gPartyMenuMisc_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_misc.bin.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 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 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) if (ItemId_GetPocket(itemId) == 0)
return FALSE; return FALSE;
if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE) if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
return CheckPyramidBagHasItem(itemId, count); return CheckPyramidBagHasItem(itemId, count);
pocket = ItemId_GetPocket(itemId) - 1; pocket = ItemId_GetPocket(itemId) - 1;
// Check for item slots that contain the item // Check for item slots that contain the item
@@ -189,7 +189,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
if (ItemId_GetPocket(itemId) == POCKET_NONE) if (ItemId_GetPocket(itemId) == POCKET_NONE)
return FALSE; return FALSE;
if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE) if (InBattlePyramid() || FlagGet(FLAG_STORING_ITEMS_IN_PYRAMID_BAG) == TRUE)
{ {
return CheckPyramidBagHasSpace(itemId, count); return CheckPyramidBagHasSpace(itemId, count);
} }
@@ -404,7 +404,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
return FALSE; return FALSE;
// check Battle Pyramid Bag // 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); return AddPyramidBagItem(itemId, count);
} }
@@ -517,7 +517,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
return FALSE; return FALSE;
// check Battle Pyramid Bag // 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); return RemovePyramidBagItem(itemId, count);
} }
+10 -9
View File
@@ -4,6 +4,7 @@
#include "battle_controllers.h" #include "battle_controllers.h"
#include "battle_pyramid.h" #include "battle_pyramid.h"
#include "frontier_util.h" #include "frontier_util.h"
#include "battle_pyramid_bag.h"
#include "berry_tag_screen.h" #include "berry_tag_screen.h"
#include "bg.h" #include "bg.h"
#include "constants/items.h" #include "constants/items.h"
@@ -466,9 +467,9 @@ void CB2_BagMenuFromStartMenu(void)
void sub_81AABB0(void) void sub_81AABB0(void)
{ {
if (!InBattlePyramid()) if (!InBattlePyramid())
GoToBagMenu(RETURN_LOCATION_BATTLE, POCKETS_COUNT, SetCB2ToReshowScreenAfterMenu2); GoToBagMenu(RETURN_LOCATION_BATTLE, POCKETS_COUNT, CB2_SetUpReshowBattleScreenAfterMenu2);
else else
sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2); GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2);
} }
void CB2_ChooseBerry(void) void CB2_ChooseBerry(void)
@@ -1148,13 +1149,13 @@ u8 GetSwitchBagPocketDirection(void)
u8 LRKeys; u8 LRKeys;
if (gBagMenu->unk81B != 0) if (gBagMenu->unk81B != 0)
return 0; return 0;
LRKeys = GetLRKeysState(); LRKeys = GetLRKeysPressed();
if ((gMain.newKeys & DPAD_LEFT) || LRKeys == 1) if ((gMain.newKeys & DPAD_LEFT) || LRKeys == MENU_L_PRESSED)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return 1; return 1;
} }
if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == 2) if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == MENU_R_PRESSED)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return 2; return 2;
@@ -1581,7 +1582,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
sub_8199134(0, 1); 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)) if ((cursorPos & 1) && sub_81ACDFC(cursorPos - 1))
{ {
@@ -1589,7 +1590,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
sub_8199134(-1, 0); 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)) if (!(cursorPos & 1) && sub_81ACDFC(cursorPos + 1))
{ {
@@ -1782,7 +1783,7 @@ void ItemMenu_Give(u8 taskId)
BagMenu_PrintThereIsNoPokemon(taskId); BagMenu_PrintThereIsNoPokemon(taskId);
else else
{ {
gBagMenu->mainCallback2 = sub_81B7F60; gBagMenu->mainCallback2 = CB2_ChooseMonToGiveItem;
unknown_ItemMenu_Confirm(taskId); unknown_ItemMenu_Confirm(taskId);
} }
} }
@@ -2157,7 +2158,7 @@ void DoWallyTutorialBagMenu(void)
PrepareBagForWallyTutorial(); PrepareBagForWallyTutorial();
AddBagItem(ITEM_POTION, 1); AddBagItem(ITEM_POTION, 1);
AddBagItem(ITEM_POKE_BALL, 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) 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_Berry(u8 taskId);
void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId);
void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId);
void sub_80FDF90(u8 taskId); static void BootUpSoundTMHM(u8 taskId);
void task08_0809AD8C(u8 taskId); static void Task_ShowTMHMContainedMessage(u8 taskId);
void sub_80FE024(u8 taskId); static void UseTMHMYesNo(u8 taskId);
void sub_80FE03C(u8 taskId); static void UseTMHM(u8 taskId);
void sub_80FE124(u8 taskId); void sub_80FE124(u8 taskId);
void sub_80FE164(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[] = static const MainCallback gUnknown_085920D8[] =
{ {
sub_81B617C, CB2_ShowPartyMenuForItemUse,
CB2_ReturnToField, CB2_ReturnToField,
NULL, NULL,
}; };
static const u8 gUnknown_085920E4[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST}; 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, .noFunc = BagMenu_InitListsMenu,
}; };
@@ -722,72 +722,72 @@ void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId)
void ItemUseOutOfBattle_Medicine(u8 taskId) void ItemUseOutOfBattle_Medicine(u8 taskId)
{ {
gUnknown_03006328 = ItemUseCB_Medicine; gItemUseCB = ItemUseCB_Medicine;
SetUpItemUseCallback(taskId); SetUpItemUseCallback(taskId);
} }
void ItemUseOutOfBattle_ReduceEV(u8 taskId) void ItemUseOutOfBattle_ReduceEV(u8 taskId)
{ {
gUnknown_03006328 = sub_81B67C8; gItemUseCB = ItemUseCB_ReduceEV;
SetUpItemUseCallback(taskId); SetUpItemUseCallback(taskId);
} }
void ItemUseOutOfBattle_SacredAsh(u8 taskId) void ItemUseOutOfBattle_SacredAsh(u8 taskId)
{ {
gUnknown_03006328 = sub_81B79E8; gItemUseCB = ItemUseCB_SacredAsh;
SetUpItemUseCallback(taskId); SetUpItemUseCallback(taskId);
} }
void ItemUseOutOfBattle_PPRecovery(u8 taskId) void ItemUseOutOfBattle_PPRecovery(u8 taskId)
{ {
gUnknown_03006328 = dp05_ether; gItemUseCB = ItemUseCB_PPRecovery;
SetUpItemUseCallback(taskId); SetUpItemUseCallback(taskId);
} }
void ItemUseOutOfBattle_PPUp(u8 taskId) void ItemUseOutOfBattle_PPUp(u8 taskId)
{ {
gUnknown_03006328 = dp05_pp_up; gItemUseCB = ItemUseCB_PPUp;
SetUpItemUseCallback(taskId); SetUpItemUseCallback(taskId);
} }
void ItemUseOutOfBattle_RareCandy(u8 taskId) void ItemUseOutOfBattle_RareCandy(u8 taskId)
{ {
gUnknown_03006328 = dp05_rare_candy; gItemUseCB = ItemUseCB_RareCandy;
SetUpItemUseCallback(taskId); SetUpItemUseCallback(taskId);
} }
void ItemUseOutOfBattle_TMHM(u8 taskId) void ItemUseOutOfBattle_TMHM(u8 taskId)
{ {
if (gSpecialVar_ItemId >= ITEM_HM01_CUT) if (gSpecialVar_ItemId >= ITEM_HM01_CUT)
DisplayItemMessage(taskId, 1, gText_BootedUpHM, sub_80FDF90); // HM DisplayItemMessage(taskId, 1, gText_BootedUpHM, BootUpSoundTMHM); // HM
else 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); 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)) if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{ {
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]); StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]);
StringExpandPlaceholders(gStringVar4, gText_TMHMContainedVar1); 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); SetUpItemUseCallback(taskId);
} }
@@ -912,7 +912,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
void ItemUseOutOfBattle_EvolutionStone(u8 taskId) void ItemUseOutOfBattle_EvolutionStone(u8 taskId)
{ {
gUnknown_03006328 = sub_81B7C74; gItemUseCB = ItemUseCB_EvolutionStone;
SetUpItemUseCallback(taskId); SetUpItemUseCallback(taskId);
} }
@@ -976,36 +976,37 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
} }
} }
void sub_80FE54C(u8 taskId) static void ItemUseInBattle_ShowPartyMenu(u8 taskId)
{ {
if (!InBattlePyramid()) if (!InBattlePyramid())
{ {
gBagMenu->mainCallback2 = sub_81B89F0; gBagMenu->mainCallback2 = ChooseMonForInBattleItem;
unknown_ItemMenu_Confirm(taskId); unknown_ItemMenu_Confirm(taskId);
} }
else else
{ {
gPyramidBagResources->callback2 = sub_81B89F0; gPyramidBagResources->callback2 = ChooseMonForInBattleItem;
sub_81C5B14(taskId); sub_81C5B14(taskId);
} }
} }
void ItemUseInBattle_Medicine(u8 taskId) void ItemUseInBattle_Medicine(u8 taskId)
{ {
gUnknown_03006328 = ItemUseCB_Medicine; gItemUseCB = ItemUseCB_Medicine;
sub_80FE54C(taskId); 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; gItemUseCB = ItemUseCB_SacredAsh;
sub_80FE54C(taskId); ItemUseInBattle_ShowPartyMenu(taskId);
} }
void ItemUseInBattle_PPRecovery(u8 taskId) void ItemUseInBattle_PPRecovery(u8 taskId)
{ {
gUnknown_03006328 = dp05_ether; gItemUseCB = ItemUseCB_PPRecovery;
sub_80FE54C(taskId); ItemUseInBattle_ShowPartyMenu(taskId);
} }
void ItemUseInBattle_Escape(u8 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; gSaveBlock1Ptr->mail[id].playerName[i] = EOS;
PadNameString(gSaveBlock1Ptr->mail[id].playerName, CHAR_SPACE); 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]; gSaveBlock1Ptr->mail[id].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
species = GetBoxMonData(&mon->box, MON_DATA_SPECIES); species = GetBoxMonData(&mon->box, MON_DATA_SPECIES);
+11 -11
View File
@@ -1433,13 +1433,13 @@ s8 sub_8199284(void)
sub_8199134(0, 1); sub_8199134(0, 1);
return MENU_NOTHING_CHOSEN; 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); PlaySE(SE_SELECT);
sub_8199134(-1, 0); sub_8199134(-1, 0);
return MENU_NOTHING_CHOSEN; 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); PlaySE(SE_SELECT);
sub_8199134(1, 0); sub_8199134(1, 0);
@@ -1474,13 +1474,13 @@ s8 Menu_ProcessInputGridLayout(void)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; 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)) if (oldPos != sub_81991F8(-1, 0))
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; 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)) if (oldPos != sub_81991F8(1, 0))
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
@@ -1513,13 +1513,13 @@ s8 sub_81993D8(void)
sub_8199134(0, 1); sub_8199134(0, 1);
return MENU_NOTHING_CHOSEN; 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); PlaySE(SE_SELECT);
sub_8199134(-1, 0); sub_8199134(-1, 0);
return MENU_NOTHING_CHOSEN; 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); PlaySE(SE_SELECT);
sub_8199134(1, 0); sub_8199134(1, 0);
@@ -1554,13 +1554,13 @@ s8 sub_8199484(void)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; 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)) if (oldPos != sub_81991F8(-1, 0))
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; 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)) if (oldPos != sub_81991F8(1, 0))
PlaySE(SE_SELECT); 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 i;
u8 j; 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 i;
u8 j; 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); ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
break; break;
case 3: case 3:
sub_81245DC(string, gMapHeader.regionMapSectionId); GetMapNameGeneric(string, gMapHeader.regionMapSectionId);
break; break;
case 4: case 4:
for (curFlag = FLAG_BADGE01_GET, flagCount = 0, endOfString = string + 1; curFlag <= FLAG_BADGE08_GET; curFlag++) 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; return FALSE;
} }
u8 GetLRKeysState(void) u8 GetLRKeysPressed(void)
{ {
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{ {
if (gMain.newKeys & L_BUTTON) if (gMain.newKeys & L_BUTTON)
return 1; return MENU_L_PRESSED;
if (gMain.newKeys & R_BUTTON) if (gMain.newKeys & R_BUTTON)
return 2; return MENU_R_PRESSED;
} }
return 0; return 0;
} }
u8 sub_812210C(void) u8 GetLRKeysPressedAndHeld(void)
{ {
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{ {
if (gMain.newAndRepeatedKeys & L_BUTTON) if (gMain.newAndRepeatedKeys & L_BUTTON)
return 1; return MENU_L_PRESSED;
if (gMain.newAndRepeatedKeys & R_BUTTON) if (gMain.newAndRepeatedKeys & R_BUTTON)
return 2; return MENU_R_PRESSED;
} }
return 0; return 0;
+2 -2
View File
@@ -513,7 +513,7 @@ static void DoMoveRelearnerMain(void)
if (selection == 0) if (selection == 0)
{ {
if (GiveMoveToMon(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove()) != 0xFFFF) if (GiveMoveToMon(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove()) != MON_HAS_MAX_MOVES)
{ {
FormatAndPrintText(gText_MoveRelearnerPkmnLearnedMove); FormatAndPrintText(gText_MoveRelearnerPkmnLearnedMove);
gSpecialVar_0x8004 = TRUE; gSpecialVar_0x8004 = TRUE;
@@ -778,7 +778,7 @@ static void HandleInput(bool8 showContest)
switch (itemId) switch (itemId)
{ {
case LIST_NOTHING_CHOSEN: case LIST_NOTHING_CHOSEN:
if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysState()) if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysPressed())
{ {
break; 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(); sub_81D1EC0();
CleanupOverworldWindowsAndTilemaps(); CleanupOverworldWindowsAndTilemaps();
sub_81B8448(); ChooseMonToGiveMailFromMailbox();
DestroyTask(taskId); DestroyTask(taskId);
} }
} }
+1 -1
View File
@@ -462,7 +462,7 @@ void OpenPokeblockCase(u8 caseId, void (*callback)(void))
void OpenPokeblockCaseInBattle(void) void OpenPokeblockCaseInBattle(void)
{ {
OpenPokeblockCase(PBLOCK_CASE_BATTLE, SetCB2ToReshowScreenAfterMenu2); OpenPokeblockCase(PBLOCK_CASE_BATTLE, CB2_SetUpReshowBattleScreenAfterMenu2);
} }
void OpenPokeblockCaseOnFeeder(void) 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 DecryptBoxMon(struct BoxPokemon *boxMon);
static void sub_806E6CC(u8 taskId); static void sub_806E6CC(u8 taskId);
static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId); static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
// EWRAM vars // EWRAM vars
EWRAM_DATA static u8 sLearningMoveTableID = 0; EWRAM_DATA static u8 sLearningMoveTableID = 0;
@@ -2879,22 +2880,22 @@ u16 GiveMoveToMon(struct Pokemon *mon, u16 move)
return GiveMoveToBoxMon(&mon->box, move); return GiveMoveToBoxMon(&mon->box, move);
} }
u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move) static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
{ {
s32 i; s32 i;
for (i = 0; i < MAX_MON_MOVES; i++) for (i = 0; i < MAX_MON_MOVES; i++)
{ {
u16 existingMove = GetBoxMonData(boxMon, MON_DATA_MOVE1 + i, NULL); 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_MOVE1 + i, &move);
SetBoxMonData(boxMon, MON_DATA_PP1 + i, &gBattleMoves[move].pp); SetBoxMonData(boxMon, MON_DATA_PP1 + i, &gBattleMoves[move].pp);
return move; return move;
} }
if (existingMove == 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) u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move)
@@ -2949,7 +2950,7 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
move = (gLevelUpLearnsets[species][i] & 0x1FF); move = (gLevelUpLearnsets[species][i] & 0x1FF);
if (GiveMoveToBoxMon(boxMon, move) == 0xFFFF) if (GiveMoveToBoxMon(boxMon, move) == MON_HAS_MAX_MOVES)
DeleteFirstMoveAndGiveMoveToBoxMon(boxMon, move); DeleteFirstMoveAndGiveMoveToBoxMon(boxMon, move);
} }
} }
@@ -4860,7 +4861,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (battlerId != 4) if (battlerId != 4)
{ {
gAbsentBattlerFlags &= ~gBitTable[battlerId]; gAbsentBattlerFlags &= ~gBitTable[battlerId];
CopyPlayerPartyMonToBattleData(battlerId, pokemon_order_func(gBattlerPartyIndexes[battlerId])); CopyPlayerPartyMonToBattleData(battlerId, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battlerId]));
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255) if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255)
gBattleResults.numRevivesUsed++; gBattleResults.numRevivesUsed++;
} }
@@ -5657,21 +5658,23 @@ void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies)
SetMonData(mon, MON_DATA_NICKNAME, gSpeciesNames[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) switch (gLinkPlayers[GetMultiplayerId()].id)
{ {
case 0: case 0:
case 3: case 3:
retVal = FALSE; flankId = 0;
break; break;
case 1: case 1:
case 2: case 2:
retVal = TRUE; flankId = 1;
break; break;
} }
return retVal; return flankId;
} }
u16 GetLinkTrainerFlankId(u8 linkPlayerId) u16 GetLinkTrainerFlankId(u8 linkPlayerId)
@@ -6439,11 +6442,11 @@ void SetMonPreventsSwitchingString(void)
gBattleTextBuff1[4] = B_BUFF_EOS; gBattleTextBuff1[4] = B_BUFF_EOS;
if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER) if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER)
gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]); gBattleTextBuff1[3] = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]);
else else
gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]; 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); 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; u8 spriteId;
struct MonIconSpriteTemplate iconTemplate = struct MonIconSpriteTemplate iconTemplate =
{ {
.oam = &sMonIconOamData, .oam = &sMonIconOamData,
.image = GetMonIconPtr(species, personality, extra), .image = GetMonIconPtr(species, personality, handleDeoxys),
.anims = sMonIconAnims, .anims = sMonIconAnims,
.affineAnims = sMonIconAffineAnims, .affineAnims = sMonIconAffineAnims,
.callback = callback, .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) void sub_80D2EF8(struct Sprite *sprite)
@@ -1184,17 +1184,17 @@ void FreeMonIconPalette(u16 species)
FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
} }
void UpdateTradeMonIconFrame(struct Sprite *sprite) void SpriteCB_MonIcon(struct Sprite *sprite)
{ {
UpdateMonIconFrame(sprite); UpdateMonIconFrame(sprite);
} }
const u8* GetMonIconTiles(u16 species, bool32 extra) const u8* GetMonIconTiles(u16 species, bool32 handleDeoxys)
{ {
const u8* iconSprite = gMonIconTable[species]; 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; return iconSprite;
} }
+16 -15
View File
@@ -42,6 +42,7 @@
#include "window.h" #include "window.h"
#include "constants/items.h" #include "constants/items.h"
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/region_map_sections.h" #include "constants/region_map_sections.h"
#include "constants/rgb.h" #include "constants/rgb.h"
#include "constants/songs.h" #include "constants/songs.h"
@@ -162,7 +163,7 @@ static EWRAM_DATA struct PokemonSummaryScreenData
u8 unk_filler4[6]; u8 unk_filler4[6];
} *sMonSummaryScreen = NULL; } *sMonSummaryScreen = NULL;
EWRAM_DATA u8 gLastViewedMonIndex = 0; 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; ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0;
struct UnkStruct_61CC04 struct UnkStruct_61CC04
@@ -1491,11 +1492,11 @@ static void HandleInput(u8 taskId)
{ {
ChangeSummaryPokemon(taskId, 1); ChangeSummaryPokemon(taskId, 1);
} }
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1) else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{ {
ChangePage(taskId, -1); ChangePage(taskId, -1);
} }
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2) else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{ {
ChangePage(taskId, 1); ChangePage(taskId, 1);
} }
@@ -2159,11 +2160,11 @@ static void HandleReplaceMoveInput(u8 taskId)
data[0] = 4; data[0] = 4;
sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex); 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); ChangePage(taskId, -1);
} }
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
{ {
ChangePage(taskId, 1); ChangePage(taskId, 1);
} }
@@ -2173,8 +2174,8 @@ static void HandleReplaceMoveInput(u8 taskId)
{ {
StopPokemonAnimations(); StopPokemonAnimations();
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sUnknown_0203CF21 = sMonSummaryScreen->firstMoveIndex; sMoveSlotToReplace = sMonSummaryScreen->firstMoveIndex;
gSpecialVar_0x8005 = sUnknown_0203CF21; gSpecialVar_0x8005 = sMoveSlotToReplace;
BeginCloseSummaryScreen(taskId); BeginCloseSummaryScreen(taskId);
} }
else else
@@ -2188,8 +2189,8 @@ static void HandleReplaceMoveInput(u8 taskId)
u32 var1; u32 var1;
StopPokemonAnimations(); StopPokemonAnimations();
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sUnknown_0203CF21 = 4; sMoveSlotToReplace = MAX_MON_MOVES;
gSpecialVar_0x8005 = 4; gSpecialVar_0x8005 = MAX_MON_MOVES;
BeginCloseSummaryScreen(taskId); BeginCloseSummaryScreen(taskId);
} }
} }
@@ -2238,7 +2239,7 @@ static void HandleHMMovesCantBeForgottenInput(u8 taskId)
data[1] = 0; data[1] = 0;
gTasks[taskId].func = HandleReplaceMoveInput; 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) if (sMonSummaryScreen->currPageIndex != 2)
{ {
@@ -2252,7 +2253,7 @@ static void HandleHMMovesCantBeForgottenInput(u8 taskId)
sub_81C1EFC(9, -2, move); 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) 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 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) static void SetDexNumberColor(bool8 isMonShiny)
{ {
if (!isMonShiny) if (!isMonShiny)
sub_8199C30(3, 1, 4, 8, 8, 0); SetBgTilemapPalette(3, 1, 4, 8, 8, 0);
else else
sub_8199C30(3, 1, 4, 8, 8, 5); SetBgTilemapPalette(3, 1, 4, 8, 8, 5);
schedule_bg_copy_tilemap_to_vram(3); schedule_bg_copy_tilemap_to_vram(3);
} }
+9 -8
View File
@@ -55,7 +55,7 @@ static EWRAM_DATA struct {
/*0x008*/ struct RegionMap regionMap; /*0x008*/ struct RegionMap regionMap;
/*0x88c*/ u8 unk_88c[0x1c0]; /*0x88c*/ u8 unk_88c[0x1c0];
/*0xa4c*/ u8 unk_a4c[0x26]; /*0xa4c*/ u8 unk_a4c[0x26];
/*0xa72*/ bool8 unk_a72; /*0xa72*/ bool8 choseFlyLocation;
} *sFlyMap = NULL; // a74 } *sFlyMap = NULL; // a74
static bool32 gUnknown_03001180; static bool32 gUnknown_03001180;
@@ -1605,7 +1605,8 @@ u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
return str; return str;
} }
u8 *sub_81245DC(u8 *dest, u16 mapSecId) // TODO: probably needs a better name
u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId)
{ {
switch (mapSecId) switch (mapSecId)
{ {
@@ -1626,7 +1627,7 @@ u8 *sub_8124610(u8 *dest, u16 mapSecId)
} }
else 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) if (sFlyMap->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || sFlyMap->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER)
{ {
m4aSongNumStart(SE_SELECT); m4aSongNumStart(SE_SELECT);
sFlyMap->unk_a72 = TRUE; sFlyMap->choseFlyLocation = TRUE;
sub_81248F4(sub_8124E0C); sub_81248F4(sub_8124E0C);
} }
break; break;
case INPUT_EVENT_B_BUTTON: case INPUT_EVENT_B_BUTTON:
m4aSongNumStart(SE_SELECT); m4aSongNumStart(SE_SELECT);
sFlyMap->unk_a72 = FALSE; sFlyMap->choseFlyLocation = FALSE;
sub_81248F4(sub_8124E0C); sub_81248F4(sub_8124E0C);
break; break;
} }
@@ -1997,7 +1998,7 @@ static void sub_8124E0C(void)
if (!UpdatePaletteFade()) if (!UpdatePaletteFade())
{ {
FreeRegionMapIconResources(); FreeRegionMapIconResources();
if (sFlyMap->unk_a72) if (sFlyMap->choseFlyLocation)
{ {
switch (sFlyMap->regionMap.mapSecId) switch (sFlyMap->regionMap.mapSecId)
{ {
@@ -2024,11 +2025,11 @@ static void sub_8124E0C(void)
} }
break; break;
} }
sub_80B69DC(); ReturnToFieldFromFlyMapSelect();
} }
else else
{ {
SetMainCallback2(sub_81B58A8); SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap);
} }
if (sFlyMap != NULL) if (sFlyMap != NULL)
{ {
+1 -2
View File
@@ -39,7 +39,6 @@
#include "script_menu.h" #include "script_menu.h"
#include "script_movement.h" #include "script_movement.h"
#include "script_pokemon_80F8.h" #include "script_pokemon_80F8.h"
#include "script_pokemon_81B9.h"
#include "shop.h" #include "shop.h"
#include "slot_machine.h" #include "slot_machine.h"
#include "sound.h" #include "sound.h"
@@ -1938,7 +1937,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx)
bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx) bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx)
{ {
sub_81B9404(); ChooseContestMon();
ScriptContext1_Stop(); ScriptContext1_Stop();
return TRUE; return TRUE;
} }
+1 -1
View File
@@ -646,7 +646,7 @@ void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
void ChooseHalfPartyForBattle(void) void ChooseHalfPartyForBattle(void)
{ {
gMain.savedCallback = CB2_ReturnFromChooseHalfParty; gMain.savedCallback = CB2_ReturnFromChooseHalfParty;
VarSet(VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOUBLE_COLOSSEUM); VarSet(VAR_FRONTIER_FACILITY, FACILITY_MULTI_OR_EREADER);
InitChooseHalfPartyForBattle(0); 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_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_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_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_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_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}"); 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_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_ReturnToHealingSpot[] = _("Want to return to the healing spot\nused last in {STR_VAR_1}?");
const u8 gText_PauseUntilPress[] = _("{PAUSE_UNTIL_PRESS}"); 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_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_PkmnCantBeTradedNow[] = _("That POKéMON can't be traded\nnow.");
ALIGNED(4) const u8 gText_EggCantBeTradedNow[] = _("An EGG can't be traded now."); 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]; struct Pokemon *mon = &gPlayerParty[i];
sTradeMenuData->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2), sTradeMenuData->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2),
UpdateTradeMonIconFrame, SpriteCB_MonIcon,
(sTradeMonSpriteCoords[i][0] * 8) + 14, (sTradeMonSpriteCoords[i][0] * 8) + 14,
(sTradeMonSpriteCoords[i][1] * 8) - 12, (sTradeMonSpriteCoords[i][1] * 8) - 12,
1, 1,
@@ -493,7 +493,7 @@ static void CB2_CreateTradeMenu(void)
{ {
struct Pokemon *mon = &gEnemyParty[i]; struct Pokemon *mon = &gEnemyParty[i];
sTradeMenuData->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), 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][0] * 8) + 14,
(sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12, (sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12,
1, 1,
@@ -668,7 +668,7 @@ static void CB2_ReturnToTradeMenu(void)
{ {
struct Pokemon *mon = &gPlayerParty[i]; struct Pokemon *mon = &gPlayerParty[i];
sTradeMenuData->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), sTradeMenuData->partySpriteIds[TRADE_PLAYER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL),
UpdateTradeMonIconFrame, SpriteCB_MonIcon,
(sTradeMonSpriteCoords[i][0] * 8) + 14, (sTradeMonSpriteCoords[i][0] * 8) + 14,
(sTradeMonSpriteCoords[i][1] * 8) - 12, (sTradeMonSpriteCoords[i][1] * 8) - 12,
1, 1,
@@ -680,7 +680,7 @@ static void CB2_ReturnToTradeMenu(void)
{ {
struct Pokemon *mon = &gEnemyParty[i]; struct Pokemon *mon = &gEnemyParty[i];
sTradeMenuData->partySpriteIds[TRADE_PARTNER][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), 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][0] * 8) + 14,
(sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12, (sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12,
1, 1,
@@ -1439,8 +1439,8 @@ static void TradeMenuProcessInput_SelectedMon(void)
QueueAction(QUEUE_DELAY_MSG, QUEUE_MON_CANT_BE_TRADED); QueueAction(QUEUE_DELAY_MSG, QUEUE_MON_CANT_BE_TRADED);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_REDRAW_MAIN_MENU; sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_REDRAW_MAIN_MENU;
break; break;
case CANT_TRADE_EGG: case CANT_TRADE_EGG_YET:
case CANT_TRADE_EGG2: case CANT_TRADE_EGG_YET2:
QueueAction(QUEUE_DELAY_MSG, QUEUE_EGG_CANT_BE_TRADED); QueueAction(QUEUE_DELAY_MSG, QUEUE_EGG_CANT_BE_TRADED);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_REDRAW_MAIN_MENU; sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_REDRAW_MAIN_MENU;
break; 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[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[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; 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]++; sTradeMenuData->drawPartyState[whichParty]++;
TradeMenuBouncePartySprites(&gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]]); TradeMenuBouncePartySprites(&gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]]);
CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, whichParty * 15, 0, 15, 17, 0); CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, whichParty * 15, 0, 15, 17, 0);
@@ -1820,7 +1820,7 @@ static void DrawTradeMenuParty(u8 whichParty)
PrintNicknamesForTradeMenu(); PrintNicknamesForTradeMenu();
break; break;
case 2: 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; sTradeMenuData->drawPartyState[whichParty] = 3;
break; break;
case 3: case 3:
@@ -2352,7 +2352,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int
if (!IsNationalPokedexEnabled()) if (!IsNationalPokedexEnabled())
{ {
if (species2[monIdx] == SPECIES_EGG) if (species2[monIdx] == SPECIES_EGG)
return CANT_TRADE_EGG; return CANT_TRADE_EGG_YET;
if (!IsSpeciesInHoennDex(species2[monIdx])) if (!IsSpeciesInHoennDex(species2[monIdx]))
return CANT_TRADE_NATIONAL; return CANT_TRADE_NATIONAL;
@@ -2366,7 +2366,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int
if (!(player->progressFlagsCopy & 0xF)) if (!(player->progressFlagsCopy & 0xF))
{ {
if (species2[monIdx] == SPECIES_EGG) if (species2[monIdx] == SPECIES_EGG)
return CANT_TRADE_EGG2; return CANT_TRADE_EGG_YET2;
if (!IsSpeciesInHoennDex(species2[monIdx])) if (!IsSpeciesInHoennDex(species2[monIdx]))
return CANT_TRADE_INVALID_MON; return CANT_TRADE_INVALID_MON;
@@ -2542,8 +2542,10 @@ int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuP
} }
// r6/r7 flip. Ugh. // 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 #ifdef NONMATCHING
int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 monIdx) int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
{ {
int i, version, versions, canTradeAnyMon, numMonsLeft; int i, version, versions, canTradeAnyMon, numMonsLeft;
int speciesArray[PARTY_SIZE]; int speciesArray[PARTY_SIZE];
@@ -2592,7 +2594,7 @@ int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 monIdx)
return CANT_TRADE_NATIONAL; return CANT_TRADE_NATIONAL;
if (speciesArray[monIdx] == SPECIES_NONE) if (speciesArray[monIdx] == SPECIES_NONE)
return CANT_TRADE_EGG; return CANT_TRADE_EGG_YET;
} }
numMonsLeft = 0; numMonsLeft = 0;
@@ -2611,7 +2613,7 @@ int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 monIdx)
} }
#else #else
NAKED NAKED
int CanTradeSelectedPartyMenuMon(struct Pokemon *mon, u16 a1) int CanSpinTradeMon(struct Pokemon *mon, u16 a1)
{ {
asm_unified("push {r4-r7,lr}\n\ asm_unified("push {r4-r7,lr}\n\
mov r7, r8\n\ mov r7, r8\n\

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