jep-hack/maps/SepiaSchool.asm
Llinos Evans 8ec7b027fd Sepia School
Adds a prep-style school to Sepia City, which talks about all those super intricate GSC mechanics. It also gave it the May98 front porch and sign.

I like to imagine they all have their little Munchlaxes being trained up, maybe stockpiling on Ultra Balls to catch their first Zapdos too.
2024-07-23 15:24:55 +01:00

466 lines
8.9 KiB
NASM

; This acts as a more "advanced" version of the Trainer School in Violet.
; Lots of GSC mechanical details, focused on what was "new" for the time.
; It also visualises some GSC intricacies that aren't talked about.
; Some of this was in Stadium 2.
object_const_def
const SEPIASCHOOL_EARL
const SEPIASCHOOL_COOLTRAINER_F
const SEPIASCHOOL_GAMEBOY_KID1
const SEPIASCHOOL_GAMEBOY_KID2
const SEPIASCHOOL_COOLTRAINER_M
const SEPIASCHOOL_POKEDEX
SepiaSchool_MapScripts:
def_scene_scripts
def_callbacks
SepiaSchoolEarl:
applymovement SEPIASCHOOL_EARL, SepiaSchoolEarlSpinMovement
faceplayer
opentext
writetext SepiaSchoolEarlIntroText
yesorno
iffalse .Part1
writetext SepiaSchoolEarlStatExpText
yesorno
iffalse .Done
.Part1:
writetext SepiaSchoolEarlTeachMoreText
yesorno
iffalse .Done
writetext SepiaSchoolEarlDVsText
waitbutton
closetext
end
.Done:
writetext SepiaSchoolEarlNoMoreToTeachText
waitbutton
closetext
end
SepiaSchoolCoolTrainerFScript:
jumptextfaceplayer SepiaSchoolCoolTrainerFText
SepiaSchoolGameboyKid1Script:
faceplayer
opentext
writetext SepiaSchoolGameboyKid1Text
waitbutton
closetext
turnobject SEPIASCHOOL_GAMEBOY_KID1, DOWN
end
SepiaSchoolGameboyKid2Script:
faceplayer
opentext
writetext SepiaSchoolGameboyKid2Text
waitbutton
closetext
turnobject SEPIASCHOOL_GAMEBOY_KID2, DOWN
end
SepiaSchoolCoolTrainerMScript:
jumptextfaceplayer SepiaSchoolCoolTrainerMText
SepiaSchoolBlackboard:
opentext
writetext SepiaSchoolBlackboardText
.Loop:
loadmenu .BlackboardMenuHeader
_2dmenu
closewindow
ifequal 1, .Confusion
ifequal 2, .MeanPass
ifequal 3, .Nightmare
ifequal 4, .Spikes
ifequal 5, .PhysSpc
closetext
end
.Confusion:
writetext SepiaSchoolConfusionText
waitbutton
sjump .Loop
.MeanPass:
writetext SepiaSchoolMeanPassText
waitbutton
sjump .Loop
.Nightmare:
writetext SepiaSchoolNightmareText
waitbutton
sjump .Loop
.Spikes:
writetext SepiaSchoolSpikesText
waitbutton
sjump .Loop
.PhysSpc:
writetext SepiaSchoolPhysSpcText
waitbutton
sjump .Loop
.BlackboardMenuHeader:
db MENU_BACKUP_TILES ; flags
menu_coords 0, 0, 11, 13
dw .MenuData
db 1 ; default option
.MenuData:
db STATICMENU_CURSOR ; flags
dn 6, 1 ; rows, columns
db 5 ; spacing
dba .Text
dbw BANK(@), NULL
.Text:
db "CONFUSION@"
db "TRAPPING@"
db "NIGHTMARE@"
db "SPIKES@"
db "ATK TYPE@"
db "QUIT@"
SepiaSchoolNotebook:
opentext
writetext SepiaSchoolNotebookText
yesorno
iffalse .Done
writetext SepiaSchoolNotebookText1
yesorno
iffalse .Done
writetext SepiaSchoolNotebookText2
yesorno
iffalse .Done
writetext SepiaSchoolNotebookText3
waitbutton
.Done:
closetext
end
SepiaSchoolBookshelf:
jumpstd DifficultBookshelfScript
SepiaSchoolEarlSpinMovement:
turn_head DOWN
turn_head LEFT
turn_head UP
turn_head RIGHT
turn_head DOWN
turn_head LEFT
turn_head UP
turn_head RIGHT
turn_head DOWN
turn_head LEFT
turn_head UP
turn_head RIGHT
turn_head DOWN
step_end
SepiaSchoolEarlIntroText:
text "Aha! <PLAYER>!"
para "More I can teach,"
line "there is!"
para "Hear me, you"
line "must!"
done
SepiaSchoolEarlStatExpText:
text "Good! Teach you,"
line "I will!"
para "If your #MON"
line "beats another, it"
cont "gains STAT EXP.!"
para "What it gets is"
line "based on what"
cont "that #MON was"
cont "good at."
para "Beat KADABRA,"
line "gain much SPEED"
cont "and SPCL.ATK!"
para "Beat MANTINE,"
line "gain much SPCL."
cont "DEF!"
para "More from me you"
line "want to hear?"
done
SepiaSchoolEarlTeachMoreText:
text "So, want to know"
line "how to breed"
cont "strong #MON?"
done
SepiaSchoolEarlDVsText:
text "Fine! Teach you,"
line "I will!"
para "Each #MON have"
line "genes."
para "Determine the"
line "stats of your"
cont "#MON they will!"
para "SPECIAL stats"
line "will use the"
cont "same gene."
para "They can be pas-"
line "sed down with"
cont "EGGs, so good"
cont "usage means"
cont "strong #MON!"
done
SepiaSchoolEarlNoMoreToTeachText:
text "Oh! Smart student"
line "you are! Nothing"
cont "more do I teach!"
para "Good at #MON"
line "you must be!"
done
SepiaSchoolCoolTrainerFText:
text "Man, these are"
line "really specific…"
para "Will this be on"
line "the test?"
done
SepiaSchoolGameboyKid1Text:
text "We're trading"
line "#MON so we can"
cont "gain more EXP!"
done
SepiaSchoolGameboyKid2Text:
text "Having a trusted"
line "friend like this"
cont "guy is great!"
para "Alright, let's"
line "beat up some"
cont "#MON!"
done
SepiaSchoolCoolTrainerMText:
text "A #MON with low"
line "HP will deal"
cont "more damage if"
cont "it uses FLAIL"
cont "or REVERSAL?"
para "So if I use"
line "ENDURE…"
para "Whoa! That means"
line "my DODRIO…"
done
SepiaSchoolBlackboardText:
text "The blackboard"
line "describes #MON"
cont "intricacies."
done
SepiaSchoolConfusionText:
text "If confused, a"
line "#MON will hit"
cont "itself half of"
cont "the time."
para "If its ATTACK"
line "was increased,"
cont "it will take"
cont "more damage!"
para "Cure it with a"
line "BITTER BERRY!"
done
SepiaSchoolMeanPassText:
text "If a #MON is"
line "affecting another"
cont "with SPIDER WEB"
cont "or MEAN LOOK,"
para "that #MON"
line "can't switch out!"
para "BATON PASS will"
line "also keep the"
cont "#MON trapped!"
para "Use this to"
line "your advantage!"
done
SepiaSchoolNightmareText:
text "If used against"
line "a sleeping #-"
cont "MON, NIGHTMARE"
cont "deals a quarter"
cont "of a #MON's HP"
cont "every turn!"
para "The only cure"
line "is to wake it"
cont "up or switch"
cont "out!"
done
SepiaSchoolSpikesText:
text "SPIKES will"
line "deal a little"
cont "damage to #-"
cont "MON that switch"
cont "into battle!"
para "FLYING type #-"
line "MON are immune."
para "Remove SPIKES"
line "with RAPID SPIN!"
done
SepiaSchoolPhysSpcText:
text "Moves are physical"
line "or special based"
cont "on type."
para "Physical attacks:"
line "NORMAL, ROCK, BUG,"
cont "FIGHTING, FLYING,"
cont "GHOST, POISON, GR-"
cont "OUND, and STEEL."
para "Special attacks:"
line "FIRE, WATER, ICE,"
cont "ELECTRIC, PSYCHIC,"
cont "GRASS, DRAGON,"
cont "DARK, and FAIRY."
done
SepiaSchoolNotebookText:
text "It's this kid's"
line "notebook…"
; Hilarious glitch btw
para "If a #MON"
line "tries to use"
cont "BELLY DRUM,"
cont "but can't, it"
cont "still gets an"
cont "ATTACK boost!"
para "Keep reading?"
done
SepiaSchoolNotebookText1:
text "GUST and TWISTER"
line "deal double damage"
cont "to a FLYing"
cont "#MON!"
para "EARTHQUAKE does"
line "the same if it"
cont "uses DIG!"
para "Keep reading?"
done
SepiaSchoolNotebookText2:
text "Some moves that"
line "restore HP will"
cont "vary by weather."
para "In the sun, SYN-"
line "THESIS and MOR-"
cont "NING SUN are best."
para "In the rain, use"
line "MOONLIGHT!"
para "Sandstorms will"
line "make most worse."
para "Keep reading?"
done
SepiaSchoolNotebookText3:
text "PROTECT and DETECT"
line "will fail if used"
cont "too often."
para "The chance halves"
line "each time!"
para "The next page"
line "is… Blank!"
para "GIRL: Hey!"
para "These notes are"
line "mine! I want to"
cont "succeed at the"
cont "championship!"
done
SepiaSchoolYoungsterScript:
jumptextfaceplayer SepiaSchoolYoungsterText
SepiaSchoolYoungsterText:
text "I was using my"
line "best GUARDIA, but"
cont "after it used"
cont "SWORDS DANCE, it"
cont "became weak all"
cont "of a sudden!"
para "Gah! Was it so"
line "strong it turned"
cont "negative?!"
para "Surely not, right?"
done
SepiaSchool_MapEvents:
db 0, 0 ; filler
def_warp_events
warp_event 3, 15, OLD_CITY, 3
warp_event 4, 15, OLD_CITY, 3
def_coord_events
def_bg_events
bg_event 0, 1, BGEVENT_READ, SepiaSchoolBookshelf
bg_event 1, 1, BGEVENT_READ, SepiaSchoolBookshelf
bg_event 3, 0, BGEVENT_READ, SepiaSchoolBlackboard
bg_event 4, 0, BGEVENT_READ, SepiaSchoolBlackboard
def_object_events
object_event 3, 1, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, SepiaSchoolEarl, 0
object_event 4, 5, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, SepiaSchoolCoolTrainerFScript, -1
object_event 2, 9, SPRITE_GAMEBOY_KID, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SepiaSchoolGameboyKid1Script, -1
object_event 3, 9, SPRITE_GAMEBOY_KID, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, SepiaSchoolGameboyKid2Script, -1
object_event 5, 7, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SepiaSchoolCoolTrainerMScript, -1
object_event 4, 4, SPRITE_POKEDEX, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SepiaSchoolNotebook, -1
object_event 5, 11, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SepiaSchoolYoungsterScript, -1