jep-hack/maps/DebugRoom.asm
Llinos Evans 7ef292a431 (very rough) Winner's Path
This implements Winner's Path into the game, complete with trainers and wild Pokemon. There's still a lot to do, though.

The Debug Lady that gave Celebi now gives Furret because it gets all the important HMs, which we need to...test things. Naturally, you have all the badges now too!
2024-07-17 23:12:24 +01:00

520 lines
12 KiB
NASM

object_const_def
;setflag GLOBALTERMINALOUTSIDE_ROCKET
DebugRoom_MapScripts:
def_scene_scripts
def_callbacks
DebugPokemon1Script:
opentext
getmonname STRING_BUFFER_3, LUXWAN
writetext ReceivedDebugPokemonText
playsound SFX_CAUGHT_MON
waitsfx
promptbutton
givepoke LUXWAN, 24, POISON_STONE
closetext
end
DebugPokemon2Script:
opentext
getmonname STRING_BUFFER_3, MACHAMP
writetext ReceivedDebugPokemonText
playsound SFX_CAUGHT_MON
waitsfx
promptbutton
givepoke MACHAMP, 31, TM_ROCK_SMASH
closetext
end
ReceivedDebugPokemonText:
text "<PLAYER> received"
line "@"
text_ram wStringBuffer3
text "!"
done
DebugPokemon3Script:
faceplayer
opentext
writetext DebugTextA
cry DOKUROAR
pause 15
closetext
loadvar VAR_BATTLETYPE, BATTLETYPE_SHINY
loadwildmon DOKUROAR, 60
startbattle
reloadmapafterbattle
end
DebugTextA:
text "Sparkle..."
line "Sparkle..."
done
DebugPokemon4Script:
faceplayer
opentext
writetext DebugTextB
cry DOKUROAR
pause 15
closetext
loadvar VAR_BATTLETYPE, BATTLETYPE_NORMAL
loadwildmon DOKUROAR, 60
startbattle
reloadmapafterbattle
end
DebugTextB:
text "Do-ku-raaagh!"
done
DebugFlyScript:
faceplayer
opentext
writetext DebugTextC
playsound SFX_GET_BADGE
promptbutton
setflag ENGINE_ZEPHYRBADGE
setflag ENGINE_HIVEBADGE
setflag ENGINE_PLAINBADGE
setflag ENGINE_FOGBADGE
setflag ENGINE_STORMBADGE
setflag ENGINE_MINERALBADGE
setflag ENGINE_GLACIERBADGE
setflag ENGINE_RISINGBADGE
setflag ENGINE_POKEDEX
setflag ENGINE_MAP_CARD
setflag ENGINE_POKEGEAR
setflag ENGINE_PHONE_CARD
setflag ENGINE_FLYPOINT_PLAYERS_HOUSE
setflag ENGINE_FLYPOINT_DEBUG
setflag ENGINE_FLYPOINT_PALLET
setflag ENGINE_FLYPOINT_VIRIDIAN
setflag ENGINE_FLYPOINT_PEWTER
setflag ENGINE_FLYPOINT_CERULEAN
setflag ENGINE_FLYPOINT_ROCK_TUNNEL
setflag ENGINE_FLYPOINT_VERMILION
setflag ENGINE_FLYPOINT_LAVENDER
setflag ENGINE_FLYPOINT_SAFFRON
setflag ENGINE_FLYPOINT_CELADON
setflag ENGINE_FLYPOINT_FUCHSIA
setflag ENGINE_FLYPOINT_CINNABAR
setflag ENGINE_FLYPOINT_INDIGO_PLATEAU
setflag ENGINE_FLYPOINT_NEW_BARK
setflag ENGINE_FLYPOINT_CHERRYGROVE
setflag ENGINE_FLYPOINT_VIOLET
setflag ENGINE_FLYPOINT_AZALEA
setflag ENGINE_FLYPOINT_CIANWOOD
setflag ENGINE_FLYPOINT_GOLDENROD
setflag ENGINE_FLYPOINT_OLIVINE
setflag ENGINE_FLYPOINT_ECRUTEAK
setflag ENGINE_FLYPOINT_MAHOGANY
setflag ENGINE_FLYPOINT_LAKE_OF_RAGE
setflag ENGINE_FLYPOINT_BLACKTHORN
setflag ENGINE_FLYPOINT_SILVER_CAVE
setflag ENGINE_FLYPOINT_SILENT_HILLS
setevent EVENT_BEAT_ELITE_FOUR
addcellnum PHONE_MOM
readvar VAR_BADGES
givepoke SHI_SHI, 70
closetext
end
DebugTextC:
text "I believe I can"
line "FLY!"
done
DebugDexScript:
faceplayer
opentext
writetext DebugTextD
playsound SFX_FANFARE
promptbutton
callasm CheatFillPokedex
givepoke FURRET, 100 ; gets all the hms
closetext
end
DebugTextD:
text "Your #DEX is"
line "fully complete!"
done
CheatFillPokedex:
ld hl, wPokedexSeen
call .Fill
ld hl, wPokedexCaught
.Fill:
ld a, %11111111
ld bc, 31 ; 001-248
call ByteFill
ld a, %11111111
ld bc, 18 ; 249-392
call ByteFill
ret
DebugItemScript:
faceplayer
opentext
writetext DebugTextE
playsound SFX_FANFARE_2
promptbutton
giveitem MASTER_BALL, 99
giveitem LEVEL_BALL, 99
giveitem MOON_BALL, 99
giveitem FRIEND_BALL, 99
giveitem LURE_BALL, 99
giveitem LOVE_BALL, 99
giveitem FAST_BALL, 99
giveitem HEAVY_BALL, 99
giveitem HM_CUT, 1
giveitem HM_FLY, 1
giveitem HM_SURF, 1
giveitem HM_STRENGTH, 1
giveitem HM_WHIRLPOOL, 1
giveitem HM_WATERFALL, 1
giveitem FULL_RESTORE, 99
giveitem MAX_REVIVE, 99
giveitem MAX_REPEL, 99
giveitem RARE_CANDY, 99
giveitem BICYCLE, 1
giveitem SUPER_ROD, 1
giveitem CLUB_FOSSIL, 2
giveitem WING_FOSSIL, 2
giveitem DOME_FOSSIL, 2
giveitem HELIX_FOSSIL, 2
giveitem OLD_AMBER, 2
closetext
end
DebugTextE:
text "<PLAYER> received"
line "many items!"
done
DebugFossilScientist:
faceplayer
opentext
checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1 ; remove the next two lines to immediately receive the fossil
iftrue .GaveScientistFossil
checkevent EVENT_GAVE_SCIENTIST_OLD_AMBER
iftrue .GiveDecilla
checkevent EVENT_GAVE_SCIENTIST_DOME_FOSSIL
iftrue .GiveKabuto
checkevent EVENT_GAVE_SCIENTIST_HELIX_FOSSIL
iftrue .GiveOmanyte
checkevent EVENT_GAVE_SCIENTIST_CLUB_FOSSIL
iftrue .GiveXylodon
checkevent EVENT_GAVE_SCIENTIST_WING_FOSSIL
iftrue .GiveFeradactyl
writetext FossilScientistIntroText
waitbutton
loadmenu .MoveMenuHeader
verticalmenu
closewindow
ifequal REVIVE_OLD_AMBER, .OldAmber
ifequal REVIVE_DOME_FOSSIL, .DomeFossil
ifequal REVIVE_HELIX_FOSSIL, .HelixFossil
ifequal REVIVE_CLUB_FOSSIL, .ClubFossil
ifequal REVIVE_WING_FOSSIL, .WingFossil
sjump .No
.OldAmber
checkitem OLD_AMBER
iffalse .No
getmonname STRING_BUFFER_3, DECILLA
writetext FossilScientistMonText
promptbutton
setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1 ; remove this to immediately receive the fossil
setevent EVENT_GAVE_SCIENTIST_OLD_AMBER
takeitem OLD_AMBER
writetext FossilScientistGiveText
waitbutton
sjump .GaveScientistFossil
.DomeFossil:
checkitem DOME_FOSSIL
iffalse .No
getmonname STRING_BUFFER_3, KABUTO
writetext FossilScientistMonText
promptbutton
setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1 ; remove this to immediately receive the fossil
setevent EVENT_GAVE_SCIENTIST_DOME_FOSSIL
takeitem DOME_FOSSIL
opentext
writetext FossilScientistGiveText
waitbutton
sjump .GaveScientistFossil
.HelixFossil:
checkitem HELIX_FOSSIL
iffalse .No
getmonname STRING_BUFFER_3, OMANYTE
writetext FossilScientistMonText
promptbutton
setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1 ; remove this to immediately receive the fossil
setevent EVENT_GAVE_SCIENTIST_HELIX_FOSSIL
takeitem HELIX_FOSSIL
writetext FossilScientistGiveText
waitbutton
sjump .GaveScientistFossil
.ClubFossil:
checkitem HELIX_FOSSIL
iffalse .No
getmonname STRING_BUFFER_3, XYLODON
writetext FossilScientistMonText
promptbutton
setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1 ; remove this to immediately receive the fossil
setevent EVENT_GAVE_SCIENTIST_CLUB_FOSSIL
takeitem HELIX_FOSSIL
writetext FossilScientistGiveText
waitbutton
sjump .GaveScientistFossil
.WingFossil:
checkitem HELIX_FOSSIL
iffalse .No
getmonname STRING_BUFFER_3, FERADACTYL
writetext FossilScientistMonText
promptbutton
setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1 ; remove this to immediately receive the fossil
setevent EVENT_GAVE_SCIENTIST_WING_FOSSIL
takeitem HELIX_FOSSIL
writetext FossilScientistGiveText
waitbutton
sjump .GaveScientistFossil
.No
writetext FossilScientistNoText
waitbutton
closetext
end
.GaveScientistFossil:
writetext FossilScientistTimeText
waitbutton
closetext
; older versions will use FadeBlackQuickly below instead
; special FadeOutToBlack ; uncomment the next five lines to immediately receive the fossil
; special ReloadSpritesNoPalettes
; playsound SFX_WARP_TO
; waitsfx
; pause 35
end ; replace this with "sjump FossilScientist" to immediately receive the fossil
.GiveDecilla:
readvar VAR_PARTYCOUNT
ifequal PARTY_LENGTH, .NoRoom
clearevent EVENT_GAVE_SCIENTIST_OLD_AMBER
writetext FossilScientistDoneText
promptbutton
getmonname STRING_BUFFER_3, DECILLA
writetext FossilScientistReceiveText
playsound SFX_CAUGHT_MON
waitsfx
waitbutton
writetext FossilScientistMonText
givepoke DECILLA, 30
closetext
end
.GiveKabuto:
readvar VAR_PARTYCOUNT
ifequal PARTY_LENGTH, .NoRoom
clearevent EVENT_GAVE_SCIENTIST_DOME_FOSSIL
writetext FossilScientistDoneText
promptbutton
getmonname STRING_BUFFER_3, KABUTO
writetext FossilScientistReceiveText
playsound SFX_CAUGHT_MON
waitsfx
waitbutton
writetext FossilScientistMonText
givepoke KABUTO, 30
closetext
end
.GiveOmanyte:
readvar VAR_PARTYCOUNT
ifequal PARTY_LENGTH, .NoRoom
clearevent EVENT_GAVE_SCIENTIST_HELIX_FOSSIL
writetext FossilScientistDoneText
promptbutton
getmonname STRING_BUFFER_3, OMANYTE
writetext FossilScientistReceiveText
playsound SFX_CAUGHT_MON
waitsfx
waitbutton
writetext FossilScientistMonText
givepoke OMANYTE, 30
closetext
end
.GiveXylodon:
readvar VAR_PARTYCOUNT
ifequal PARTY_LENGTH, .NoRoom
clearevent EVENT_GAVE_SCIENTIST_CLUB_FOSSIL
writetext FossilScientistDoneText
promptbutton
getmonname STRING_BUFFER_3, XYLODON
writetext FossilScientistReceiveText
playsound SFX_CAUGHT_MON
waitsfx
waitbutton
writetext FossilScientistMonText
givepoke XYLODON, 30
closetext
end
.GiveFeradactyl:
readvar VAR_PARTYCOUNT
ifequal PARTY_LENGTH, .NoRoom
clearevent EVENT_GAVE_SCIENTIST_WING_FOSSIL
writetext FossilScientistDoneText
promptbutton
getmonname STRING_BUFFER_3, FERADACTYL
writetext FossilScientistReceiveText
playsound SFX_CAUGHT_MON
waitsfx
waitbutton
writetext FossilScientistMonText
givepoke FERADACTYL, 30
closetext
end
.NoRoom:
writetext FossilScientistPartyFullText
waitbutton
closetext
end
.MoveMenuHeader:
db MENU_BACKUP_TILES ; flags
menu_coords 0, 0, 15, TEXTBOX_Y + 1
dw .MenuData
db 1 ; default option
.MenuData:
db STATICMENU_CURSOR ; flags
db 6 ; items
db "OLD AMBER@"
db "DOME FOSSIL@"
db "HELIX FOSSIL@"
db "CLUB FOSSIL@"
db "WING FOSSIL@"
db "CANCEL@"
FossilScientistIntroText:
text "Hiya!"
para "I am important"
line "doctor!"
para "I study here rare"
line "#MON fossils!"
para "You! Have you a"
line "fossil for me?"
done
FossilScientistNoText:
text "No! Is too bad!"
para "You come again!"
done
FossilScientistPartyFullText:
text "No! Is too bad!"
para "Your party is"
line "already full!"
done
FossilScientistTimeText:
text "I take a little"
line "time!"
para "You go for walk a"
line "little while!"
done
FossilScientistDoneText:
text "Where were you?"
para "Your fossil is"
line "back to life!"
done
FossilScientistMonText:
text "Oh! That is"
line "a fossil!"
para "It is fossil of"
line "@"
text_ram wStringBuffer3
text ", a"
para "#MON that is"
line "already extinct!"
para "My Resurrection"
line "Machine will make"
cont "that #MON live"
cont "again!"
done
FossilScientistGiveText:
text "So! You hurry and"
line "give me that!"
para "<PLAYER> handed"
line "over the fossil."
done
FossilScientistReceiveText:
text "<PLAYER> received"
line "@"
text_ram wStringBuffer3
text "!"
done
DebugRoom_MapEvents:
db 0, 0 ; filler
def_warp_events
warp_event 23, 14, PLAYERS_HOUSE_1F, 1
warp_event 3, 20, SILENT_HILLS, 1
warp_event 11, 15, LAKE_OF_RAGE, 3
warp_event 27, 5, PEWTER_CITY, 2
warp_event 15, 2, GOLDENROD_CITY, 1 ; city warp
warp_event 4, 9, PALLET_TOWN, 1 ; left lab/league warp
warp_event 5, 9, PALLET_TOWN, 1 ; right lab/league warp
warp_event 35, 17, BLUE_FOREST, 1 ; east warp
warp_event 5, 35, BLUE_FOREST, 1 ; southwest warp
warp_event 19, 34, BLUE_FOREST, 1 ; southern warp
warp_event 33, 33, BLUE_FOREST, 1 ; southeast warp
warp_event 5, 3, AZALEA_TOWN, 1
warp_event 34, 11, WINNERS_PATH, 1
def_coord_events
def_bg_events
def_object_events
object_event 22, 21, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DebugPokemon1Script, -1
object_event 27, 21, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DebugPokemon2Script, -1
object_event 23, 27, SPRITE_MONSTER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_OW_RED, OBJECTTYPE_SCRIPT, 0, DebugPokemon3Script, -1
object_event 26, 27, SPRITE_MONSTER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_OW_BROWN, OBJECTTYPE_SCRIPT, 0, DebugPokemon4Script, -1
object_event 17, 13, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_OW_PURPLE, OBJECTTYPE_SCRIPT, 0, DebugFlyScript, -1
object_event 16, 13, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_OW_PURPLE, OBJECTTYPE_SCRIPT, 0, DebugDexScript, -1
object_event 19, 13, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_OW_PURPLE, OBJECTTYPE_SCRIPT, 0, DebugItemScript, -1
object_event 18, 13, SPRITE_NURSE, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, DebugFossilScientist, -1