pokered/scripts/PokemonTower6F.asm
2024-09-18 21:01:18 -04:00

196 lines
5.5 KiB
NASM

PokemonTower6F_Script:
call EnableAutoTextBoxDrawing
ld hl, PokemonTower6TrainerHeaders
ld de, PokemonTower6F_ScriptPointers
ld a, [wPokemonTower6FCurScript]
call ExecuteCurMapScriptInTable
ld [wPokemonTower6FCurScript], a
ret
PokemonTower6FSetDefaultScript:
xor a
ld [wJoyIgnore], a
ld [wPokemonTower6FCurScript], a ; SCRIPT_POKEMONTOWER6F_DEFAULT
ld [wCurMapScript], a ; SCRIPT_POKEMONTOWER6F_DEFAULT
ret
PokemonTower6F_ScriptPointers:
def_script_pointers
dw_const PokemonTower6FDefaultScript, SCRIPT_POKEMONTOWER6F_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_POKEMONTOWER6F_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_POKEMONTOWER6F_END_BATTLE
dw_const PokemonTower6FPlayerMovingScript, SCRIPT_POKEMONTOWER6F_PLAYER_MOVING
dw_const PokemonTower6FMarowakBattleScript, SCRIPT_POKEMONTOWER6F_MAROWAK_BATTLE
PokemonTower6FDefaultScript:
CheckEvent EVENT_BEAT_GHOST_MAROWAK
jp nz, CheckFightingMapTrainers
ld hl, PokemonTower6FMarowakCoords
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
xor a
ldh [hJoyHeld], a
ld a, TEXT_POKEMONTOWER6F_BEGONE
ldh [hTextID], a
call DisplayTextID
ld a, RESTLESS_SOUL
ld [wCurOpponent], a
ld a, 30
ld [wCurEnemyLevel], a
ld a, SCRIPT_POKEMONTOWER6F_MAROWAK_BATTLE
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower6FMarowakCoords:
dbmapcoord 10, 16
db -1 ; end
PokemonTower6FMarowakBattleScript:
ld a, [wIsInBattle]
cp $ff
jp z, PokemonTower6FSetDefaultScript
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ld a, [wStatusFlags3]
bit BIT_TALKED_TO_TRAINER, a
ret nz
call UpdateSprites
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ld a, [wBattleResult]
and a
jr nz, .did_not_defeat
SetEvent EVENT_BEAT_GHOST_MAROWAK
ld a, TEXT_POKEMONTOWER6F_MAROWAK_DEPARTED
ldh [hTextID], a
call DisplayTextID
xor a
ld [wJoyIgnore], a
ld a, SCRIPT_POKEMONTOWER6F_DEFAULT
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
.did_not_defeat
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
ld a, $10
ld [wSimulatedJoypadStatesEnd], a
xor a
ld [wSpritePlayerStateData2MovementByte1], a
ld [wOverrideSimulatedJoypadStatesMask], a
ld hl, wStatusFlags5
set BIT_SCRIPTED_MOVEMENT_STATE, [hl]
ld a, SCRIPT_POKEMONTOWER6F_PLAYER_MOVING
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower6FPlayerMovingScript:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
xor a
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower6F_TextPointers:
def_text_pointers
dw_const PokemonTower6FChanneler1Text, TEXT_POKEMONTOWER6F_CHANNELER1
dw_const PokemonTower6FChanneler2Text, TEXT_POKEMONTOWER6F_CHANNELER2
dw_const PokemonTower6FChanneler3Text, TEXT_POKEMONTOWER6F_CHANNELER3
dw_const PickUpItemText, TEXT_POKEMONTOWER6F_RARE_CANDY
dw_const PickUpItemText, TEXT_POKEMONTOWER6F_X_ACCURACY
dw_const PokemonTower6FBeGoneText, TEXT_POKEMONTOWER6F_BEGONE
dw_const PokemonTower6FMarowakDepartedText, TEXT_POKEMONTOWER6F_MAROWAK_DEPARTED
PokemonTower6TrainerHeaders:
def_trainers
PokemonTower6TrainerHeader0:
trainer EVENT_BEAT_POKEMONTOWER_6_TRAINER_0, 3, PokemonTower6FChanneler1BattleText, PokemonTower6FChanneler1EndBattleText, PokemonTower6FChanneler1AfterBattleText
PokemonTower6TrainerHeader1:
trainer EVENT_BEAT_POKEMONTOWER_6_TRAINER_1, 3, PokemonTower6FChanneler2BattleText, PokemonTower6FChanneler2EndBattleText, PokemonTower6FChanneler2AfterBattleText
PokemonTower6TrainerHeader2:
trainer EVENT_BEAT_POKEMONTOWER_6_TRAINER_2, 2, PokemonTower6FChanneler3BattleText, PokemonTower6FChanneler3EndBattleText, PokemonTower6FChanneler3AfterBattleText
db -1 ; end
PokemonTower6FChanneler1Text:
text_asm
ld hl, PokemonTower6TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
PokemonTower6FChanneler2Text:
text_asm
ld hl, PokemonTower6TrainerHeader1
call TalkToTrainer
jp TextScriptEnd
PokemonTower6FChanneler3Text:
text_asm
ld hl, PokemonTower6TrainerHeader2
call TalkToTrainer
jp TextScriptEnd
PokemonTower6FMarowakDepartedText:
text_asm
ld hl, PokemonTower6FGhostWasCubonesMotherText
call PrintText
ld a, RESTLESS_SOUL
call PlayCry
call WaitForSoundToFinish
ld c, 30
call DelayFrames
ld hl, PokemonTower6FSoulWasCalmedText
call PrintText
jp TextScriptEnd
PokemonTower6FGhostWasCubonesMotherText:
text_far _PokemonTower6FGhostWasCubonesMotherText
text_end
PokemonTower6FSoulWasCalmedText:
text_far _PokemonTower6FSoulWasCalmedText
text_end
PokemonTower6FChanneler1BattleText:
text_far _PokemonTower6FChanneler1BattleText
text_end
PokemonTower6FChanneler1EndBattleText:
text_far _PokemonTower6FChanneler1EndBattleText
text_end
PokemonTower6FChanneler1AfterBattleText:
text_far _PokemonTower6FChanneler1AfterBattleText
text_end
PokemonTower6FChanneler2BattleText:
text_far _PokemonTower6FChanneler2BattleText
text_end
PokemonTower6FChanneler2EndBattleText:
text_far _PokemonTower6FChanneler2EndBattleText
text_end
PokemonTower6FChanneler2AfterBattleText:
text_far _PokemonTower6FChanneler2AfterBattleText
text_end
PokemonTower6FChanneler3BattleText:
text_far _PokemonTower6FChanneler3BattleText
text_end
PokemonTower6FChanneler3EndBattleText:
text_far _PokemonTower6FChanneler3EndBattleText
text_end
PokemonTower6FChanneler3AfterBattleText:
text_far _PokemonTower6FChanneler3AfterBattleText
text_end
PokemonTower6FBeGoneText:
text_far _PokemonTower6FBeGoneText
text_end