summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/events/std_scripts.asm774
-rw-r--r--engine/movie/gamefreak_presents.asm73
-rw-r--r--engine/movie/title.asm2
-rwxr-xr-xengine/overworld/player_movement.asm2
-rw-r--r--engine/phone/scripts/bike_shop.asm5
-rw-r--r--engine/phone/scripts/bill.asm41
-rw-r--r--engine/phone/scripts/elm.asm101
-rw-r--r--engine/phone/scripts/generic.asm227
-rw-r--r--engine/phone/scripts/mom.asm150
-rw-r--r--engine/phone/scripts/trainers.asm677
-rw-r--r--engine/phone/scripts/unused.asm3
11 files changed, 2010 insertions, 45 deletions
diff --git a/engine/events/std_scripts.asm b/engine/events/std_scripts.asm
new file mode 100644
index 00000000..bdc90c55
--- /dev/null
+++ b/engine/events/std_scripts.asm
@@ -0,0 +1,774 @@
+StdScripts::
+; entries correspond to constants/std_constants.asm
+ dba PokecenterNurseScript
+ dba DifficultBookshelfScript
+ dba PictureBookshelfScript
+ dba MagazineBookshelfScript
+ dba TeamRocketOathScript
+ dba IncenseBurnerScript
+ dba MerchandiseShelfScript
+ dba TownMapScript
+ dba WindowScript
+ dba TVScript
+ dba HomepageScript
+ dba Radio1Script
+ dba Radio2Script
+ dba TrashCanScript
+ dba StrengthBoulderScript
+ dba SmashRockScript
+ dba PokecenterSignScript
+ dba MartSignScript
+ dba GoldenrodRocketsScript
+ dba RadioTowerRocketsScript
+ dba ElevatorButtonScript
+ dba DayToTextScript
+ dba BugContestResultsWarpScript
+ dba BugContestResultsScript
+ dba InitializeEventsScript
+ dba AskNumber1MScript
+ dba AskNumber2MScript
+ dba RegisteredNumberMScript
+ dba NumberAcceptedMScript
+ dba NumberDeclinedMScript
+ dba PhoneFullMScript
+ dba RematchMScript
+ dba AskNumber1FScript
+ dba AskNumber2FScript
+ dba RegisteredNumberFScript
+ dba NumberAcceptedFScript
+ dba NumberDeclinedFScript
+ dba PhoneFullFScript
+ dba RematchFScript
+ dba GymStatue1Script
+ dba GymStatue2Script
+ dba ReceiveItemScript
+ dba ReceiveTogepiEggScript
+ dba PCScript
+ dba GameCornerCoinVendorScript
+ dba HappinessCheckScript
+
+PokecenterNurseScript:
+ opentext
+ checktime MORN
+ iftrue .morn
+ checktime DAY
+ iftrue .day
+ checktime NITE
+ iftrue .nite
+ sjump .ok
+
+.morn
+ writetext NurseMornText
+ promptbutton
+ sjump .ok
+
+.day
+ writetext NurseDayText
+ promptbutton
+ sjump .ok
+
+.nite
+ writetext NurseNiteText
+ promptbutton
+ sjump .ok
+
+.ok
+ writetext NurseAskHealText
+ yesorno
+ iffalse .done
+
+ writetext NurseTakePokemonText
+ pause 20
+ turnobject LAST_TALKED, LEFT
+ pause 10
+ special HealParty
+ playmusic MUSIC_NONE
+ setval HEALMACHINE_POKECENTER
+ special HealMachineAnim
+ pause 30
+ special RestartMapMusic
+ turnobject LAST_TALKED, DOWN
+ pause 10
+
+ checkphonecall ; elm already called about pokerus
+ iftrue .no
+ checkflag ENGINE_CAUGHT_POKERUS
+ iftrue .no
+ special CheckPokerus
+ iftrue .pokerus
+.no
+ writetext NurseReturnPokemonText
+ pause 20
+
+.done
+ writetext NurseGoodbyeText
+
+ turnobject LAST_TALKED, UP
+ pause 10
+ turnobject LAST_TALKED, DOWN
+ pause 10
+
+ waitbutton
+ closetext
+ end
+
+.pokerus
+ writetext NursePokerusText
+ waitbutton
+ closetext
+ setflag ENGINE_CAUGHT_POKERUS
+ specialphonecall SPECIALCALL_POKERUS
+ end
+
+DifficultBookshelfScript:
+ jumptext DifficultBookshelfText
+
+PictureBookshelfScript:
+ jumptext PictureBookshelfText
+
+MagazineBookshelfScript:
+ jumptext MagazineBookshelfText
+
+TeamRocketOathScript:
+ jumptext TeamRocketOathText
+
+IncenseBurnerScript:
+ jumptext IncenseBurnerText
+
+MerchandiseShelfScript:
+ jumptext MerchandiseShelfText
+
+TownMapScript:
+ opentext
+ writetext LookTownMapText
+ waitbutton
+ special OverworldTownMap
+ closetext
+ end
+
+WindowScript:
+ jumptext WindowText
+
+TVScript:
+ opentext
+ writetext TVText
+ waitbutton
+ closetext
+ end
+
+HomepageScript:
+ jumptext HomepageText
+
+Radio1Script:
+ opentext
+ setval MAPRADIO_POKEMON_CHANNEL
+ special MapRadio
+ closetext
+ end
+
+Radio2Script:
+; Lucky Channel
+ opentext
+ setval MAPRADIO_LUCKY_CHANNEL
+ special MapRadio
+ closetext
+ end
+
+TrashCanScript:
+ jumptext TrashCanText
+
+PCScript:
+ opentext
+ special PokemonCenterPC
+ closetext
+ end
+
+ElevatorButtonScript:
+ playsound SFX_READ_TEXT_2
+ pause 15
+ playsound SFX_ELEVATOR_END
+ end
+
+StrengthBoulderScript:
+ farsjump AskStrengthScript
+
+SmashRockScript:
+ farsjump AskRockSmashScript
+
+PokecenterSignScript:
+ jumptext PokecenterSignText
+
+MartSignScript:
+ jumptext MartSignText
+
+DayToTextScript:
+ readvar VAR_WEEKDAY
+ ifequal MONDAY, .Monday
+ ifequal TUESDAY, .Tuesday
+ ifequal WEDNESDAY, .Wednesday
+ ifequal THURSDAY, .Thursday
+ ifequal FRIDAY, .Friday
+ ifequal SATURDAY, .Saturday
+ getstring STRING_BUFFER_3, .SundayText
+ end
+.Monday:
+ getstring STRING_BUFFER_3, .MondayText
+ end
+.Tuesday:
+ getstring STRING_BUFFER_3, .TuesdayText
+ end
+.Wednesday:
+ getstring STRING_BUFFER_3, .WednesdayText
+ end
+.Thursday:
+ getstring STRING_BUFFER_3, .ThursdayText
+ end
+.Friday:
+ getstring STRING_BUFFER_3, .FridayText
+ end
+.Saturday:
+ getstring STRING_BUFFER_3, .SaturdayText
+ end
+.SundayText:
+ db "SUNDAY@"
+.MondayText:
+ db "MONDAY@"
+.TuesdayText:
+ db "TUESDAY@"
+.WednesdayText:
+ db "WEDNESDAY@"
+.ThursdayText:
+ db "THURSDAY@"
+.FridayText:
+ db "FRIDAY@"
+.SaturdayText:
+ db "SATURDAY@"
+
+GoldenrodRocketsScript:
+ clearevent EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+ end
+
+RadioTowerRocketsScript:
+ setflag ENGINE_ROCKETS_IN_RADIO_TOWER
+ setevent EVENT_GOLDENROD_CITY_CIVILIANS
+ setevent EVENT_RADIO_TOWER_BLACKBELT_BLOCKS_STAIRS
+ clearevent EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+ clearevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
+ setevent EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_EAST
+ specialphonecall SPECIALCALL_WEIRDBROADCAST
+ setmapscene MAHOGANY_TOWN, SCENE_FINISHED
+ end
+
+BugContestResultsWarpScript:
+ special ClearBGPalettes
+ scall BugContestResults_CopyContestantsToResults
+ setevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+ clearevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
+ setevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
+ warp ROUTE_36_NATIONAL_PARK_GATE, 0, 4
+ applymovement PLAYER, Movement_ContestResults_WalkAfterWarp
+
+BugContestResultsScript:
+ clearflag ENGINE_BUG_CONTEST_TIMER
+ clearevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
+ clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+ clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+ clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+ clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
+ opentext
+ writetext ContestResults_ReadyToJudgeText
+ waitbutton
+ special BugContestJudging
+ getnum STRING_BUFFER_3
+ ifequal 1, BugContestResults_FirstPlace
+ ifequal 2, BugContestResults_SecondPlace
+ ifequal 3, BugContestResults_ThirdPlace
+ writetext ContestResults_ConsolationPrizeText
+ promptbutton
+ waitsfx
+ verbosegiveitem BERRY
+ iffalse BugContestResults_NoRoomForBerry
+
+BugContestResults_DidNotWin:
+ writetext ContestResults_DidNotWinText
+ promptbutton
+ sjump BugContestResults_FinishUp
+
+BugContestResults_ReturnAfterWinnersPrize:
+ writetext ContestResults_JoinUsNextTimeText
+ promptbutton
+
+BugContestResults_FinishUp:
+ checkevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+ iffalse BugContestResults_DidNotLeaveMons
+ writetext ContestResults_ReturnPartyText
+ waitbutton
+ special ContestReturnMons
+BugContestResults_DidNotLeaveMons:
+ special CheckPartyFullAfterContest
+ ifequal BUGCONTEST_CAUGHT_MON, BugContestResults_CleanUp
+ ifequal BUGCONTEST_NO_CATCH, BugContestResults_CleanUp
+ ; BUGCONTEST_BOXED_MON
+ writetext ContestResults_PartyFullText
+ waitbutton
+BugContestResults_CleanUp:
+ closetext
+ setscene SCENE_ROUTE36NATIONALPARKGATE_NOTHING
+ setmapscene ROUTE_35_NATIONAL_PARK_GATE, SCENE_ROUTE35NATIONALPARKGATE_NOTHING
+ setevent EVENT_BUG_CATCHING_CONTESTANT_1A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_2A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_3A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_4A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_5A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_6A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_7A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_8A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_9A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_10A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_1B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_2B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_3B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_4B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_5B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_6B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_7B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_8B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_9B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_10B
+ setflag ENGINE_DAILY_BUG_CONTEST
+ special PlayMapMusic
+ end
+
+BugContestResults_FirstPlace:
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ getitemname STRING_BUFFER_4, SUN_STONE
+ writetext ContestResults_PlayerWonAPrizeText
+ waitbutton
+ verbosegiveitem SUN_STONE
+ iffalse BugContestResults_NoRoomForSunStone
+ sjump BugContestResults_ReturnAfterWinnersPrize
+
+BugContestResults_SecondPlace:
+ getitemname STRING_BUFFER_4, EVERSTONE
+ writetext ContestResults_PlayerWonAPrizeText
+ waitbutton
+ verbosegiveitem EVERSTONE
+ iffalse BugContestResults_NoRoomForEverstone
+ sjump BugContestResults_ReturnAfterWinnersPrize
+
+BugContestResults_ThirdPlace:
+ getitemname STRING_BUFFER_4, GOLD_BERRY
+ writetext ContestResults_PlayerWonAPrizeText
+ waitbutton
+ verbosegiveitem GOLD_BERRY
+ iffalse BugContestResults_NoRoomForGoldBerry
+ sjump BugContestResults_ReturnAfterWinnersPrize
+
+BugContestResults_NoRoomForSunStone:
+ writetext BugContestPrizeNoRoomText
+ promptbutton
+ setevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+ sjump BugContestResults_ReturnAfterWinnersPrize
+
+BugContestResults_NoRoomForEverstone:
+ writetext BugContestPrizeNoRoomText
+ promptbutton
+ setevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+ sjump BugContestResults_ReturnAfterWinnersPrize
+
+BugContestResults_NoRoomForGoldBerry:
+ writetext BugContestPrizeNoRoomText
+ promptbutton
+ setevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+ sjump BugContestResults_ReturnAfterWinnersPrize
+
+BugContestResults_NoRoomForBerry:
+ writetext BugContestPrizeNoRoomText
+ promptbutton
+ setevent EVENT_CONTEST_OFFICER_HAS_BERRY
+ sjump BugContestResults_DidNotWin
+
+BugContestResults_CopyContestantsToResults:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
+ iftrue .skip1
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_1B
+.skip1
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
+ iftrue .skip2
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_2B
+.skip2
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
+ iftrue .skip3
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_3B
+.skip3
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
+ iftrue .skip4
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_4B
+.skip4
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
+ iftrue .skip5
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_5B
+.skip5
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
+ iftrue .skip6
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_6B
+.skip6
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
+ iftrue .skip7
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_7B
+.skip7
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
+ iftrue .skip8
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_8B
+.skip8
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
+ iftrue .skip9
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_9B
+.skip9
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
+ iftrue .skip10
+ clearevent EVENT_BUG_CATCHING_CONTESTANT_10B
+.skip10
+ end
+
+InitializeEventsScript:
+ setevent EVENT_EARLS_ACADEMY_EARL
+ setevent EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+ setevent EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+ setevent EVENT_RADIO_TOWER_CIVILIANS_AFTER
+ setevent EVENT_ILEX_FOREST_APPRENTICE
+ setevent EVENT_ILEX_FOREST_FARFETCHD1
+ setevent EVENT_ILEX_FOREST_FARFETCHD2
+ setevent EVENT_ILEX_FOREST_FARFETCHD3
+ setevent EVENT_ILEX_FOREST_FARFETCHD4
+ setevent EVENT_ILEX_FOREST_FARFETCHD5
+ setevent EVENT_ILEX_FOREST_FARFETCHD6
+ setevent EVENT_ILEX_FOREST_FARFETCHD7
+ setevent EVENT_ILEX_FOREST_FARFETCHD8
+ setevent EVENT_ILEX_FOREST_FARFETCHD9
+ setevent EVENT_ILEX_FOREST_FARFETCHD10
+ setevent EVENT_ILEX_FOREST_CHARCOAL_MASTER
+ setevent EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+ setevent EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
+ setevent EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+ setevent EVENT_TEAM_ROCKET_BASE_B2F_DRAGONITE
+ setevent EVENT_RIVAL_TEAM_ROCKET_BASE
+ setevent EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
+ setevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
+ setevent EVENT_RIVAL_CHERRYGROVE_CITY
+ setevent EVENT_RIVAL_AZALEA_TOWN
+ setevent EVENT_RIVAL_GOLDENROD_UNDERGROUND
+ setevent EVENT_AZALEA_TOWN_SLOWPOKES
+ setevent EVENT_KURTS_HOUSE_SLOWPOKE
+ setevent EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
+ setevent EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
+ setevent EVENT_COP_IN_ELMS_LAB
+ setevent EVENT_RUINS_OF_ALPH_OUTSIDE_SCIENTIST
+ setevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
+ setevent EVENT_BOULDER_IN_ICE_PATH_1A
+ setevent EVENT_BOULDER_IN_ICE_PATH_2A
+ setevent EVENT_BOULDER_IN_ICE_PATH_3A
+ setevent EVENT_BOULDER_IN_ICE_PATH_4A
+ setevent EVENT_ROUTE_30_YOUNGSTER_JOEY
+ setevent EVENT_BUG_CATCHING_CONTESTANT_1A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_2A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_3A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_4A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_5A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_6A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_7A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_8A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_9A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_10A
+ setevent EVENT_BUG_CATCHING_CONTESTANT_1B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_2B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_3B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_4B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_5B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_6B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_7B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_8B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_9B
+ setevent EVENT_BUG_CATCHING_CONTESTANT_10B
+ setevent EVENT_FAST_SHIP_1F_GENTLEMAN
+ setevent EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
+ setevent EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+ setevent EVENT_LAKE_OF_RAGE_CIVILIANS
+ setevent EVENT_MAHOGANY_MART_OWNERS
+ setevent EVENT_TIN_TOWER_ROOF_HO_OH
+ setevent EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
+ setevent EVENT_PLAYERS_HOUSE_2F_CONSOLE
+ setevent EVENT_PLAYERS_HOUSE_2F_DOLL_1
+ setevent EVENT_PLAYERS_HOUSE_2F_DOLL_2
+ setevent EVENT_PLAYERS_HOUSE_2F_BIG_DOLL
+ setevent EVENT_DECO_BED_1
+ setevent EVENT_DECO_POSTER_1
+ setevent EVENT_GOLDENROD_TRAIN_STATION_GENTLEMAN
+ setevent EVENT_OLIVINE_GYM_JASMINE
+ setevent EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
+ setevent EVENT_MET_BILL
+ setevent EVENT_ECRUTEAK_POKE_CENTER_BILL
+ setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+ setevent EVENT_LAKE_OF_RAGE_LANCE
+ setevent EVENT_GOLDENROD_DEPT_STORE_B1F_LAYOUT_1
+ setevent EVENT_GOLDENROD_UNDERGROUND_WAREHOUSE_BLOCKED_OFF
+ setevent EVENT_DRAGONS_DEN_CLAIR
+ setevent EVENT_RIVAL_OLIVINE_CITY
+ setevent EVENT_RIVAL_VICTORY_ROAD
+ setevent EVENT_RIVAL_DRAGONS_DEN
+ setevent EVENT_LANCES_ROOM_OAK_AND_MARY
+ setevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+ setevent EVENT_BURNED_TOWER_B1F_BEASTS_1
+ setevent EVENT_RED_IN_MT_SILVER
+ setevent EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+ setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ setevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ setevent EVENT_OLIVINE_PORT_PASSAGE_POKEFAN_M
+ setevent EVENT_KURTS_HOUSE_KURT_2
+ setevent EVENT_BURNED_TOWER_FIREBREATHER_DICK_ASHES
+ setevent EVENT_RANG_CLEAR_BELL_1 ; ?
+ setevent EVENT_PLAYERS_HOUSE_MOM_2
+ setflag ENGINE_ROCKET_SIGNAL_ON_CH20
+ setflag ENGINE_ROCKETS_IN_MAHOGANY
+ variablesprite SPRITE_WEIRD_TREE, SPRITE_SUDOWOODO
+ variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SILVER
+ variablesprite SPRITE_AZALEA_ROCKET, SPRITE_ROCKET
+ variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_JANINE
+ variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_JANINE
+ variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_JANINE
+ variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_JANINE
+ variablesprite SPRITE_COPYCAT, SPRITE_LASS
+ variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
+ setevent EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM
+ setevent EVENT_CERULEAN_GYM_ROCKET
+ setevent EVENT_ROUTE_24_ROCKET
+ setevent EVENT_ROUTE_25_MISTY_BOYFRIEND
+ setevent EVENT_TRAINERS_IN_CERULEAN_GYM
+ setevent EVENT_COPYCATS_HOUSE_2F_DOLL
+ setevent EVENT_VIRIDIAN_GYM_BLUE
+ setevent EVENT_SEAFOAM_GYM_GYM_GUY
+ setevent EVENT_MT_MOON_SQUARE_CLEFAIRY
+ setevent EVENT_SAFFRON_TRAIN_STATION_POPULATION
+ setevent EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
+ setevent EVENT_INITIALIZED_EVENTS
+ return
+
+AskNumber1MScript:
+ writetext AskNumber1MText
+ end
+
+AskNumber2MScript:
+ writetext AskNumber2MText
+ end
+
+RegisteredNumberMScript:
+ writetext RegisteredNumberMText
+ playsound SFX_REGISTER_PHONE_NUMBER
+ waitsfx
+ promptbutton
+ end
+
+NumberAcceptedMScript:
+ writetext NumberAcceptedMText
+ waitbutton
+ closetext
+ end
+
+NumberDeclinedMScript:
+ writetext NumberDeclinedMText
+ waitbutton
+ closetext
+ end
+
+PhoneFullMScript:
+ writetext PhoneFullMText
+ waitbutton
+ closetext
+ end
+
+RematchMScript:
+ writetext RematchMText
+ waitbutton
+ closetext
+ end
+
+AskNumber1FScript:
+ writetext AskNumber1FText
+ end
+
+AskNumber2FScript:
+ writetext AskNumber2FText
+ end
+
+RegisteredNumberFScript:
+ writetext RegisteredNumberFText
+ playsound SFX_REGISTER_PHONE_NUMBER
+ waitsfx
+ promptbutton
+ end
+
+NumberAcceptedFScript:
+ writetext NumberAcceptedFText
+ waitbutton
+ closetext
+ end
+
+NumberDeclinedFScript:
+ writetext NumberDeclinedFText
+ waitbutton
+ closetext
+ end
+
+PhoneFullFScript:
+ writetext PhoneFullFText
+ waitbutton
+ closetext
+ end
+
+RematchFScript:
+ writetext RematchFText
+ waitbutton
+ closetext
+ end
+
+GymStatue1Script:
+ getcurlandmarkname STRING_BUFFER_3
+ opentext
+ writetext GymStatue_CityGymText
+ waitbutton
+ closetext
+ end
+
+GymStatue2Script:
+ getcurlandmarkname STRING_BUFFER_3
+ opentext
+ writetext GymStatue_CityGymText
+ promptbutton
+ writetext GymStatue_WinningTrainersText
+ waitbutton
+ closetext
+ end
+
+ReceiveItemScript:
+ waitsfx
+ writetext ReceivedItemText
+ playsound SFX_ITEM
+ waitsfx
+ end
+
+ReceiveTogepiEggScript:
+ waitsfx
+ writetext ReceivedItemText
+ playsound SFX_GET_EGG
+ waitsfx
+ end
+
+GameCornerCoinVendorScript:
+ faceplayer
+ opentext
+ writetext CoinVendor_WelcomeText
+ promptbutton
+ checkitem COIN_CASE
+ iftrue CoinVendor_IntroScript
+ writetext CoinVendor_NoCoinCaseText
+ waitbutton
+ closetext
+ end
+
+CoinVendor_IntroScript:
+ writetext CoinVendor_IntroText
+
+.loop
+ special DisplayMoneyAndCoinBalance
+ loadmenu .MenuHeader
+ verticalmenu
+ closewindow
+ ifequal 1, .Buy50
+ ifequal 2, .Buy500
+ sjump .Cancel
+
+.Buy50:
+ checkcoins MAX_COINS - 50
+ ifequal HAVE_MORE, .CoinCaseFull
+ checkmoney YOUR_MONEY, 1000
+ ifequal HAVE_LESS, .NotEnoughMoney
+ givecoins 50
+ takemoney YOUR_MONEY, 1000
+ waitsfx
+ playsound SFX_TRANSACTION
+ writetext CoinVendor_Buy50CoinsText
+ waitbutton
+ sjump .loop
+
+.Buy500:
+ checkcoins MAX_COINS - 500
+ ifequal HAVE_MORE, .CoinCaseFull
+ checkmoney YOUR_MONEY, 10000
+ ifequal HAVE_LESS, .NotEnoughMoney
+ givecoins 500
+ takemoney YOUR_MONEY, 10000
+ waitsfx
+ playsound SFX_TRANSACTION
+ writetext CoinVendor_Buy500CoinsText
+ waitbutton
+ sjump .loop
+
+.NotEnoughMoney:
+ writetext CoinVendor_NotEnoughMoneyText
+ waitbutton
+ closetext
+ end
+
+.CoinCaseFull:
+ writetext CoinVendor_CoinCaseFullText
+ waitbutton
+ closetext
+ end
+
+.Cancel:
+ writetext CoinVendor_CancelText
+ waitbutton
+ closetext
+ end
+
+.MenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 4, 15, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_CURSOR ; flags
+ db 3 ; items
+ db " 50 : ¥1000@"
+ db "500 : ¥10000@"
+ db "CANCEL@"
+
+HappinessCheckScript:
+ faceplayer
+ opentext
+ special GetFirstPokemonHappiness
+ ifless 50, .Unhappy
+ ifless 150, .KindaHappy
+ writetext HappinessText3
+ waitbutton
+ closetext
+ end
+
+.KindaHappy:
+ writetext HappinessText2
+ waitbutton
+ closetext
+ end
+
+.Unhappy:
+ writetext HappinessText1
+ waitbutton
+ closetext
+ end
+
+Movement_ContestResults_WalkAfterWarp:
+ step RIGHT
+ step DOWN
+ turn_head UP
+ step_end
diff --git a/engine/movie/gamefreak_presents.asm b/engine/movie/gamefreak_presents.asm
index 2676c9f6..f4c2c5cc 100644
--- a/engine/movie/gamefreak_presents.asm
+++ b/engine/movie/gamefreak_presents.asm
@@ -1,41 +1,30 @@
-Copyright_GFPresents: ; e49a8 (39:49a8)
+Copyright_GFPresents:
; Play the copyright screen and GameFreak Presents sequence.
; Return carry if user cancels animation by pressing a button.
call ClearBGPalettes
call ClearTilemap
-
ld a, HIGH(vBGMap0)
ldh [hBGMapAddress + 1], a
xor a ; LOW(vBGMap0)
ldh [hBGMapAddress], a
-
ldh [hJoyDown], a
ldh [hSCX], a
ldh [hSCY], a
-
ld a, SCREEN_HEIGHT_PX
ldh [hWY], a
-
call WaitBGMap
-
ld b, SCGB_GAMEFREAK_LOGO
call GetSGBLayout
-
call SetPalettes
-
ld c, 10
call DelayFrames
-
callfar Copyright
-
call WaitBGMap
-
ld c, 100
call DelayFrames
-
call ClearTilemap
- call GFPresents_Init
+ call .GetGFLogoGFX
.loop
call GFPresents_PlayFrame
@@ -55,7 +44,7 @@ Copyright_GFPresents: ; e49a8 (39:49a8)
scf
ret
-GFPresents_Init: ; e49f3 (39:49f3)
+.GetGFLogoGFX:
; Load gfx and initialize variables
ld de, GFPresentsGFX1
@@ -75,25 +64,21 @@ GFPresents_Init: ; e49f3 (39:49f3)
ld [hli], a
ld a, $8d
ld [hl], a
-
xor a
ld [wJumptableIndex], a
- ld [$ce64], a
+ ld [wIntroSceneFrameCounter], a
ld [wIntroSceneTimer], a
ldh [hSCX], a
ldh [hSCY], a
-
ld a, 1
ldh [hBGMapMode], a
-
ld a, SCREEN_HEIGHT_PX
ldh [hWY], a
-
lb de, %00100100, %11111000
call DmgToCgbObjPals
ret
-GFPresents_PlayFrame: ; e4a37 (39:4a37)
+GFPresents_PlayFrame:
; Play one frame of GFPresents sequence.
; Return carry when the sequence completes or is canceled.
@@ -133,7 +118,7 @@ GFPresents_PlayFrame: ; e4a37 (39:4a37)
scf
ret
-GFPresents_HandleFrame: ; e4a6d (39:4a6d)
+GFPresents_HandleFrame:
; Dispatch to the current scene handler
ld a, [wJumptableIndex]
@@ -155,26 +140,26 @@ GFPresents_HandleFrame: ; e4a6d (39:4a6d)
dw GFPresents_WaitForTimer
dw GFPresents_SetDoneFlag
-GFPresents_NextScene: ; e4a88 (39:4a88)
+GFPresents_NextScene:
ld hl, wJumptableIndex
inc [hl]
ret
; unused?
-Func_e4a8d: ; e4a8d (39:4a8d)
+Functione4a8d:
ld c, 64
call DelayFrames
call GFPresents_NextScene
ret
-GFPresents_Star: ; e4a96 (39:4a96)
+GFPresents_Star:
; tell GFPresents_PlaceLogo we haven't finished yet
xor a
- ld [$ce64], a
+ ld [wIntroSceneFrameCounter], a
depixel 10, 11, 4, 0
- ld a, $16
+ ld a, SPRITE_ANIM_INDEX_GS_INTRO_STAR
call InitSpriteAnimStruct
; TODO set some flag in the struct?
@@ -188,17 +173,17 @@ GFPresents_Star: ; e4a96 (39:4a96)
call GFPresents_NextScene
ret
-GFPresents_PlaceLogo: ; e4ab2 (39:4ab2)
+GFPresents_PlaceLogo:
; Draw the Game Freak logo (may be initially invisible due to palette)
; wait until the star animation completed
; TODO this is cleared above, but when is it set?
- ld a, [$ce64]
+ ld a, [wIntroSceneFrameCounter]
and a
ret z
depixel 10, 11, 4, 0
- ld a, $15
+ ld a, SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
call InitSpriteAnimStruct
call GFPresents_NextScene
@@ -208,7 +193,7 @@ GFPresents_PlaceLogo: ; e4ab2 (39:4ab2)
ld [wIntroSceneTimer], a
ret
-GFPresents_LogoSparkles: ; e4ac8 (39:4ac8)
+GFPresents_LogoSparkles:
ld hl, wIntroSceneTimer
ld a, [hl]
@@ -230,16 +215,18 @@ GFPresents_LogoSparkles: ; e4ac8 (39:4ac8)
call GFPresents_NextScene
ret
-GFPresents_PlaceGameFreak: ; e4adf (39:4adf)
+GFPresents_PlaceGameFreak:
hlcoord 5, 12
ld de, .game_freak
call PlaceString
ret
.game_freak
- db $80, $81, $82, $83, $8d, $84, $85, $83, $81, $86, "@"
+ db $80, $81, $82, $83, $8d, $84, $85, $83, $81, $86
+.end
+ db "@"
-GFPresents_PlacePresents: ; e4af4 (39:4af4)
+GFPresents_PlacePresents:
hlcoord 7, 13
ld de, .presents
call PlaceString
@@ -252,18 +239,18 @@ GFPresents_PlacePresents: ; e4af4 (39:4af4)
ret
.presents
- db $87, $88, $89, $8a, $8b, $8c, "@"
+ db $87, $88, $89, $8a, $8b, $8c
+.end
+ db "@"
-GFPresents_SetDoneFlag: ; e4b0d (39:4b0d)
-; Tell GFPresents_PlayFrame and TitleScreenFrame (01:63da) that we're finished.
+GFPresents_SetDoneFlag:
+; Tell GFPresents_PlayFrame and TitleScreenFrame that we're finished.
ld hl, wJumptableIndex
set 7, [hl]
ret
-GFPresents_WaitForTimer: ; e4b13 (39:4b13)
-; Wait for the timer to elapse
-
+GFPresents_WaitForTimer:
ld hl, wIntroSceneTimer
ld a, [hl]
and a
@@ -274,8 +261,8 @@ GFPresents_WaitForTimer: ; e4b13 (39:4b13)
call GFPresents_NextScene
ret
-GFPresents_UpdateLogoPal: ; e4b20 (39:4b20)
-; called from 29:5928
+GFPresents_UpdateLogoPal:
+; called from 23:5928
; OBP1 was initialized at end of GFPresents_Init
; once we reached the final state, leave it alone
@@ -297,7 +284,7 @@ GFPresents_UpdateLogoPal: ; e4b20 (39:4b20)
call DmgToCgbObjPal1
ret
-GFPresents_Sparkle: ; e4b33 (39:4b33)
+GFPresents_Sparkle:
; Initialize and configure a sparkle sprite.
; TODO unclear how this relates to the actual screen display,
; seems to be called more times than there are visible sparkles?
@@ -314,7 +301,7 @@ GFPresents_Sparkle: ; e4b33 (39:4b33)
; set up a new sparkle sprite
push af
depixel 11, 11
- ld a, $17
+ ld a, SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
call InitSpriteAnimStruct
pop af
diff --git a/engine/movie/title.asm b/engine/movie/title.asm
index 93345798..0545b8f1 100644
--- a/engine/movie/title.asm
+++ b/engine/movie/title.asm
@@ -55,7 +55,7 @@ TitleScreen:
ld [hli], a ; wIntroSceneFrameCounter
ld [hli], a ; wTitleScreenTimer
ld [hl], a ; wTitleScreenTimer + 1
- ld de, $6058
+ depixel 12, 11
ld a, SPRITE_ANIM_INDEX_GS_INTRO_HO_OH
call InitSpriteAnimStruct
ld hl, wSpriteAnim1
diff --git a/engine/overworld/player_movement.asm b/engine/overworld/player_movement.asm
index bdf23ec4..6747c0ef 100755
--- a/engine/overworld/player_movement.asm
+++ b/engine/overworld/player_movement.asm
@@ -394,7 +394,7 @@ DoPlayerMovement::
.CheckWarp:
; Bug: Since no case is made for STANDING here, it will check
-; [.edgewarps + $ff]. This resolves to $3e at $8035a.
+; [.edgewarps + $ff]. This resolves to $3e at $1035a.
; This causes wWalkingIntoEdgeWarp to be nonzero when standing on tile $3e,
; making bumps silent.
diff --git a/engine/phone/scripts/bike_shop.asm b/engine/phone/scripts/bike_shop.asm
new file mode 100644
index 00000000..bb10af68
--- /dev/null
+++ b/engine/phone/scripts/bike_shop.asm
@@ -0,0 +1,5 @@
+BikeShopPhoneCallerScript:
+ writetext BikeShopPhoneCallerText
+ clearflag ENGINE_BIKE_SHOP_CALL_ENABLED
+ specialphonecall SPECIALCALL_NONE
+ end
diff --git a/engine/phone/scripts/bill.asm b/engine/phone/scripts/bill.asm
new file mode 100644
index 00000000..7bb2e4d6
--- /dev/null
+++ b/engine/phone/scripts/bill.asm
@@ -0,0 +1,41 @@
+BillPhoneCalleeScript:
+ checktime DAY
+ iftrue .daygreet
+ checktime NITE
+ iftrue .nitegreet
+ writetext BillPhoneMornGreetingText
+ promptbutton
+ sjump .main
+
+.daygreet
+ writetext BillPhoneDayGreetingText
+ promptbutton
+ sjump .main
+
+.nitegreet
+ writetext BillPhoneNiteGreetingText
+ promptbutton
+ sjump .main
+
+.main
+ writetext BillPhoneGenericText
+ promptbutton
+ readvar VAR_BOXSPACE
+ getnum STRING_BUFFER_3
+ ifequal 0, .full
+ ifless PARTY_LENGTH, .nearlyfull
+ writetext BillPhoneNotFullText
+ end
+
+.nearlyfull
+ writetext BillPhoneNearlyFullText
+ end
+
+.full
+ writetext BillPhoneFullText
+ end
+
+BillPhoneCallerScript:
+ writetext BillPhoneNewlyFullText
+ waitbutton
+ end
diff --git a/engine/phone/scripts/elm.asm b/engine/phone/scripts/elm.asm
new file mode 100644
index 00000000..b93bdc22
--- /dev/null
+++ b/engine/phone/scripts/elm.asm
@@ -0,0 +1,101 @@
+ElmPhoneCalleeScript:
+ readvar VAR_SPECIALPHONECALL
+ ifequal SPECIALCALL_POKERUS, .pokerus
+ checkevent EVENT_SHOWED_TOGEPI_TO_ELM
+ iftrue .discovery
+ checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
+ iffalse .next
+ checkevent EVENT_TOGEPI_HATCHED
+ iftrue .egghatched
+.next
+ checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
+ iftrue .eggunhatched
+ checkevent EVENT_ELMS_AIDE_IN_LAB
+ iftrue .assistant
+ checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
+ iftrue .checkingegg
+ checkevent EVENT_ELM_CALLED_ABOUT_STOLEN_POKEMON
+ iftrue .stolen
+ checkevent EVENT_GOT_MYSTERY_EGG_FROM_MR_POKEMON
+ iftrue .sawmrpokemon
+ writetext ElmPhoneHealYourMonText
+ end
+
+.sawmrpokemon
+ writetext ElmPhoneSawMrPokemonText
+ end
+
+.stolen
+ writetext ElmPhonePokemonStolenText
+ end
+
+.checkingegg
+ writetext ElmPhoneCheckingTheEggText
+ end
+
+.assistant
+ writetext ElmPhoneAssistantText
+ end
+
+.eggunhatched
+ writetext ElmPhoneHowIsTheEggText
+ end
+
+.egghatched
+ writetext ElmPhoneEggHatchedText
+ setevent EVENT_TOLD_ELM_ABOUT_TOGEPI_OVER_THE_PHONE
+ end
+
+.discovery
+ random 2
+ ifequal 0, .nextdiscovery
+ writetext ElmPhoneDiscoveredHatchTimeText
+ end
+
+.nextdiscovery
+ writetext ElmPhoneInvestigatingEggMovesText
+ end
+
+.pokerus
+ writetext ElmPhoneDiscoveredPokerusText
+ specialphonecall SPECIALCALL_NONE
+ end
+
+ElmPhoneCallerScript:
+ readvar VAR_SPECIALPHONECALL
+ ifequal SPECIALCALL_ROBBED, .disaster
+ ifequal SPECIALCALL_ASSISTANT, .assistant
+ ifequal SPECIALCALL_WEIRDBROADCAST, .rocket
+ ifequal SPECIALCALL_SSTICKET, .gift
+ ifequal SPECIALCALL_MASTERBALL, .gift
+ writetext ElmPhoneDiscoveredPokerusText
+ specialphonecall SPECIALCALL_NONE
+ end
+
+.disaster
+ writetext ElmPhoneDisasterText
+ specialphonecall SPECIALCALL_NONE
+ setevent EVENT_ELM_CALLED_ABOUT_STOLEN_POKEMON
+ end
+
+.assistant
+ writetext ElmPhoneEggAssistantText
+ specialphonecall SPECIALCALL_NONE
+ clearevent EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
+ setevent EVENT_ELMS_AIDE_IN_LAB
+ end
+
+.rocket
+ writetext ElmPhoneRadioTowerRocketTakeoverText
+ specialphonecall SPECIALCALL_NONE
+ end
+
+.gift
+ writetext ElmPhoneGiftText
+ specialphonecall SPECIALCALL_NONE
+ end
+
+.unused
+ writetext ElmPhoneGotAholdOfSomethingNeatText
+ specialphonecall SPECIALCALL_NONE
+ end
diff --git a/engine/phone/scripts/generic.asm b/engine/phone/scripts/generic.asm
new file mode 100644
index 00000000..4587c739
--- /dev/null
+++ b/engine/phone/scripts/generic.asm
@@ -0,0 +1,227 @@
+PhoneScript_Random2:
+ random 2
+ end
+
+PhoneScript_Random4:
+ random 4
+ end
+
+PhoneScript_AnswerPhone_Male:
+ checktime DAY
+ iftrue .day
+ checktime NITE
+ iftrue .nite
+ writetext PhoneMaleAnswerMornText
+ promptbutton
+ end
+.day
+ writetext PhoneMaleAnswerDayText
+ promptbutton
+ end
+.nite
+ writetext PhoneMaleAnswerNiteText
+ promptbutton
+ end
+
+PhoneScript_AnswerPhone_Female:
+ checktime DAY
+ iftrue .day
+ checktime NITE
+ iftrue .nite
+ writetext PhoneFemaleAnswerMornText
+ promptbutton
+ end
+.day
+ writetext PhoneFemaleAnswerDayText
+ promptbutton
+ end
+.nite
+ writetext PhoneFemaleAnswerNiteText
+ promptbutton
+ end
+
+PhoneScript_GreetPhone_Male:
+ checktime DAY
+ iftrue .day
+ checktime NITE
+ iftrue .nite
+ writetext PhoneMaleGreetMornText
+ promptbutton
+ end
+.day
+ writetext PhoneMaleGreetDayText
+ promptbutton
+ end
+.nite
+ writetext PhoneMaleGreetNiteText
+ promptbutton
+ end
+
+PhoneScript_GreetPhone_Female:
+ checktime DAY
+ iftrue .day
+ checktime NITE
+ iftrue .nite
+ writetext PhoneFemaleGreetMornText
+ promptbutton
+ end
+.day
+ writetext PhoneFemaleGreetDayText
+ promptbutton
+ end
+.nite
+ writetext PhoneFemaleGreetNiteText
+ promptbutton
+ end
+
+; Huey
+Phone_GenericCall_Male_SkipMon:
+ special RandomPhoneMon
+ scall PhoneScript_Random2
+ ifequal 0, Phone_LookingAwesome_Male_SkipMon
+ writetext PhoneMaleReallyEnergeticText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+; unused
+Phone_GenericCall_Female_SkipMon:
+ special RandomPhoneMon
+ scall PhoneScript_Random2
+ ifequal 0, Phone_DressedUp_Female_SkipMon
+ writetext PhoneFemaleTopShapeText
+ promptbutton
+ sjump PhoneScript_ByeBye
+
+; Huey
+Phone_LookingAwesome_Male_SkipMon:
+ writetext PhoneMaleLookingAwesomeText
+ promptbutton
+ sjump PhoneScript_ByeBye
+
+; unused
+Phone_DressedUp_Female_SkipMon:
+ writetext PhoneFemaleDressedUpText
+ promptbutton
+ sjump PhoneScript_ByeBye
+
+Phone_GenericCall_Male:
+ special RandomPhoneMon
+ scall PhoneScript_Random2
+ ifequal 0, Phone_LookingAwesome_Male
+ writetext PhoneMaleReallyEnergeticText
+ promptbutton
+ sjump Phone_FoundAMon_Male
+
+Phone_GenericCall_Female:
+ special RandomPhoneMon
+ scall PhoneScript_Random2
+ ifequal 0, Phone_DressedUp_Female
+ writetext PhoneFemaleTopShapeText
+ promptbutton
+ sjump Phone_FoundAMon_Female
+
+Phone_LookingAwesome_Male:
+ writetext PhoneMaleLookingAwesomeText
+ promptbutton
+ sjump Phone_FoundAMon_Male
+
+Phone_DressedUp_Female:
+ writetext PhoneFemaleDressedUpText
+ promptbutton
+ sjump Phone_FoundAMon_Female
+
+Phone_FoundAMon_Male:
+ special RandomPhoneWildMon
+ scall PhoneScript_Random2
+ ifequal 0, PhoneScript_AlmostCaught_Male
+ writetext PhoneMaleManagedToBeatText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+Phone_FoundAMon_Female:
+ special RandomPhoneWildMon
+ scall PhoneScript_Random2
+ ifequal 0, PhoneScript_MissedCatching_Female
+ writetext PhoneFemaleTypeAdvantageText
+ promptbutton
+ sjump PhoneScript_ByeBye
+
+PhoneScript_AlmostCaught_Male:
+ writetext PhoneMaleAlmostCaughtText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+PhoneScript_MissedCatching_Female:
+ writetext PhoneFemaleMissedCatchingText
+ promptbutton
+ sjump PhoneScript_ByeBye
+
+PhoneScript_WantsToBattle_Male:
+ writetext PhoneMaleWantsToBattleText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+PhoneScript_WantsToBattle_Female:
+ writetext PhoneFemaleWantsToBattleText
+ promptbutton
+ sjump PhoneScript_ByeBye
+
+Phone_WrongNumber_JoseBrent:
+ writetext PhoneWrongNumberKazText
+ end
+
+Phone_WrongNumber_Tiffany:
+ writetext PhoneWrongNumberAudreyText
+ end
+
+PhoneScript_SeeYouLater:
+ writetext PhoneSeeYouLaterText
+ end
+
+PhoneScript_ByeBye:
+ writetext PhoneByeByeText
+ end
+
+PhoneScript_SwarmGrass:
+ writetext PhoneSwarmGrassText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+PhoneScript_SwarmFish:
+ writetext PhoneSwarmFishText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+PhoneScript_SwarmCave:
+ writetext PhoneSwarmCaveText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+PhoneScript_BugCatchingContest:
+ writetext PhoneBugCatchingContestText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+IrwinRocketRumorScript:
+ writetext IrwinRocketTakeoverRumorText
+ promptbutton
+ sjump PhoneScript_SeeYouLater
+
+GinaRocketRumorScript:
+ writetext GinaRocketTakeoverRumorText
+ promptbutton
+ sjump PhoneScript_ByeBye
+
+Phone_CheckIfUnseenRare_Male:
+ scall PhoneScriptRareWildMon
+ iffalse PhoneScript_SeeYouLater
+ sjump Phone_GenericCall_Male
+
+Phone_CheckIfUnseenRare_Female:
+ scall PhoneScriptRareWildMon
+ iffalse PhoneScript_ByeBye
+ sjump Phone_GenericCall_Female
+
+PhoneScriptRareWildMon:
+ special RandomUnseenWildMon
+ end
diff --git a/engine/phone/scripts/mom.asm b/engine/phone/scripts/mom.asm
new file mode 100644
index 00000000..ec0e5113
--- /dev/null
+++ b/engine/phone/scripts/mom.asm
@@ -0,0 +1,150 @@
+MomPhoneCalleeScript:
+ checkevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
+ iftrue .script_10401f
+ checkevent EVENT_DUDE_TALKED_TO_YOU
+ iftrue MomPhoneLectureScript
+ checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
+ iftrue MomPhoneNoGymQuestScript
+ checkevent EVENT_GOT_A_POKEMON_FROM_ELM
+ iftrue MomPhoneNoPokedexScript
+ sjump MomPhoneNoPokemonScript
+
+.script_10401f
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_8
+ iftrue MomPhoneHangUpScript
+ writetext MomPhoneGreetingText
+ promptbutton
+ getcurlandmarkname STRING_BUFFER_3
+ readvar VAR_ROOFPALETTE
+ ifequal 1, MomPhonePalette1
+ ifequal 2, MomPhonePalette2
+ sjump MomPhoneOther
+
+MomPhoneLandmark:
+ writetext MomPhoneLandmarkText
+ promptbutton
+ sjump MomSavingMoney
+
+MomPhonePalette1:
+ readvar VAR_MAPGROUP
+ ifequal GROUP_NEW_BARK_TOWN, .newbark
+ ifequal GROUP_CHERRYGROVE_CITY, .cherrygrove
+ ifequal GROUP_VIOLET_CITY, .violet
+ ifequal GROUP_AZALEA_TOWN, .azalea
+ ifequal GROUP_GOLDENROD_CITY, .goldenrod
+ writetext MomPhoneGenericAreaText
+ promptbutton
+ sjump MomSavingMoney
+
+.newbark
+ writetext MomPhoneNewBarkText
+ promptbutton
+ sjump MomSavingMoney
+
+.cherrygrove
+ writetext MomPhoneCherrygroveText
+ promptbutton
+ sjump MomSavingMoney
+
+.violet
+ getstring STRING_BUFFER_4, .text_sprout_tower
+ sjump MomPhoneLandmark
+.text_sprout_tower
+ db "SPROUT TOWER@"
+
+.azalea
+ getstring STRING_BUFFER_4, .text_slowpoke_well
+ sjump MomPhoneLandmark
+.text_slowpoke_well
+ db "SLOWPOKE WELL@"
+
+.goldenrod
+ getstring STRING_BUFFER_4, .text_radio_tower
+ sjump MomPhoneLandmark
+.text_radio_tower
+ db "RADIO TOWER@"
+
+MomPhonePalette2:
+ writetext MomOtherAreaText
+ promptbutton
+ sjump MomSavingMoney
+
+MomPhoneOther:
+ writetext MomDeterminedText
+ promptbutton
+ sjump MomSavingMoney
+
+MomSavingMoney:
+ checkflag ENGINE_MOM_SAVING_MONEY
+ iffalse .NotSaving
+ checkmoney MOMS_MONEY, 0
+ ifequal HAVE_MORE, .SavingHasMoney
+ sjump .SavingNoMoney
+
+.NotSaving:
+ checkmoney MOMS_MONEY, 0
+ ifequal HAVE_MORE, .HasMoney
+ sjump .NoMoney
+
+.SavingHasMoney:
+ getmoney STRING_BUFFER_3, MOMS_MONEY
+ writetext MomCheckBalanceText
+ yesorno
+ iftrue MomPhoneSaveMoneyScript
+ sjump MomPhoneStopSavingMoneyScript
+
+.SavingNoMoney:
+ writetext MomImportantToSaveText
+ yesorno
+ iftrue MomPhoneSaveMoneyScript
+ sjump MomPhoneStopSavingMoneyScript
+
+.NoMoney:
+ writetext MomYoureNotSavingText
+ yesorno
+ iftrue MomPhoneSaveMoneyScript
+ sjump MomPhoneStopSavingMoneyScript
+
+.HasMoney:
+ getmoney STRING_BUFFER_3, MOMS_MONEY
+ writetext MomYouveSavedText
+ yesorno
+ iftrue MomPhoneSaveMoneyScript
+ sjump MomPhoneStopSavingMoneyScript
+
+MomPhoneSaveMoneyScript:
+ setflag ENGINE_MOM_SAVING_MONEY
+ writetext MomOKIllSaveText
+ promptbutton
+ sjump MomPhoneHangUpScript
+
+MomPhoneStopSavingMoneyScript:
+ clearflag ENGINE_MOM_SAVING_MONEY
+ writetext MomPhoneStopSavingMoneyText
+ promptbutton
+ sjump MomPhoneHangUpScript
+
+MomPhoneHangUpScript:
+ writetext MomPhoneHangUpText
+ end
+
+MomPhoneNoPokemonScript:
+ writetext MomPhoneNoPokemonText
+ end
+
+MomPhoneNoPokedexScript:
+ writetext MomPhoneNoPokedexText
+ end
+
+MomPhoneNoGymQuestScript:
+ writetext MomPhoneNoGymQuestText
+ end
+
+MomPhoneLectureScript:
+ setevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
+ setflag ENGINE_MOM_ACTIVE
+ specialphonecall SPECIALCALL_NONE
+ writetext MomPhoneLectureText
+ yesorno
+ iftrue MomPhoneSaveMoneyScript
+ sjump MomPhoneStopSavingMoneyScript
diff --git a/engine/phone/scripts/trainers.asm b/engine/phone/scripts/trainers.asm
new file mode 100644
index 00000000..8c22df62
--- /dev/null
+++ b/engine/phone/scripts/trainers.asm
@@ -0,0 +1,677 @@
+JackPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, SCHOOLBOY, JACK1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+JackPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, SCHOOLBOY, JACK1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneNationalParkText
+ setevent EVENT_JACK_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+BeverlyPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, POKEFANF, BEVERLY1
+ scall PhoneScript_AnswerPhone_Female
+ sjump Phone_GenericCall_Female
+
+BeverlyPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, POKEFANF, BEVERLY1
+ scall PhoneScript_GreetPhone_Female
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneNationalParkText
+ setevent EVENT_BEVERLY_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+HueyPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, SAILOR, HUEY1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male_SkipMon
+
+HueyPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, SAILOR, HUEY1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ sjump Phone_GenericCall_Male_SkipMon
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneLighthouseText
+ setevent EVENT_HUEY_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+GavenPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, COOLTRAINERM, GAVEN3
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+GavenPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, COOLTRAINERM, GAVEN3
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute26Text
+ setevent EVENT_GAVEN_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+BethPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, COOLTRAINERF, BETH1
+ scall PhoneScript_AnswerPhone_Female
+ sjump Phone_GenericCall_Female
+
+BethPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, COOLTRAINERF, BETH1
+ scall PhoneScript_GreetPhone_Female
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute26Text
+ setevent EVENT_BETH_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+JosePhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, BIRD_KEEPER, JOSE2
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+JosePhoneCallerScript:
+ gettrainername STRING_BUFFER_3, BIRD_KEEPER, JOSE2
+ scall PhoneScript_Random4
+ ifequal 0, Phone_WrongNumber_JoseBrent
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute27Text
+ setevent EVENT_JOSE_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+ReenaPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, COOLTRAINERF, REENA1
+ scall PhoneScript_AnswerPhone_Female
+ sjump Phone_GenericCall_Female
+
+ReenaPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, COOLTRAINERF, REENA1
+ scall PhoneScript_GreetPhone_Female
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute27Text
+ setevent EVENT_REENA_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+JoeyPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, YOUNGSTER, JOEY1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+JoeyPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, YOUNGSTER, JOEY1
+ scall PhoneScript_GreetPhone_Male
+ checkflag ENGINE_FLYPOINT_GOLDENROD
+ iffalse .NoBattle
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+
+.NoBattle:
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute30Text
+ setevent EVENT_JOEY_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+WadePhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, BUG_CATCHER, WADE1
+ scall PhoneScript_AnswerPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .Generic
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue .Generic
+ readvar VAR_WEEKDAY
+ ifequal TUESDAY, PhoneScript_BugCatchingContest
+ ifequal THURSDAY, PhoneScript_BugCatchingContest
+ ifequal SATURDAY, PhoneScript_BugCatchingContest
+
+.Generic:
+ sjump Phone_GenericCall_Male
+
+WadePhoneCallerScript:
+ gettrainername STRING_BUFFER_3, BUG_CATCHER, WADE1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .NoContest
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue .NoContest
+ readvar VAR_WEEKDAY
+ ifequal TUESDAY, PhoneScript_BugCatchingContest
+ ifequal THURSDAY, PhoneScript_BugCatchingContest
+ ifequal SATURDAY, PhoneScript_BugCatchingContest
+
+.NoContest:
+ checkflag ENGINE_FLYPOINT_GOLDENROD
+ iffalse .NoBattle
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+
+.NoBattle:
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute31Text
+ setevent EVENT_WADE_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+RalphPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, FISHER, RALPH1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+RalphPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, FISHER, RALPH1
+ scall PhoneScript_GreetPhone_Male
+ checkflag ENGINE_FLYPOINT_GOLDENROD
+ iffalse .NoBattle
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+
+.NoBattle:
+ scall PhoneScript_Random2
+ ifequal 0, .QwilfishSwarm
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute32Text
+ setevent EVENT_RALPH_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+.QwilfishSwarm:
+ checkflag ENGINE_SWARM
+ iftrue Phone_GenericCall_Male
+ getmonname STRING_BUFFER_4, QWILFISH
+ getstring STRING_BUFFER_5, PhoneRoute32Text
+ setval FISHSWARM_QWILFISH
+ special ActivateFishingSwarm
+ sjump PhoneScript_SwarmFish
+
+LizPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, LIZ1
+ scall PhoneScript_AnswerPhone_Female
+ sjump Phone_GenericCall_Female
+
+LizPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, LIZ1
+ scall PhoneScript_GreetPhone_Female
+ checkflag ENGINE_FLYPOINT_GOLDENROD
+ iffalse .NoBattle
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+
+.NoBattle:
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute32Text
+ setevent EVENT_LIZ_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+AnthonyPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, HIKER, ANTHONY2
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+AnthonyPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, HIKER, ANTHONY2
+ scall PhoneScript_GreetPhone_Male
+ checkflag ENGINE_FLYPOINT_GOLDENROD
+ iffalse .NoBattle
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+
+.NoBattle:
+ scall PhoneScript_Random2
+ ifequal 0, .DunsparceSwarm
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute33Text
+ setevent EVENT_ANTHONY_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+.DunsparceSwarm:
+ checkflag ENGINE_SWARM
+ iftrue Phone_GenericCall_Male
+ getmonname STRING_BUFFER_4, DUNSPARCE
+ getstring STRING_BUFFER_5, PhoneDarkCaveText
+ swarm DARK_CAVE_VIOLET_ENTRANCE
+ sjump PhoneScript_SwarmCave
+
+ToddPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, CAMPER, TODD1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+ToddPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, CAMPER, TODD1
+ scall PhoneScript_GreetPhone_Male
+ checkflag ENGINE_FLYPOINT_GOLDENROD
+ iffalse .NoBattle
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+
+.NoBattle:
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute34Text
+ setevent EVENT_TODD_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+GinaPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, GINA1
+ scall PhoneScript_AnswerPhone_Female
+ checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
+ iftrue GinaRocketRumorScript
+ sjump Phone_GenericCall_Female
+
+GinaPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, GINA1
+ scall PhoneScript_GreetPhone_Female
+ checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
+ iftrue GinaRocketRumorScript
+ checkflag ENGINE_FLYPOINT_GOLDENROD
+ iffalse .NoBattle
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+
+.NoBattle:
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute34Text
+ setevent EVENT_GINA_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+IrwinPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, JUGGLER, IRWIN1
+ scall PhoneScript_AnswerPhone_Male
+ checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
+ iftrue IrwinRocketRumorScript
+ sjump Phone_GenericCall_Male
+
+IrwinPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, JUGGLER, IRWIN1
+ scall PhoneScript_GreetPhone_Male
+ checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
+ iftrue IrwinRocketRumorScript
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute35Text
+ setevent EVENT_IRWIN_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+ArniePhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, BUG_CATCHER, ARNIE1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+ArniePhoneCallerScript:
+ gettrainername STRING_BUFFER_3, BUG_CATCHER, ARNIE1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, .YanmaSwarm
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute35Text
+ setevent EVENT_ARNIE_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+.YanmaSwarm:
+ checkflag ENGINE_SWARM
+ iftrue Phone_GenericCall_Male
+ getmonname STRING_BUFFER_4, YANMA
+ getstring STRING_BUFFER_5, PhoneRoute35Text
+ swarm ROUTE_35
+ sjump PhoneScript_SwarmGrass
+
+AlanPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, SCHOOLBOY, ALAN1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+AlanPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, SCHOOLBOY, ALAN1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute36Text
+ setevent EVENT_ALAN_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+DanaPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, LASS, DANA1
+ scall PhoneScript_AnswerPhone_Female
+ sjump Phone_GenericCall_Female
+
+DanaPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, LASS, DANA1
+ scall PhoneScript_GreetPhone_Female
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute38Text
+ setevent EVENT_DANA_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+ChadPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, SCHOOLBOY, CHAD1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+ChadPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, SCHOOLBOY, CHAD1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .SnubbullSwarm
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.SnubbullSwarm:
+ checkflag ENGINE_SWARM
+ iftrue Phone_GenericCall_Male
+ getmonname STRING_BUFFER_4, SNUBBULL
+ getstring STRING_BUFFER_5, PhoneRoute38Text
+ swarm ROUTE_38
+ sjump PhoneScript_SwarmGrass
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute38Text
+ setevent EVENT_CHAD_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+DerekPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, POKEFANM, DEREK1
+ scall PhoneScript_AnswerPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .Generic
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue .Generic
+ readvar VAR_WEEKDAY
+ ifequal TUESDAY, PhoneScript_BugCatchingContest
+ ifequal THURSDAY, PhoneScript_BugCatchingContest
+ ifequal SATURDAY, PhoneScript_BugCatchingContest
+
+.Generic:
+ sjump Phone_GenericCall_Male
+
+DerekPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, POKEFANM, DEREK1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .NoContest
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue .NoContest
+ readvar VAR_WEEKDAY
+ ifequal TUESDAY, PhoneScript_BugCatchingContest
+ ifequal THURSDAY, PhoneScript_BugCatchingContest
+ ifequal SATURDAY, PhoneScript_BugCatchingContest
+
+.NoContest:
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute39Text
+ setevent EVENT_DEREK_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+ChrisPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, FISHER, CHRIS1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+ChrisPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, FISHER, CHRIS1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute42Text
+ setevent EVENT_CHRIS_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+BrentPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, POKEMANIAC, BRENT1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+BrentPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, POKEMANIAC, BRENT1
+ scall PhoneScript_Random4
+ ifequal 0, Phone_WrongNumber_JoseBrent
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute43Text
+ setevent EVENT_BRENT_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+TiffanyPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, TIFFANY3
+ scall PhoneScript_AnswerPhone_Female
+ sjump Phone_GenericCall_Female
+
+TiffanyPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, TIFFANY3
+ scall PhoneScript_Random4
+ ifequal 0, Phone_WrongNumber_Tiffany
+ scall PhoneScript_GreetPhone_Female
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute43Text
+ setevent EVENT_TIFFANY_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+VancePhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, BIRD_KEEPER, VANCE1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+VancePhoneCallerScript:
+ gettrainername STRING_BUFFER_3, BIRD_KEEPER, VANCE1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute44Text
+ setevent EVENT_VANCE_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+WiltonPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, FISHER, WILTON1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+WiltonPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, FISHER, WILTON1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .RemoraidSwarm
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.RemoraidSwarm:
+ checkflag ENGINE_SWARM
+ iftrue Phone_GenericCall_Male
+ getmonname STRING_BUFFER_4, REMORAID
+ getstring STRING_BUFFER_5, PhoneRoute44Text
+ setval FISHSWARM_REMORAID
+ special ActivateFishingSwarm
+ sjump PhoneScript_SwarmFish
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute44Text
+ setevent EVENT_WILTON_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+KenjiPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, BLACKBELT_T, KENJI3
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+KenjiPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, BLACKBELT_T, KENJI3
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute45Text
+ setevent EVENT_KENJI_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+ParryPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, HIKER, PARRY1
+ scall PhoneScript_AnswerPhone_Male
+ sjump Phone_GenericCall_Male
+
+ParryPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, HIKER, PARRY1
+ scall PhoneScript_GreetPhone_Male
+ scall PhoneScript_Random2
+ ifequal 0, .MarillSwarm
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Male
+ sjump Phone_GenericCall_Male
+
+.MarillSwarm:
+ checkflag ENGINE_SWARM
+ iftrue Phone_GenericCall_Male
+ getmonname STRING_BUFFER_4, MARILL
+ getstring STRING_BUFFER_5, PhoneMtMortarText
+ swarm MOUNT_MORTAR_1F_OUTSIDE
+ sjump PhoneScript_SwarmCave
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute45Text
+ setevent EVENT_PARRY_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Male
+
+ErinPhoneCalleeScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, ERIN1
+ scall PhoneScript_AnswerPhone_Female
+ sjump Phone_GenericCall_Female
+
+ErinPhoneCallerScript:
+ gettrainername STRING_BUFFER_3, PICNICKER, ERIN1
+ scall PhoneScript_GreetPhone_Female
+ scall PhoneScript_Random2
+ ifequal 0, .WantsBattle
+ scall PhoneScript_Random2
+ ifequal 0, Phone_CheckIfUnseenRare_Female
+ sjump Phone_GenericCall_Female
+
+.WantsBattle:
+ getstring STRING_BUFFER_5, PhoneRoute46Text
+ setevent EVENT_ERIN_READY_FOR_REMATCH
+ sjump PhoneScript_WantsToBattle_Female
+
+INCLUDE "engine/phone/scripts/generic.asm"
+
+INCLUDE "data/phone/text/landmarks.asm"
diff --git a/engine/phone/scripts/unused.asm b/engine/phone/scripts/unused.asm
new file mode 100644
index 00000000..08d67f60
--- /dev/null
+++ b/engine/phone/scripts/unused.asm
@@ -0,0 +1,3 @@
+UnusedPhoneScript:
+ writetext UnusedPhoneText
+ end