From c45e66284052ee4bb30ec7d336e4c19261adc0a1 Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Sat, 21 Mar 2026 14:21:24 +0100 Subject: [PATCH] Sync/script menu (#134) --- data/event_scripts.s | 1 + .../BattleFrontier_OutsideWest/scripts.inc | 2 +- data/maps/BirthIsland_Harbor/scripts.inc | 2 +- .../scripts.inc | 4 +- .../scripts.inc | 10 +- .../scripts.inc | 16 +- data/maps/CeladonCity_GameCorner/scripts.inc | 2 +- .../scripts.inc | 6 +- data/maps/CeruleanCity_BikeShop/scripts.inc | 2 +- data/maps/CeruleanCity_House1/scripts.inc | 2 +- data/maps/CeruleanCity_House5/scripts.inc | 2 +- .../scripts.inc | 10 +- data/maps/NavelRock_Harbor/scripts.inc | 2 +- data/maps/RocketHideout_Elevator/scripts.inc | 6 +- data/maps/Route25_SeaCottage/scripts.inc | 2 +- data/maps/SilphCo_Elevator/scripts.inc | 2 +- data/maps/TrainerTower_Elevator/scripts.inc | 6 +- data/maps/TrainerTower_Lobby/scripts.inc | 8 +- data/maps/TwoIsland_House/scripts.inc | 2 +- data/maps/VermilionCity/scripts.inc | 8 +- data/maps/ViridianCity_School/scripts.inc | 2 +- data/scripts/cable_club.inc | 48 +- data/scripts/mystery_event_club.inc | 8 +- data/scripts/pc.inc | 6 +- data/scripts/pkmn_center_nurse.inc | 2 +- data/scripts/repel.inc | 2 +- data/scripts/seagallop.inc | 28 +- data/scripts/trainer_card.inc | 30 +- data/specials.inc | 2 +- data/text/pc.inc | 2 +- include/constants/field_specials.h | 22 + include/constants/menu.h | 182 +-- include/constants/script_menu.h | 90 ++ include/menu.h | 2 +- include/script_menu.h | 56 +- include/strings.h | 148 +- include/union_room_message.h | 6 - rom.sha1 | 2 +- src/berry_crush.c | 4 +- src/coins.c | 6 +- src/data/easy_chat/easy_chat_group_events.h | 3 +- src/data/union_room.h | 12 +- src/field_specials.c | 504 +++--- src/hof_pc.c | 2 +- src/map_name_popup.c | 2 +- src/menu.c | 2 +- src/pokemon_storage_system.c | 2 +- src/scrcmd.c | 13 +- src/script_menu.c | 1398 ++++++++--------- src/sprays.c | 2 +- src/start_menu.c | 2 +- src/strings.c | 160 +- src/trainer_card.c | 2 +- src/union_room_message.c | 6 - 54 files changed, 1188 insertions(+), 1665 deletions(-) create mode 100644 include/constants/field_specials.h diff --git a/data/event_scripts.s b/data/event_scripts.s index d45d5d7d2..1ce68df50 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -33,6 +33,7 @@ #include "constants/sound.h" #include "constants/species.h" #include "constants/vars.h" +#include "constants/field_specials.h" #include "constants/battle.h" #include "constants/heal_locations.h" #include "constants/field_effects.h" diff --git a/data/maps/BattleFrontier_OutsideWest/scripts.inc b/data/maps/BattleFrontier_OutsideWest/scripts.inc index 0ac2ddcaa..09d1c988a 100644 --- a/data/maps/BattleFrontier_OutsideWest/scripts.inc +++ b/data/maps/BattleFrontier_OutsideWest/scripts.inc @@ -16,7 +16,7 @@ BattleFrontier_OutsideWest_EventScript_FerryAttendant:: message BattleFrontier_OutsideWest_Text_WhereWouldYouLikeToGo waitmessage setvar VAR_0x8004, SEAGALLOP_NAVEL_ROCK - multichoice 20, 8, MULTICHOICE_SEAGALLOP_VERMILION, FALSE + multichoice 20, 8, MULTI_SEAGALLOP_VERMILION, FALSE switch VAR_RESULT case 0, EventScript_SailToVermilionCity case 1, EventScript_CancelSail diff --git a/data/maps/BirthIsland_Harbor/scripts.inc b/data/maps/BirthIsland_Harbor/scripts.inc index 67c94065f..232fa3986 100644 --- a/data/maps/BirthIsland_Harbor/scripts.inc +++ b/data/maps/BirthIsland_Harbor/scripts.inc @@ -7,7 +7,7 @@ BirthIsland_Harbor_EventScript_Sailor:: message Text_WhereDoYouWantToSail waitmessage setvar VAR_0x8004, SEAGALLOP_BIRTH_ISLAND - multichoice 20, 8, MULTICHOICE_SEAGALLOP_VERMILION, FALSE + multichoice 20, 8, MULTI_SEAGALLOP_VERMILION, FALSE switch VAR_RESULT case 0, EventScript_SailToVermilionCity case 1, EventScript_CancelSail diff --git a/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc b/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc index 72a109cc7..ba85f6bed 100644 --- a/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc +++ b/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc @@ -63,7 +63,7 @@ CeladonCity_Condominiums_RoofRoom_EventScript_Blackboard:: message CeladonCity_Condominiums_RoofRoom_Text_ReadWhichHeading waitmessage setvar VAR_0x8004, 4 - multichoice 0, 0, MULTICHOICE_LINKED_DIRECT_UNION, FALSE + multichoice 0, 0, MULTI_LINKED_DIRECT_UNION, FALSE switch VAR_RESULT case 0, CeladonCity_Condominiums_RoofRoom_EventScript_WirelessClub case 1, CeladonCity_Condominiums_RoofRoom_EventScript_DirectCorner @@ -75,7 +75,7 @@ CeladonCity_Condominiums_RoofRoom_EventScript_Blackboard:: CeladonCity_Condominiums_RoofRoom_EventScript_ReadAnotherHeading:: message CeladonCity_Condominiums_RoofRoom_Text_ReadWhichHeading waitmessage - multichoice 0, 0, MULTICHOICE_LINKED_DIRECT_UNION, FALSE + multichoice 0, 0, MULTI_LINKED_DIRECT_UNION, FALSE switch VAR_RESULT case 0, CeladonCity_Condominiums_RoofRoom_EventScript_WirelessClub case 1, CeladonCity_Condominiums_RoofRoom_EventScript_DirectCorner diff --git a/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc b/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc index 80b1d2c6d..61bd8d2f1 100644 --- a/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc +++ b/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc @@ -20,27 +20,27 @@ CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelect:: end CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom5F:: - multichoicedefault 0, 0, MULTICHOICE_DEPT_STORE_ELEVATOR, 0, FALSE + multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 0, FALSE goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor end CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom4F:: - multichoicedefault 0, 0, MULTICHOICE_DEPT_STORE_ELEVATOR, 1, FALSE + multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 1, FALSE goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor end CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom3F:: - multichoicedefault 0, 0, MULTICHOICE_DEPT_STORE_ELEVATOR, 2, FALSE + multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 2, FALSE goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor end CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom2F:: - multichoicedefault 0, 0, MULTICHOICE_DEPT_STORE_ELEVATOR, 3, FALSE + multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 3, FALSE goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor end CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom1F:: - multichoicedefault 0, 0, MULTICHOICE_DEPT_STORE_ELEVATOR, 4, FALSE + multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 4, FALSE goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor end diff --git a/data/maps/CeladonCity_DepartmentStore_Roof/scripts.inc b/data/maps/CeladonCity_DepartmentStore_Roof/scripts.inc index 364d83c43..ba1bb5985 100644 --- a/data/maps/CeladonCity_DepartmentStore_Roof/scripts.inc +++ b/data/maps/CeladonCity_DepartmentStore_Roof/scripts.inc @@ -51,7 +51,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_AskGiveDrink:: end CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWater:: - multichoice 0, 0, MULTICHOICE_THIRSTY_GIRL_FRESH_WATER, FALSE + multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER, FALSE switch VAR_RESULT case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater case 1, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink @@ -59,7 +59,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWater:: end CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPop:: - multichoice 0, 0, MULTICHOICE_THIRSTY_GIRL_SODA_POP, FALSE + multichoice 0, 0, MULTI_THIRSTY_GIRL_SODA_POP, FALSE switch VAR_RESULT case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop case 1, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink @@ -67,7 +67,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPop:: end CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterSodaPop:: - multichoice 0, 0, MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_SODA_POP, FALSE + multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP, FALSE switch VAR_RESULT case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop @@ -76,7 +76,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterSodaPop:: end CeladonCity_DepartmentStore_Roof_EventScript_AskGiveLemonade:: - multichoice 0, 0, MULTICHOICE_THIRSTY_GIRL_LEMONADE, FALSE + multichoice 0, 0, MULTI_THIRSTY_GIRL_LEMONADE, FALSE switch VAR_RESULT case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade case 1, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink @@ -84,7 +84,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_AskGiveLemonade:: end CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterLemonade:: - multichoice 0, 0, MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_LEMONADE, FALSE + multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER_LEMONADE, FALSE switch VAR_RESULT case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade @@ -93,7 +93,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterLemonade:: end CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPopLemonade:: - multichoice 0, 0, MULTICHOICE_THIRSTY_GIRL_SODA_POP_LEMONADE, FALSE + multichoice 0, 0, MULTI_THIRSTY_GIRL_SODA_POP_LEMONADE, FALSE switch VAR_RESULT case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade @@ -102,7 +102,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPopLemonade:: end CeladonCity_DepartmentStore_Roof_EventScript_AskGiveAllDrinks:: - multichoice 0, 0, MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_SODA_POP_LEMONADE, FALSE + multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP_LEMONADE, FALSE switch VAR_RESULT case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop @@ -206,7 +206,7 @@ CeladonCity_DepartmentStore_Roof_EventScript_VendingMachine:: end CeladonCity_DepartmentStore_Roof_EventScript_ChooseDrink:: - multichoice 12, 0, MULTICHOICE_CELADON_VENDING_MACHINE, FALSE + multichoice 12, 0, MULTI_CELADON_VENDING_MACHINE, FALSE copyvar VAR_TEMP_1, VAR_RESULT switch VAR_TEMP_1 case 0, CeladonCity_DepartmentStore_Roof_EventScript_BuyFreshWater diff --git a/data/maps/CeladonCity_GameCorner/scripts.inc b/data/maps/CeladonCity_GameCorner/scripts.inc index f800cdba7..581d9b658 100644 --- a/data/maps/CeladonCity_GameCorner/scripts.inc +++ b/data/maps/CeladonCity_GameCorner/scripts.inc @@ -26,7 +26,7 @@ CeladonCity_GameCorner_EventScript_CoinsClerk:: showcoinsbox 0, 5 message CeladonCity_GameCorner_Text_WelcomeBuySomeCoins waitmessage - multichoice 13, 0, MULTICHOICE_GAME_CORNER_COIN_PURCHASE_COUNTER, FALSE + multichoice 13, 0, MULTI_GAME_CORNER_COIN_PURCHASE_COUNTER, FALSE copyvar VAR_0x8009, VAR_RESULT switch VAR_RESULT case 0, CeladonCity_GameCorner_EventScript_BuyCoins diff --git a/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc b/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc index 751965f7a..7aa08461d 100644 --- a/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc +++ b/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc @@ -22,7 +22,7 @@ CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkMons:: CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeMon:: message CeladonCity_GameCorner_PrizeRoom_Text_WhichPrize waitmessage - multichoice 11, 0, MULTICHOICE_GAME_CORNER_POKEMON_PRIZES, FALSE + multichoice 11, 0, MULTI_GAME_CORNER_POKEMON_PRIZES, FALSE switch VAR_RESULT case 0, CeladonCity_GameCorner_PrizeRoom_EventScript_Abra case 1, CeladonCity_GameCorner_PrizeRoom_EventScript_Clefairy @@ -250,7 +250,7 @@ CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkTMs:: CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeTM:: message CeladonCity_GameCorner_PrizeRoom_Text_WhichPrize waitmessage - multichoice 11, 0, MULTICHOICE_GAME_CORNER_TMPRIZES, FALSE + multichoice 11, 0, MULTI_GAME_CORNER_TMPRIZES, FALSE switch VAR_RESULT case 0, CeladonCity_GameCorner_PrizeRoom_EventScript_TM13 case 1, CeladonCity_GameCorner_PrizeRoom_EventScript_TM23 @@ -341,7 +341,7 @@ CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkItems:: CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeItem:: message CeladonCity_GameCorner_PrizeRoom_Text_WhichPrize waitmessage - multichoice 10, 0, MULTICHOICE_GAME_CORNER_BATTLE_ITEM_PRIZES, FALSE + multichoice 10, 0, MULTI_GAME_CORNER_BATTLE_ITEM_PRIZES, FALSE switch VAR_RESULT case 0, CeladonCity_GameCorner_PrizeRoom_EventScript_SmokeBall case 1, CeladonCity_GameCorner_PrizeRoom_EventScript_MiracleSeed diff --git a/data/maps/CeruleanCity_BikeShop/scripts.inc b/data/maps/CeruleanCity_BikeShop/scripts.inc index 9e8e0001f..542396371 100644 --- a/data/maps/CeruleanCity_BikeShop/scripts.inc +++ b/data/maps/CeruleanCity_BikeShop/scripts.inc @@ -9,7 +9,7 @@ CeruleanCity_BikeShop_EventScript_Clerk:: showmoneybox 0, 0 message CeruleanCity_BikeShop_Text_WelcomeToBikeShop waitmessage - multichoice 11, 0, MULTICHOICE_BIKE_SHOP, FALSE + multichoice 11, 0, MULTI_BIKE_SHOP, FALSE switch VAR_RESULT case 0, CeruleanCity_BikeShop_EventScript_TryPurchaseBicycle case 1, CeruleanCity_BikeShop_EventScript_ClerkGoodbye diff --git a/data/maps/CeruleanCity_House1/scripts.inc b/data/maps/CeruleanCity_House1/scripts.inc index 7957a0f81..75976437c 100644 --- a/data/maps/CeruleanCity_House1/scripts.inc +++ b/data/maps/CeruleanCity_House1/scripts.inc @@ -7,7 +7,7 @@ CeruleanCity_House1_EventScript_BadgeGuy:: msgbox CeruleanCity_House1_Text_BadgesHaveAmazingSecrets message CeruleanCity_House1_Text_DescribeWhichBadge waitmessage - setvar VAR_0x8004, LISTMENU_BADGES + setvar VAR_0x8004, SCROLL_MULTI_BADGES special ShowScrollableMultichoice waitstate switch VAR_RESULT diff --git a/data/maps/CeruleanCity_House5/scripts.inc b/data/maps/CeruleanCity_House5/scripts.inc index 16f2080f6..e504037e9 100644 --- a/data/maps/CeruleanCity_House5/scripts.inc +++ b/data/maps/CeruleanCity_House5/scripts.inc @@ -35,7 +35,7 @@ CeruleanCity_House5_EventScript_AskToExchangePowder:: CeruleanCity_House5_EventScript_ChooseExchangeItem:: message CeruleanCity_House5_Text_ExchangeWithWhat waitmessage - setvar VAR_0x8004, LISTMENU_BERRY_POWDER + setvar VAR_0x8004, SCROLL_MULTI_BERRY_POWDER special ShowScrollableMultichoice waitstate switch VAR_RESULT diff --git a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc index 842499135..5fae922f9 100644 --- a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc +++ b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc @@ -80,7 +80,7 @@ CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelix:: waitmessage call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelixAmber - multichoice 0, 0, MULTICHOICE_HELIX, FALSE + multichoice 0, 0, MULTI_HELIX, FALSE switch VAR_RESULT case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil @@ -92,7 +92,7 @@ CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDome:: waitmessage call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDomeAmber - multichoice 0, 0, MULTICHOICE_DOME, FALSE + multichoice 0, 0, MULTI_DOME, FALSE switch VAR_RESULT case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil @@ -102,7 +102,7 @@ CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDome:: CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilAmber:: message CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe waitmessage - multichoice 0, 0, MULTICHOICE_AMBER, FALSE + multichoice 0, 0, MULTI_AMBER, FALSE switch VAR_RESULT case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil @@ -110,7 +110,7 @@ CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilAmber:: end CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelixAmber:: - multichoice 0, 0, MULTICHOICE_HELIX_AMBER, FALSE + multichoice 0, 0, MULTI_HELIX_AMBER, FALSE switch VAR_RESULT case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber @@ -119,7 +119,7 @@ CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelixAmber:: end CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDomeAmber:: - multichoice 0, 0, MULTICHOICE_DOME_AMBER, FALSE + multichoice 0, 0, MULTI_DOME_AMBER, FALSE switch VAR_RESULT case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber diff --git a/data/maps/NavelRock_Harbor/scripts.inc b/data/maps/NavelRock_Harbor/scripts.inc index fe7bb2da3..aea4674a1 100644 --- a/data/maps/NavelRock_Harbor/scripts.inc +++ b/data/maps/NavelRock_Harbor/scripts.inc @@ -7,7 +7,7 @@ NavelRock_Harbor_EventScript_Sailor:: message Text_WhereDoYouWantToSail waitmessage setvar VAR_0x8004, SEAGALLOP_NAVEL_ROCK - multichoice 20, 8, MULTICHOICE_SEAGALLOP_VERMILION, FALSE + multichoice 20, 8, MULTI_SEAGALLOP_VERMILION, FALSE switch VAR_RESULT case 0, EventScript_SailToVermilionCity case 1, EventScript_CancelSail diff --git a/data/maps/RocketHideout_Elevator/scripts.inc b/data/maps/RocketHideout_Elevator/scripts.inc index 00a0dd894..a83ef101c 100644 --- a/data/maps/RocketHideout_Elevator/scripts.inc +++ b/data/maps/RocketHideout_Elevator/scripts.inc @@ -19,17 +19,17 @@ RocketHideout_Elevator_EventScript_FloorSelect:: end RocketHideout_Elevator_EventScript_FloorSelectFromB1F:: - multichoicedefault 0, 0, MULTICHOICE_ROCKET_HIDEOUT_ELEVATOR, 0, FALSE + multichoicedefault 0, 0, MULTI_ROCKET_HIDEOUT_ELEVATOR, 0, FALSE goto RocketHideout_Elevator_EventScript_ChooseFloor end RocketHideout_Elevator_EventScript_FloorSelectFromB2F:: - multichoicedefault 0, 0, MULTICHOICE_ROCKET_HIDEOUT_ELEVATOR, 1, FALSE + multichoicedefault 0, 0, MULTI_ROCKET_HIDEOUT_ELEVATOR, 1, FALSE goto RocketHideout_Elevator_EventScript_ChooseFloor end RocketHideout_Elevator_EventScript_FloorSelectFromB4F:: - multichoicedefault 0, 0, MULTICHOICE_ROCKET_HIDEOUT_ELEVATOR, 2, FALSE + multichoicedefault 0, 0, MULTI_ROCKET_HIDEOUT_ELEVATOR, 2, FALSE goto RocketHideout_Elevator_EventScript_ChooseFloor end diff --git a/data/maps/Route25_SeaCottage/scripts.inc b/data/maps/Route25_SeaCottage/scripts.inc index b4eb77a2f..783b4d608 100644 --- a/data/maps/Route25_SeaCottage/scripts.inc +++ b/data/maps/Route25_SeaCottage/scripts.inc @@ -232,7 +232,7 @@ Route25_SeaCottage_EventScript_OpenBillsMonList:: Route25_SeaCottage_EventScript_BillsMonList:: message Route25_SeaCottage_Text_SeeWhichMon waitmessage - multichoice 0, 0, MULTICHOICE_EEVEELUTIONS, FALSE + multichoice 0, 0, MULTI_EEVEELUTIONS, FALSE switch VAR_RESULT case 0, Route25_SeaCottage_EventScript_ViewEevee case 1, Route25_SeaCottage_EventScript_ViewFlareon diff --git a/data/maps/SilphCo_Elevator/scripts.inc b/data/maps/SilphCo_Elevator/scripts.inc index 9e9dfa05f..e51428c6b 100644 --- a/data/maps/SilphCo_Elevator/scripts.inc +++ b/data/maps/SilphCo_Elevator/scripts.inc @@ -9,7 +9,7 @@ SilphCo_Elevator_EventScript_FloorSelect:: special DrawElevatorCurrentFloorWindow message Text_WantWhichFloor waitmessage - setvar VAR_0x8004, LISTMENU_SILPHCO_FLOORS + setvar VAR_0x8004, SCROLL_MULTI_SILPHCO_FLOORS specialvar VAR_RESULT, InitElevatorFloorSelectMenuPos special ShowScrollableMultichoice waitstate diff --git a/data/maps/TrainerTower_Elevator/scripts.inc b/data/maps/TrainerTower_Elevator/scripts.inc index 5aa850140..d4329c825 100644 --- a/data/maps/TrainerTower_Elevator/scripts.inc +++ b/data/maps/TrainerTower_Elevator/scripts.inc @@ -19,12 +19,12 @@ TrainerTower_Elevator_EventScript_FloorSelect:: end TrainerTower_Elevator_EventScript_FloorSelectFromRoof:: - multichoicedefault 0, 0, MULTICHOICE_ROOFTOP_B1F, 0, FALSE + multichoicedefault 0, 0, MULTI_ROOFTOP_B1F, 0, FALSE goto TrainerTower_Elevator_EventScript_ChooseFloor end TrainerTower_Elevator_EventScript_FloorSelectFromLobby:: - multichoicedefault 0, 0, MULTICHOICE_ROOFTOP_B1F, 1, FALSE + multichoicedefault 0, 0, MULTI_ROOFTOP_B1F, 1, FALSE goto TrainerTower_Elevator_EventScript_ChooseFloor end @@ -33,7 +33,7 @@ TrainerTower_Elevator_EventScript_ChooseFloor:: case 0, TrainerTower_Elevator_EventScript_SelectRoof case 1, TrainerTower_Elevator_EventScript_SelectLobby case 2, TrainerTower_Elevator_EventScript_CloseFloorSelect - case SCR_MENU_CANCEL, TrainerTower_Elevator_EventScript_CloseFloorSelect + case MULTI_B_PRESSED, TrainerTower_Elevator_EventScript_CloseFloorSelect end TrainerTower_Elevator_EventScript_SelectLobby:: diff --git a/data/maps/TrainerTower_Lobby/scripts.inc b/data/maps/TrainerTower_Lobby/scripts.inc index b0518a217..d12fc50f8 100644 --- a/data/maps/TrainerTower_Lobby/scripts.inc +++ b/data/maps/TrainerTower_Lobby/scripts.inc @@ -155,12 +155,12 @@ TrainerTower_Lobby_EventScript_AllFloorsUsed:: TrainerTower_Lobby_EventScript_AskEnterChallenge:: message TrainerTower_Lobby_Text_LikeToChallengeTrainers waitmessage - multichoice 18, 6, MULTICHOICE_YES_NO_INFO, FALSE + multichoice 18, 6, MULTI_YES_NO_INFO, FALSE switch VAR_RESULT case 0, TrainerTower_Lobby_EventScript_ChooseChallenge case 1, TrainerTower_Lobby_EventScript_DeclineChallenge case 2, TrainerTower_Lobby_EventScript_ChallengeInfo - case SCR_MENU_CANCEL, TrainerTower_Lobby_EventScript_DeclineChallenge + case MULTI_B_PRESSED, TrainerTower_Lobby_EventScript_DeclineChallenge end TrainerTower_Lobby_EventScript_ChallengeInfo:: @@ -169,14 +169,14 @@ TrainerTower_Lobby_EventScript_ChallengeInfo:: end TrainerTower_Lobby_EventScript_ChooseChallenge:: - multichoice 13, 3, MULTICHOICE_TRAINER_TOWER_MODE, FALSE + multichoice 13, 3, MULTI_TRAINER_TOWER_MODE, FALSE switch VAR_RESULT case 0, TrainerTower_Lobby_EventScript_BeginChallenge case 1, TrainerTower_Lobby_EventScript_BeginChallenge case 2, TrainerTower_Lobby_EventScript_BeginChallenge case 3, TrainerTower_Lobby_EventScript_BeginChallenge case 4, TrainerTower_Lobby_EventScript_DeclineChallenge - case SCR_MENU_CANCEL, TrainerTower_Lobby_EventScript_DeclineChallenge + case MULTI_B_PRESSED, TrainerTower_Lobby_EventScript_DeclineChallenge end TrainerTower_Lobby_EventScript_BeginChallenge:: diff --git a/data/maps/TwoIsland_House/scripts.inc b/data/maps/TwoIsland_House/scripts.inc index c7a477c1e..a7c8617b0 100644 --- a/data/maps/TwoIsland_House/scripts.inc +++ b/data/maps/TwoIsland_House/scripts.inc @@ -87,7 +87,7 @@ TwoIsland_House_EventScript_GiveTinyMushrooms:: TwoIsland_House_EventScript_ChooseMushroom:: message TwoIsland_House_Text_IllNeedMushroomOrTwo waitmessage - multichoice 0, 0, MULTICHOICE_MUSHROOMS, TRUE + multichoice 0, 0, MULTI_MUSHROOMS, TRUE switch VAR_RESULT case 0, TwoIsland_House_EventScript_GiveTinyMushrooms case 1, TwoIsland_House_EventScript_GiveBigMushroom diff --git a/data/maps/VermilionCity/scripts.inc b/data/maps/VermilionCity/scripts.inc index 5fa0d0239..e672928e9 100644 --- a/data/maps/VermilionCity/scripts.inc +++ b/data/maps/VermilionCity/scripts.inc @@ -141,7 +141,7 @@ VermilionCity_EventScript_HasMysticTicket:: call_if_unset FLAG_SHOWN_MYSTIC_TICKET, VermilionCity_EventScript_ShowMysticTicket message VermilionCity_Text_BoardSeagallopFerry waitmessage - multichoice 17, 6, MULTICHOICE_SEVII_NAVEL, FALSE + multichoice 17, 6, MULTI_SEVII_NAVEL, FALSE switch VAR_RESULT case 0, EventScript_SeviiDestinationsPage1 case 1, EventScript_SailToNavelRock @@ -158,7 +158,7 @@ VermilionCity_EventScript_HasAuroraTicket:: call_if_unset FLAG_SHOWN_AURORA_TICKET, VermilionCity_EventScript_ShowAuroraTicket message VermilionCity_Text_BoardSeagallopFerry waitmessage - multichoice 13, 6, MULTICHOICE_SEVII_BIRTH, FALSE + multichoice 13, 6, MULTI_SEVII_BIRTH, FALSE switch VAR_RESULT case 0, EventScript_SeviiDestinationsPage1 case 1, EventScript_SailToBirthIsland @@ -176,7 +176,7 @@ VermilionCity_EventScript_HasMysticAndAuroraTickets:: call_if_unset FLAG_SHOWN_AURORA_TICKET, VermilionCity_EventScript_ShowAuroraTicket message VermilionCity_Text_BoardSeagallopFerry waitmessage - multichoice 13, 5, MULTICHOICE_SEVII_NAVEL_BIRTH, FALSE + multichoice 13, 5, MULTI_SEVII_NAVEL_BIRTH, FALSE switch VAR_RESULT case 0, EventScript_SeviiDestinationsPage1 case 1, EventScript_SailToNavelRock @@ -210,7 +210,7 @@ VermilionCity_EventScript_ChooseSeagallopDestTriPass:: message VermilionCity_Text_BoardSeagallopTriPass waitmessage setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY - multichoice 19, 5, MULTICHOICE_SEAGALLOP_123, FALSE + multichoice 19, 5, MULTI_SEAGALLOP_123, FALSE switch VAR_RESULT case 0, EventScript_SailToOneIsland2 case 1, EventScript_SailToTwoIsland2 diff --git a/data/maps/ViridianCity_School/scripts.inc b/data/maps/ViridianCity_School/scripts.inc index e8a73080d..0696d5532 100644 --- a/data/maps/ViridianCity_School/scripts.inc +++ b/data/maps/ViridianCity_School/scripts.inc @@ -53,7 +53,7 @@ ViridianCity_School_EventScript_Blackboard:: ViridianCity_School_EventScript_ChooseBlackboardTopic:: message ViridianCity_School_Text_ReadWhichTopic waitmessage - multichoicegrid 7, 1, MULTICHOICE_TRAINER_SCHOOL_WHITEBOARD, 3, FALSE + multichoicegrid 7, 1, MULTI_TRAINER_SCHOOL_WHITEBOARD, 3, FALSE switch VAR_RESULT case 0, ViridianCity_School_EventScript_ReadSleep case 1, ViridianCity_School_EventScript_ReadPoison diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index 423ac7ad3..55c92705a 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -212,12 +212,12 @@ CableClub_EventScript_UnusedWelcomeToCableClub:: CableClub_EventScript_SelectCableClubRoom:: setvar VAR_0x8004, 0 - multichoice 0, 0, MULTICHOICE_TRADE_CENTER_COLOSSEUM, FALSE + multichoice 0, 0, MULTI_TRADE_CENTER_COLOSSEUM, FALSE switch VAR_RESULT case 0, CableClub_EventScript_TradeCenter case 1, CableClub_EventScript_Colosseum case 2, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_Colosseum:: @@ -228,14 +228,14 @@ CableClub_EventScript_Colosseum:: CableClub_EventScript_SelectBattleMode:: message CableClub_Text_PlayWhichBattleMode waitmessage - multichoice 0, 0, MULTICHOICE_SINGLE_DOUBLE_MULTI_INFO_EXIT, FALSE + multichoice 0, 0, MULTI_SINGLE_DOUBLE_MULTI_INFO_EXIT, FALSE switch VAR_RESULT case 0, CableClub_EventScript_SingleBattleMode case 1, CableClub_EventScript_DoubleBattleMode case 2, CableClub_EventScript_MultiBattleMode case 3, CableClub_EventScript_BattleModeInfo case 4, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_BattleModeInfo:: @@ -752,12 +752,12 @@ CableClub_EventScript_UnionRoomAttendant:: end CableClub_EventScript_AskEnterUnionRoom:: - multichoice 18, 6, MULTICHOICE_YES_NO_INFO, FALSE + multichoice 18, 6, MULTI_YES_NO_INFO, FALSE switch VAR_RESULT case 0, CableClub_EventScript_EnterUnionRoom case 1, CableClub_EventScript_AbortLink case 2, CableClub_EventScript_UnionRoomInfo - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_UnionRoomInfo:: @@ -856,22 +856,22 @@ CableClub_EventScript_DirectCornerAttendant:: CableClub_EventScript_DirectCornerSelectService:: goto_if_unset FLAG_GOT_POWDER_JAR, CableClub_EventScript_DirectCornerNoBerry - multichoice 0, 0, MULTICHOICE_TRADE_COLOSSEUM_CRUSH, FALSE + multichoice 0, 0, MULTI_TRADE_COLOSSEUM_CRUSH, FALSE switch VAR_RESULT case 0, CableClub_EventScript_WirelessTrade case 1, CableClub_EventScript_WirelessBattleSelect case 2, CableClub_EventScript_WirelessBerryCrush case 3, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_DirectCornerNoBerry:: - multichoice 0, 0, MULTICHOICE_TRADE_COLOSSEUM_2, FALSE + multichoice 0, 0, MULTI_TRADE_COLOSSEUM_2, FALSE switch VAR_RESULT case 0, CableClub_EventScript_WirelessTrade case 1, CableClub_EventScript_WirelessBattleSelect case 2, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_WirelessTrade:: @@ -886,14 +886,14 @@ CableClub_EventScript_WirelessTrade:: CableClub_EventScript_WirelessBattleSelect:: message CableClub_Text_PlayWhichBattleMode waitmessage - multichoice 0, 0, MULTICHOICE_SINGLE_DOUBLE_MULTI_INFO_EXIT, FALSE + multichoice 0, 0, MULTI_SINGLE_DOUBLE_MULTI_INFO_EXIT, FALSE switch VAR_RESULT case 0, CableClub_EventScript_WirelessSingleBattle case 1, CableClub_EventScript_WirelessDoubleBattle case 2, CableClub_EventScript_WirelessMultiBattle case 3, CableClub_EventScript_WirelessBattleInfo case 4, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_WirelessSingleBattle:: @@ -953,12 +953,12 @@ CableClub_EventScript_ChooseLinkLeaderFrom2:: message CableClub_Text_ChooseGroupLeaderOfTwo waitmessage call EventScript_RestorePrevTextColor - multichoice 13, 6, MULTICHOICE_JOIN_OR_LEAD, FALSE + multichoice 13, 6, MULTI_JOIN_OR_LEAD, FALSE switch VAR_RESULT case 0, CableClub_EventScript_TryJoinGroup2Players case 1, CableClub_EventScript_TryLeadGroup2Players case 2, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_TryLeadGroup2Players:: @@ -982,12 +982,12 @@ CableClub_EventScript_ChooseLinkLeaderFrom4:: message CableClub_Text_ChooseGroupLeaderOfFour waitmessage call EventScript_RestorePrevTextColor - multichoice 13, 6, MULTICHOICE_JOIN_OR_LEAD, FALSE + multichoice 13, 6, MULTI_JOIN_OR_LEAD, FALSE switch VAR_RESULT case 0, CableClub_EventScript_TryJoinGroup4Players case 1, CableClub_EventScript_TryLeadGroup4Players case 2, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_TryLeadGroup4Players:: @@ -1011,12 +1011,12 @@ CableClub_EventScript_ChooseLinkLeader:: message CableClub_Text_ChooseGroupLeader waitmessage call EventScript_RestorePrevTextColor - multichoice 13, 6, MULTICHOICE_JOIN_OR_LEAD, FALSE + multichoice 13, 6, MULTI_JOIN_OR_LEAD, FALSE switch VAR_RESULT case 0, CableClub_EventScript_TryJoinGroupXPlayers case 1, CableClub_EventScript_TryLeadGroupXPlayers case 2, CableClub_EventScript_AbortLink - case SCR_MENU_CANCEL, CableClub_EventScript_AbortLink + case MULTI_B_PRESSED, CableClub_EventScript_AbortLink end CableClub_EventScript_TryLeadGroupXPlayers:: @@ -1128,12 +1128,12 @@ JoyfulGameCorner_EventScript_InfoMan2:: faceplayer message Text_DescribeWhichGame waitmessage - multichoice 0, 0, MULTICHOICE_POKEJUMP_DODRIO, FALSE + multichoice 0, 0, MULTI_POKEJUMP_DODRIO, FALSE switch VAR_RESULT case 0, CableClub_EventScript_PokemonJumpInfo case 1, CableClub_EventScript_DodrioBerryPickingInfo case 2, CableClub_EventScript_MinigameInfoExit - case SCR_MENU_CANCEL, CableClub_EventScript_MinigameInfoExit + case MULTI_B_PRESSED, CableClub_EventScript_MinigameInfoExit end CableClub_EventScript_PokemonJumpInfo:: @@ -1164,12 +1164,12 @@ JoyfulGameCorner_EventScript_MinigameAttendant:: special HelpSystem_Disable message Text_PlayWhichGame waitmessage - multichoice 0, 0, MULTICHOICE_POKEJUMP_DODRIO, FALSE + multichoice 0, 0, MULTI_POKEJUMP_DODRIO, FALSE switch VAR_RESULT case 0, CableClub_EventScript_PlayPokemonJump case 1, CableClub_EventScript_PlayDodrioBerryPicking case 2, CableClub_EventScript_AbortMinigame - case SCR_MENU_CANCEL, CableClub_EventScript_AbortMinigame + case MULTI_B_PRESSED, CableClub_EventScript_AbortMinigame end CableClub_EventScript_PlayPokemonJump:: @@ -1207,12 +1207,12 @@ CableClub_EventScript_ChooseLinkLeaderMinigame:: message CableClub_Text_ChooseGroupLeader waitmessage call EventScript_RestorePrevTextColor - multichoice 13, 6, MULTICHOICE_JOIN_OR_LEAD, FALSE + multichoice 13, 6, MULTI_JOIN_OR_LEAD, FALSE switch VAR_RESULT case 0, CableClub_EventScript_TryJoinMinigameLinkGroup case 1, CableClub_EventScript_TryBecomeMinigameLinkLeader case 2, CableClub_EventScript_AbortMinigame - case SCR_MENU_CANCEL, CableClub_EventScript_AbortMinigame + case MULTI_B_PRESSED, CableClub_EventScript_AbortMinigame end CableClub_EventScript_TryBecomeMinigameLinkLeader:: diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc index a9cb1958f..f300e914b 100644 --- a/data/scripts/mystery_event_club.inc +++ b/data/scripts/mystery_event_club.inc @@ -17,12 +17,12 @@ EventScript_AlreadyGaveProfile: EventScript_AskForProfile: message Text_TellMeWhatsYourProfile waitmessage - multichoice 18, 6, MULTICHOICE_YES_NO_INFO_2, FALSE + multichoice 18, 6, MULTI_YES_NO_INFO, FALSE switch VAR_RESULT case 0, EventScript_AcceptGiveProfile case 1, EventScript_DeclineGiveProfile case 2, EventScript_ProfileInfo - case SCR_MENU_CANCEL, EventScript_DeclineGiveProfile + case MULTI_B_PRESSED, EventScript_DeclineGiveProfile end EventScript_ProfileInfo: @@ -64,12 +64,12 @@ EventScript_GivenProfileBefore: EventScript_AskForNewProfile: message Text_ChangeYourProfile waitmessage - multichoice 18, 6, MULTICHOICE_YES_NO_INFO_2, FALSE + multichoice 18, 6, MULTI_YES_NO_INFO, FALSE switch VAR_RESULT case 0, EventScript_AcceptGiveNewProfile case 1, EventScript_DeclineGiveNewProfile case 2, EventScript_ProfileInfo2 - case SCR_MENU_CANCEL, EventScript_DeclineGiveNewProfile + case MULTI_B_PRESSED, EventScript_DeclineGiveNewProfile end EventScript_ProfileInfo2: diff --git a/data/scripts/pc.inc b/data/scripts/pc.inc index 88d8602c2..de0d18eeb 100644 --- a/data/scripts/pc.inc +++ b/data/scripts/pc.inc @@ -18,9 +18,9 @@ EventScript_PCDisabled:: end EventScript_PCMainMenu:: - message Text_AccessWhichPC + message gText_WhichPCShouldBeAccessed waitmessage - special CreatePCMenu + special ScriptMenu_CreatePCMultichoice waitstate goto EventScript_ChoosePCMenu end @@ -32,7 +32,7 @@ EventScript_ChoosePCMenu:: case 2, EventScript_AccessProfOaksPC case 3, EventScript_AccessHallOfFame case 4, EventScript_TurnOffPC - case SCR_MENU_CANCEL, EventScript_TurnOffPC + case MULTI_B_PRESSED, EventScript_TurnOffPC end EventScript_AccessPlayersPC:: diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 8457d9045..2bdca3a01 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -6,7 +6,7 @@ EventScript_PkmnCenterNurse:: switch VAR_RESULT case 0, EventScript_PkmnCenterNurse_HealPkmn case 1 EventScript_PkmnCenterNurse_Goodbye - case SCR_MENU_CANCEL, EventScript_PkmnCenterNurse_Goodbye + case MULTI_B_PRESSED, EventScript_PkmnCenterNurse_Goodbye end EventScript_PkmnCenterNurse_HealPkmn:: diff --git a/data/scripts/repel.inc b/data/scripts/repel.inc index 5f13b5e30..44cfcb5d2 100644 --- a/data/scripts/repel.inc +++ b/data/scripts/repel.inc @@ -108,7 +108,7 @@ EventScript_ChooseWhichSpray:: waitmessage callnative DrawSprayMenu waitstate - compare VAR_RESULT, SCR_MENU_CANCEL + compare VAR_RESULT, MULTI_B_PRESSED goto_if_ne EventScript_ChooseWhichSpray_3 EventScript_ChooseWhichSpray_1: closemessage diff --git a/data/scripts/seagallop.inc b/data/scripts/seagallop.inc index 242b42023..4579561b3 100644 --- a/data/scripts/seagallop.inc +++ b/data/scripts/seagallop.inc @@ -2,43 +2,43 @@ EventScript_ChooseDestFromOneIsland:: goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, EventScript_SeviiDestinationsPage1 goto_if_ge VAR_MAP_SCENE_CINNABAR_ISLAND, 4, EventScript_ChooseDestFromOneIslandVermilionAllowed - multichoice 19, 6, MULTICHOICE_ISLAND_23, FALSE + multichoice 19, 6, MULTI_ISLAND_23, FALSE switch VAR_RESULT case 0, EventScript_SailToTwoIsland2 case 1, EventScript_SailToThreeIsland2 case 2, EventScript_CancelSail - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_ChooseDestFromOneIslandVermilionAllowed:: - multichoice 19, 5, MULTICHOICE_SEAGALLOP_V23, FALSE + multichoice 19, 5, MULTI_SEAGALLOP_V23, FALSE switch VAR_RESULT case 0, EventScript_SailToVermilion2 case 1, EventScript_SailToTwoIsland2 case 2, EventScript_SailToThreeIsland2 case 3, EventScript_CancelSail - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_ChooseDestFromTwoIsland:: goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, EventScript_SeviiDestinationsPage1 goto_if_ge VAR_MAP_SCENE_CINNABAR_ISLAND, 4, EventScript_ChooseDestFromTwoIslandVermilionAllowed - multichoice 19, 6, MULTICHOICE_ISLAND_13, FALSE + multichoice 19, 6, MULTI_ISLAND_13, FALSE switch VAR_RESULT case 0, EventScript_SailToOneIsland2 case 1, EventScript_SailToThreeIsland2 case 2, EventScript_CancelSail - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_ChooseDestFromTwoIslandVermilionAllowed:: - multichoice 19, 5, MULTICHOICE_SEAGALLOP_V13, FALSE + multichoice 19, 5, MULTI_SEAGALLOP_V13, FALSE switch VAR_RESULT case 0, EventScript_SailToVermilion2 case 1, EventScript_SailToOneIsland2 case 2, EventScript_SailToThreeIsland2 case 3, EventScript_CancelSail - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_SailToVermilion2:: @@ -64,22 +64,22 @@ EventScript_SailToThreeIsland2:: EventScript_ChooseDestFromIsland:: goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, EventScript_SeviiDestinationsPage1 goto_if_ge VAR_MAP_SCENE_CINNABAR_ISLAND, 4, EventScript_ChooseDestFromIslandVermilionAllowed - multichoice 19, 6, MULTICHOICE_ISLAND_12, FALSE + multichoice 19, 6, MULTI_ISLAND_12, FALSE switch VAR_RESULT case 0, EventScript_SailToOneIsland2 case 1, EventScript_SailToTwoIsland2 case 2, EventScript_CancelSail - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_ChooseDestFromIslandVermilionAllowed:: - multichoice 19, 5, MULTICHOICE_SEAGALLOP_V12, FALSE + multichoice 19, 5, MULTI_SEAGALLOP_V12, FALSE switch VAR_RESULT case 0, EventScript_SailToVermilion2 case 1, EventScript_SailToOneIsland2 case 2, EventScript_SailToTwoIsland2 case 3, EventScript_CancelSail - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_SailToDest:: @@ -139,7 +139,7 @@ EventScript_SeviiDestinationsPage1:: case SEAGALLOP_THREE_ISLAND, EventScript_SailToThreeIsland case SEAGALLOP_FOUR_ISLAND, EventScript_SailToFourIsland case SEAGALLOP_MORE, EventScript_SeviiDestinationsPage2 - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_SeviiDestinationsPage2:: @@ -153,7 +153,7 @@ EventScript_SeviiDestinationsPage2:: case SEAGALLOP_SIX_ISLAND, EventScript_SailToSixIsland case SEAGALLOP_SEVEN_ISLAND, EventScript_SailToSevenIsland case SEAGALLOP_MORE, EventScript_SeviiDestinationsPage1 - case SCR_MENU_CANCEL, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_SailToVermilionCity:: diff --git a/data/scripts/trainer_card.inc b/data/scripts/trainer_card.inc index a0487667d..786ca7fe4 100644 --- a/data/scripts/trainer_card.inc +++ b/data/scripts/trainer_card.inc @@ -11,7 +11,7 @@ CeladonCity_GameCorner_EventScript_PhotoPrinter:: waitse message CeladonCity_GameCorner_Text_ChoosePrintType waitmessage - multichoice 21, 0, MULTICHOICE_TRAINER_CARD_ICON_TINT, TRUE + multichoice 21, 0, MULTI_TRAINER_CARD_ICON_TINT, TRUE switch VAR_RESULT case 0, CeladonCity_GameCorner_EventScript_PrintTypeNormal case 1, CeladonCity_GameCorner_EventScript_PrintTypeBlack @@ -113,64 +113,64 @@ FourIsland_House2_EventScript_ChooseBrag:: end FourIsland_House2_EventScript_ChooseBragHoF:: - multichoice 15, 8, MULTICHOICE_HOF_QUIT, FALSE + multichoice 15, 8, MULTI_HOF_QUIT, FALSE switch VAR_RESULT case 0, FourIsland_House2_EventScript_BragHoF case 1, FourIsland_House2_EventScript_QuitBrag - case SCR_MENU_CANCEL, FourIsland_House2_EventScript_QuitBrag + case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag end FourIsland_House2_EventScript_ChooseBragEggs:: - multichoice 16, 8, MULTICHOICE_EGGS_QUIT, FALSE + multichoice 16, 8, MULTI_EGGS_QUIT, FALSE switch VAR_RESULT case 0, FourIsland_House2_EventScript_BragEggs case 1, FourIsland_House2_EventScript_QuitBrag - case SCR_MENU_CANCEL, FourIsland_House2_EventScript_QuitBrag + case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag end FourIsland_House2_EventScript_ChooseBragLinkWins:: - multichoice 15, 8, MULTICHOICE_VICTORIES_QUIT, FALSE + multichoice 15, 8, MULTI_VICTORIES_QUIT, FALSE switch VAR_RESULT case 0, FourIsland_House2_EventScript_BragLinkWins case 1, FourIsland_House2_EventScript_QuitBrag - case SCR_MENU_CANCEL, FourIsland_House2_EventScript_QuitBrag + case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag end FourIsland_House2_EventScript_ChooseBragHoFEggs:: - multichoice 15, 6, MULTICHOICE_HOF_EGGS_QUIT, FALSE + multichoice 15, 6, MULTI_HOF_EGGS_QUIT, FALSE switch VAR_RESULT case 0, FourIsland_House2_EventScript_BragHoF case 1, FourIsland_House2_EventScript_BragEggs case 2, FourIsland_House2_EventScript_QuitBrag - case SCR_MENU_CANCEL, FourIsland_House2_EventScript_QuitBrag + case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag end FourIsland_House2_EventScript_ChooseBragHoFLinkWins:: - multichoice 15, 6, MULTICHOICE_HOF_VICTORIES_QUIT, FALSE + multichoice 15, 6, MULTI_HOF_VICTORIES_QUIT, FALSE switch VAR_RESULT case 0, FourIsland_House2_EventScript_BragHoF case 1, FourIsland_House2_EventScript_BragLinkWins case 2, FourIsland_House2_EventScript_QuitBrag - case SCR_MENU_CANCEL, FourIsland_House2_EventScript_QuitBrag + case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag end FourIsland_House2_EventScript_ChooseBragEggsLinkWins:: - multichoice 15, 6, MULTICHOICE_EGGS_VICTORIES_QUIT, FALSE + multichoice 15, 6, MULTI_EGGS_VICTORIES_QUIT, FALSE switch VAR_RESULT case 0, FourIsland_House2_EventScript_BragEggs case 1, FourIsland_House2_EventScript_BragLinkWins case 2, FourIsland_House2_EventScript_QuitBrag - case SCR_MENU_CANCEL, FourIsland_House2_EventScript_QuitBrag + case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag end FourIsland_House2_EventScript_ChooseBragHofEggsLinkWins:: - multichoice 15, 5, MULTICHOICE_HOF_EGGS_VICTORIES_QUIT, FALSE + multichoice 15, 5, MULTI_HOF_EGGS_VICTORIES_QUIT, FALSE switch VAR_RESULT case 0, FourIsland_House2_EventScript_BragHoF case 1, FourIsland_House2_EventScript_BragEggs case 2, FourIsland_House2_EventScript_BragLinkWins case 3, FourIsland_House2_EventScript_QuitBrag - case SCR_MENU_CANCEL, FourIsland_House2_EventScript_QuitBrag + case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag end FourIsland_House2_EventScript_StickerManNothingToBrag:: diff --git a/data/specials.inc b/data/specials.inc index f8c5c7e33..2a5792ab1 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -263,7 +263,7 @@ gSpecials:: def_special NullFieldSpecial def_special NullFieldSpecial def_special NullFieldSpecial - def_special CreatePCMenu + def_special ScriptMenu_CreatePCMultichoice def_special HallOfFamePCBeginFade def_special ShowDiploma def_special NullFieldSpecial @ Check lead mon Contest strength specials diff --git a/data/text/pc.inc b/data/text/pc.inc index 2bf09b343..4cc8d9936 100644 --- a/data/text/pc.inc +++ b/data/text/pc.inc @@ -1,7 +1,7 @@ Text_BootedUpPC:: .string "{PLAYER} booted up the PC.$" -Text_AccessWhichPC:: +gText_WhichPCShouldBeAccessed:: .string "Which PC should be accessed?$" Text_AccessedSomeonesPC:: diff --git a/include/constants/field_specials.h b/include/constants/field_specials.h new file mode 100644 index 000000000..5f955af32 --- /dev/null +++ b/include/constants/field_specials.h @@ -0,0 +1,22 @@ +#ifndef GUARD_CONSTANTS_FIELD_SPECIALS_H +#define GUARD_CONSTANTS_FIELD_SPECIALS_H + +enum ScrollMulti +{ + SCROLL_MULTI_BADGES, + SCROLL_MULTI_SILPHCO_FLOORS, + SCROLL_MULTI_BERRY_POWDER, + SCROLL_MULTI_BF_RECEPTIONIST, + SCROLL_MULTI_BF_MOVE_TUTOR_1, + SCROLL_MULTI_BF_MOVE_TUTOR_2, + SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1, + SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2, + SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR, + SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR, + SCROLL_MULTI_NONE = 99, +}; + +#define MAX_SCROLL_MULTI_ON_SCREEN 6 +#define MAX_SCROLL_MULTI_LENGTH 16 + +#endif // GUARD_CONSTANTS_FIELD_SPECIALS_H diff --git a/include/constants/menu.h b/include/constants/menu.h index f798645d7..26672a1aa 100644 --- a/include/constants/menu.h +++ b/include/constants/menu.h @@ -1,163 +1,33 @@ #ifndef GUARD_CONSTANTS_MENU_H #define GUARD_CONSTANTS_MENU_H -#define MULTI_B_PRESSED 127 -#define SCR_MENU_CANCEL 127 -#define SCR_MENU_UNSET 255 - -#define MAX_MULTICHOICE_WIDTH 28 - -#define MULTI_YESNO 0 -#define MULTICHOICE_EEVEELUTIONS 1 -#define MULTICHOICE_TRAINER_CARD_ICON_TINT 2 -#define MULTICHOICE_HOF_QUIT 3 -#define MULTICHOICE_EGGS_QUIT 4 -#define MULTICHOICE_VICTORIES_QUIT 5 -#define MULTICHOICE_HOF_EGGS_QUIT 6 -#define MULTICHOICE_HOF_VICTORIES_QUIT 7 -#define MULTICHOICE_EGGS_VICTORIES_QUIT 8 -#define MULTICHOICE_HOF_EGGS_VICTORIES_QUIT 9 -#define MULTICHOICE_EXIT 10 -#define MULTICHOICE_EXIT_2 11 -#define MULTICHOICE_EXIT_3 12 -#define MULTICHOICE_BIKE_SHOP 13 -#define MULTICHOICE_GAME_CORNER_POKEMON_PRIZES 14 -#define MULTICHOICE_TRAINER_SCHOOL_WHITEBOARD 15 -#define MULTICHOICE_YES_NO_INFO 16 -#define MULTICHOICE_SINGLE_DOUBLE_MULTI_INFO_EXIT 17 -#define MULTICHOICE_YES_NO_INFO_2 18 -#define MULTI_CHALLENGEINFO 19 -#define MULTICHOICE_ROOFTOP_B1F 20 -#define MULTICHOICE_HELIX 21 -#define MULTICHOICE_DOME 22 -#define MULTICHOICE_AMBER 23 -#define MULTICHOICE_HELIX_AMBER 24 -#define MULTICHOICE_DOME_AMBER 25 -#define MULTICHOICE_CELADON_VENDING_MACHINE 26 -#define MULTICHOICE_GAME_CORNER_COIN_PURCHASE_COUNTER 27 -#define MULTICHOICE_EXCELLENT_NOT_SO_BAD 28 -#define MULTICHOICE_RIGHT_LEFT 29 -#define MULTICHOICE_GAME_CORNER_TMPRIZES 30 -#define MULTICHOICE_DEPT_STORE_ELEVATOR 31 -#define MULTICHOICE_THIRSTY_GIRL_FRESH_WATER 32 -#define MULTICHOICE_THIRSTY_GIRL_SODA_POP 33 -#define MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_SODA_POP 34 -#define MULTICHOICE_THIRSTY_GIRL_LEMONADE 35 -#define MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_LEMONADE 36 -#define MULTICHOICE_THIRSTY_GIRL_SODA_POP_LEMONADE 37 -#define MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_SODA_POP_LEMONADE 38 -#define MULTICHOICE_TRADE_CENTER_COLOSSEUM 39 -#define MULTICHOICE_LINK_WIRELESS 40 -#define MULTICHOICE_GAME_CORNER_BATTLE_ITEM_PRIZES 41 -#define MULTICHOICE_ROCKET_HIDEOUT_ELEVATOR 42 -#define MULTICHOICE_LINKED_DIRECT_UNION 43 -#define MULTICHOICE_ISLAND_23 44 -#define MULTICHOICE_ISLAND_13 45 -#define MULTICHOICE_ISLAND_12 46 -#define MULTICHOICE_TRADE_COLOSSEUM_CRUSH 47 -#define MULTICHOICE_48 48 -#define MULTICHOICE_POKEJUMP_DODRIO 49 -#define MULTICHOICE_TRADE_COLOSSEUM_2 50 -#define MULTICHOICE_MUSHROOMS 51 -#define MULTICHOICE_TRADE_COLOSSEUM_BLANK_CRUSH 52 -#define MULTICHOICE_TRADE_COLOSSEUM_BLANK 53 -#define MULTICHOICE_SEVII_NAVEL 54 -#define MULTICHOICE_SEVII_BIRTH 55 -#define MULTICHOICE_SEVII_NAVEL_BIRTH 56 -#define MULTICHOICE_SEAGALLOP_123 57 -#define MULTICHOICE_SEAGALLOP_V23 58 -#define MULTICHOICE_SEAGALLOP_V13 59 -#define MULTICHOICE_SEAGALLOP_V12 60 -#define MULTICHOICE_SEAGALLOP_VERMILION 61 -#define MULTI_SSTIDAL_BATTLE_FRONTIER 62 -#define MULTICHOICE_JOIN_OR_LEAD 63 -#define MULTICHOICE_TRAINER_TOWER_MODE 64 -#define MULTI_FRONTIER_RULES 65 -#define MULTI_FRONTIER_PASS_INFO 66 -#define MULTI_FRONTIER_GAMBLER_BET 67 -#define MULTI_LEVEL_MODE 68 -#define MULTI_BATTLE_FACTORY_RULES 69 -#define MULTI_GO_ON_RECORD_REST_RETIRE 70 -#define MULTI_GO_ON_REST_RETIRE 71 -#define MULTI_GO_ON_RECORD_RETIRE 72 -#define MULTI_GO_ON_RETIRE 73 -#define MULTI_BATTLE_ARENA_RULES 74 -#define MULTI_BATTLE_DOME_RULES 75 -#define MULTI_TOURNEY_WITH_RECORD 76 -#define MULTI_TOURNEY_NO_RECORD 77 -#define MULTI_BATTLE_PALACE_RULES 78 -#define MULTI_BATTLE_PYRAMID_RULES 79 -#define MULTI_BATTLE_PIKE_RULES 80 -#define MULTI_FRONTIER_ITEM_CHOOSE 81 -#define MULTI_BATTLE_TOWER_RULES 82 -#define MULTI_BATTLE_TOWER_FEELINGS 83 -#define MULTI_LINK_LEADER 84 -#define MULTI_SATISFACTION 85 - - -#define MULTICHOICE_NONE 255 - -enum ScrollMulti +// Std String Ids +enum StdStringID { - LISTMENU_BADGES, - LISTMENU_SILPHCO_FLOORS, - LISTMENU_ROCKET_HIDEOUT_FLOORS, - LISTMENU_DEPT_STORE_FLOORS, - LISTMENU_WIRELESS_LECTURE_HEADERS, - LISTMENU_BERRY_POWDER, - LISTMENU_TRAINER_TOWER_FLOORS, - SCROLL_MULTI_BF_RECEPTIONIST, - SCROLL_MULTI_BF_MOVE_TUTOR_1, - SCROLL_MULTI_BF_MOVE_TUTOR_2, - SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1, - SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2, - SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR, - SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR, - SCROLL_MULTI_NONE = 99, + STDSTRING_BOULDER_BADGE, + STDSTRING_CASCADE_BADGE, + STDSTRING_THUNDER_BADGE, + STDSTRING_RAINBOW_BADGE, + STDSTRING_SOUL_BADGE, + STDSTRING_MARSH_BADGE, + STDSTRING_VOLCANO_BADGE, + STDSTRING_EARTH_BADGE, + STDSTRING_COINS, + STDSTRING_ITEMS_POCKET, + STDSTRING_KEY_ITEMS_POCKET, + STDSTRING_POKEBALLS_POCKET, + STDSTRING_TM_CASE, + STDSTRING_BERRY_POUCH, + STDSTRING_SINGLE, + STDSTRING_DOUBLE, + STDSTRING_MULTI, + STDSTRING_MULTI_LINK, + STDSTRING_BATTLE_DOME, + STDSTRING_BATTLE_FACTORY, + STDSTRING_BATTLE_PALACE, + STDSTRING_BATTLE_ARENA, + STDSTRING_BATTLE_PIKE, + STDSTRING_BATTLE_PYRAMID, }; -#define MAX_SCROLL_MULTI_ON_SCREEN 6 -#define MAX_SCROLL_MULTI_LENGTH 16 - -// Std String Ids -#define STDSTRING_COOL 0 -#define STDSTRING_BEAUTY 1 -#define STDSTRING_CUTE 2 -#define STDSTRING_SMART 3 -#define STDSTRING_TOUGH 4 -#define STDSTRING_COOL2 5 -#define STDSTRING_BEAUTY2 6 -#define STDSTRING_CUTE2 7 -#define STDSTRING_SMART2 8 -#define STDSTRING_TOUGH2 9 -#define STDSTRING_ITEMS 10 -#define STDSTRING_KEY_ITEMS 11 -#define STDSTRING_POKEBALLS 12 -#define STDSTRING_TMHMS 13 -#define STDSTRING_BERRIES 14 -#define STDSTRING_BOULDER_BADGE 15 -#define STDSTRING_CASCADE_BADGE 16 -#define STDSTRING_THUNDER_BADGE 17 -#define STDSTRING_RAINBOW_BADGE 18 -#define STDSTRING_SOUL_BADGE 19 -#define STDSTRING_MARSH_BADGE 20 -#define STDSTRING_VOLCANO_BADGE 21 -#define STDSTRING_EARTH_BADGE 22 -#define STDSTRING_COINS 23 -#define STDSTRING_ITEMS_POCKET 24 -#define STDSTRING_KEY_ITEMS_POCKET 25 -#define STDSTRING_POKEBALLS_POCKET 26 -#define STDSTRING_TM_CASE 27 -#define STDSTRING_BERRY_POUCH 28 -#define STDSTRING_SINGLE 29 -#define STDSTRING_DOUBLE 30 -#define STDSTRING_MULTI 31 -#define STDSTRING_MULTI_LINK 32 -#define STDSTRING_BATTLE_DOME 33 -#define STDSTRING_BATTLE_FACTORY 34 -#define STDSTRING_BATTLE_PALACE 35 -#define STDSTRING_BATTLE_ARENA 36 -#define STDSTRING_BATTLE_PIKE 37 -#define STDSTRING_BATTLE_PYRAMID 38 - #endif //GUARD_CONSTANTS_MENU_H diff --git a/include/constants/script_menu.h b/include/constants/script_menu.h index 3e259b8ca..f2a046ab7 100644 --- a/include/constants/script_menu.h +++ b/include/constants/script_menu.h @@ -1,6 +1,96 @@ #ifndef GUARD_SCRIPT_MENU_CONSTANTS_H #define GUARD_SCRIPT_MENU_CONSTANTS_H +#define MULTICHOICE(name) {.list = name, .count = ARRAY_COUNT(name)} + +#define MAX_MULTICHOICE_WIDTH 28 + +#define MULTI_B_PRESSED 127 +#define SCR_MENU_UNSET 255 + + +// Multichoice Ids +enum MultichoiceID +{ + MULTI_YESNO, + MULTI_EEVEELUTIONS, + MULTI_TRAINER_CARD_ICON_TINT, + MULTI_HOF_QUIT, + MULTI_EGGS_QUIT, + MULTI_VICTORIES_QUIT, + MULTI_HOF_EGGS_QUIT, + MULTI_HOF_VICTORIES_QUIT, + MULTI_EGGS_VICTORIES_QUIT, + MULTI_HOF_EGGS_VICTORIES_QUIT, + MULTI_BIKE_SHOP, + MULTI_GAME_CORNER_POKEMON_PRIZES, + MULTI_TRAINER_SCHOOL_WHITEBOARD, + MULTI_YES_NO_INFO, + MULTI_SINGLE_DOUBLE_MULTI_INFO_EXIT, + MULTI_CHALLENGEINFO, + MULTI_ROOFTOP_B1F, + MULTI_HELIX, + MULTI_DOME, + MULTI_AMBER, + MULTI_HELIX_AMBER, + MULTI_DOME_AMBER, + MULTI_CELADON_VENDING_MACHINE, + MULTI_GAME_CORNER_COIN_PURCHASE_COUNTER, + MULTI_GAME_CORNER_TMPRIZES, + MULTI_DEPT_STORE_ELEVATOR, + MULTI_THIRSTY_GIRL_FRESH_WATER, + MULTI_THIRSTY_GIRL_SODA_POP, + MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP, + MULTI_THIRSTY_GIRL_LEMONADE, + MULTI_THIRSTY_GIRL_FRESH_WATER_LEMONADE, + MULTI_THIRSTY_GIRL_SODA_POP_LEMONADE, + MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP_LEMONADE, + MULTI_TRADE_CENTER_COLOSSEUM, + MULTI_GAME_CORNER_BATTLE_ITEM_PRIZES, + MULTI_ROCKET_HIDEOUT_ELEVATOR, + MULTI_LINKED_DIRECT_UNION, + MULTI_ISLAND_23, + MULTI_ISLAND_13, + MULTI_ISLAND_12, + MULTI_TRADE_COLOSSEUM_CRUSH, + MULTI_POKEJUMP_DODRIO, + MULTI_TRADE_COLOSSEUM_2, + MULTI_MUSHROOMS, + MULTI_SEVII_NAVEL, + MULTI_SEVII_BIRTH, + MULTI_SEVII_NAVEL_BIRTH, + MULTI_SEAGALLOP_123, + MULTI_SEAGALLOP_V23, + MULTI_SEAGALLOP_V13, + MULTI_SEAGALLOP_V12, + MULTI_SEAGALLOP_VERMILION, + MULTI_JOIN_OR_LEAD, + MULTI_TRAINER_TOWER_MODE, + MULTI_FRONTIER_RULES, + MULTI_FRONTIER_PASS_INFO, + MULTI_FRONTIER_GAMBLER_BET, + MULTI_LEVEL_MODE, + MULTI_BATTLE_FACTORY_RULES, + MULTI_GO_ON_RECORD_REST_RETIRE, + MULTI_GO_ON_REST_RETIRE, + MULTI_GO_ON_RECORD_RETIRE, + MULTI_GO_ON_RETIRE, + MULTI_BATTLE_ARENA_RULES, + MULTI_BATTLE_DOME_RULES, + MULTI_TOURNEY_WITH_RECORD, + MULTI_TOURNEY_NO_RECORD, + MULTI_BATTLE_PALACE_RULES, + MULTI_BATTLE_PYRAMID_RULES, + MULTI_BATTLE_PIKE_RULES, + MULTI_FRONTIER_ITEM_CHOOSE, + MULTI_BATTLE_TOWER_RULES, + MULTI_BATTLE_TOWER_FEELINGS, + MULTI_LINK_LEADER, + MULTI_SATISFACTION, + + MULTI_NONE = 255, +}; + // Dynamic Multichoice Callbacks #define DYN_MULTICHOICE_CB_DEBUG 0 diff --git a/include/menu.h b/include/menu.h index 9bcf195e8..c42b38bfb 100644 --- a/include/menu.h +++ b/include/menu.h @@ -59,7 +59,7 @@ void ListMenuLoadStdPalAt(u8 palOffset, u8 palId); void BlitMenuInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y); // menu -s8 Menu_ProcessInputGridLayout(void); +s8 Menu_ProcessGridInput(void); u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos); void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs); void DestroyYesNoMenu(void); diff --git a/include/script_menu.h b/include/script_menu.h index 37554490b..286edb5f1 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -6,16 +6,14 @@ #include "menu.h" #include "constants/script_menu.h" -#define MULTI_B_PRESSED 127 - // The default size the stack for dynamic multichoice is initialized to // If you try to push an element when the stack is full, it will be reallocated -// With increasing capacity of MULTICHOICE_DYNAMIC_STACK_INC +// With increasing capacity of MULTI_DYNAMIC_STACK_INC -#define MULTICHOICE_DYNAMIC_STACK_SIZE 5 -#define MULTICHOICE_DYNAMIC_STACK_INC 5 +#define MULTI_DYNAMIC_STACK_SIZE 5 +#define MULTI_DYNAMIC_STACK_INC 5 -extern const u8 *const gStdStringPtrs[]; +extern const u8 *const gStdStrings[]; struct DynamicMultichoiceStack { @@ -24,34 +22,30 @@ struct DynamicMultichoiceStack struct ListMenuItem *elements; }; -void MultichoiceDynamic_InitStack(u32 capacity); -void MultichoiceDynamic_ReallocStack(u32 newCapacity); -bool32 MultichoiceDynamic_StackFull(void); bool32 MultichoiceDynamic_StackEmpty(void); -u32 MultichoiceDynamic_StackSize(void); -void MultichoiceDynamic_PushElement(struct ListMenuItem item); -struct ListMenuItem *MultichoiceDynamic_PopElement(void); -struct ListMenuItem *MultichoiceDynamic_PeekElement(void); -struct ListMenuItem *MultichoiceDynamic_PeekElementAt(u32 index); -void MultichoiceDynamic_DestroyStack(void); -bool8 ScriptMenu_MultichoiceDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u8 maxBeforeScroll, u32 initialRow, u32 callbackSet); -bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress); -bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 defaultChoice); -void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count); - -bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4); -bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5); -bool8 ScriptMenu_YesNo(u8 var1, u8 var2); -bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); -bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); -bool8 CreatePCMenu(void); -void ScriptMenu_DisplayPCStartupPrompt(void); -int ConvertPixelWidthToTileWidth(int width); - +bool32 MultichoiceDynamic_StackFull(void); +bool32 ScriptMenu_CreatePCMultichoice(void); +bool32 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, enum MultichoiceID multichoiceId, bool32 ignoreBPress, u8 defaultChoice); bool8 (*ScriptMenu_HidePokemonPic(void))(void); -void QL_DestroyAbortedDisplay(void); -void PicboxCancel(void); +bool8 ScriptMenu_Multichoice(u8 left, u8 top, enum MultichoiceID multichoiceId, bool8 ignoreBPress); +bool8 ScriptMenu_MultichoiceDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u8 maxBeforeScroll, u32 initialRow, u32 callbackSet); +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, enum MultichoiceID multichoiceId, bool8 ignoreBpress, u8 columnCount); +bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); +bool8 ScriptMenu_YesNo(u8 var1, u8 var2); +int ConvertPixelWidthToTileWidth(int width); int DisplayTextAndGetWidth(const u8 *str, int width); int ScriptMenu_AdjustLeftCoordFromWidth(int left, int width); +struct ListMenuItem *MultichoiceDynamic_PeekElement(void); +struct ListMenuItem *MultichoiceDynamic_PeekElementAt(u32 index); +struct ListMenuItem *MultichoiceDynamic_PopElement(void); +u32 MultichoiceDynamic_StackSize(void); +void DrawMultichoiceMenuInternal(u8 left, u8 top, enum MultichoiceID multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count); +void MultichoiceDynamic_DestroyStack(void); +void MultichoiceDynamic_InitStack(u32 capacity); +void MultichoiceDynamic_PushElement(struct ListMenuItem item); +void MultichoiceDynamic_ReallocStack(u32 newCapacity); +void PicboxCancel(void); +void QL_DestroyAbortedDisplay(void); +void ScriptMenu_DisplayPCStartupPrompt(void); #endif //GUARD_SCRIPT_MENU_H diff --git a/include/strings.h b/include/strings.h index 04e544c37..c905fed2a 100644 --- a/include/strings.h +++ b/include/strings.h @@ -14,11 +14,6 @@ extern const u8 gText_Lv50[]; extern const u8 gText_OpenLevel[]; extern const u8 gText_Mom[]; extern const u8 gText_Dad[]; -extern const u8 gText_Cool[]; -extern const u8 gText_Beauty[]; -extern const u8 gText_Cute[]; -extern const u8 gText_Smart[]; -extern const u8 gText_Tough[]; extern const u8 gText_Single[]; extern const u8 gText_Double[]; extern const u8 gText_Spicy2[]; @@ -26,7 +21,6 @@ extern const u8 gText_Dry2[]; extern const u8 gText_Sweet2[]; extern const u8 gText_Bitter2[]; extern const u8 gText_Sour2[]; -extern const u8 gText_Excellent[]; extern const u8 gText_VeryGood[]; extern const u8 gText_Good[]; extern const u8 gText_SoSo[]; @@ -84,7 +78,6 @@ extern const u8 gText_Confirm3[]; extern const u8 gText_Cancel4[]; extern const u8 gText_IsThisTheCorrectTime[]; extern const u8 gText_PkmnFainted_FldPsn[]; -extern const u8 gText_Coins[]; extern const u8 gText_EggNickname[]; extern const u8 gText_MenuPokemon[]; @@ -638,7 +631,6 @@ extern const u8 gText_MenuSave[]; extern const u8 gText_MenuOption[]; extern const u8 gText_MenuExit[]; extern const u8 gText_MenuRetire[]; -extern const u8 gText_MenuRest[]; extern const u8 gText_MenuSafariStats[]; extern const u8 gText_MenuDexNav[]; extern const u8 gText_Floor1[]; @@ -707,10 +699,6 @@ extern const u8 gText_SoulBadge[]; extern const u8 gText_MarshBadge[]; extern const u8 gText_VolcanoBadge[]; extern const u8 gText_EarthBadge[]; -extern const u8 gText_LinkedGamePlay[]; -extern const u8 gText_DirectCorner[]; -extern const u8 gText_UnionRoom[]; -extern const u8 gOtherText_Quit[]; extern const u8 gText_Energypowder_50[]; extern const u8 gText_EnergyRoot_80[]; extern const u8 gText_HealPowder_50[]; @@ -724,11 +712,10 @@ extern const u8 gText_HpUp_1000[]; extern const u8 gText_PpUp_3000[]; // script_menu -extern const u8 Text_AccessWhichPC[]; +extern const u8 gText_WhichPCShouldBeAccessed[]; extern const u8 gText_SomeoneSPc[]; extern const u8 gText_BillSPc[]; extern const u8 gText_SPc[]; -extern const u8 gText_HallOfFame_2[]; extern const u8 gText_LogOff[]; extern const u8 gText_ProfOakSPc[]; extern const u8 gText_Other[]; @@ -737,10 +724,7 @@ extern const u8 gOtherText_Knockout[]; extern const u8 gOtherText_Mixed[]; extern const u8 gOtherText_Single[]; extern const u8 gText_Info[]; -extern const u8 gText_Eggs[]; extern const u8 gText_HallOfFame[]; -extern const u8 gText_Victories[]; -extern const u8 gText_Quit[]; extern const u8 gText_Psn[]; extern const u8 gText_Par[]; extern const u8 gText_Slp[]; @@ -751,116 +735,14 @@ extern const u8 gText_No[]; extern const u8 gText_SingleBattle[]; extern const u8 gText_DoubleBattle[]; extern const u8 gText_MultiBattle[]; -extern const u8 gText_MakeAChallenge[]; -extern const u8 gText_Info_2[]; -extern const u8 gText_FreshWater_200[]; -extern const u8 gText_SodaPop_300[]; -extern const u8 gText_Lemonade_350[]; -extern const u8 gText_50Coins_1000[]; -extern const u8 gText_500Coins_10000[]; -extern const u8 gText_Excellent[]; -extern const u8 gText_NotSoBad[]; -extern const u8 gText_RedShard[]; -extern const u8 gText_YellowShard[]; -extern const u8 gText_BlueShard[]; -extern const u8 gText_GreenShard[]; -extern const u8 gText_Right[]; -extern const u8 gText_Left[]; -extern const u8 gText_Tm13_4000Coins[]; -extern const u8 gText_Tm23_3500Coins[]; -extern const u8 gText_Tm24_4000Coins[]; -extern const u8 gText_Tm30_4500Coins[]; -extern const u8 gText_Tm35_4000Coins[]; -extern const u8 gText_1F_2[]; -extern const u8 gText_2F_2[]; -extern const u8 gText_3F_2[]; -extern const u8 gText_4F_2[]; -extern const u8 gText_5F_2[]; -extern const u8 gText_Normal[]; -extern const u8 gText_Black[]; extern const u8 gText_Pink[]; -extern const u8 gText_Sepia[]; -extern const u8 gText_Eevee[]; -extern const u8 gText_Flareon[]; -extern const u8 gText_Jolteon[]; -extern const u8 gText_Vaporeon[]; -extern const u8 gText_QuitLooking[]; -extern const u8 gText_FreshWater[]; -extern const u8 gText_SodaPop[]; -extern const u8 gText_Lemonade[]; -extern const u8 gText_Bicycle_Price[]; -extern const u8 gText_NoThanks[]; -extern const u8 gText_Abra_180Coins[]; -extern const u8 gText_Clefairy_500Coins[]; -extern const u8 gText_Dratini_2800Coins[]; -extern const u8 gText_Scyther_5500Coins[]; -extern const u8 gText_Porygon_9999Coins[]; -extern const u8 gText_Abra_120Coins[]; -extern const u8 gText_Clefairy_750Coins[]; -extern const u8 gText_Pinsir_2500Coins[]; -extern const u8 gText_Dratini_4600Coins[]; -extern const u8 gText_Porygon_6500Coins[]; -extern const u8 gText_NoThanks_2[]; -extern const u8 gText_HelixFossil[]; -extern const u8 gText_DomeFossil[]; -extern const u8 gText_OldAmber[]; -extern const u8 gText_TradeCenter[]; -extern const u8 gText_Colosseum[]; -extern const u8 gText_GameLinkCable[]; -extern const u8 gText_Wireless[]; extern const u8 gText_OneIsland[]; extern const u8 gText_TwoIsland[]; extern const u8 gText_ThreeIsland[]; extern const u8 gText_Vermilion[]; -extern const u8 gText_Colosseum_2[]; extern const u8 gText_BerryCrush[]; -extern const u8 gText_EmptyLinkService1[]; -extern const u8 gText_EmptyLinkService2[]; -extern const u8 gText_RecordCorner[]; extern const u8 gText_PokemonJump[]; -extern const u8 gText_DodrioBerryPicking[]; -extern const u8 gText_2Tinymushrooms[]; -extern const u8 gText_1BigMushroom[]; -extern const u8 gText_SeviiIslands[]; -extern const u8 gText_NavelRock[]; -extern const u8 gText_BirthIsland[]; -extern const u8 gText_MiracleSeed_1000Coins[]; -extern const u8 gText_Charcoal_1000Coins[]; -extern const u8 gText_MysticWater_1000Coins[]; -extern const u8 gText_YellowFlute_1600Coins[]; -extern const u8 gText_SmokeBall_800Coins[]; -extern const u8 gText_Multichoice_Empty1[]; -extern const u8 gText_Multichoice_Empty2[]; -extern const u8 gText_BecomeLeader[]; -extern const u8 gText_JoinGroup[]; -extern const u8 gText_Cool_2[]; -extern const u8 gText_Beauty_2[]; -extern const u8 gText_Cute_2[]; -extern const u8 gText_Smart_2[]; -extern const u8 gText_Tough_2[]; -extern const u8 gText_Items[]; -extern const u8 gText_KeyItems[]; -extern const u8 gText_PokeBalls[]; -extern const u8 gText_TMsAndHMs[]; -extern const u8 gText_Berries[]; -extern const u8 gText_Boulderbadge[]; -extern const u8 gText_Cascadebadge[]; -extern const u8 gText_Thunderbadge[]; -extern const u8 gText_Rainbowbadge[]; -extern const u8 gText_Soulbadge[]; -extern const u8 gText_Marshbadge[]; -extern const u8 gText_Volcanobadge[]; -extern const u8 gText_Earthbadge[]; -extern const u8 gText_Coins_2[]; -extern const u8 gText_ItemsPocket[]; -extern const u8 gText_KeyItemsPocket[]; -extern const u8 gText_PokeBallsPocket[]; -extern const u8 gText_TmCase[]; -extern const u8 gText_BerryPouch_2[]; -extern const u8 gText_FourIsland[]; -extern const u8 gText_FiveIsland[]; -extern const u8 gText_SixIsland[]; -extern const u8 gText_SevenIsland[]; +extern const u8 gText_Coins[]; // trade extern const u8 gText_IsThisTradeOkay[]; @@ -940,9 +822,6 @@ extern const u8 gText_GiveUpTryingToTeachNewMove[]; // pokemon_size_record extern const u8 gText_DecimalPoint[]; -// map_name_popup -extern const u8 gText_Rooftop2[]; - // option menu extern const u8 gText_TextSpeed[]; extern const u8 gText_BattleScene[]; @@ -1067,7 +946,6 @@ extern const u8 gText_Var1sTrainerCard[]; extern const u8 gText_HallOfFameDebut[]; extern const u8 gText_WinLossRatio[]; extern const u8 gText_PokemonTrades[]; -extern const u8 gText_BerryCrushes[]; extern const u8 gText_UnionRoomTradesBattles[]; extern const u8 gText_LinkBattles[]; extern const u8 gText_LinkCableBattles[]; @@ -1236,7 +1114,6 @@ extern const u8 gText_TimesPerSec[]; extern const u8 gText_Var1Percent[]; extern const u8 gText_PressesRankings[]; extern const u8 gText_CrushingResults[]; -extern const u8 gText_BerryCrush2[]; extern const u8 gText_PressingSpeedRankings[]; extern const u8 gText_Var1Players[]; extern const u8 gText_NeatnessRankings[]; @@ -1457,7 +1334,6 @@ extern const u8 gPCText_Take[]; extern const u8 gPCText_Give[]; extern const u8 gPCText_Switch[]; extern const u8 gPCText_Bag[]; -extern const u8 gPCText_Info[]; extern const u8 gPCText_Scenery1[]; extern const u8 gPCText_Scenery2[]; extern const u8 gPCText_Scenery3[]; @@ -1843,22 +1719,7 @@ extern const u8 gText_PkmnForSwap[]; extern const u8 gText_SamePkmnInPartyAlready[]; extern const u8 gText_Cancel3[]; -extern const u8 gText_BattleRules[]; -extern const u8 gText_JudgeMind[]; -extern const u8 gText_JudgeSkill[]; -extern const u8 gText_JudgeBody[]; -extern const u8 gText_BasicRules[]; -extern const u8 gText_SwapPartners[]; -extern const u8 gText_SwapNumber[]; -extern const u8 gText_SwapNotes[]; -extern const u8 gText_GoOn[]; -extern const u8 gText_Record2[]; extern const u8 gText_Rest[]; -extern const u8 gText_Retire[]; - -extern const u8 gText_Opponent[]; -extern const u8 gText_Tourney_Tree[]; -extern const u8 gText_ReadyToStart[]; // Frontier records extern const u8 gText_WinStreak[]; @@ -1913,11 +1774,6 @@ extern const u8 gText_Body[]; extern const u8 gText_Judgment[]; extern const u8 gText_BattleTrainers[]; -extern const u8 gText_BattleBasics[]; -extern const u8 gText_PokemonNature[]; -extern const u8 gText_PokemonMoves[]; -extern const u8 gText_Underpowered[]; -extern const u8 gText_WhenInDanger[]; extern const u8 *const gPyramidBagMenu_ReturnToStrings[]; extern const u8 gText_ReturnToVar1[]; diff --git a/include/union_room_message.h b/include/union_room_message.h index 961b25bc1..7358a2c3d 100644 --- a/include/union_room_message.h +++ b/include/union_room_message.h @@ -89,18 +89,12 @@ extern const u8 gText_UR_Chat2[]; extern const u8 gText_UR_Greetings[]; extern const u8 gText_UR_Exit[]; extern const u8 gText_UR_Exit2[]; -extern const u8 gText_UR_Info[]; extern const u8 gText_UR_NameWantedOfferLv[]; -extern const u8 gText_UR_SingleBattle[]; -extern const u8 gText_UR_DoubleBattle[]; -extern const u8 gText_UR_MultiBattle[]; extern const u8 gText_UR_PokemonTrades[]; extern const u8 gText_UR_Chat[]; extern const u8 gText_UR_WonderCards[]; extern const u8 gText_UR_WonderNews[]; extern const u8 gText_UR_Cards[]; -extern const u8 gText_UR_PokemonJump[]; -extern const u8 gText_UR_BerryCrush[]; extern const u8 gText_UR_BerryPicking[]; extern const u8 gText_UR_Search[]; extern const u8 gText_UR_SpinTrade[]; diff --git a/rom.sha1 b/rom.sha1 index 9632e3b90..4d305c397 100644 --- a/rom.sha1 +++ b/rom.sha1 @@ -1 +1 @@ -0e33092e59da13dd06aa0ab1ef4dbb6bba09f69a pokefirered.gba +49fdbe54f6210557e18ca3b3df0f6fb9bdf756ac pokefirered.gba diff --git a/src/berry_crush.c b/src/berry_crush.c index bb98735da..2cc55e1d8 100644 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -3109,7 +3109,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId) DrawStdFrameWithCustomTileAndPalette(tWindowId, 0, 0x21D, 13); break; case 1: - xPos = 96 - GetStringWidth(FONT_NORMAL, gText_BerryCrush2, -1) / 2u; + xPos = 96 - GetStringWidth(FONT_NORMAL, gText_BerryCrush, -1) / 2u; AddTextPrinterParameterized3( tWindowId, FONT_NORMAL, @@ -3117,7 +3117,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId) 2, sBerryCrushTextColorTable[COLORID_BLUE], 0, - gText_BerryCrush2 + gText_BerryCrush ); xPos = 96 - GetStringWidth(FONT_NORMAL, gText_PressingSpeedRankings, -1) / 2u; AddTextPrinterParameterized3( diff --git a/src/coins.c b/src/coins.c index 9fc898770..8a7d0341e 100644 --- a/src/coins.c +++ b/src/coins.c @@ -8,6 +8,8 @@ EWRAM_DATA static u8 sCoinsWindowId = 0; +const u8 sText_XCoins[] = _("{STR_VAR_1} COINS"); + u16 GetCoins(void) { return gSaveBlock1Ptr->coins; @@ -55,7 +57,7 @@ void PrintCoinsString(u32 coinAmount) int width; ConvertIntToDecimalStringN(gStringVar1, coinAmount, STR_CONV_MODE_RIGHT_ALIGN, 4); - StringExpandPlaceholders(gStringVar4, gText_Coins); + StringExpandPlaceholders(gStringVar4, sText_XCoins); width = GetStringWidth(FONT_SMALL, gStringVar4, 0); windowId = sCoinsWindowId; AddTextPrinterParameterized(windowId, FONT_SMALL, gStringVar4, 64 - width, 0xC, 0, NULL); @@ -71,7 +73,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y) PutWindowTilemap(sCoinsWindowId); LoadStdWindowGfx(sCoinsWindowId, 0x21D, BG_PLTT_ID(13)); DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x21D, 13); - AddTextPrinterParameterized(sCoinsWindowId, FONT_NORMAL, gText_Coins_2, 0, 0, 0xFF, 0); + AddTextPrinterParameterized(sCoinsWindowId, FONT_NORMAL, gText_Coins, 0, 0, 0xFF, 0); PrintCoinsString(coinAmount); } diff --git a/src/data/easy_chat/easy_chat_group_events.h b/src/data/easy_chat/easy_chat_group_events.h index 30151b312..c6ebf966d 100644 --- a/src/data/easy_chat/easy_chat_group_events.h +++ b/src/data/easy_chat/easy_chat_group_events.h @@ -8,7 +8,6 @@ static const u8 sEasyChatWord_Mc[] = _("MC"); static const u8 sEasyChatWord_Judge[] = _("JUDGE"); static const u8 sEasyChatWord_Super[] = _("SUPER"); static const u8 sEasyChatWord_Stage[] = _("STAGE"); -static const u8 sEasyChatWord_HallOfFame[] = _("HALL OF FAME"); static const u8 sEasyChatWord_Evolution[] = _("EVOLUTION"); static const u8 sEasyChatWord_Hyper[] = _("HYPER"); static const u8 sEasyChatWord_BattleTower[] = _("BATTLE TOWER"); @@ -75,7 +74,7 @@ static const struct EasyChatWordInfo sEasyChatGroup_Events[] = { .enabled = TRUE }, { - .text = sEasyChatWord_HallOfFame, + .text = gText_HallOfFame, .alphabeticalOrder = 10, .enabled = TRUE }, diff --git a/src/data/union_room.h b/src/data/union_room.h index 1da1cadf5..175cb67af 100644 --- a/src/data/union_room.h +++ b/src/data/union_room.h @@ -1,15 +1,15 @@ static const u8 *const sLinkGroupActivityNameTexts[] = { [ACTIVITY_NONE] = gText_UR_EmptyString, - [ACTIVITY_BATTLE_SINGLE] = gText_UR_SingleBattle, - [ACTIVITY_BATTLE_DOUBLE] = gText_UR_DoubleBattle, - [ACTIVITY_BATTLE_MULTI] = gText_UR_MultiBattle, + [ACTIVITY_BATTLE_SINGLE] = gText_SingleBattle, + [ACTIVITY_BATTLE_DOUBLE] = gText_DoubleBattle, + [ACTIVITY_BATTLE_MULTI] = gText_MultiBattle, [ACTIVITY_TRADE] = gText_UR_PokemonTrades, [ACTIVITY_CHAT] = gText_UR_Chat, [ACTIVITY_WONDER_CARD_DUP] = gText_UR_WonderCards, [ACTIVITY_WONDER_NEWS_DUP] = gText_UR_WonderNews, [ACTIVITY_CARD] = gText_UR_Cards, - [ACTIVITY_POKEMON_JUMP] = gText_UR_PokemonJump, - [ACTIVITY_BERRY_CRUSH] = gText_UR_BerryCrush, + [ACTIVITY_POKEMON_JUMP] = gText_PokemonJump, + [ACTIVITY_BERRY_CRUSH] = gText_BerryCrush, [ACTIVITY_BERRY_PICK] = gText_UR_BerryPicking, [ACTIVITY_SEARCH] = gText_UR_Search, [ACTIVITY_SPIN_TRADE] = gText_UR_SpinTrade, @@ -216,7 +216,7 @@ static const struct WindowTemplate sWindowTemplate_RegisterForTrade = { static const struct ListMenuItem sListMenuItems_RegisterForTrade[] = { {gText_Register, 1}, - {gText_UR_Info, 2}, + {gText_Info, 2}, {gText_UR_Exit, 3} }; diff --git a/src/field_specials.c b/src/field_specials.c index c8bf57958..684449d7c 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -53,6 +53,7 @@ #include "constants/battle_pyramid.h" #include "constants/battle_tower.h" #include "constants/event_objects.h" +#include "constants/field_specials.h" #include "constants/items.h" #include "constants/maps.h" #include "constants/menu.h" @@ -129,6 +130,144 @@ static u8 *const sStringVarPtrs[] = { gStringVar3 }; +static const u8 *const sScrollMultiLabels_Badges[] = +{ + gText_BoulderBadge, + gText_CascadeBadge, + gText_ThunderBadge, + gText_RainbowBadge, + gText_SoulBadge, + gText_MarshBadge, + gText_VolcanoBadge, + gText_EarthBadge, + gOtherText_Exit, +}; + +static const u8 *const sScrollMultiLabels_SilphCoFloors[] = +{ + gText_11F, + gText_10F, + gText_9F, + gText_8F, + gText_7F, + gText_6F, + gText_5F, + gText_4F, + gText_3F, + gText_2F, + gText_1F, + gOtherText_Exit, +}; + +static const u8 *const sScrollMultiLabels_BerryPowder[] = +{ + gText_Energypowder_50, + gText_EnergyRoot_80, + gText_HealPowder_50, + gText_RevivalHerb_300, + gText_Protein_1000, + gText_Iron_1000, + gText_Carbos_1000, + gText_Calcium_1000, + gText_Zinc_1000, + gText_HpUp_1000, + gText_PpUp_3000, + gOtherText_Exit, +}; + +static const u8 *const sScrollMultiLabels_BFReceptionist[] = +{ + gText_BattleTower2, + gText_BattleDome, + gText_BattlePalace, + gText_BattleArena, + gText_BattleFactory, + gText_BattlePike, + gText_BattlePyramid, + gText_RankingHall, + gText_ExchangeService, + gText_Exit +}; + +static const u8 *const sScrollMultiLabels_BFMoveTutor1[] = +{ + COMPOUND_STRING("SOFTBOILED{CLEAR_TO 0x4E}16BP"), + COMPOUND_STRING("SEISMIC TOSS{CLEAR_TO 0x4E}24BP"), + COMPOUND_STRING("DREAM EATER{CLEAR_TO 0x4E}24BP"), + COMPOUND_STRING("MEGA PUNCH{CLEAR_TO 0x4E}24BP"), + COMPOUND_STRING("MEGA KICK{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("BODY SLAM{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("ROCK SLIDE{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("COUNTER{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("THUNDER WAVE{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("SWORDS DANCE{CLEAR_TO 0x4E}48BP"), + gText_Exit +}; + +static const u8 *const sScrollMultiLabels_BFMoveTutor2[] = +{ + COMPOUND_STRING("DEFENSE CURL{CLEAR_TO 0x4E}16BP"), + COMPOUND_STRING("SNORE{CLEAR_TO 0x4E}24BP"), + COMPOUND_STRING("MUD-SLAP{CLEAR_TO 0x4E}24BP"), + COMPOUND_STRING("SWIFT{CLEAR_TO 0x4E}24BP"), + COMPOUND_STRING("ICY WIND{CLEAR_TO 0x4E}24BP"), + COMPOUND_STRING("ENDURE{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("PSYCH UP{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("ICE PUNCH{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("THUNDERPUNCH{CLEAR_TO 0x4E}48BP"), + COMPOUND_STRING("FIRE PUNCH{CLEAR_TO 0x4E}48BP"), + gText_Exit +}; + +static const u8 *const sScrollMultiLabels_BFDecorVendor1[] = +{ + gText_Exit +}; + +static const u8 *const sScrollMultiLabels_BFDecorVendor2[] = +{ + gText_Exit +}; + +static const u8 *const sScrollMultiLabels_BFVitaminVendor[] = +{ + COMPOUND_STRING("PROTEIN{CLEAR_TO 0x64}1BP"), + COMPOUND_STRING("CALCIUM{CLEAR_TO 0x64}1BP"), + COMPOUND_STRING("IRON{CLEAR_TO 0x64}1BP"), + COMPOUND_STRING("ZINC{CLEAR_TO 0x64}1BP"), + COMPOUND_STRING("CARBOS{CLEAR_TO 0x64}1BP"), + COMPOUND_STRING("HP UP{CLEAR_TO 0x64}1BP"), + gText_Exit +}; + +static const u8 *const sScrollMultiLabels_BFItemVendor[] = +{ + COMPOUND_STRING("LEFTOVERS{CLEAR_TO 0x5E}48BP"), + COMPOUND_STRING("WHITE HERB{CLEAR_TO 0x5E}48BP"), + COMPOUND_STRING("QUICK CLAW{CLEAR_TO 0x5E}48BP"), + COMPOUND_STRING("MENTAL HERB{CLEAR_TO 0x5E}48BP"), + COMPOUND_STRING("BRIGHTPOWDER{CLEAR_TO 0x5E}64BP"), + COMPOUND_STRING("CHOICE BAND{CLEAR_TO 0x5E}64BP"), + COMPOUND_STRING("KING'S ROCK{CLEAR_TO 0x5E}64BP"), + COMPOUND_STRING("FOCUS BAND{CLEAR_TO 0x5E}64BP"), + COMPOUND_STRING("SCOPE LENS{CLEAR_TO 0x5E}64BP"), + gText_Exit +}; + +static const u8 *const *sListMenuLabels[] = +{ + [SCROLL_MULTI_BADGES] = sScrollMultiLabels_Badges, + [SCROLL_MULTI_SILPHCO_FLOORS] = sScrollMultiLabels_SilphCoFloors, + [SCROLL_MULTI_BERRY_POWDER] = sScrollMultiLabels_BerryPowder, + [SCROLL_MULTI_BF_RECEPTIONIST] = sScrollMultiLabels_BFReceptionist, + [SCROLL_MULTI_BF_MOVE_TUTOR_1] = sScrollMultiLabels_BFMoveTutor1, + [SCROLL_MULTI_BF_MOVE_TUTOR_2] = sScrollMultiLabels_BFMoveTutor2, + [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1] = sScrollMultiLabels_BFDecorVendor1, + [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2] = sScrollMultiLabels_BFDecorVendor2, + [SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR] = sScrollMultiLabels_BFVitaminVendor, + [SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR] = sScrollMultiLabels_BFItemVendor, +}; + void ShowDiploma(void) { QuestLog_CutRecording(); @@ -1272,92 +1411,56 @@ void ShowScrollableMultichoice(void) switch ((enum ScrollMulti) gSpecialVar_0x8004) { - case LISTMENU_BADGES: - task->data[0] = 4; - task->data[1] = 9; - task->data[2] = 1; - task->data[3] = 1; - task->data[4] = 12; - task->data[5] = 7; - task->data[6] = 1; - task->data[15] = taskId; - break; - case LISTMENU_SILPHCO_FLOORS: - task->data[0] = 7; - task->data[1] = 12; - task->data[2] = 1; - task->data[3] = 1; - task->data[4] = 8; - task->data[5] = 12; - task->data[6] = 0; - task->data[15] = taskId; - task->data[7] = sElevatorScroll; - task->data[8] = sElevatorCursorPos; - break; - case LISTMENU_ROCKET_HIDEOUT_FLOORS: // Multichoice used instead - task->data[0] = 4; - task->data[1] = 4; - task->data[2] = 1; - task->data[3] = 1; - task->data[4] = 8; - task->data[5] = 8; - task->data[6] = 0; - task->data[15] = taskId; - break; - case LISTMENU_DEPT_STORE_FLOORS: // Multichoice used instead - task->data[0] = 4; - task->data[1] = 6; - task->data[2] = 1; - task->data[3] = 1; - task->data[4] = 8; - task->data[5] = 8; - task->data[6] = 0; - task->data[15] = taskId; - break; - case LISTMENU_WIRELESS_LECTURE_HEADERS: // Multichoice used instead - task->data[0] = 4; - task->data[1] = 4; - task->data[2] = 1; - task->data[3] = 1; - task->data[4] = 17; - task->data[5] = 8; - task->data[6] = 1; - task->data[15] = taskId; - break; - case LISTMENU_BERRY_POWDER: - task->data[0] = 7; - task->data[1] = 12; - task->data[2] = 16; - task->data[3] = 1; - task->data[4] = 17; - task->data[5] = 12; - task->data[6] = 0; - task->data[15] = taskId; - break; - case LISTMENU_TRAINER_TOWER_FLOORS: // Mulitchoice used instead - task->data[0] = 3; - task->data[1] = 3; - task->data[2] = 1; - task->data[3] = 1; - task->data[4] = 8; - task->data[5] = 6; - task->data[6] = 0; - task->data[15] = taskId; - break; - case SCROLL_MULTI_BF_RECEPTIONIST: - task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN - 1; - task->tNumItems = 8; + case SCROLL_MULTI_BADGES: + task->tMaxItemsOnScreen = 4; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_Badges); task->tLeft = 1; task->tTop = 1; - task->tWidth = 9; - task->tHeight = 10; + task->tWidth = 12; + task->tHeight = 7; + task->tKeepOpenAfterSelect = TRUE; + task->tTaskId = taskId; + break; + case SCROLL_MULTI_SILPHCO_FLOORS: + task->tMaxItemsOnScreen = 7; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_SilphCoFloors); + task->tLeft = 1; + task->tTop = 1; + task->tWidth = 8; + task->tHeight = 12; + task->tKeepOpenAfterSelect = FALSE; + task->tTaskId = taskId; + task->tScrollOffset = sElevatorScroll; + task->tSelectedRow = sElevatorCursorPos; + break; + case SCROLL_MULTI_BERRY_POWDER: + task->tMaxItemsOnScreen = 7; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BerryPowder); + task->tLeft = 16; + task->tTop = 1; + task->tWidth = 17; + task->tHeight = 12; + task->tKeepOpenAfterSelect = FALSE; + task->tTaskId = taskId; + break; + case SCROLL_MULTI_BF_RECEPTIONIST: + task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BFReceptionist); + task->tLeft = 17; + task->tTop = 1; + task->tWidth = 11; + task->tHeight = 12; task->tKeepOpenAfterSelect = FALSE; task->tTaskId = taskId; break; case SCROLL_MULTI_BF_MOVE_TUTOR_1: case SCROLL_MULTI_BF_MOVE_TUTOR_2: task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN; - task->tNumItems = 11; + if (task->tScrollMultiId == SCROLL_MULTI_BF_MOVE_TUTOR_1) + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BFMoveTutor1); + else + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BFMoveTutor2); + task->tLeft = 15; task->tTop = 1; task->tWidth = 14; @@ -1367,8 +1470,7 @@ void ShowScrollableMultichoice(void) break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1: task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN; - task->tNumItems = 1; - // task->tNumItems = 11; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BFDecorVendor1); task->tLeft = 14; task->tTop = 1; task->tWidth = 15; @@ -1378,8 +1480,7 @@ void ShowScrollableMultichoice(void) break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2: task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN; - task->tNumItems = 1; - // task->tNumItems = 6; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BFDecorVendor2); task->tLeft = 14; task->tTop = 1; task->tWidth = 15; @@ -1389,7 +1490,7 @@ void ShowScrollableMultichoice(void) break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR: task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN; - task->tNumItems = 7; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BFVitaminVendor); task->tLeft = 14; task->tTop = 1; task->tWidth = 15; @@ -1399,7 +1500,7 @@ void ShowScrollableMultichoice(void) break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR: task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN; - task->tNumItems = 10; + task->tNumItems = ARRAY_COUNT(sScrollMultiLabels_BFItemVendor); task->tLeft = 14; task->tTop = 1; task->tWidth = 15; @@ -1410,173 +1511,12 @@ void ShowScrollableMultichoice(void) case SCROLL_MULTI_NONE: break; default: - gSpecialVar_Result = 0x7F; + gSpecialVar_Result = MULTI_B_PRESSED; DestroyTask(taskId); break; } } -static const u8 *const sListMenuLabels[][12] = { - [LISTMENU_BADGES] = - { - gText_BoulderBadge, - gText_CascadeBadge, - gText_ThunderBadge, - gText_RainbowBadge, - gText_SoulBadge, - gText_MarshBadge, - gText_VolcanoBadge, - gText_EarthBadge, - gOtherText_Exit, - }, - [LISTMENU_SILPHCO_FLOORS] = - { - gText_11F, - gText_10F, - gText_9F, - gText_8F, - gText_7F, - gText_6F, - gText_5F, - gText_4F, - gText_3F, - gText_2F, - gText_1F, - gOtherText_Exit, - }, - [LISTMENU_ROCKET_HIDEOUT_FLOORS] = // Unncessary, MULTICHOICE_ROCKET_HIDEOUT_ELEVATOR is used instead - { - gText_B1F, - gText_B2F, - gText_B4F, - gOtherText_Exit, - }, - [LISTMENU_DEPT_STORE_FLOORS] = // Unncessary, MULTICHOICE_DEPT_STORE_ELEVATOR is used instead - { - gText_5F, - gText_4F, - gText_3F, - gText_2F, - gText_1F, - gOtherText_Exit, - }, - [LISTMENU_WIRELESS_LECTURE_HEADERS] = // Unnecessary, MULTICHOICE_LINKED_DIRECT_UNION is used instead - { - gText_LinkedGamePlay, - gText_DirectCorner, - gText_UnionRoom, - gOtherText_Quit, - }, - [LISTMENU_BERRY_POWDER] = - { - gText_Energypowder_50, - gText_EnergyRoot_80, - gText_HealPowder_50, - gText_RevivalHerb_300, - gText_Protein_1000, - gText_Iron_1000, - gText_Carbos_1000, - gText_Calcium_1000, - gText_Zinc_1000, - gText_HpUp_1000, - gText_PpUp_3000, - gOtherText_Exit, - }, - [LISTMENU_TRAINER_TOWER_FLOORS] = // Unnecessary, MULTICHOICE_ROOFTOP_B1F is used instead - { - gText_Rooftop, - gText_B1F, - gOtherText_Exit, - }, - [SCROLL_MULTI_BF_RECEPTIONIST] = - { - gText_BattleTower2, - gText_BattleDome, - gText_BattlePalace, - gText_BattleArena, - gText_BattleFactory, - gText_BattlePike, - gText_BattlePyramid, - gText_RankingHall, - gText_ExchangeService, - gText_Exit - }, - [SCROLL_MULTI_BF_MOVE_TUTOR_1] = - { - COMPOUND_STRING("SOFTBOILED{CLEAR_TO 0x4E}16BP"), - COMPOUND_STRING("SEISMIC TOSS{CLEAR_TO 0x4E}24BP"), - COMPOUND_STRING("DREAM EATER{CLEAR_TO 0x4E}24BP"), - COMPOUND_STRING("MEGA PUNCH{CLEAR_TO 0x4E}24BP"), - COMPOUND_STRING("MEGA KICK{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("BODY SLAM{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("ROCK SLIDE{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("COUNTER{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("THUNDER WAVE{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("SWORDS DANCE{CLEAR_TO 0x4E}48BP"), - gText_Exit - }, - [SCROLL_MULTI_BF_MOVE_TUTOR_2] = - { - COMPOUND_STRING("DEFENSE CURL{CLEAR_TO 0x4E}16BP"), - COMPOUND_STRING("SNORE{CLEAR_TO 0x4E}24BP"), - COMPOUND_STRING("MUD-SLAP{CLEAR_TO 0x4E}24BP"), - COMPOUND_STRING("SWIFT{CLEAR_TO 0x4E}24BP"), - COMPOUND_STRING("ICY WIND{CLEAR_TO 0x4E}24BP"), - COMPOUND_STRING("ENDURE{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("PSYCH UP{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("ICE PUNCH{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("THUNDERPUNCH{CLEAR_TO 0x4E}48BP"), - COMPOUND_STRING("FIRE PUNCH{CLEAR_TO 0x4E}48BP"), - gText_Exit - }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1] = - { - // COMPOUND_STRING("KISS POSTER{CLEAR_TO 0x5E}16BP"), - // COMPOUND_STRING("KISS CUSHION{CLEAR_TO 0x5E}32BP"), - // COMPOUND_STRING("SMOOCHUM DOLL{CLEAR_TO 0x5E}32BP"), - // COMPOUND_STRING("TOGEPI DOLL{CLEAR_TO 0x5E}48BP"), - // COMPOUND_STRING("MEOWTH DOLL{CLEAR_TO 0x5E}48BP"), - // COMPOUND_STRING("CLEFAIRY DOLL{CLEAR_TO 0x5E}48BP"), - // COMPOUND_STRING("DITTO DOLL{CLEAR_TO 0x5E}48BP"), - // COMPOUND_STRING("CYNDAQUIL DOLL{CLEAR_TO 0x5E}80BP"), - // COMPOUND_STRING("CHIKORITA DOLL{CLEAR_TO 0x5E}80BP"), - // COMPOUND_STRING("TOTODILE DOLL{CLEAR_TO 0x5E}80BP"), - gText_Exit - }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2] = - { - // COMPOUND_STRING("LAPRAS DOLL{CLEAR_TO 0x58}128BP"), - // COMPOUND_STRING("SNORLAX DOLL{CLEAR_TO 0x58}128BP"), - // COMPOUND_STRING("VENUSAUR DOLL{CLEAR_TO 0x58}256BP"), - // COMPOUND_STRING("CHARIZARD DOLL{CLEAR_TO 0x58}256BP"), - // COMPOUND_STRING("BLASTOISE DOLL{CLEAR_TO 0x58}256BP"), - gText_Exit - }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR] = - { - COMPOUND_STRING("PROTEIN{CLEAR_TO 0x64}1BP"), - COMPOUND_STRING("CALCIUM{CLEAR_TO 0x64}1BP"), - COMPOUND_STRING("IRON{CLEAR_TO 0x64}1BP"), - COMPOUND_STRING("ZINC{CLEAR_TO 0x64}1BP"), - COMPOUND_STRING("CARBOS{CLEAR_TO 0x64}1BP"), - COMPOUND_STRING("HP UP{CLEAR_TO 0x64}1BP"), - gText_Exit - }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR] = - { - COMPOUND_STRING("LEFTOVERS{CLEAR_TO 0x5E}48BP"), - COMPOUND_STRING("WHITE HERB{CLEAR_TO 0x5E}48BP"), - COMPOUND_STRING("QUICK CLAW{CLEAR_TO 0x5E}48BP"), - COMPOUND_STRING("MENTAL HERB{CLEAR_TO 0x5E}48BP"), - COMPOUND_STRING("BRIGHTPOWDER{CLEAR_TO 0x5E}64BP"), - COMPOUND_STRING("CHOICE BAND{CLEAR_TO 0x5E}64BP"), - COMPOUND_STRING("KING'S ROCK{CLEAR_TO 0x5E}64BP"), - COMPOUND_STRING("FOCUS BAND{CLEAR_TO 0x5E}64BP"), - COMPOUND_STRING("SCOPE LENS{CLEAR_TO 0x5E}64BP"), - gText_Exit - }, -}; - static void Task_CreateScriptListMenu(u8 taskId) { struct WindowTemplate template; @@ -1586,16 +1526,16 @@ static void Task_CreateScriptListMenu(u8 taskId) struct Task *task = &gTasks[taskId]; u8 windowId; LockPlayerFieldControls(); - if (gSpecialVar_0x8004 == LISTMENU_SILPHCO_FLOORS) + if (gSpecialVar_0x8004 == SCROLL_MULTI_SILPHCO_FLOORS) gScrollableMultichoice_ScrollOffset = sElevatorScroll; else gScrollableMultichoice_ScrollOffset = 0; FillFrontierExchangeCornerWindowAndItemIcon(task->tScrollMultiId, 0); ShowBattleFrontierTutorWindow(task->tScrollMultiId, 0); - sListMenuItems = AllocZeroed(task->data[1] * sizeof(struct ListMenuItem)); + sListMenuItems = AllocZeroed(task->tNumItems * sizeof(struct ListMenuItem)); InitScrollableMultichoice(); mwidth = 0; - for (i = 0; i < task->data[1]; i++) + for (i = 0; i < task->tNumItems; i++) { sListMenuItems[i].name = sListMenuLabels[gSpecialVar_0x8004][i]; sListMenuItems[i].id = i; @@ -1603,19 +1543,19 @@ static void Task_CreateScriptListMenu(u8 taskId) if (width > mwidth) mwidth = width; } - task->data[4] = (mwidth + 9) / 8 + 1; - if (task->data[2] + task->data[4] > 29) - task->data[2] = 29 - task->data[4]; - template = CreateWindowTemplate(0, task->data[2], task->data[3], task->data[4], task->data[5], 15, 0x64); - task->data[13] = windowId = AddWindow(&template); - SetStandardWindowBorderStyle(task->data[13], 0); - gScrollableMultichoice_ListMenuTemplate.totalItems = task->data[1]; - gScrollableMultichoice_ListMenuTemplate.maxShowed = task->data[0]; - gScrollableMultichoice_ListMenuTemplate.windowId = task->data[13]; + task->tWidth = (mwidth + 9) / 8 + 1; + if (task->tLeft + task->tWidth > 29) + task->tLeft = 29 - task->tWidth; + template = CreateWindowTemplate(0, task->tLeft, task->tTop, task->tWidth, task->tHeight, 15, 0x64); + task->tWindowId = windowId = AddWindow(&template); + SetStandardWindowBorderStyle(task->tWindowId, 0); + gScrollableMultichoice_ListMenuTemplate.totalItems = task->tNumItems; + gScrollableMultichoice_ListMenuTemplate.maxShowed = task->tMaxItemsOnScreen; + gScrollableMultichoice_ListMenuTemplate.windowId = task->tWindowId; Task_CreateMenuRemoveScrollIndicatorArrowPair(taskId); - task->data[14] = ListMenuInit(&gScrollableMultichoice_ListMenuTemplate, task->data[7], task->data[8]); - PutWindowTilemap(task->data[13]); - CopyWindowToVram(task->data[13], COPYWIN_FULL); + task->tListTaskId = ListMenuInit(&gScrollableMultichoice_ListMenuTemplate, task->tScrollOffset, task->tSelectedRow); + PutWindowTilemap(task->tWindowId); + CopyWindowToVram(task->tWindowId, COPYWIN_FULL); gTasks[taskId].func = ScrollableMultichoice_ProcessInput; } @@ -1651,7 +1591,7 @@ static void ScrollableMultichoice_MoveCursor(s32 nothing, bool8 is, struct ListM { u16 selection; task = &gTasks[taskId]; - ListMenuGetScrollAndRow(task->data[14], &sFieldSpecialsListMenuScrollBuffer, NULL); + ListMenuGetScrollAndRow(task->tListTaskId, &sFieldSpecialsListMenuScrollBuffer, NULL); gScrollableMultichoice_ScrollOffset = sFieldSpecialsListMenuScrollBuffer; ListMenuGetCurrentItemArrayId(task->tListTaskId, &selection); HideFrontierExchangeCornerItemIcon(task->tScrollMultiId); @@ -1667,7 +1607,7 @@ static void ScrollableMultichoice_ProcessInput(u8 taskId) task = &gTasks[taskId]; task++;task--; - input = ListMenu_ProcessInput(task->data[14]); + input = ListMenu_ProcessInput(task->tListTaskId); switch (input) { case -1: @@ -1680,7 +1620,7 @@ static void ScrollableMultichoice_ProcessInput(u8 taskId) default: gSpecialVar_Result = input; PlaySE(SE_SELECT); - if (task->data[6] == 0 || input == task->data[1] - 1) + if (task->tKeepOpenAfterSelect == 0 || input == task->tNumItems - 1) { CloseScrollableMultichoice(taskId); } @@ -1700,25 +1640,25 @@ static void CloseScrollableMultichoice(u8 taskId) HideFrontierExchangeCornerItemIcon(task->tScrollMultiId); Task_ListMenuRemoveScrollIndicatorArrowPair(taskId); - DestroyListMenuTask(task->data[14], NULL, NULL); + DestroyListMenuTask(task->tListTaskId, NULL, NULL); Free(sListMenuItems); - ClearStdWindowAndFrameToTransparent(task->data[13], TRUE); - FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0)); - ClearWindowTilemap(task->data[13]); - CopyWindowToVram(task->data[13], COPYWIN_GFX); - RemoveWindow(task->data[13]); + ClearStdWindowAndFrameToTransparent(task->tWindowId, TRUE); + FillWindowPixelBuffer(task->tWindowId, PIXEL_FILL(0)); + ClearWindowTilemap(task->tWindowId); + CopyWindowToVram(task->tWindowId, COPYWIN_GFX); + RemoveWindow(task->tWindowId); DestroyTask(taskId); ScriptContext_Enable(); } static void Task_SuspendListMenu(u8 taskId) { - switch (gTasks[taskId].data[6]) + switch (gTasks[taskId].tKeepOpenAfterSelect) { case 1: break; case 2: - gTasks[taskId].data[6] = 1; + gTasks[taskId].tKeepOpenAfterSelect = 1; gTasks[taskId].func = Task_RedrawScrollArrowsAndWaitInput; break; } @@ -1727,10 +1667,10 @@ static void Task_SuspendListMenu(u8 taskId) void ReturnToListMenu(void) { u8 taskId = FindTaskIdByFunc(Task_SuspendListMenu); - if (taskId == 0xFF) + if (taskId == TASK_NONE) ScriptContext_Enable(); else - gTasks[taskId].data[6]++; + gTasks[taskId].tKeepOpenAfterSelect++; } static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId) @@ -1749,23 +1689,23 @@ static void Task_CreateMenuRemoveScrollIndicatorArrowPair(u8 taskId) .tileTag = 2000, .palTag = 100 }; - if (task->data[0] != task->data[1]) + if (task->tMaxItemsOnScreen != task->tNumItems) { - template.firstX = 4 * task->data[4] + 8 * task->data[2]; + template.firstX = 4 * task->tWidth + 8 * task->tLeft; template.firstY = 8; - template.secondX = 4 * task->data[4] + 8 * task->data[2]; - template.secondY = 8 * task->data[5] + 10; + template.secondX = 4 * task->tWidth + 8 * task->tLeft; + template.secondY = 8 * task->tHeight + 10; template.fullyUpThreshold = 0; - template.fullyDownThreshold = task->data[1] - task->data[0]; - task->data[12] = AddScrollIndicatorArrowPair(&template, &gScrollableMultichoice_ScrollOffset); + template.fullyDownThreshold = task->tNumItems - task->tMaxItemsOnScreen; + task->tScrollArrowId = AddScrollIndicatorArrowPair(&template, &gScrollableMultichoice_ScrollOffset); } } static void Task_ListMenuRemoveScrollIndicatorArrowPair(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (task->data[0] != task->data[1]) - RemoveScrollIndicatorArrowPair(task->data[12]); + if (task->tMaxItemsOnScreen != task->tNumItems) + RemoveScrollIndicatorArrowPair(task->tScrollArrowId); } // Undefine Scrollable Multichoice task data macros diff --git a/src/hof_pc.c b/src/hof_pc.c index bcc51bc79..491e2e01e 100644 --- a/src/hof_pc.c +++ b/src/hof_pc.c @@ -38,7 +38,7 @@ static void ReshowPCMenuAfterHallOfFamePC(void) { LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); - CreatePCMenu(); + ScriptMenu_CreatePCMultichoice(); ScriptMenu_DisplayPCStartupPrompt(); BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); CreateTask(Task_WaitForPaletteFade, 10); diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 94e732cb7..f96f17076 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -274,7 +274,7 @@ static u8 *MapNamePopupAppendFloorNum(u8 *dest, s8 floorNum) return dest; *dest++ = CHAR_SPACE; if (floorNum == FLOOR_ROOFTOP) - return StringCopy(dest, gText_Rooftop2); + return StringCopy(dest, gText_Rooftop); if (floorNum < 0) { *dest++ = CHAR_B; diff --git a/src/menu.c b/src/menu.c index 3c2c7ddf9..f583ea33b 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1426,7 +1426,7 @@ static u8 MultichoiceGrid_MoveCursorIfValid(s8 deltaX, s8 deltaY) } } -s8 Menu_ProcessInputGridLayout(void) +s8 Menu_ProcessGridInput(void) { u8 oldPos = sMenu.cursorPos; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 80dfeab5a..bb0805afe 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -7622,7 +7622,7 @@ static const u8 *const sMenuTexts[] = { [MENU_TEXT_GIVE2] = gPCText_Give, [MENU_TEXT_SWITCH] = gPCText_Switch, [MENU_TEXT_BAG] = gPCText_Bag, - [MENU_TEXT_INFO] = gPCText_Info, + [MENU_TEXT_INFO] = gText_Info, [MENU_TEXT_SCENERY_1] = gPCText_Scenery1, [MENU_TEXT_SCENERY_2] = gPCText_Scenery2, [MENU_TEXT_SCENERY_3] = gPCText_Scenery3, diff --git a/src/scrcmd.c b/src/scrcmd.c index 6a0bc9db5..0c5ff4406 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -53,6 +53,7 @@ #include "constants/field_move.h" #include "constants/items.h" #include "constants/maps.h" +#include "constants/menu.h" #include "constants/sound.h" typedef void (*NativeFunc)(struct ScriptContext *ctx); @@ -1958,7 +1959,7 @@ bool8 ScrCmd_multichoice(struct ScriptContext * ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); + enum MultichoiceID multichoiceId = ScriptReadByte(ctx); bool8 ignoreBPress = ScriptReadByte(ctx); Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE); @@ -1978,13 +1979,13 @@ bool8 ScrCmd_multichoicedefault(struct ScriptContext * ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); + enum MultichoiceID multichoiceId = ScriptReadByte(ctx); u8 defaultChoice = ScriptReadByte(ctx); bool8 ignoreBPress = ScriptReadByte(ctx); Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE); - if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) + if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice)) { ScriptContext_Stop(); return TRUE; @@ -2004,7 +2005,7 @@ bool8 ScrCmd_multichoicegrid(struct ScriptContext * ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); + enum MultichoiceID multichoiceId = ScriptReadByte(ctx); u8 numColumns = ScriptReadByte(ctx); bool8 ignoreBPress = ScriptReadByte(ctx); @@ -2238,11 +2239,11 @@ bool8 ScrCmd_buffernumberstring(struct ScriptContext * ctx) bool8 ScrCmd_bufferstdstring(struct ScriptContext * ctx) { u8 stringVarIndex = ScriptReadByte(ctx); - u16 index = VarGet(ScriptReadHalfword(ctx)); + enum StdStringID stringID = VarGet(ScriptReadHalfword(ctx)); Script_RequestEffects(SCREFF_V1); - StringCopy(sScriptStringVars[stringVarIndex], gStdStringPtrs[index]); + StringCopy(sScriptStringVars[stringVarIndex], gStdStrings[stringID]); return FALSE; } diff --git a/src/script_menu.c b/src/script_menu.c index f3535b897..4ab8483e9 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -22,14 +22,6 @@ #define GFXTAG_FOSSIL 7000 -#define MULTICHOICE(name) {.list = name, .count = ARRAY_COUNT(name)} - -struct MultichoiceListStruct -{ - const struct MenuAction * list; - u8 count; -}; - struct DynamicListMenuEventArgs { struct ListMenuTemplate *list; @@ -51,29 +43,57 @@ static EWRAM_DATA u8 sDynamicMenuEventId = 0; static EWRAM_DATA struct DynamicMultichoiceStack *sDynamicMultiChoiceStack = NULL; static EWRAM_DATA u16 *sDynamicMenuEventScratchPad = NULL; -static void FreeListMenuItems(struct ListMenuItem *items, u32 count); -static void Task_HandleScrollingMultichoiceInput(u8 taskId); -static void Task_HandleMultichoiceInput(u8 taskId); -// static void Task_HandleYesNoInput(u8 taskId); -// static void Task_HandleMultichoiceGridInput(u8 taskId); -static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u32 initialRow, u8 maxBeforeScroll, u32 callbackSet); -static void DrawMultichoiceMenu(u8 left, u8 top, u8 mcId, u8 ignoreBpress, u8 initPos); -static u8 GetMCWindowHeight(u8 count); -static void InitMultichoiceCheckWrap(u8 ignoreBpress, u8 count, u8 windowId, u8 mcId); -static void Task_HandleMultichoiceInput(u8 taskId); -static void DrawLinkServicesMultichoiceMenu(u8 mcId); -static void Task_YesNoMenu_HandleInput(u8 taskId); -static void Hask_MultichoiceGridMenu_HandleInput(u8 taskId); -static void CreatePCMenuWindow(void); -static bool8 PicboxWait(void); -static void DestroyScriptMenuWindow(u8 windowId); +static bool8 IsPicboxClosed(void); +static u16 GetStringTilesWide(const u8 *str); +static u32 GetMultiChoiceWindowHeight(u8 argc, u8 maxBeforeScroll); static u8 CreateWindowFromRect(u8 left, u8 top, u8 width, u8 height); +static u8 GetMCWindowHeight(u8 count); +static u8 GetMenuWidthFromList(const struct MenuAction *items, u8 count); +static void ClearToTransparentAndRemoveWindow(u8 windowId); +static void CreatePCMultichoice(void); +static void DrawLinkServicesMultichoiceMenu(enum MultichoiceID mcId); +static void DrawMultichoiceMenu(u8 left, u8 top, enum MultichoiceID mcId, u8 ignoreBpress, u8 initPos); +static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u32 initialRow, u8 maxBeforeScroll, u32 callbackSet); +static void FreeListMenuItems(struct ListMenuItem *items, u32 count); +static void InitMultichoiceCheckWrap(u8 ignoreBpress, u8 count, u8 windowId, enum MultichoiceID mcId); +static void MultichoiceDynamicEventDebug_OnDestroy(struct DynamicListMenuEventArgs *eventArgs); static void MultichoiceDynamicEventDebug_OnInit(struct DynamicListMenuEventArgs *eventArgs); static void MultichoiceDynamicEventDebug_OnSelectionChanged(struct DynamicListMenuEventArgs *eventArgs); -static void MultichoiceDynamicEventDebug_OnDestroy(struct DynamicListMenuEventArgs *eventArgs); +static void MultichoiceDynamicEventShowItem_OnDestroy(struct DynamicListMenuEventArgs *eventArgs); static void MultichoiceDynamicEventShowItem_OnInit(struct DynamicListMenuEventArgs *eventArgs); static void MultichoiceDynamicEventShowItem_OnSelectionChanged(struct DynamicListMenuEventArgs *eventArgs); -static void MultichoiceDynamicEventShowItem_OnDestroy(struct DynamicListMenuEventArgs *eventArgs); +static void Task_HandleMultichoiceGridInput(u8 taskId); +static void Task_HandleMultichoiceInput(u8 taskId); +static void Task_HandleMultichoiceInput(u8 taskId); +static void Task_HandleScrollingMultichoiceInput(u8 taskId); +static void Task_HandleYesNoInput(u8 taskId); + +static const u8 sText_MultiLink[] = _("MULTI-LINK"); +static const u8 sText_Opponent[] = _("OPPONENT"); +static const u8 sText_Tourney_Tree[] = _("TOURNEY TREE"); +static const u8 sText_ReadyToStart[] = _("READY TO START"); +static const u8 sText_Eggs[] = _("EGGS"); +static const u8 sText_Victories[] = _("VICTORIES"); +static const u8 sText_TradeCenter[] = _("TRADE CENTER"); +static const u8 sText_Colosseum[] = _("COLOSSEUM"); +static const u8 sText_GoOn[] = _("GO ON"); +static const u8 sText_HelixFossil[] = _("HELIX FOSSIL"); +static const u8 sText_DomeFossil[] = _("DOME FOSSIL"); +static const u8 sText_OldAmber[] = _("OLD AMBER"); +static const u8 sText_FreshWater[] = _("FRESH WATER"); +static const u8 sText_SodaPop[] = _("SODA POP"); +static const u8 sText_Lemonade[] = _("LEMONADE"); +static const u8 sText_Vermilion[] = _("VERMILION"); +static const u8 sText_OneIsland[] = _("ONE ISLAND"); +static const u8 sText_TwoIsland[] = _("TWO ISLAND"); +static const u8 sText_ThreeIsland[] = _("THREE ISLAND"); +static const u8 sText_SeviiIslands[] = _("SEVII ISLANDS"); +static const u8 sText_NavelRock[] = _("NAVEL ROCK"); +static const u8 sText_BirthIsland[] = _("BIRTH ISLAND"); +static const u8 sText_Retire[] = _("RETIRE"); +static const u8 sText_Other[] = _("OTHER"); +static const u8 sText_NoThanks[] = _("NO THANKS"); +static const u8 sText_Quit[] = _("QUIT"); static const struct DynamicListMenuEventCollection sDynamicListMenuEventCollections[] = { @@ -109,58 +129,59 @@ static const struct MenuAction sMultichoiceList_YesNo[] = { }; static const struct MenuAction sMultichoiceList_TrainerCardIconTint[] = { - { gText_Normal }, - { gText_Black }, + { COMPOUND_STRING("NORMAL") }, + { COMPOUND_STRING("BLACK") }, { gText_Pink }, - { gText_Sepia } + { COMPOUND_STRING("SEPIA") } }; static const struct MenuAction sMultichoiceList_HOF_Quit[] = { { gText_HallOfFame }, - { gText_Quit } + { sText_Quit } }; static const struct MenuAction sMultichoiceList_Eggs_Quit[] = { - { gText_Eggs }, - { gText_Quit } + { sText_Eggs }, + { sText_Quit } }; static const struct MenuAction sMultichoiceList_Victories_Quit[] = { - { gText_Victories }, - { gText_Quit } + { sText_Victories }, + { sText_Quit } }; static const struct MenuAction sMultichoiceList_HOF_Eggs_Quit[] = { { gText_HallOfFame }, - { gText_Eggs }, - { gText_Quit } + { sText_Eggs }, + { sText_Quit } }; static const struct MenuAction sMultichoiceList_HOF_Victories_Quit[] = { { gText_HallOfFame }, - { gText_Victories }, - { gText_Quit } + { sText_Victories }, + { sText_Quit } }; static const struct MenuAction sMultichoiceList_Eggs_Victories_Quit[] = { - { gText_Eggs }, - { gText_Victories }, - { gText_Quit } + { sText_Eggs }, + { sText_Victories }, + { sText_Quit } }; static const struct MenuAction sMultichoiceList_HOF_Eggs_Victories_Quit[] = { { gText_HallOfFame }, - { gText_Eggs }, - { gText_Victories }, - { gText_Quit } + { sText_Eggs }, + { sText_Victories }, + { sText_Quit } }; + static const struct MenuAction sMultichoiceList_TrainerSchoolWhiteboard[] = { - { gText_Slp }, - { gText_Psn }, - { gText_Par }, - { gText_Brn }, - { gText_Frz }, + { COMPOUND_STRING("SLP") }, + { COMPOUND_STRING("PSN") }, + { COMPOUND_STRING("PAR") }, + { COMPOUND_STRING("BRN") }, + { COMPOUND_STRING("FRZ") }, { gOtherText_Exit } }; @@ -178,15 +199,9 @@ static const struct MenuAction sMultichoiceList_SingleDoubleMultiInfoExit[] = { { gOtherText_Exit } }; -static const struct MenuAction sMultichoiceList_YesNoInfo2[] = { - { gText_Yes }, - { gText_No }, - { gText_Info } -}; - static const struct MenuAction sMultichoiceList_ChallengeInfoExit[] = { - { gText_MakeAChallenge }, - { gText_Info_2 }, + { COMPOUND_STRING("Make a challenge.") }, + { gText_Info }, { gOtherText_Exit } }; @@ -197,213 +212,145 @@ static const struct MenuAction sMultichoiceList_RooftopB1F[] = { }; static const struct MenuAction sMultichoiceList_Helix[] = { - { gText_HelixFossil }, + { sText_HelixFossil }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_Dome[] = { - { gText_DomeFossil }, + { sText_DomeFossil }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_Amber[] = { - { gText_OldAmber }, + { sText_OldAmber }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_HelixAmber[] = { - { gText_HelixFossil }, - { gText_OldAmber }, + { sText_HelixFossil }, + { sText_OldAmber }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_DomeAmber[] = { - { gText_DomeFossil }, - { gText_OldAmber }, + { sText_DomeFossil }, + { sText_OldAmber }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_CeladonVendingMachine[] = { - { gText_FreshWater_200 }, - { gText_SodaPop_300 }, - { gText_Lemonade_350 }, + { COMPOUND_STRING("FRESH WATER{CLEAR_TO 0x57}{FONT_SMALL}¥200") }, + { COMPOUND_STRING("SODA POP{CLEAR_TO 0x57}{FONT_SMALL}¥300") }, + { COMPOUND_STRING("LEMONADE{CLEAR_TO 0x57}{FONT_SMALL}¥350") }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_GameCornerTMPrizes[] = { - { gText_Tm13_4000Coins }, - { gText_Tm23_3500Coins }, - { gText_Tm24_4000Coins }, - { gText_Tm30_4500Coins }, - { gText_Tm35_4000Coins }, - { gText_NoThanks_2 } + { COMPOUND_STRING("TM13{CLEAR_TO 0x48}{FONT_SMALL}4,000 COINS") }, + { COMPOUND_STRING("TM23{CLEAR_TO 0x48}{FONT_SMALL}3,500 COINS") }, + { COMPOUND_STRING("TM24{CLEAR_TO 0x48}{FONT_SMALL}4,000 COINS") }, + { COMPOUND_STRING("TM30{CLEAR_TO 0x48}{FONT_SMALL}4,500 COINS") }, + { COMPOUND_STRING("TM35{CLEAR_TO 0x48}{FONT_SMALL}4,000 COINS") }, + { sText_NoThanks } }; static const struct MenuAction sMultichoiceList_GameCornerBattleItemPrizes[] = { - { gText_SmokeBall_800Coins }, - { gText_MiracleSeed_1000Coins }, - { gText_Charcoal_1000Coins }, - { gText_MysticWater_1000Coins }, - { gText_YellowFlute_1600Coins }, - { gText_NoThanks_2 } + { COMPOUND_STRING("SMOKE BALL{CLEAR_TO 0x5A}{FONT_SMALL}800 COINS") }, + { COMPOUND_STRING("MIRACLE SEED{CLEAR_TO 0x50}{FONT_SMALL}1,000 COINS") }, + { COMPOUND_STRING("CHARCOAL{CLEAR_TO 0x50}{FONT_SMALL}1,000 COINS") }, + { COMPOUND_STRING("MYSTIC WATER{CLEAR_TO 0x50}{FONT_SMALL}1,000 COINS") }, + { COMPOUND_STRING("YELLOW FLUTE{CLEAR_TO 0x50}{FONT_SMALL}1,600 COINS") }, + { sText_NoThanks } }; static const struct MenuAction sMultichoiceList_GameCornerCoinPurchaseCounter[] = { - { gText_50Coins_1000 }, - { gText_500Coins_10000 }, + { COMPOUND_STRING("{FONT_SMALL} 50 COINS{CLEAR_TO 0x45}¥1,000") }, + { COMPOUND_STRING("{FONT_SMALL}500 COINS{CLEAR_TO 0x40}¥10,000") }, { gOtherText_Exit } }; -static const struct MenuAction sMultichoiceList_Excellent_NotSoBad[] = { - { gText_Excellent }, - { gText_NotSoBad } -}; - -static const struct MenuAction sMultichoiceList_RightLeft[] = { - { gText_Right }, - { gText_Left } -}; - static const struct MenuAction sMultichoiceList_DeptStoreElevator[] = { - { gText_5F_2 }, - { gText_4F_2 }, - { gText_3F_2 }, - { gText_2F_2 }, - { gText_1F_2 }, + { gText_5F }, + { gText_4F }, + { gText_3F }, + { gText_2F }, + { gText_1F }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_ThirstyGirlFreshWater[] = { - { gText_FreshWater }, + { sText_FreshWater }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_ThirstyGirlSodaPop[] = { - { gText_SodaPop }, + { sText_SodaPop }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_ThirstyGirlFreshWaterSodaPop[] = { - { gText_FreshWater }, - { gText_SodaPop }, + { sText_FreshWater }, + { sText_SodaPop }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_ThirstyGirlLemonade[] = { - { gText_Lemonade }, + { sText_Lemonade }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_ThirstyGirlFreshWaterLemonade[] = { - { gText_FreshWater }, - { gText_Lemonade }, + { sText_FreshWater }, + { sText_Lemonade }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_ThirstyGirlSodaPopLemonade[] = { - { gText_SodaPop }, - { gText_Lemonade }, + { sText_SodaPop }, + { sText_Lemonade }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_ThirstyGirlFreshWaterSodaPopLemonade[] = { - { gText_FreshWater }, - { gText_SodaPop }, - { gText_Lemonade }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_0[] = { - { gText_GreenShard }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_1[] = { - { gText_RedShard }, - { gText_GreenShard }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_2[] = { - { gText_YellowShard }, - { gText_GreenShard }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_3[] = { - { gText_RedShard }, - { gText_YellowShard }, - { gText_GreenShard }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_4[] = { - { gText_BlueShard }, - { gText_GreenShard }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_5[] = { - { gText_RedShard }, - { gText_BlueShard }, - { gText_GreenShard }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_6[] = { - { gText_YellowShard }, - { gText_BlueShard }, - { gText_GreenShard }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Unref_Shards_7[] = { - { gText_RedShard }, - { gText_YellowShard }, - { gText_BlueShard }, - { gText_GreenShard }, + { sText_FreshWater }, + { sText_SodaPop }, + { sText_Lemonade }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_Eeveelutions[] = { - { gText_Eevee }, - { gText_Flareon }, - { gText_Jolteon }, - { gText_Vaporeon }, - { gText_QuitLooking } + { COMPOUND_STRING("EEVEE") }, + { COMPOUND_STRING("FLAREON") }, + { COMPOUND_STRING("JOLTEON") }, + { COMPOUND_STRING("VAPOREON") }, + { COMPOUND_STRING("Quit looking.") } }; static const struct MenuAction sMultichoiceList_BikeShop[] = { - { gText_Bicycle_Price }, - { gText_NoThanks } + { COMPOUND_STRING("BICYCLE{CLEAR_TO 0x49}{FONT_SMALL}¥1,000,000") }, + { sText_NoThanks } }; static const struct MenuAction sMultichoiceList_GameCornerPokemonPrizes[] = { #if defined(FIRERED) - { gText_Abra_180Coins }, - { gText_Clefairy_500Coins }, - { gText_Dratini_2800Coins }, - { gText_Scyther_5500Coins }, - { gText_Porygon_9999Coins }, + { COMPOUND_STRING("ABRA{CLEAR_TO 0x55}{FONT_SMALL} 180 COINS") }, + { COMPOUND_STRING("CLEFAIRY{CLEAR_TO 0x55}{FONT_SMALL} 500 COINS") }, + { COMPOUND_STRING("DRATINI{CLEAR_TO 0x4B}{FONT_SMALL} 2,800 COINS") }, + { COMPOUND_STRING("SCYTHER{CLEAR_TO 0x4B}{FONT_SMALL} 5,500 COINS") }, + { COMPOUND_STRING("PORYGON{CLEAR_TO 0x4B}{FONT_SMALL} 9,999 COINS") }, #elif defined(LEAFGREEN) - { gText_Abra_120Coins }, - { gText_Clefairy_750Coins }, - { gText_Pinsir_2500Coins }, - { gText_Dratini_4600Coins }, - { gText_Porygon_6500Coins }, + { COMPOUND_STRING("ABRA{CLEAR_TO 0x55}{FONT_SMALL} 120 COINS") }, + { COMPOUND_STRING("CLEFAIRY{CLEAR_TO 0x55}{FONT_SMALL} 750 COINS") }, + { COMPOUND_STRING("PINSIR{CLEAR_TO 0x4B}{FONT_SMALL} 2,500 COINS") }, + { COMPOUND_STRING("DRATINI{CLEAR_TO 0x4B}{FONT_SMALL} 4,600 COINS") }, + { COMPOUND_STRING("PORYGON{CLEAR_TO 0x4B}{FONT_SMALL} 6,500 COINS") }, #endif - { gText_NoThanks_2 } + { sText_NoThanks } }; static const struct MenuAction sMultichoiceList_TradeCenter_Colosseum[] = { - { gText_TradeCenter }, - { gText_Colosseum }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_Link_Wireless[] = { - { gText_GameLinkCable }, - { gText_Wireless }, + { sText_TradeCenter }, + { sText_Colosseum }, { gOtherText_Exit } }; @@ -415,137 +362,110 @@ static const struct MenuAction sMultichoiceList_RocketHideoutElevator[] = { }; static const struct MenuAction sMultichoiceList_LinkedDirectUnion[] = { - { gText_LinkedGamePlay }, - { gText_DirectCorner }, - { gText_UnionRoom }, - { gOtherText_Quit } + { COMPOUND_STRING("LINKED GAME PLAY") }, + { COMPOUND_STRING("DIRECT CORNER") }, + { COMPOUND_STRING("UNION ROOM") }, + { sText_Quit } }; static const struct MenuAction sMultichoiceList_Island23[] = { - { gText_TwoIsland }, - { gText_ThreeIsland }, + { sText_TwoIsland }, + { sText_ThreeIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_Island13[] = { - { gText_OneIsland }, - { gText_ThreeIsland }, + { sText_OneIsland }, + { sText_ThreeIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_Island12[] = { - { gText_OneIsland }, - { gText_TwoIsland }, + { sText_OneIsland }, + { sText_TwoIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_TradeColosseumCrush[] = { - { gText_TradeCenter }, - { gText_Colosseum_2 }, + { sText_TradeCenter }, + { sText_Colosseum }, { gText_BerryCrush }, { gOtherText_Exit } }; -static const struct MenuAction sMultichoiceList_48[] = { - { gText_EmptyLinkService1 }, - { gText_EmptyLinkService2 }, - { gOtherText_Exit } -}; - static const struct MenuAction sMultichoiceList_TradeColosseum_2[] = { - { gText_TradeCenter }, - { gText_Colosseum_2 }, + { sText_TradeCenter }, + { sText_Colosseum }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_PokejumpDodrio[] = { { gText_PokemonJump }, - { gText_DodrioBerryPicking }, + { COMPOUND_STRING("DODRIO BERRY-PICKING") }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_Mushrooms[] = { - { gText_2Tinymushrooms }, - { gText_1BigMushroom } -}; - -static const struct MenuAction sMultichoiceList_TradeColosseumBlankCrush[] = { - { gText_TradeCenter }, - { gText_Colosseum_2 }, - { gText_RecordCorner }, - { gText_BerryCrush }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_TradeColosseumBlank[] = { - { gText_TradeCenter }, - { gText_Colosseum_2 }, - { gText_RecordCorner }, - { gOtherText_Exit } + {COMPOUND_STRING("2 TINYMUSHROOMS")}, + {COMPOUND_STRING("1 BIG MUSHROOM")}, }; static const struct MenuAction sMultichoiceList_SeviiNavel[] = { - { gText_SeviiIslands }, - { gText_NavelRock }, + { sText_SeviiIslands }, + { sText_NavelRock }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_SeviiBirth[] = { - { gText_SeviiIslands }, - { gText_BirthIsland }, + { sText_SeviiIslands }, + { sText_BirthIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_SeviiNavelBirth[] = { - { gText_SeviiIslands }, - { gText_NavelRock }, - { gText_BirthIsland }, + { sText_SeviiIslands }, + { sText_NavelRock }, + { sText_BirthIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_Seagallop123[] = { - { gText_OneIsland }, - { gText_TwoIsland }, - { gText_ThreeIsland }, + { sText_OneIsland }, + { sText_TwoIsland }, + { sText_ThreeIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_SeagallopV23[] = { - { gText_Vermilion }, - { gText_TwoIsland }, - { gText_ThreeIsland }, + { sText_Vermilion }, + { sText_TwoIsland }, + { sText_ThreeIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_SeagallopV13[] = { - { gText_Vermilion }, - { gText_OneIsland }, - { gText_ThreeIsland }, + { sText_Vermilion }, + { sText_OneIsland }, + { sText_ThreeIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_SeagallopV12[] = { - { gText_Vermilion }, - { gText_OneIsland }, - { gText_TwoIsland }, + { sText_Vermilion }, + { sText_OneIsland }, + { sText_TwoIsland }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_SeagallopVermilion[] = { - { gText_Vermilion }, - { gOtherText_Exit } -}; - -static const struct MenuAction sMultichoiceList_62[] = { - { gText_Multichoice_Empty1 }, - { gText_Multichoice_Empty2 }, + { sText_Vermilion }, { gOtherText_Exit } }; static const struct MenuAction sMultichoiceList_JoinOrLead[] = { - { gText_JoinGroup }, - { gText_BecomeLeader }, - { gOtherText_Exit } + {COMPOUND_STRING("JOIN GROUP")}, + {COMPOUND_STRING("BECOME LEADER")}, + {gOtherText_Exit} }; static const struct MenuAction sMultichoiceList_TrainerTowerMode[] = { @@ -591,48 +511,48 @@ static const struct MenuAction sMultichoiceList_LevelMode[] = static const struct MenuAction sMultichoiceList_BattleFactoryRules[] = { - {gText_BasicRules}, - {gText_SwapPartners}, - {gText_SwapNumber}, - {gText_SwapNotes}, + {COMPOUND_STRING("BASIC RULES")}, + {COMPOUND_STRING("SWAP: PARTNER")}, + {COMPOUND_STRING("SWAP: NUMBER")}, + {COMPOUND_STRING("SWAP: NOTES")}, {COMPOUND_STRING("OPEN LEVEL")}, {gText_Exit}, }; static const struct MenuAction sMultichoiceList_GoOnRecordRestRetire[] = { - {gText_GoOn}, - {gText_Record2}, + {sText_GoOn}, + {gText_Record}, {gText_Rest}, - {gText_Retire}, + {sText_Retire}, }; static const struct MenuAction sMultichoiceList_GoOnRestRetire[] = { - {gText_GoOn}, + {sText_GoOn}, {gText_Rest}, - {gText_Retire}, + {sText_Retire}, }; static const struct MenuAction sMultichoiceList_GoOnRecordRetire[] = { - {gText_GoOn}, - {gText_Record2}, - {gText_Retire}, + {sText_GoOn}, + {gText_Record}, + {sText_Retire}, }; static const struct MenuAction sMultichoiceList_GoOnRetire[] = { - {gText_GoOn}, - {gText_Retire}, + {sText_GoOn}, + {sText_Retire}, }; static const struct MenuAction sMultichoiceList_BattleArenaRules[] = { - {gText_BattleRules}, - {gText_JudgeMind}, - {gText_JudgeSkill}, - {gText_JudgeBody}, + {COMPOUND_STRING("BATTLE RULES")}, + {COMPOUND_STRING("JUDGE: MIND")}, + {COMPOUND_STRING("JUDGE: SKILL")}, + {COMPOUND_STRING("JUDGE: BODY")}, {gText_Exit}, }; @@ -646,30 +566,30 @@ static const struct MenuAction sMultichoiceList_BattleDomeRules[] = static const struct MenuAction sMultichoiceList_TourneyWithRecord[] = { - {gText_Opponent}, - {gText_Tourney_Tree}, - {gText_ReadyToStart}, - {gText_Record2}, + {sText_Opponent}, + {sText_Tourney_Tree}, + {sText_ReadyToStart}, + {gText_Record}, {gText_Rest}, - {gText_Retire}, + {sText_Retire}, }; static const struct MenuAction sMultichoiceList_TourneyNoRecord[] = { - {gText_Opponent}, - {gText_Tourney_Tree}, - {gText_ReadyToStart}, + {sText_Opponent}, + {sText_Tourney_Tree}, + {sText_ReadyToStart}, {gText_Rest}, - {gText_Retire}, + {sText_Retire}, }; static const struct MenuAction sMultichoiceList_BattlePalaceRules[] = { - {gText_BattleBasics}, - {gText_PokemonNature}, - {gText_PokemonMoves}, - {gText_Underpowered}, - {gText_WhenInDanger}, + {COMPOUND_STRING("BATTLE BASICS")}, + {COMPOUND_STRING("POKéMON NATURE")}, + {COMPOUND_STRING("POKéMON MOVES")}, + {COMPOUND_STRING("UNDERPOWERED")}, + {COMPOUND_STRING("WHEN IN DANGER")}, {gText_Exit}, }; @@ -702,7 +622,7 @@ static const struct MenuAction sMultichoiceList_BattleTowerRules[] = {COMPOUND_STRING("TOWER INFO")}, {COMPOUND_STRING("BATTLE {PKMN}")}, {COMPOUND_STRING("BATTLE SALON")}, - {COMPOUND_STRING("MULTI-LINK")}, + {sText_MultiLink}, {gText_Exit}, }; @@ -727,134 +647,110 @@ static const struct MenuAction sMultichoiceList_Satisfaction[] = {COMPOUND_STRING("Dissatisfied")}, }; -static const struct MenuAction sMultichoiceList_Exit[] = { - { gOtherText_Exit } +struct MultichoiceListStruct +{ + const struct MenuAction *list; + u8 count; }; -static const struct MultichoiceListStruct sMultichoiceLists[] = { - [MULTI_YESNO] = MULTICHOICE(sMultichoiceList_YesNo), - [MULTICHOICE_EEVEELUTIONS] = MULTICHOICE(sMultichoiceList_Eeveelutions), - [MULTICHOICE_TRAINER_CARD_ICON_TINT] = MULTICHOICE(sMultichoiceList_TrainerCardIconTint), - [MULTICHOICE_HOF_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Quit), - [MULTICHOICE_EGGS_QUIT] = MULTICHOICE(sMultichoiceList_Eggs_Quit), - [MULTICHOICE_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_Victories_Quit), - [MULTICHOICE_HOF_EGGS_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Eggs_Quit), - [MULTICHOICE_HOF_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Victories_Quit), - [MULTICHOICE_EGGS_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_Eggs_Victories_Quit), - [MULTICHOICE_HOF_EGGS_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Eggs_Victories_Quit), - [MULTICHOICE_EXIT] = MULTICHOICE(sMultichoiceList_Exit), - [MULTICHOICE_EXIT_2] = MULTICHOICE(sMultichoiceList_Exit), - [MULTICHOICE_EXIT_3] = MULTICHOICE(sMultichoiceList_Exit), - [MULTICHOICE_BIKE_SHOP] = MULTICHOICE(sMultichoiceList_BikeShop), - [MULTICHOICE_GAME_CORNER_POKEMON_PRIZES] = MULTICHOICE(sMultichoiceList_GameCornerPokemonPrizes), - [MULTICHOICE_TRAINER_SCHOOL_WHITEBOARD] = MULTICHOICE(sMultichoiceList_TrainerSchoolWhiteboard), - [MULTICHOICE_YES_NO_INFO] = MULTICHOICE(sMultichoiceList_YesNoInfo), - [MULTICHOICE_SINGLE_DOUBLE_MULTI_INFO_EXIT] = MULTICHOICE(sMultichoiceList_SingleDoubleMultiInfoExit), - [MULTICHOICE_YES_NO_INFO_2] = MULTICHOICE(sMultichoiceList_YesNoInfo2), - [MULTI_CHALLENGEINFO] = MULTICHOICE(sMultichoiceList_ChallengeInfoExit), - [MULTICHOICE_ROOFTOP_B1F] = MULTICHOICE(sMultichoiceList_RooftopB1F), - [MULTICHOICE_HELIX] = MULTICHOICE(sMultichoiceList_Helix), - [MULTICHOICE_DOME] = MULTICHOICE(sMultichoiceList_Dome), - [MULTICHOICE_AMBER] = MULTICHOICE(sMultichoiceList_Amber), - [MULTICHOICE_HELIX_AMBER] = MULTICHOICE(sMultichoiceList_HelixAmber), - [MULTICHOICE_DOME_AMBER] = MULTICHOICE(sMultichoiceList_DomeAmber), - [MULTICHOICE_CELADON_VENDING_MACHINE] = MULTICHOICE(sMultichoiceList_CeladonVendingMachine), - [MULTICHOICE_GAME_CORNER_COIN_PURCHASE_COUNTER] = MULTICHOICE(sMultichoiceList_GameCornerCoinPurchaseCounter), - [MULTICHOICE_EXCELLENT_NOT_SO_BAD] = MULTICHOICE(sMultichoiceList_Excellent_NotSoBad), - [MULTICHOICE_RIGHT_LEFT] = MULTICHOICE(sMultichoiceList_RightLeft), - [MULTICHOICE_GAME_CORNER_TMPRIZES] = MULTICHOICE(sMultichoiceList_GameCornerTMPrizes), - [MULTICHOICE_DEPT_STORE_ELEVATOR] = MULTICHOICE(sMultichoiceList_DeptStoreElevator), - [MULTICHOICE_THIRSTY_GIRL_FRESH_WATER] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWater), - [MULTICHOICE_THIRSTY_GIRL_SODA_POP] = MULTICHOICE(sMultichoiceList_ThirstyGirlSodaPop), - [MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_SODA_POP] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWaterSodaPop), - [MULTICHOICE_THIRSTY_GIRL_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlLemonade), - [MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWaterLemonade), - [MULTICHOICE_THIRSTY_GIRL_SODA_POP_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlSodaPopLemonade), - [MULTICHOICE_THIRSTY_GIRL_FRESH_WATER_SODA_POP_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWaterSodaPopLemonade), - [MULTICHOICE_TRADE_CENTER_COLOSSEUM] = MULTICHOICE(sMultichoiceList_TradeCenter_Colosseum), - [MULTICHOICE_LINK_WIRELESS] = MULTICHOICE(sMultichoiceList_Link_Wireless), - [MULTICHOICE_GAME_CORNER_BATTLE_ITEM_PRIZES] = MULTICHOICE(sMultichoiceList_GameCornerBattleItemPrizes), - [MULTICHOICE_ROCKET_HIDEOUT_ELEVATOR] = MULTICHOICE(sMultichoiceList_RocketHideoutElevator), - [MULTICHOICE_LINKED_DIRECT_UNION] = MULTICHOICE(sMultichoiceList_LinkedDirectUnion), - [MULTICHOICE_ISLAND_23] = MULTICHOICE(sMultichoiceList_Island23), - [MULTICHOICE_ISLAND_13] = MULTICHOICE(sMultichoiceList_Island13), - [MULTICHOICE_ISLAND_12] = MULTICHOICE(sMultichoiceList_Island12), - [MULTICHOICE_TRADE_COLOSSEUM_CRUSH] = MULTICHOICE(sMultichoiceList_TradeColosseumCrush), - [MULTICHOICE_48] = MULTICHOICE(sMultichoiceList_48), - [MULTICHOICE_POKEJUMP_DODRIO] = MULTICHOICE(sMultichoiceList_PokejumpDodrio), - [MULTICHOICE_TRADE_COLOSSEUM_2] = MULTICHOICE(sMultichoiceList_TradeColosseum_2), - [MULTICHOICE_MUSHROOMS] = MULTICHOICE(sMultichoiceList_Mushrooms), - [MULTICHOICE_TRADE_COLOSSEUM_BLANK_CRUSH] = MULTICHOICE(sMultichoiceList_TradeColosseumBlankCrush), - [MULTICHOICE_TRADE_COLOSSEUM_BLANK] = MULTICHOICE(sMultichoiceList_TradeColosseumBlank), - [MULTICHOICE_SEVII_NAVEL] = MULTICHOICE(sMultichoiceList_SeviiNavel), - [MULTICHOICE_SEVII_BIRTH] = MULTICHOICE(sMultichoiceList_SeviiBirth), - [MULTICHOICE_SEVII_NAVEL_BIRTH] = MULTICHOICE(sMultichoiceList_SeviiNavelBirth), - [MULTICHOICE_SEAGALLOP_123] = MULTICHOICE(sMultichoiceList_Seagallop123), - [MULTICHOICE_SEAGALLOP_V23] = MULTICHOICE(sMultichoiceList_SeagallopV23), - [MULTICHOICE_SEAGALLOP_V13] = MULTICHOICE(sMultichoiceList_SeagallopV13), - [MULTICHOICE_SEAGALLOP_V12] = MULTICHOICE(sMultichoiceList_SeagallopV12), - [MULTICHOICE_SEAGALLOP_VERMILION] = MULTICHOICE(sMultichoiceList_SeagallopVermilion), - [MULTI_SSTIDAL_BATTLE_FRONTIER] = MULTICHOICE(sMultichoiceList_62), - [MULTICHOICE_JOIN_OR_LEAD] = MULTICHOICE(sMultichoiceList_JoinOrLead), - [MULTICHOICE_TRAINER_TOWER_MODE] = MULTICHOICE(sMultichoiceList_TrainerTowerMode), - [MULTI_FRONTIER_RULES] = MULTICHOICE(sMultichoiceList_FrontierRules), - [MULTI_FRONTIER_PASS_INFO] = MULTICHOICE(sMultichoiceList_FrontierPassInfo), - [MULTI_FRONTIER_GAMBLER_BET] = MULTICHOICE(sMultichoiceList_FrontierGamblerBet), - [MULTI_LEVEL_MODE] = MULTICHOICE(sMultichoiceList_LevelMode), - [MULTI_BATTLE_FACTORY_RULES] = MULTICHOICE(sMultichoiceList_BattleFactoryRules), - [MULTI_GO_ON_RECORD_REST_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRecordRestRetire), - [MULTI_GO_ON_REST_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRestRetire), - [MULTI_GO_ON_RECORD_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRecordRetire), - [MULTI_GO_ON_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRetire), - [MULTI_BATTLE_ARENA_RULES] = MULTICHOICE(sMultichoiceList_BattleArenaRules), - [MULTI_BATTLE_DOME_RULES] = MULTICHOICE(sMultichoiceList_BattleDomeRules), - [MULTI_TOURNEY_WITH_RECORD] = MULTICHOICE(sMultichoiceList_TourneyWithRecord), - [MULTI_TOURNEY_NO_RECORD] = MULTICHOICE(sMultichoiceList_TourneyNoRecord), - [MULTI_BATTLE_PALACE_RULES] = MULTICHOICE(sMultichoiceList_BattlePalaceRules), - [MULTI_BATTLE_PYRAMID_RULES] = MULTICHOICE(sMultichoiceList_BattlePyramidRules), - [MULTI_BATTLE_PIKE_RULES] = MULTICHOICE(sMultichoiceList_BattlePikeRules), - [MULTI_FRONTIER_ITEM_CHOOSE] = MULTICHOICE(sMultichoiceList_FrontierItemChoose), - [MULTI_BATTLE_TOWER_RULES] = MULTICHOICE(sMultichoiceList_BattleTowerRules), - [MULTI_BATTLE_TOWER_FEELINGS] = MULTICHOICE(sMultichoiceList_BattleTowerFeelings), - [MULTI_LINK_LEADER] = MULTICHOICE(sMultichoiceList_LinkLeader), - [MULTI_SATISFACTION] = MULTICHOICE(sMultichoiceList_Satisfaction), +static const struct MultichoiceListStruct sMultichoiceLists[] = +{ + [MULTI_YESNO] = MULTICHOICE(sMultichoiceList_YesNo), + [MULTI_EEVEELUTIONS] = MULTICHOICE(sMultichoiceList_Eeveelutions), + [MULTI_TRAINER_CARD_ICON_TINT] = MULTICHOICE(sMultichoiceList_TrainerCardIconTint), + [MULTI_HOF_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Quit), + [MULTI_EGGS_QUIT] = MULTICHOICE(sMultichoiceList_Eggs_Quit), + [MULTI_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_Victories_Quit), + [MULTI_HOF_EGGS_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Eggs_Quit), + [MULTI_HOF_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Victories_Quit), + [MULTI_EGGS_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_Eggs_Victories_Quit), + [MULTI_HOF_EGGS_VICTORIES_QUIT] = MULTICHOICE(sMultichoiceList_HOF_Eggs_Victories_Quit), + [MULTI_BIKE_SHOP] = MULTICHOICE(sMultichoiceList_BikeShop), + [MULTI_GAME_CORNER_POKEMON_PRIZES] = MULTICHOICE(sMultichoiceList_GameCornerPokemonPrizes), + [MULTI_TRAINER_SCHOOL_WHITEBOARD] = MULTICHOICE(sMultichoiceList_TrainerSchoolWhiteboard), + [MULTI_YES_NO_INFO] = MULTICHOICE(sMultichoiceList_YesNoInfo), + [MULTI_SINGLE_DOUBLE_MULTI_INFO_EXIT] = MULTICHOICE(sMultichoiceList_SingleDoubleMultiInfoExit), + [MULTI_CHALLENGEINFO] = MULTICHOICE(sMultichoiceList_ChallengeInfoExit), + [MULTI_ROOFTOP_B1F] = MULTICHOICE(sMultichoiceList_RooftopB1F), + [MULTI_HELIX] = MULTICHOICE(sMultichoiceList_Helix), + [MULTI_DOME] = MULTICHOICE(sMultichoiceList_Dome), + [MULTI_AMBER] = MULTICHOICE(sMultichoiceList_Amber), + [MULTI_HELIX_AMBER] = MULTICHOICE(sMultichoiceList_HelixAmber), + [MULTI_DOME_AMBER] = MULTICHOICE(sMultichoiceList_DomeAmber), + [MULTI_CELADON_VENDING_MACHINE] = MULTICHOICE(sMultichoiceList_CeladonVendingMachine), + [MULTI_GAME_CORNER_COIN_PURCHASE_COUNTER] = MULTICHOICE(sMultichoiceList_GameCornerCoinPurchaseCounter), + [MULTI_GAME_CORNER_TMPRIZES] = MULTICHOICE(sMultichoiceList_GameCornerTMPrizes), + [MULTI_DEPT_STORE_ELEVATOR] = MULTICHOICE(sMultichoiceList_DeptStoreElevator), + [MULTI_THIRSTY_GIRL_FRESH_WATER] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWater), + [MULTI_THIRSTY_GIRL_SODA_POP] = MULTICHOICE(sMultichoiceList_ThirstyGirlSodaPop), + [MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWaterSodaPop), + [MULTI_THIRSTY_GIRL_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlLemonade), + [MULTI_THIRSTY_GIRL_FRESH_WATER_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWaterLemonade), + [MULTI_THIRSTY_GIRL_SODA_POP_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlSodaPopLemonade), + [MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP_LEMONADE] = MULTICHOICE(sMultichoiceList_ThirstyGirlFreshWaterSodaPopLemonade), + [MULTI_TRADE_CENTER_COLOSSEUM] = MULTICHOICE(sMultichoiceList_TradeCenter_Colosseum), + [MULTI_GAME_CORNER_BATTLE_ITEM_PRIZES] = MULTICHOICE(sMultichoiceList_GameCornerBattleItemPrizes), + [MULTI_ROCKET_HIDEOUT_ELEVATOR] = MULTICHOICE(sMultichoiceList_RocketHideoutElevator), + [MULTI_LINKED_DIRECT_UNION] = MULTICHOICE(sMultichoiceList_LinkedDirectUnion), + [MULTI_ISLAND_23] = MULTICHOICE(sMultichoiceList_Island23), + [MULTI_ISLAND_13] = MULTICHOICE(sMultichoiceList_Island13), + [MULTI_ISLAND_12] = MULTICHOICE(sMultichoiceList_Island12), + [MULTI_TRADE_COLOSSEUM_CRUSH] = MULTICHOICE(sMultichoiceList_TradeColosseumCrush), + [MULTI_POKEJUMP_DODRIO] = MULTICHOICE(sMultichoiceList_PokejumpDodrio), + [MULTI_TRADE_COLOSSEUM_2] = MULTICHOICE(sMultichoiceList_TradeColosseum_2), + [MULTI_MUSHROOMS] = MULTICHOICE(sMultichoiceList_Mushrooms), + [MULTI_SEVII_NAVEL] = MULTICHOICE(sMultichoiceList_SeviiNavel), + [MULTI_SEVII_BIRTH] = MULTICHOICE(sMultichoiceList_SeviiBirth), + [MULTI_SEVII_NAVEL_BIRTH] = MULTICHOICE(sMultichoiceList_SeviiNavelBirth), + [MULTI_SEAGALLOP_123] = MULTICHOICE(sMultichoiceList_Seagallop123), + [MULTI_SEAGALLOP_V23] = MULTICHOICE(sMultichoiceList_SeagallopV23), + [MULTI_SEAGALLOP_V13] = MULTICHOICE(sMultichoiceList_SeagallopV13), + [MULTI_SEAGALLOP_V12] = MULTICHOICE(sMultichoiceList_SeagallopV12), + [MULTI_SEAGALLOP_VERMILION] = MULTICHOICE(sMultichoiceList_SeagallopVermilion), + [MULTI_JOIN_OR_LEAD] = MULTICHOICE(sMultichoiceList_JoinOrLead), + [MULTI_TRAINER_TOWER_MODE] = MULTICHOICE(sMultichoiceList_TrainerTowerMode), + [MULTI_FRONTIER_RULES] = MULTICHOICE(sMultichoiceList_FrontierRules), + [MULTI_FRONTIER_PASS_INFO] = MULTICHOICE(sMultichoiceList_FrontierPassInfo), + [MULTI_FRONTIER_GAMBLER_BET] = MULTICHOICE(sMultichoiceList_FrontierGamblerBet), + [MULTI_LEVEL_MODE] = MULTICHOICE(sMultichoiceList_LevelMode), + [MULTI_BATTLE_FACTORY_RULES] = MULTICHOICE(sMultichoiceList_BattleFactoryRules), + [MULTI_GO_ON_RECORD_REST_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRecordRestRetire), + [MULTI_GO_ON_REST_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRestRetire), + [MULTI_GO_ON_RECORD_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRecordRetire), + [MULTI_GO_ON_RETIRE] = MULTICHOICE(sMultichoiceList_GoOnRetire), + [MULTI_BATTLE_ARENA_RULES] = MULTICHOICE(sMultichoiceList_BattleArenaRules), + [MULTI_BATTLE_DOME_RULES] = MULTICHOICE(sMultichoiceList_BattleDomeRules), + [MULTI_TOURNEY_WITH_RECORD] = MULTICHOICE(sMultichoiceList_TourneyWithRecord), + [MULTI_TOURNEY_NO_RECORD] = MULTICHOICE(sMultichoiceList_TourneyNoRecord), + [MULTI_BATTLE_PALACE_RULES] = MULTICHOICE(sMultichoiceList_BattlePalaceRules), + [MULTI_BATTLE_PYRAMID_RULES] = MULTICHOICE(sMultichoiceList_BattlePyramidRules), + [MULTI_BATTLE_PIKE_RULES] = MULTICHOICE(sMultichoiceList_BattlePikeRules), + [MULTI_FRONTIER_ITEM_CHOOSE] = MULTICHOICE(sMultichoiceList_FrontierItemChoose), + [MULTI_BATTLE_TOWER_RULES] = MULTICHOICE(sMultichoiceList_BattleTowerRules), + [MULTI_BATTLE_TOWER_FEELINGS] = MULTICHOICE(sMultichoiceList_BattleTowerFeelings), + [MULTI_LINK_LEADER] = MULTICHOICE(sMultichoiceList_LinkLeader), + [MULTI_SATISFACTION] = MULTICHOICE(sMultichoiceList_Satisfaction), }; -// From Cool to Berries goes unused -const u8 *const gStdStringPtrs[] = { - [STDSTRING_COOL] = gText_Cool, - [STDSTRING_BEAUTY] = gText_Beauty, - [STDSTRING_CUTE] = gText_Cute, - [STDSTRING_SMART] = gText_Smart, - [STDSTRING_TOUGH] = gText_Tough, - [STDSTRING_COOL2] = gText_Cool_2, - [STDSTRING_BEAUTY2] = gText_Beauty_2, - [STDSTRING_CUTE2] = gText_Cute_2, - [STDSTRING_SMART2] = gText_Smart_2, - [STDSTRING_TOUGH2] = gText_Tough_2, - [STDSTRING_ITEMS] = gText_Items, - [STDSTRING_KEY_ITEMS] = gText_KeyItems, - [STDSTRING_POKEBALLS] = gText_PokeBalls, - [STDSTRING_TMHMS] = gText_TMsAndHMs, - [STDSTRING_BERRIES] = gText_Berries, - [STDSTRING_BOULDER_BADGE] = gText_Boulderbadge, - [STDSTRING_CASCADE_BADGE] = gText_Cascadebadge, - [STDSTRING_THUNDER_BADGE] = gText_Thunderbadge, - [STDSTRING_RAINBOW_BADGE] = gText_Rainbowbadge, - [STDSTRING_SOUL_BADGE] = gText_Soulbadge, - [STDSTRING_MARSH_BADGE] = gText_Marshbadge, - [STDSTRING_VOLCANO_BADGE] = gText_Volcanobadge, - [STDSTRING_EARTH_BADGE] = gText_Earthbadge, - [STDSTRING_COINS] = gText_Coins_2, - [STDSTRING_ITEMS_POCKET] = gText_ItemsPocket, - [STDSTRING_KEY_ITEMS_POCKET] = gText_KeyItemsPocket, - [STDSTRING_POKEBALLS_POCKET] = gText_PokeBallsPocket, - [STDSTRING_TM_CASE] = gText_TmCase, - [STDSTRING_BERRY_POUCH] = gText_BerryPouch_2, - [STDSTRING_SINGLE] = COMPOUND_STRING("SINGLE"), - [STDSTRING_DOUBLE] = COMPOUND_STRING("DOUBLE"), +const u8 *const gStdStrings[] = { + [STDSTRING_BOULDER_BADGE] = gText_BoulderBadge, + [STDSTRING_CASCADE_BADGE] = gText_CascadeBadge, + [STDSTRING_THUNDER_BADGE] = gText_ThunderBadge, + [STDSTRING_RAINBOW_BADGE] = gText_RainbowBadge, + [STDSTRING_SOUL_BADGE] = gText_SoulBadge, + [STDSTRING_MARSH_BADGE] = gText_MarshBadge, + [STDSTRING_VOLCANO_BADGE] = gText_VolcanoBadge, + [STDSTRING_EARTH_BADGE] = gText_EarthBadge, + [STDSTRING_COINS] = gText_Coins, + [STDSTRING_ITEMS_POCKET] = COMPOUND_STRING("ITEMS POCKET"), + [STDSTRING_KEY_ITEMS_POCKET] = COMPOUND_STRING("KEY ITEMS POCKET"), + [STDSTRING_POKEBALLS_POCKET] = COMPOUND_STRING("POKé BALLS POCKET"), + [STDSTRING_TM_CASE] = gText_TMCase, + [STDSTRING_BERRY_POUCH] = gText_BerryPouch, + [STDSTRING_SINGLE] = gOtherText_Single, + [STDSTRING_DOUBLE] = gOtherText_Double, [STDSTRING_MULTI] = COMPOUND_STRING("MULTI"), - [STDSTRING_MULTI_LINK] = COMPOUND_STRING("MULTI-LINK"), + [STDSTRING_MULTI_LINK] = sText_MultiLink, [STDSTRING_BATTLE_DOME] = gText_BattleDome, [STDSTRING_BATTLE_FACTORY] = gText_BattleFactory, [STDSTRING_BATTLE_PALACE] = gText_BattlePalace, @@ -863,13 +759,6 @@ const u8 *const gStdStringPtrs[] = { [STDSTRING_BATTLE_PYRAMID] = gText_BattlePyramid, }; -static const u8 sLinkServicesMultichoiceIds[] = -{ - MULTICHOICE_TRADE_CENTER_COLOSSEUM, - MULTICHOICE_TRADE_COLOSSEUM_CRUSH, - MULTICHOICE_TRADE_COLOSSEUM_2 -}; - static const u8 *const sDescriptionPtrs_CableClub_TradeBattleCancel[] = { CableClub_Text_TradeMonsUsingLinkCable, CableClub_Text_BattleUsingLinkCable, @@ -927,38 +816,17 @@ static const struct SpriteSheet sMuseumAerodactylSprSheets[] = { {} }; - static const u8 *const sSeagallopDestStrings[] = { - [SEAGALLOP_VERMILION_CITY] = gText_Vermilion, - [SEAGALLOP_ONE_ISLAND] = gText_OneIsland, - [SEAGALLOP_TWO_ISLAND] = gText_TwoIsland, - [SEAGALLOP_THREE_ISLAND] = gText_ThreeIsland, - [SEAGALLOP_FOUR_ISLAND] = gText_FourIsland, - [SEAGALLOP_FIVE_ISLAND] = gText_FiveIsland, - [SEAGALLOP_SIX_ISLAND] = gText_SixIsland, - [SEAGALLOP_SEVEN_ISLAND] = gText_SevenIsland, + [SEAGALLOP_VERMILION_CITY] = sText_Vermilion, + [SEAGALLOP_ONE_ISLAND] = sText_OneIsland, + [SEAGALLOP_TWO_ISLAND] = sText_TwoIsland, + [SEAGALLOP_THREE_ISLAND] = sText_ThreeIsland, + [SEAGALLOP_FOUR_ISLAND] = COMPOUND_STRING("FOUR ISLAND"), + [SEAGALLOP_FIVE_ISLAND] = COMPOUND_STRING("FIVE ISLAND"), + [SEAGALLOP_SIX_ISLAND] = COMPOUND_STRING("SIX ISLAND"), + [SEAGALLOP_SEVEN_ISLAND] = COMPOUND_STRING("SEVEN ISLAND"), }; -static u16 GetStringTilesWide(const u8 *str) -{ - return (GetStringWidth(FONT_NORMAL_COPY_1, str, 0) + 7) / 8; -} - -static u8 GetMenuWidthFromList(const struct MenuAction * items, u8 count) -{ - u16 i; - u8 width = GetStringTilesWide(items[0].text); - u8 tmp; - - for (i = 1; i < count; i++) - { - tmp = GetStringTilesWide(items[i].text); - if (width < tmp) - width = tmp; - } - return width; -} - bool8 ScriptMenu_MultichoiceDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u8 maxBeforeScroll, u32 initialRow, u32 callbackSet) { if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) @@ -968,21 +836,32 @@ bool8 ScriptMenu_MultichoiceDynamic(u8 left, u8 top, u8 argc, struct ListMenuIte } else { - gSpecialVar_Result = 0xFF; + gSpecialVar_Result = SCR_MENU_UNSET; DrawMultichoiceMenuDynamic(left, top, argc, items, ignoreBPress, initialRow, maxBeforeScroll, callbackSet); return TRUE; } } -bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 mcId, u8 ignoreBpress) +bool8 ScriptMenu_Multichoice(u8 left, u8 top, enum MultichoiceID mcId, u8 ignoreBpress) { if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) return FALSE; + gSpecialVar_Result = SCR_MENU_UNSET; DrawMultichoiceMenu(left, top, mcId, ignoreBpress, 0); return TRUE; } +bool32 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, enum MultichoiceID multichoiceId, bool32 ignoreBPress, u8 cursorPos) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + return FALSE; + + gSpecialVar_Result = SCR_MENU_UNSET; + DrawMultichoiceMenu(left, top, multichoiceId, ignoreBPress, cursorPos); + return TRUE; +} + static void MultichoiceDynamicEventDebug_OnInit(struct DynamicListMenuEventArgs *eventArgs) { DebugPrintf("OnInit: %d", eventArgs->windowId); @@ -1062,15 +941,6 @@ static void FreeListMenuItems(struct ListMenuItem *items, u32 count) Free(items); } -bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 mcId, u8 ignoreBpress, u8 cursorPos) -{ - if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) - return FALSE; - gSpecialVar_Result = SCR_MENU_UNSET; - DrawMultichoiceMenu(left, top, mcId, ignoreBpress, cursorPos); - return TRUE; -} - void MultichoiceDynamic_InitStack(u32 capacity) { AGB_ASSERT(sDynamicMultiChoiceStack == NULL); @@ -1115,9 +985,9 @@ u32 MultichoiceDynamic_StackSize(void) void MultichoiceDynamic_PushElement(struct ListMenuItem item) { if (sDynamicMultiChoiceStack == NULL) - MultichoiceDynamic_InitStack(MULTICHOICE_DYNAMIC_STACK_SIZE); + MultichoiceDynamic_InitStack(MULTI_DYNAMIC_STACK_SIZE); if (MultichoiceDynamic_StackFull()) - MultichoiceDynamic_ReallocStack(sDynamicMultiChoiceStack->capacity + MULTICHOICE_DYNAMIC_STACK_INC); + MultichoiceDynamic_ReallocStack(sDynamicMultiChoiceStack->capacity + MULTI_DYNAMIC_STACK_INC); sDynamicMultiChoiceStack->elements[++sDynamicMultiChoiceStack->top] = item; } @@ -1159,28 +1029,19 @@ static void MultichoiceDynamic_MoveCursor(s32 itemIndex, bool8 onInit, struct Li u8 taskId; if (!onInit) PlaySE(SE_SELECT); + taskId = FindTaskIdByFunc(Task_HandleScrollingMultichoiceInput); - if (taskId != TASK_NONE) + if (taskId == TASK_NONE) + return; + + ListMenuGetScrollAndRow(gTasks[taskId].data[0], &gScrollableMultichoice_ScrollOffset, NULL); + if (sDynamicMenuEventId != DYN_MULTICHOICE_CB_NONE && sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged && !onInit) { - ListMenuGetScrollAndRow(gTasks[taskId].data[0], &gScrollableMultichoice_ScrollOffset, NULL); - if (sDynamicMenuEventId != DYN_MULTICHOICE_CB_NONE && sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged && !onInit) - { - struct DynamicListMenuEventArgs eventArgs = {.selectedItem = itemIndex, .windowId = list->template.windowId, .list = &list->template}; - sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged(&eventArgs); - } + struct DynamicListMenuEventArgs eventArgs = {.selectedItem = itemIndex, .windowId = list->template.windowId, .list = &list->template}; + sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged(&eventArgs); } } -u32 GetMultiChoiceWindowHeight(u8 argc, u8 maxBeforeScroll) -{ - u32 windowHeight; - u8 numItems = argc < maxBeforeScroll ? argc : maxBeforeScroll; - - windowHeight = numItems * GetFontAttribute(sScriptableListMenuTemplate.fontId, FONTATTR_MAX_LETTER_HEIGHT); - - return (windowHeight + 7) / 8; -} - static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u32 initialRow, u8 maxBeforeScroll, u32 callbackSet) { u32 i; @@ -1257,7 +1118,7 @@ static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenu } } -void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count) +void DrawMultichoiceMenuInternal(u8 left, u8 top, enum MultichoiceID multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count) { s32 i; s32 strWidth; @@ -1289,55 +1150,32 @@ void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignore } } -static void DrawMultichoiceMenu(u8 left, u8 top, u8 mcId, u8 ignoreBpress, u8 initPos) +static void DrawMultichoiceMenu(u8 left, u8 top, enum MultichoiceID mcId, u8 ignoreBpress, u8 initPos) { DrawMultichoiceMenuInternal(left, top, mcId, ignoreBpress, initPos, sMultichoiceLists[mcId].list, sMultichoiceLists[mcId].count); } -static u8 GetMCWindowHeight(u8 count) -{ - switch (count) - { - case 0: - return 1; - case 1: - return 2; - case 2: - return 4; - case 3: - return 6; - case 4: - return 7; - case 5: - return 9; - case 6: - return 11; - case 7: - return 13; - case 8: - return 14; - default: - return 1; - } -} - #define tTimer data[2] #define tIgnoreBPress data[4] #define tDoWrap data[5] #define tWindowId data[6] #define tMultichoiceId data[7] -static void InitMultichoiceCheckWrap(bool8 ignoreBPress, u8 count, u8 windowId, u8 multichoiceId) +static void InitMultichoiceCheckWrap(bool8 ignoreBPress, u8 count, u8 windowId, enum MultichoiceID multichoiceId) { u8 taskId; sProcessInputDelay = 0; - for (u8 i = 0; i < ARRAY_COUNT(sLinkServicesMultichoiceIds); i++) + switch (multichoiceId) { - if (sLinkServicesMultichoiceIds[i] == multichoiceId) - { - sProcessInputDelay = 12; - } + case MULTI_TRADE_CENTER_COLOSSEUM: + case MULTI_TRADE_COLOSSEUM_CRUSH: + case MULTI_TRADE_COLOSSEUM_2: + sProcessInputDelay = 12; + break; + default: + sProcessInputDelay = 0; + break; } taskId = CreateTask(Task_HandleMultichoiceInput, 80); @@ -1411,109 +1249,94 @@ static void Task_HandleMultichoiceInput(u8 taskId) { s16 *data = gTasks[taskId].data; s8 input; - if (!gPaletteFade.active) - { - if (sProcessInputDelay != 0) - sProcessInputDelay--; - else - { - if (tDoWrap == FALSE) - input = Menu_ProcessInputNoWrap(); - else - input = Menu_ProcessInput(); - if (JOY_NEW(DPAD_UP | DPAD_DOWN)) - DrawLinkServicesMultichoiceMenu(tMultichoiceId); - switch (input) - { - case MENU_NOTHING_CHOSEN: - return; - case MENU_B_PRESSED: - if (tIgnoreBPress) - return; - PlaySE(SE_SELECT); - gSpecialVar_Result = SCR_MENU_CANCEL; - break; - default: - gSpecialVar_Result = input; - break; - } - DestroyScriptMenuWindow(tWindowId); - DestroyTask(taskId); - ScriptContext_Enable(); - } - } -} -static void DrawLinkServicesMultichoiceMenu(u8 mcId) -{ - switch (mcId) + if (gPaletteFade.active) + return; + + if (sProcessInputDelay != 0) { - case MULTICHOICE_TRADE_CENTER_COLOSSEUM: - FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, FONT_NORMAL, sDescriptionPtrs_CableClub_TradeBattleCancel[Menu_GetCursorPos()], 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); + sProcessInputDelay--; + return; + } + + if (tDoWrap == FALSE) + input = Menu_ProcessInputNoWrap(); + else + input = Menu_ProcessInput(); + + if (JOY_NEW(DPAD_UP | DPAD_DOWN)) + DrawLinkServicesMultichoiceMenu(tMultichoiceId); + + switch (input) + { + case MENU_NOTHING_CHOSEN: + return; + case MENU_B_PRESSED: + if (tIgnoreBPress) + return; + PlaySE(SE_SELECT); + gSpecialVar_Result = MULTI_B_PRESSED; break; - case MULTICHOICE_TRADE_COLOSSEUM_CRUSH: - FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, FONT_NORMAL, sDescriptionPtrs_WirelessCenter_TradeBattleCrushCancel[Menu_GetCursorPos()], 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); - break; - case MULTICHOICE_TRADE_COLOSSEUM_2: - FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, FONT_NORMAL, sDescriptionPtrs_WirelessCenter_TradeBattleCancel[Menu_GetCursorPos()], 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); + default: + gSpecialVar_Result = input; break; } + ClearToTransparentAndRemoveWindow(tWindowId); + DestroyTask(taskId); + ScriptContext_Enable(); } bool8 ScriptMenu_YesNo(u8 unused, u8 stuff) { - if (FuncIsActiveTask(Task_YesNoMenu_HandleInput) == TRUE) + if (FuncIsActiveTask(Task_HandleYesNoInput) == TRUE) return FALSE; + gSpecialVar_Result = SCR_MENU_UNSET; if (QL_AvoidDisplay(QL_DestroyAbortedDisplay)) return TRUE; DisplayYesNoMenuDefaultYes(); - CreateTask(Task_YesNoMenu_HandleInput, 80); + CreateTask(Task_HandleYesNoInput, 80); return TRUE; } -static void Task_YesNoMenu_HandleInput(u8 taskId) +static void Task_HandleYesNoInput(u8 taskId) { - s8 input; if (gTasks[taskId].tTimer < 5) { gTasks[taskId].tTimer++; + return; } - else + + switch (Menu_ProcessInputNoWrapClearOnChoose()) { - input = Menu_ProcessInputNoWrapClearOnChoose(); - switch (input) - { - case MENU_NOTHING_CHOSEN: - return; - case MENU_B_PRESSED: - case 1: // NO - PlaySE(SE_SELECT); - gSpecialVar_Result = FALSE; - break; - case 0: // YES - gSpecialVar_Result = TRUE; - break; - } - DestroyTask(taskId); - ScriptContext_Enable(); + case MENU_NOTHING_CHOSEN: + return; + case MENU_B_PRESSED: + case 1: // NO + PlaySE(SE_SELECT); + gSpecialVar_Result = FALSE; + break; + case 0: // YES + gSpecialVar_Result = TRUE; + break; } + DestroyTask(taskId); + ScriptContext_Enable(); } -bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBpress, u8 columnCount) +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, enum MultichoiceID multichoiceId, bool8 ignoreBpress, u8 columnCount) { - const struct MenuAction * list; + const struct MenuAction *list; u8 count; u8 width; u8 rowCount; u8 taskId; - if (FuncIsActiveTask(Hask_MultichoiceGridMenu_HandleInput) == TRUE) + + if (FuncIsActiveTask(Task_HandleMultichoiceGridInput) == TRUE) return FALSE; + gSpecialVar_Result = SCR_MENU_UNSET; if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE) @@ -1523,7 +1346,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignore count = sMultichoiceLists[multichoiceId].count; width = GetMenuWidthFromList(list, count) + 1; rowCount = count / columnCount; - taskId = CreateTask(Hask_MultichoiceGridMenu_HandleInput, 80); + taskId = CreateTask(Task_HandleMultichoiceGridInput, 80); gTasks[taskId].tIgnoreBPress = ignoreBpress; gTasks[taskId].tWindowId = CreateWindowFromRect(left, top, width * columnCount, rowCount * 2); SetStandardWindowBorderStyle(gTasks[taskId].tWindowId, FALSE); @@ -1534,11 +1357,12 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignore return TRUE; } -static void Hask_MultichoiceGridMenu_HandleInput(u8 taskId) +static void Task_HandleMultichoiceGridInput(u8 taskId) { s16 *data = gTasks[taskId].data; - s8 input = Menu_ProcessInputGridLayout(); - switch (input) + s8 selection = Menu_ProcessGridInput(); + + switch (selection) { case MENU_NOTHING_CHOSEN: return; @@ -1546,13 +1370,14 @@ static void Hask_MultichoiceGridMenu_HandleInput(u8 taskId) if (tIgnoreBPress) return; PlaySE(SE_SELECT); - gSpecialVar_Result = SCR_MENU_CANCEL; + gSpecialVar_Result = MULTI_B_PRESSED; break; default: - gSpecialVar_Result = input; + gSpecialVar_Result = selection; break; } - DestroyScriptMenuWindow(tWindowId); + + ClearToTransparentAndRemoveWindow(tWindowId); DestroyTask(taskId); ScriptContext_Enable(); } @@ -1562,27 +1387,25 @@ static void Hask_MultichoiceGridMenu_HandleInput(u8 taskId) #undef tWindowId #undef tMultichoiceId -#define tState data[0] -#define tSpecies data[1] -#define tSpriteId data[2] -#define tWindowId data[5] -bool8 CreatePCMenu(void) +bool32 ScriptMenu_CreatePCMultichoice(void) { if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) return FALSE; + gSpecialVar_Result = SCR_MENU_UNSET; - CreatePCMenuWindow(); + CreatePCMultichoice(); + return TRUE; } -static void CreatePCMenuWindow(void) +static void CreatePCMultichoice(void) { u8 cursorWidth = GetMenuCursorDimensionByFont(FONT_NORMAL, 0); - u8 UNUSED height = GetFontAttribute(FONT_NORMAL, FONTATTR_MAX_LETTER_HEIGHT); u8 windowWidth; u8 numItems; u8 windowId; + switch (GetStringTilesWide(gText_SPc)) { default: @@ -1596,13 +1419,14 @@ static void CreatePCMenuWindow(void) windowWidth = 14; break; } + if (FlagGet(FLAG_SYS_GAME_CLEAR)) { numItems = 5; windowId = CreateWindowFromRect(0, 0, windowWidth, 10); SetStandardWindowBorderStyle(windowId, FALSE); AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_ProfOakSPc, cursorWidth, 34, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_HallOfFame_2, cursorWidth, 50, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_HallOfFame, cursorWidth, 50, TEXT_SKIP_DRAW, NULL); AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LogOff, cursorWidth, 66, TEXT_SKIP_DRAW, NULL); } else @@ -1611,30 +1435,39 @@ static void CreatePCMenuWindow(void) numItems = 4; else numItems = 3; + windowId = CreateWindowFromRect(0, 0, windowWidth, numItems * 2); SetStandardWindowBorderStyle(windowId, FALSE); if (FlagGet(FLAG_SYS_POKEDEX_GET)) AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_ProfOakSPc, cursorWidth, 34, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LogOff, cursorWidth, 2 + 16 * (numItems - 1), TEXT_SKIP_DRAW, NULL); } + if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC)) AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_BillSPc, cursorWidth, 2 , TEXT_SKIP_DRAW, NULL); else AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_SomeoneSPc, cursorWidth, 2 , TEXT_SKIP_DRAW, NULL); + StringExpandPlaceholders(gStringVar4, gText_SPc); PrintPlayerNameOnWindow(windowId, gStringVar4, cursorWidth, 18); InitMenuNormal(windowId, FONT_NORMAL, 0, 2, 16, numItems, 0); - InitMultichoiceCheckWrap(FALSE, numItems, windowId, MULTICHOICE_NONE); + InitMultichoiceCheckWrap(FALSE, numItems, windowId, MULTI_NONE); ScheduleBgCopyTilemapToVram(0); } void ScriptMenu_DisplayPCStartupPrompt(void) { LoadMessageBoxAndFrameGfx(0, TRUE); - AddTextPrinterParameterized2(0, FONT_NORMAL, Text_AccessWhichPC, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); + AddTextPrinterParameterized2(0, FONT_NORMAL, gText_WhichPCShouldBeAccessed, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); } -static void Task_ScriptShowMonPic(u8 taskId) +#define tState data[0] +#define tSpecies data[1] +#define tMonSpriteId data[2] +#define tWindowId data[5] + +static void Task_PokemonPicWindow(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->tState) @@ -1645,11 +1478,11 @@ static void Task_ScriptShowMonPic(u8 taskId) case 1: break; case 2: - FreeResourcesAndDestroySprite(&gSprites[task->tSpriteId], task->tSpriteId); + FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId], task->tMonSpriteId); task->tState++; break; case 3: - DestroyScriptMenuWindow(task->tWindowId); + ClearToTransparentAndRemoveWindow(task->tWindowId); DestroyTask(taskId); break; } @@ -1659,44 +1492,85 @@ bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y) { u8 spriteId; u8 taskId; + if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE) return TRUE; - if (FindTaskIdByFunc(Task_ScriptShowMonPic) != TASK_NONE) + if (FindTaskIdByFunc(Task_PokemonPicWindow) != TASK_NONE) return FALSE; + spriteId = CreateMonSprite_PicBox(species, 8 * x + 40, 8 * y + 40, FALSE); - taskId = CreateTask(Task_ScriptShowMonPic, 80); + taskId = CreateTask(Task_PokemonPicWindow, 80); gTasks[taskId].tWindowId = CreateWindowFromRect(x, y, 8, 8); gTasks[taskId].tState = 0; gTasks[taskId].tSpecies = species; - gTasks[taskId].tSpriteId = spriteId; + gTasks[taskId].tMonSpriteId = spriteId; gSprites[spriteId].callback = SpriteCallbackDummy; gSprites[spriteId].oam.priority = 0; SetStandardWindowBorderStyle(gTasks[taskId].tWindowId, TRUE); ScheduleBgCopyTilemapToVram(0); + return TRUE; } bool8 (*ScriptMenu_HidePokemonPic(void))(void) { - u8 taskId = FindTaskIdByFunc(Task_ScriptShowMonPic); + u8 taskId = FindTaskIdByFunc(Task_PokemonPicWindow); if (taskId == TASK_NONE) return NULL; + gTasks[taskId].tState++; - return PicboxWait; + return IsPicboxClosed; } -static bool8 PicboxWait(void) +static bool8 IsPicboxClosed(void) { - if (FindTaskIdByFunc(Task_ScriptShowMonPic) == TASK_NONE) + if (FindTaskIdByFunc(Task_PokemonPicWindow) == TASK_NONE) return TRUE; else return FALSE; } +static u8 CreateWindowFromRect(u8 left, u8 top, u8 width, u8 height) +{ + struct WindowTemplate template = CreateWindowTemplate(0, left + 1, top + 1, width, height, 15, 0x038); + u8 windowId = AddWindow(&template); + PutWindowTilemap(windowId); + + return windowId; +} + +static void ClearToTransparentAndRemoveWindow(u8 windowId) +{ + ClearWindowTilemap(windowId); + ClearStdWindowAndFrameToTransparent(windowId, TRUE); + RemoveWindow(windowId); +} + +static void DrawLinkServicesMultichoiceMenu(enum MultichoiceID mcId) +{ + switch (mcId) + { + case MULTI_TRADE_CENTER_COLOSSEUM: + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, FONT_NORMAL, sDescriptionPtrs_CableClub_TradeBattleCancel[Menu_GetCursorPos()], 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); + break; + case MULTI_TRADE_COLOSSEUM_CRUSH: + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, FONT_NORMAL, sDescriptionPtrs_WirelessCenter_TradeBattleCrushCancel[Menu_GetCursorPos()], 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); + break; + case MULTI_TRADE_COLOSSEUM_2: + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, FONT_NORMAL, sDescriptionPtrs_WirelessCenter_TradeBattleCancel[Menu_GetCursorPos()], 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); + break; + default: + return; + } +} + void PicboxCancel(void) { struct Task *task; - u8 taskId = FindTaskIdByFunc(Task_ScriptShowMonPic); + u8 taskId = FindTaskIdByFunc(Task_PokemonPicWindow); if (taskId == TASK_NONE) return; @@ -1707,12 +1581,12 @@ void PicboxCancel(void) case 0: case 1: case 2: - FreeResourcesAndDestroySprite(&gSprites[task->tSpriteId], task->tSpriteId); - DestroyScriptMenuWindow(task->tWindowId); + FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId], task->tMonSpriteId); + ClearToTransparentAndRemoveWindow(task->tWindowId); DestroyTask(taskId); break; case 3: - DestroyScriptMenuWindow(task->tWindowId); + ClearToTransparentAndRemoveWindow(task->tWindowId); DestroyTask(taskId); break; } @@ -1729,12 +1603,12 @@ void Task_WaitMuseumFossilPic(u8 taskId) case 1: break; case 2: - DestroySprite(&gSprites[task->tSpriteId]); + DestroySprite(&gSprites[task->tMonSpriteId]); FreeSpriteTilesByTag(GFXTAG_FOSSIL); task->tState++; break; case 3: - DestroyScriptMenuWindow(task->tWindowId); + ClearToTransparentAndRemoveWindow(task->tWindowId); DestroyTask(taskId); break; } @@ -1769,7 +1643,7 @@ bool8 OpenMuseumFossilPic(void) taskId = CreateTask(Task_WaitMuseumFossilPic, 80); gTasks[taskId].tWindowId = CreateWindowFromRect(gSpecialVar_0x8005, gSpecialVar_0x8006, 8, 8); gTasks[taskId].tState = 0; - gTasks[taskId].tSpriteId = spriteId; + gTasks[taskId].tMonSpriteId = spriteId; SetStandardWindowBorderStyle(gTasks[taskId].tWindowId, TRUE); ScheduleBgCopyTilemapToVram(0); return TRUE; @@ -1784,33 +1658,18 @@ bool8 CloseMuseumFossilPic(void) return TRUE; } -static u8 CreateWindowFromRect(u8 left, u8 top, u8 width, u8 height) -{ - struct WindowTemplate template = CreateWindowTemplate(0, left + 1, top + 1, width, height, 15, 0x038); - u8 windowId = AddWindow(&template); - PutWindowTilemap(windowId); - return windowId; -} - -static void DestroyScriptMenuWindow(u8 windowId) -{ - ClearWindowTilemap(windowId); - ClearStdWindowAndFrameToTransparent(windowId, TRUE); - RemoveWindow(windowId); -} - void QL_DestroyAbortedDisplay(void) { u8 taskId; s16 *data; ScriptContext_SetupScript(EventScript_ReleaseEnd); - taskId = FindTaskIdByFunc(Task_ScriptShowMonPic); + taskId = FindTaskIdByFunc(Task_PokemonPicWindow); if (taskId != TASK_NONE) { data = gTasks[taskId].data; if (tState < 2) - FreeResourcesAndDestroySprite(&gSprites[tSpriteId], tSpriteId); + FreeResourcesAndDestroySprite(&gSprites[tMonSpriteId], tMonSpriteId); } taskId = FindTaskIdByFunc(Task_WaitMuseumFossilPic); @@ -1819,120 +1678,16 @@ void QL_DestroyAbortedDisplay(void) data = gTasks[taskId].data; if (tState < 2) { - DestroySprite(&gSprites[tSpriteId]); + DestroySprite(&gSprites[tMonSpriteId]); FreeSpriteTilesByTag(GFXTAG_FOSSIL); } } } -void DrawSeagallopDestinationMenu(void) -{ - // 8004 = Starting location - // 8005 = Page (0: Verm, One, Two, Three, Four, Other, Exit; 1: Four, Five, Six, Seven, Other, Exit) - u8 destinationId; - u8 top; - u8 numItems; - u8 cursorWidth; - u8 UNUSED fontHeight; - u8 windowId; - u8 i; - gSpecialVar_Result = SCR_MENU_UNSET; - - if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE) - return; - - if (gSpecialVar_0x8005 == 1) - { - if (gSpecialVar_0x8004 < SEAGALLOP_FIVE_ISLAND) - destinationId = SEAGALLOP_FIVE_ISLAND; - else - destinationId = SEAGALLOP_FOUR_ISLAND; - numItems = 5; - top = 2; - } - else - { - destinationId = SEAGALLOP_VERMILION_CITY; - numItems = 6; - top = 0; - } - cursorWidth = GetMenuCursorDimensionByFont(FONT_NORMAL, 0); - fontHeight = GetFontAttribute(FONT_NORMAL, FONTATTR_MAX_LETTER_HEIGHT); - windowId = CreateWindowFromRect(17, top, 11, numItems * 2); - SetStandardWindowBorderStyle(windowId, FALSE); - - // -2 excludes "Other" and "Exit", appended after the loop - for (i = 0; i < numItems - 2; i++) - { - if (destinationId != gSpecialVar_0x8004) - AddTextPrinterParameterized(windowId, FONT_NORMAL, sSeagallopDestStrings[destinationId], cursorWidth, i * 16 + 2, TEXT_SKIP_DRAW, NULL); - else - i--; - destinationId++; - - // Wrap around - if (destinationId == SEAGALLOP_SEVEN_ISLAND + 1) - destinationId = SEAGALLOP_VERMILION_CITY; - } - AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_Other, cursorWidth, i * 16 + 2, TEXT_SKIP_DRAW, NULL); - i++; - AddTextPrinterParameterized(windowId, FONT_NORMAL, gOtherText_Exit, cursorWidth, i * 16 + 2, TEXT_SKIP_DRAW, NULL); - InitMenuNormal(windowId, FONT_NORMAL, 0, 2, 16, numItems, 0); - InitMultichoiceCheckWrap(FALSE, numItems, windowId, MULTICHOICE_NONE); - ScheduleBgCopyTilemapToVram(0); -} - -u16 GetSelectedSeagallopDestination(void) -{ - // 8004 = Starting location - // 8005 = Page (0: Verm, One, Two, Three, Four, Other, Exit; 1: Four, Five, Six, Seven, Other, Exit) - if (gSpecialVar_Result == SCR_MENU_CANCEL) - return SCR_MENU_CANCEL; - if (gSpecialVar_0x8005 == 1) - { - if (gSpecialVar_Result == 3) - { - return SEAGALLOP_MORE; - } - else if (gSpecialVar_Result == 4) - { - return SCR_MENU_CANCEL; - } - else if (gSpecialVar_Result == 0) - { - if (gSpecialVar_0x8004 > SEAGALLOP_FOUR_ISLAND) - return SEAGALLOP_FOUR_ISLAND; - else - return SEAGALLOP_FIVE_ISLAND; - } - else if (gSpecialVar_Result == 1) - { - if (gSpecialVar_0x8004 > SEAGALLOP_FIVE_ISLAND) - return SEAGALLOP_FIVE_ISLAND; - else - return SEAGALLOP_SIX_ISLAND; - } - else if (gSpecialVar_Result == 2) - { - if (gSpecialVar_0x8004 > SEAGALLOP_SIX_ISLAND) - return SEAGALLOP_SIX_ISLAND; - else - return SEAGALLOP_SEVEN_ISLAND; - } - } - else - { - if (gSpecialVar_Result == 4) - return SEAGALLOP_MORE; - else if (gSpecialVar_Result == 5) - return SCR_MENU_CANCEL; - else if (gSpecialVar_Result >= gSpecialVar_0x8004) - return gSpecialVar_Result + 1; - else - return gSpecialVar_Result; - } - return SEAGALLOP_VERMILION_CITY; -} +#undef tState +#undef tSpecies +#undef tMonSpriteId +#undef tWindowId static int DisplayTextAndGetWidthInternal(const u8 *str) { @@ -1975,3 +1730,166 @@ int ScriptMenu_AdjustLeftCoordFromWidth(int left, int width) return adjustedLeft; } +void DrawSeagallopDestinationMenu(void) +{ + // 8004 = Starting location + // 8005 = Page (0: Verm, One, Two, Three, Four, Other, Exit; 1: Four, Five, Six, Seven, Other, Exit) + u8 destinationId; + u8 top; + u8 numItems; + u8 cursorWidth; + u8 windowId; + u8 i; + gSpecialVar_Result = SCR_MENU_UNSET; + + if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE) + return; + + if (gSpecialVar_0x8005 == 1) + { + if (gSpecialVar_0x8004 < SEAGALLOP_FIVE_ISLAND) + destinationId = SEAGALLOP_FIVE_ISLAND; + else + destinationId = SEAGALLOP_FOUR_ISLAND; + numItems = 5; + top = 2; + } + else + { + destinationId = SEAGALLOP_VERMILION_CITY; + numItems = 6; + top = 0; + } + cursorWidth = GetMenuCursorDimensionByFont(FONT_NORMAL, 0); + windowId = CreateWindowFromRect(17, top, 11, numItems * 2); + SetStandardWindowBorderStyle(windowId, FALSE); + + // -2 excludes "Other" and "Exit", appended after the loop + for (i = 0; i < numItems - 2; i++) + { + if (destinationId != gSpecialVar_0x8004) + AddTextPrinterParameterized(windowId, FONT_NORMAL, sSeagallopDestStrings[destinationId], cursorWidth, i * 16 + 2, TEXT_SKIP_DRAW, NULL); + else + i--; + destinationId++; + + // Wrap around + if (destinationId == SEAGALLOP_SEVEN_ISLAND + 1) + destinationId = SEAGALLOP_VERMILION_CITY; + } + AddTextPrinterParameterized(windowId, FONT_NORMAL, sText_Other, cursorWidth, i * 16 + 2, TEXT_SKIP_DRAW, NULL); + i++; + AddTextPrinterParameterized(windowId, FONT_NORMAL, gOtherText_Exit, cursorWidth, i * 16 + 2, TEXT_SKIP_DRAW, NULL); + InitMenuNormal(windowId, FONT_NORMAL, 0, 2, 16, numItems, 0); + InitMultichoiceCheckWrap(FALSE, numItems, windowId, MULTI_NONE); + ScheduleBgCopyTilemapToVram(0); +} + +u16 GetSelectedSeagallopDestination(void) +{ + // 8004 = Starting location + // 8005 = Page (0: Verm, One, Two, Three, Four, Other, Exit; 1: Four, Five, Six, Seven, Other, Exit) + if (gSpecialVar_Result == MULTI_B_PRESSED) + return MULTI_B_PRESSED; + if (gSpecialVar_0x8005 == 1) + { + if (gSpecialVar_Result == 3) + { + return SEAGALLOP_MORE; + } + else if (gSpecialVar_Result == 4) + { + return MULTI_B_PRESSED; + } + else if (gSpecialVar_Result == 0) + { + if (gSpecialVar_0x8004 > SEAGALLOP_FOUR_ISLAND) + return SEAGALLOP_FOUR_ISLAND; + else + return SEAGALLOP_FIVE_ISLAND; + } + else if (gSpecialVar_Result == 1) + { + if (gSpecialVar_0x8004 > SEAGALLOP_FIVE_ISLAND) + return SEAGALLOP_FIVE_ISLAND; + else + return SEAGALLOP_SIX_ISLAND; + } + else if (gSpecialVar_Result == 2) + { + if (gSpecialVar_0x8004 > SEAGALLOP_SIX_ISLAND) + return SEAGALLOP_SIX_ISLAND; + else + return SEAGALLOP_SEVEN_ISLAND; + } + } + else + { + if (gSpecialVar_Result == 4) + return SEAGALLOP_MORE; + else if (gSpecialVar_Result == 5) + return MULTI_B_PRESSED; + else if (gSpecialVar_Result >= gSpecialVar_0x8004) + return gSpecialVar_Result + 1; + else + return gSpecialVar_Result; + } + return SEAGALLOP_VERMILION_CITY; +} + +static u16 GetStringTilesWide(const u8 *str) +{ + return (GetStringWidth(FONT_NORMAL_COPY_1, str, 0) + 7) / 8; +} + +static u8 GetMenuWidthFromList(const struct MenuAction *items, u8 count) +{ + u16 i; + u8 width = GetStringTilesWide(items[0].text); + u8 tmp; + + for (i = 1; i < count; i++) + { + tmp = GetStringTilesWide(items[i].text); + if (width < tmp) + width = tmp; + } + return width; +} + +static u8 GetMCWindowHeight(u8 count) +{ + switch (count) + { + case 0: + return 1; + case 1: + return 2; + case 2: + return 4; + case 3: + return 6; + case 4: + return 7; + case 5: + return 9; + case 6: + return 11; + case 7: + return 13; + case 8: + return 14; + default: + return 1; + } +} + +static u32 GetMultiChoiceWindowHeight(u8 argc, u8 maxBeforeScroll) +{ + u32 windowHeight; + u8 numItems = argc < maxBeforeScroll ? argc : maxBeforeScroll; + + windowHeight = numItems * GetFontAttribute(sScriptableListMenuTemplate.fontId, FONTATTR_MAX_LETTER_HEIGHT); + + return (windowHeight + 7) / 8; +} diff --git a/src/sprays.c b/src/sprays.c index b337bf2db..78be91dde 100644 --- a/src/sprays.c +++ b/src/sprays.c @@ -99,7 +99,7 @@ void DrawSprayMenu(void) gSpecialVar_0x8003 = count; menuItems[count].text = gFameCheckerText_Cancel; - DrawMultichoiceMenuInternal(18, yCoord, 0, FALSE, menuPos, menuItems, count+1); + DrawMultichoiceMenuInternal(18, yCoord, MULTI_YESNO, FALSE, menuPos, menuItems, count+1); } #endif diff --git a/src/start_menu.c b/src/start_menu.c index cc22c1099..6b0d56e0b 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -159,7 +159,7 @@ static const struct MenuAction sStartMenuActionTable[] = { [MENU_ACTION_EXIT] = {gText_MenuExit, {.u8_void = StartMenuExitCallback}}, [MENU_ACTION_RETIRE_SAFARI] = {gText_MenuRetire, {.u8_void = StartMenuSafariZoneRetireCallback}}, [MENU_ACTION_PLAYER_LINK] = {gText_MenuPlayer, {.u8_void = StartMenuLinkPlayerCallback}}, - [MENU_ACTION_REST_FRONTIER] = {gText_MenuRest, {.u8_void = StartMenuSaveCallback}}, + [MENU_ACTION_REST_FRONTIER] = {gText_Rest, {.u8_void = StartMenuSaveCallback}}, [MENU_ACTION_RETIRE_FRONTIER] = {gText_MenuRetire, {.u8_void = StartMenuBattlePyramidRetireCallback}}, [MENU_ACTION_PYRAMID_BAG] = {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}}, [MENU_ACTION_DEBUG] = {sText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, diff --git a/src/strings.c b/src/strings.c index e96a726a4..8dc43b397 100644 --- a/src/strings.c +++ b/src/strings.c @@ -194,7 +194,6 @@ const u8 gText_MenuSave[] = _("SAVE"); const u8 gText_MenuOption[] = _("OPTION"); const u8 gText_MenuExit[] = _("EXIT"); const u8 gText_MenuRetire[] = _("RETIRE"); -const u8 gText_MenuRest[] = _("REST"); const u8 gText_MenuDexNav[] = _("DEXNAV"); const u8 gText_MenuSafariStats[] = _("{STR_VAR_1}/{STR_VAR_2}\nBALLS {STR_VAR_3}"); const u8 gText_MenuTime[] = _("Time: {STR_VAR_1}:{STR_VAR_2}"); @@ -205,7 +204,6 @@ const u8 gText_SeasonAutumn[] = _("Autumn"); const u8 gText_SeasonWinter[] = _("Winter"); const u8 gText_xVar1[] = _("×{STR_VAR_1}"); const u8 gText_Berry[] = _(" BERRY"); -const u8 gText_Coins[] = _("{STR_VAR_1} COINS"); const u8 gText_DepositItem[] = _("DEPOSIT ITEM"); const u8 gText_CloseBag[] = _("CLOSE BAG"); const u8 gText_Var1IsSelected[] = _("{STR_VAR_1} is\nselected."); @@ -427,150 +425,21 @@ const u8 gText_LtSurge[] = _("LT. SURGE"); const u8 gText_Koga[] = _("KOGA"); const u8 gText_Participate[] = _("さんか する"); const u8 gText_Info[] = _("INFO"); -const u8 gText_Eggs[] = _("EGGS"); const u8 gText_HallOfFame[] = _("HALL OF FAME"); -const u8 gText_Victories[] = _("VICTORIES"); -const u8 gText_Quit[] = _("QUIT"); -const u8 gText_Psn[] = _("PSN"); -const u8 gText_Par[] = _("PAR"); -const u8 gText_Slp[] = _("SLP"); -const u8 gText_Brn[] = _("BRN"); -const u8 gText_Frz[] = _("FRZ"); -const u8 gText_Toxic[] = _("TOXIC"); -const u8 gText_OK[] = _("OK"); -const u8 gOtherText_Quit[] = _("QUIT"); -const u8 gText_SawIt[] = _("みました"); -const u8 gText_NotYet[] = _("これから"); const u8 gText_Yes[] = _("YES"); const u8 gText_No[] = _("NO"); -const u8 gText_Info4[] = _("せつめい"); const u8 gText_SingleBattle[] = _("SINGLE BATTLE"); const u8 gText_DoubleBattle[] = _("DOUBLE BATTLE"); const u8 gText_MultiBattle[] = _("MULTI BATTLE"); -const u8 gText_MakeAChallenge[] = _("Make a challenge."); -const u8 gText_Info_2[] = _("INFO"); -const u8 gText_FreshWater_200[] = _("FRESH WATER{CLEAR_TO 0x57}{FONT_SMALL}¥200"); -const u8 gText_SodaPop_300[] = _("SODA POP{CLEAR_TO 0x57}{FONT_SMALL}¥300"); -const u8 gText_Lemonade_350[] = _("LEMONADE{CLEAR_TO 0x57}{FONT_SMALL}¥350"); -const u8 gText_50Coins_1000[] = _("{FONT_SMALL} 50 COINS{CLEAR_TO 0x45}¥1,000"); -const u8 gText_500Coins_10000[] = _("{FONT_SMALL}500 COINS{CLEAR_TO 0x40}¥10,000"); -const u8 gText_Excellent[] = _("Excellent"); -const u8 gText_NotSoBad[] = _("Not so bad"); -const u8 gText_RedShard[] = _("RED SHARD"); -const u8 gText_YellowShard[] = _("YELLOW SHARD"); -const u8 gText_BlueShard[] = _("BLUE SHARD"); -const u8 gText_GreenShard[] = _("GREEN SHARD"); -const u8 gText_BattleTower[] = _("バトルタワ-"); -const u8 gText_Right[] = _("Right"); -const u8 gText_Left[] = _("Left"); -const u8 gText_Tm13_4000Coins[] = _("TM13{CLEAR_TO 0x48}{FONT_SMALL}4,000 COINS"); -const u8 gText_Tm23_3500Coins[] = _("TM23{CLEAR_TO 0x48}{FONT_SMALL}3,500 COINS"); -const u8 gText_Tm24_4000Coins[] = _("TM24{CLEAR_TO 0x48}{FONT_SMALL}4,000 COINS"); -const u8 gText_Tm30_4500Coins[] = _("TM30{CLEAR_TO 0x48}{FONT_SMALL}4,500 COINS"); -const u8 gText_Tm35_4000Coins[] = _("TM35{CLEAR_TO 0x48}{FONT_SMALL}4,000 COINS"); -const u8 gText_1F_2[] = _("1F"); -const u8 gText_2F_2[] = _("2F"); -const u8 gText_3F_2[] = _("3F"); -const u8 gText_4F_2[] = _("4F"); -const u8 gText_5F_2[] = _("5F"); -const u8 gText_Cool[] = _("COOL"); -const u8 gText_Beauty[] = _("BEAUTY"); -const u8 gText_Cute[] = _("CUTE"); -const u8 gText_Smart[] = _("SMART"); -const u8 gText_Tough[] = _("TOUGH"); -const u8 gText_Normal[] = _("NORMAL"); -const u8 gText_Black[] = _("BLACK"); const u8 gText_Pink[] = _("PINK"); -const u8 gText_Sepia[] = _("SEPIA"); -const u8 gText_Cool_2[] = _("COOL"); -const u8 gText_Beauty_2[] = _("BEAUTY"); -const u8 gText_Cute_2[] = _("CUTE"); -const u8 gText_Smart_2[] = _("SMART"); -const u8 gText_Tough_2[] = _("TOUGH"); -const u8 gText_Items[] = _("ITEMS"); -const u8 gText_KeyItems[] = _("KEY ITEMS"); -const u8 gText_PokeBalls[] = _("POKé BALLS"); -const u8 gText_TMsAndHMs[] = _("TMs & HMs"); -const u8 gText_Berries[] = _("BERRIES"); -const u8 gText_Boulderbadge[] = _("BOULDERBADGE"); -const u8 gText_Cascadebadge[] = _("CASCADEBADGE"); -const u8 gText_Thunderbadge[] = _("THUNDERBADGE"); -const u8 gText_Rainbowbadge[] = _("RAINBOWBADGE"); -const u8 gText_Soulbadge[] = _("SOULBADGE"); -const u8 gText_Marshbadge[] = _("MARSHBADGE"); -const u8 gText_Volcanobadge[] = _("VOLCANOBADGE"); -const u8 gText_Earthbadge[] = _("EARTHBADGE"); const u8 gText_SomeoneSPc[] = _("SOMEONE'S PC"); const u8 gText_BillSPc[] = _("BILL'S PC"); const u8 gText_SPc[] = _("{PLAYER}'s PC"); -const u8 gText_HallOfFame_2[] = _("HALL OF FAME"); const u8 gText_LogOff[] = _("LOG OFF"); const u8 gText_ProfOakSPc[] = _("PROF. OAK's PC"); -const u8 gText_Eevee[] = _("EEVEE"); -const u8 gText_Flareon[] = _("FLAREON"); -const u8 gText_Jolteon[] = _("JOLTEON"); -const u8 gText_Vaporeon[] = _("VAPOREON"); -const u8 gText_QuitLooking[] = _("Quit looking."); -const u8 gText_FreshWater[] = _("FRESH WATER"); -const u8 gText_SodaPop[] = _("SODA POP"); -const u8 gText_Lemonade[] = _("LEMONADE"); -const u8 gText_Coins_2[] = _("COINS"); -const u8 gText_Bicycle_Price[] = _("BICYCLE{CLEAR_TO 0x49}{FONT_SMALL}¥1,000,000"); -const u8 gText_NoThanks[] = _("NO THANKS"); -const u8 gText_Abra_180Coins[] = _("ABRA{CLEAR_TO 0x55}{FONT_SMALL} 180 COINS"); -const u8 gText_Clefairy_500Coins[] = _("CLEFAIRY{CLEAR_TO 0x55}{FONT_SMALL} 500 COINS"); -const u8 gText_Dratini_2800Coins[] = _("DRATINI{CLEAR_TO 0x4B}{FONT_SMALL} 2,800 COINS"); -const u8 gText_Scyther_5500Coins[] = _("SCYTHER{CLEAR_TO 0x4B}{FONT_SMALL} 5,500 COINS"); -const u8 gText_Porygon_9999Coins[] = _("PORYGON{CLEAR_TO 0x4B}{FONT_SMALL} 9,999 COINS"); -const u8 gText_Abra_120Coins[] = _("ABRA{CLEAR_TO 0x55}{FONT_SMALL} 120 COINS"); -const u8 gText_Clefairy_750Coins[] = _("CLEFAIRY{CLEAR_TO 0x55}{FONT_SMALL} 750 COINS"); -const u8 gText_Pinsir_2500Coins[] = _("PINSIR{CLEAR_TO 0x4B}{FONT_SMALL} 2,500 COINS"); -const u8 gText_Dratini_4600Coins[] = _("DRATINI{CLEAR_TO 0x4B}{FONT_SMALL} 4,600 COINS"); -const u8 gText_Porygon_6500Coins[] = _("PORYGON{CLEAR_TO 0x4B}{FONT_SMALL} 6,500 COINS"); -const u8 gText_NoThanks_2[] = _("NO THANKS"); -const u8 gText_HelixFossil[] = _("HELIX FOSSIL"); -const u8 gText_DomeFossil[] = _("DOME FOSSIL"); -const u8 gText_OldAmber[] = _("OLD AMBER"); -const u8 gText_TradeCenter[] = _("TRADE CENTER"); -const u8 gText_Colosseum[] = _("COLOSSEUM"); -const u8 gText_GameLinkCable[] = _("Game Link cable"); -const u8 gText_Wireless[] = _("Wireless"); -const u8 gText_ItemsPocket[] = _("ITEMS POCKET"); -const u8 gText_KeyItemsPocket[] = _("KEY ITEMS POCKET"); -const u8 gText_PokeBallsPocket[] = _("POKé BALLS POCKET"); -const u8 gText_TmCase[] = _("TM CASE"); -const u8 gText_BerryPouch_2[] = _("BERRY POUCH"); -const u8 gText_Other[] = _("OTHER"); -const u8 gText_OneIsland[] = _("ONE ISLAND"); -const u8 gText_TwoIsland[] = _("TWO ISLAND"); -const u8 gText_ThreeIsland[] = _("THREE ISLAND"); -const u8 gText_FourIsland[] = _("FOUR ISLAND"); -const u8 gText_FiveIsland[] = _("FIVE ISLAND"); -const u8 gText_SixIsland[] = _("SIX ISLAND"); -const u8 gText_SevenIsland[] = _("SEVEN ISLAND"); -const u8 gText_Vermilion[] = _("VERMILION"); -const u8 gText_Colosseum_2[] = _("COLOSSEUM"); +const u8 gText_Coins[] = _("COINS"); const u8 gText_BerryCrush[] = _("BERRY CRUSH"); -const u8 gText_EmptyLinkService1[] = _(""); -const u8 gText_EmptyLinkService2[] = _(""); -const u8 gText_ListenToExplanation[] = _("せつめいを きく"); -const u8 gText_RecordCorner[] = _(""); // Dummied const u8 gText_PokemonJump[] = _("POKéMON JUMP"); -const u8 gText_DodrioBerryPicking[] = _("DODRIO BERRY-PICKING"); -const u8 gText_2Tinymushrooms[] = _("2 TINYMUSHROOMS"); -const u8 gText_1BigMushroom[] = _("1 BIG MUSHROOM"); -const u8 gText_SeviiIslands[] = _("SEVII ISLANDS"); -const u8 gText_NavelRock[] = _("NAVEL ROCK"); -const u8 gText_BirthIsland[] = _("BIRTH ISLAND"); -const u8 gText_MiracleSeed_1000Coins[] = _("MIRACLE SEED{CLEAR_TO 0x50}{FONT_SMALL}1,000 COINS"); -const u8 gText_Charcoal_1000Coins[] = _("CHARCOAL{CLEAR_TO 0x50}{FONT_SMALL}1,000 COINS"); -const u8 gText_MysticWater_1000Coins[] = _("MYSTIC WATER{CLEAR_TO 0x50}{FONT_SMALL}1,000 COINS"); -const u8 gText_YellowFlute_1600Coins[] = _("YELLOW FLUTE{CLEAR_TO 0x50}{FONT_SMALL}1,600 COINS"); -const u8 gText_SmokeBall_800Coins[] = _("SMOKE BALL{CLEAR_TO 0x5A}{FONT_SMALL}800 COINS"); -const u8 gText_Multichoice_Empty2[] = _(""); -const u8 gText_Multichoice_Empty1[] = _(""); -const u8 gText_BecomeLeader[] = _("BECOME LEADER"); -const u8 gText_JoinGroup[] = _("JOIN GROUP"); const u8 gOtherText_Single[] = _("SINGLE"); const u8 gOtherText_Double[] = _("DOUBLE"); const u8 gOtherText_Knockout[] = _("KNOCKOUT"); @@ -610,9 +479,6 @@ const u8 gText_B4F[] = _("B4F"); const u8 gText_Rooftop[] = _("ROOFTOP"); const u8 gText_NowOn[] = _("Now on:"); const u8 gText_BP[] = _("BP"); -const u8 gText_LinkedGamePlay[] = _("LINKED GAME PLAY"); -const u8 gText_DirectCorner[] = _("DIRECT CORNER"); -const u8 gText_UnionRoom[] = _("UNION ROOM"); const u8 gText_Energypowder_50[] = _("ENERGYPOWDER{CLEAR_TO 0x74}{FONT_SMALL}50"); const u8 gText_EnergyRoot_80[] = _("ENERGY ROOT{CLEAR_TO 0x74}{FONT_SMALL}80"); const u8 gText_HealPowder_50[] = _("HEAL POWDER{CLEAR_TO 0x74}{FONT_SMALL}50"); @@ -678,7 +544,6 @@ const u8 gPCText_Take[] = _("TAKE"); const u8 gPCText_Give[] = _("GIVE"); const u8 gPCText_Switch[] = _("SWITCH"); const u8 gPCText_Bag[] = _("BAG"); -const u8 gPCText_Info[] = _("INFO"); const u8 gPCText_Scenery1[] = _("SCENERY 1"); const u8 gPCText_Scenery2[] = _("SCENERY 2"); const u8 gPCText_Scenery3[] = _("SCENERY 3"); @@ -880,7 +745,6 @@ const u8 gText_LinkCableBattles[] = _("LINK CABLE BATTLES"); const u8 gText_WinLossRatio[] = _("W:{CLEAR_TO 0x30}L:"); const u8 gText_PokemonTrades[] = _("POKéMON TRADES"); const u8 gText_UnionRoomTradesBattles[] = _("UNION TRADES & BATTLES"); -const u8 gText_BerryCrushes[] = _("BERRY CRUSH"); const u8 gText_WaitingTrainerFinishReading[] = _("Waiting for the other TRAINER to\nfinish reading your TRAINER CARD."); const u8 gText_Option[] = _("OPTION"); const u8 gText_TextSpeed[] = _("TEXT SPEED"); @@ -1071,7 +935,6 @@ ALIGNED(4) const u8 gText_CrushingResults[] = _("Crushing Results"); ALIGNED(4) const u8 gText_NeatnessRankings[] = _("Neatness Rankings"); ALIGNED(4) const u8 gText_CooperativeRankings[] = _("Cooperative Rankings"); ALIGNED(4) const u8 gText_PressingPowerRankings[] = _("Pressing-Power Rankings"); -const u8 gText_BerryCrush2[] = _("BERRY CRUSH"); const u8 gText_PressingSpeedRankings[] = _("Pressing-Speed Rankings"); const u8 gText_Var1Players[] = _("{STR_VAR_1} PLAYERS"); ALIGNED(4) const u8 gText_Ghost[] = _("GHOST"); @@ -1079,7 +942,6 @@ const u8 gText_OhABite[] = _("Oh! A bite!"); const u8 gText_PokemonOnHook[] = _("A POKéMON's on the hook!{PAUSE_UNTIL_PRESS}"); const u8 gText_NotEvenANibble[] = _("Not even a nibble‥{PAUSE_UNTIL_PRESS}"); const u8 gText_ItGotAway[] = _("It got away‥{PAUSE_UNTIL_PRESS}"); -const u8 gText_Rooftop2[] = _("ROOFTOP"); ALIGNED(4) const u8 gString_PokemonFireRed_Staff[] = _("Pokémon FireRed Version\nStaff"); ALIGNED(4) const u8 gString_PokemonLeafGreen_Staff[] = _("Pokémon LeafGreen Version\nStaff"); ALIGNED(4) const u8 gCreditsString_Director[] = _("\n\nDirector\n\n\n\n"); @@ -1506,31 +1368,11 @@ const u8 gText_SamePkmnInPartyAlready[] = _("Same {PKMN} in party already."); const u8 gText_Lv50[] = _("LV. 50"); const u8 gText_OpenLevel[] = _("OPEN LEVEL"); -const u8 gText_BattleRules[] = _("BATTLE RULES"); -const u8 gText_JudgeMind[] = _("JUDGE: MIND"); -const u8 gText_JudgeSkill[] = _("JUDGE: SKILL"); -const u8 gText_JudgeBody[] = _("JUDGE: BODY"); -const u8 gText_BasicRules[] = _("BASIC RULES"); -const u8 gText_SwapPartners[] = _("SWAP: PARTNER"); -const u8 gText_SwapNumber[] = _("SWAP: NUMBER"); -const u8 gText_SwapNotes[] = _("SWAP: NOTES"); -const u8 gText_GoOn[] = _("GO ON"); -const u8 gText_Record2[] = _("RECORD"); const u8 gText_Rest[] = _("REST"); -const u8 gText_Retire[] = _("RETIRE"); -const u8 gText_BattleBasics[] = _("BATTLE BASICS"); -const u8 gText_PokemonNature[] = _("POKéMON NATURE"); -const u8 gText_PokemonMoves[] = _("POKéMON MOVES"); -const u8 gText_Underpowered[] = _("UNDERPOWERED"); -const u8 gText_WhenInDanger[] = _("WHEN IN DANGER"); const u8 gText_BattlePokemon[] = _("BATTLE POKéMON"); const u8 gText_BattleTrainers[] = _("BATTLE TRAINERS"); -const u8 gText_Opponent[] = _("OPPONENT"); -const u8 gText_Tourney_Tree[] = _("TOURNEY TREE"); -const u8 gText_ReadyToStart[] = _("READY TO START"); - const u8 gText_SingleBattleRoomResults[] = _("{PLAYER}'s Single Battle Room Results"); const u8 gText_DoubleBattleRoomResults[] = _("{PLAYER}'s Double Battle Room Results"); const u8 gText_MultiBattleRoomResults[] = _("{PLAYER}'s Multi Battle Room Results"); diff --git a/src/trainer_card.c b/src/trainer_card.c index afdd3e7ef..70f23e2bb 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -1411,7 +1411,7 @@ static void BufferBerryCrushPoints(void) { if (sTrainerCardDataPtr->cardType != CARD_TYPE_RSE) { - StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_BERRY_CRUSH], gText_BerryCrushes); + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_BERRY_CRUSH], gText_BerryCrush); ConvertIntToDecimalStringN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_BERRY_CRUSH_COUNT], sTrainerCardDataPtr->trainerCard.berryCrushPoints, STR_CONV_MODE_RIGHT_ALIGN, 5); } } diff --git a/src/union_room_message.c b/src/union_room_message.c index 5e08a7994..569920566 100644 --- a/src/union_room_message.c +++ b/src/union_room_message.c @@ -518,19 +518,13 @@ ALIGNED(4) const u8 gText_UR_Greetings[] = _("GREETINGS"); ALIGNED(4) const u8 gText_UR_Exit[] = _("EXIT"); ALIGNED(4) const u8 gText_UR_Exit2[] = _("EXIT"); -ALIGNED(4) const u8 gText_UR_Info[] = _("INFO"); ALIGNED(4) const u8 gText_UR_NameWantedOfferLv[] = _("NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV."); -ALIGNED(4) const u8 gText_UR_SingleBattle[] = _("SINGLE BATTLE"); -ALIGNED(4) const u8 gText_UR_DoubleBattle[] = _("DOUBLE BATTLE"); -ALIGNED(4) const u8 gText_UR_MultiBattle[] = _("MULTI BATTLE"); ALIGNED(4) const u8 gText_UR_PokemonTrades[] = _("POKéMON TRADES"); ALIGNED(4) const u8 gText_UR_Chat[] = _("CHAT"); ALIGNED(4) const u8 gText_UR_Cards[] = _("CARDS"); ALIGNED(4) const u8 gText_UR_WonderCards[] = _("WONDER CARDS"); ALIGNED(4) const u8 gText_UR_WonderNews[] = _("WONDER NEWS"); -ALIGNED(4) const u8 gText_UR_PokemonJump[] = _("POKéMON JUMP"); -ALIGNED(4) const u8 gText_UR_BerryCrush[] = _("BERRY CRUSH"); ALIGNED(4) const u8 gText_UR_BerryPicking[] = _("BERRY-PICKING"); ALIGNED(4) const u8 gText_UR_Search[] = _("SEARCH"); ALIGNED(4) const u8 gText_UR_SpinTrade[] = _("ぐるぐるこうかん");