pokered/scripts/FightingDojo.asm

297 lines
7.8 KiB
NASM
Raw Normal View History

FightingDojo_Script:
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, FightingDojoTrainerHeaders
ld de, FightingDojo_ScriptPointers
2015-08-31 02:38:41 +00:00
ld a, [wFightingDojoCurScript]
2014-05-18 18:19:10 +00:00
call ExecuteCurMapScriptInTable
2015-08-31 02:38:41 +00:00
ld [wFightingDojoCurScript], a
2014-05-18 18:19:10 +00:00
ret
2023-11-19 00:44:03 +00:00
FightingDojoResetScripts:
xor a ; SCRIPT_FIGHTINGDOJO_DEFAULT
ld [wJoyIgnore], a
2015-08-31 02:38:41 +00:00
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
FightingDojo_ScriptPointers:
def_script_pointers
dw_const FightingDojoDefaultScript, SCRIPT_FIGHTINGDOJO_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_FIGHTINGDOJO_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_FIGHTINGDOJO_END_BATTLE
dw_const FightingDojoKarateMasterPostBattleScript, SCRIPT_FIGHTINGDOJO_KARATE_MASTER_POST_BATTLE
2014-05-18 18:19:10 +00:00
FightingDojoDefaultScript:
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
2014-05-18 18:19:10 +00:00
ret nz
call CheckFightingMapTrainers
ld a, [wTrainerHeaderFlagBit]
and a
ret nz
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_KARATE_MASTER
2014-05-18 18:19:10 +00:00
ret nz
xor a
ldh [hJoyHeld], a
ld [wSavedCoordIndex], a
2015-08-31 02:38:41 +00:00
ld a, [wYCoord]
cp 3
2014-05-18 18:19:10 +00:00
ret nz
2015-08-31 02:38:41 +00:00
ld a, [wXCoord]
cp 4
2014-05-18 18:19:10 +00:00
ret nz
ld a, 1
ld [wSavedCoordIndex], a
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, FIGHTINGDOJO_KARATE_MASTER
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, TEXT_FIGHTINGDOJO_KARATE_MASTER
ldh [hTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ret
FightingDojoKarateMasterPostBattleScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
2023-11-19 00:44:03 +00:00
jp z, FightingDojoResetScripts
ld a, [wSavedCoordIndex]
and a ; nz if the player was at (4, 3), left of the Karate Master
2023-11-19 00:44:03 +00:00
jr z, .already_facing
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, FIGHTINGDOJO_KARATE_MASTER
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
2023-11-19 00:44:03 +00:00
.already_facing
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
2015-07-21 17:36:03 +00:00
SetEventRange EVENT_BEAT_KARATE_MASTER, EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
ld a, TEXT_FIGHTINGDOJO_KARATE_MASTER_I_WILL_GIVE_YOU_A_POKEMON
ldh [hTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
xor a ; SCRIPT_FIGHTINGDOJO_DEFAULT
ld [wJoyIgnore], a
2015-08-31 02:38:41 +00:00
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
FightingDojo_TextPointers:
def_text_pointers
dw_const FightingDojoKarateMasterText, TEXT_FIGHTINGDOJO_KARATE_MASTER
dw_const FightingDojoBlackbelt1Text, TEXT_FIGHTINGDOJO_BLACKBELT1
dw_const FightingDojoBlackbelt2Text, TEXT_FIGHTINGDOJO_BLACKBELT2
dw_const FightingDojoBlackbelt3Text, TEXT_FIGHTINGDOJO_BLACKBELT3
dw_const FightingDojoBlackbelt4Text, TEXT_FIGHTINGDOJO_BLACKBELT4
dw_const FightingDojoHitmonleePokeBallText, TEXT_FIGHTINGDOJO_HITMONLEE_POKE_BALL
dw_const FightingDojoHitmonchanPokeBallText, TEXT_FIGHTINGDOJO_HITMONCHAN_POKE_BALL
dw_const FightingDojoKarateMasterText.IWillGiveYouAPokemonText, TEXT_FIGHTINGDOJO_KARATE_MASTER_I_WILL_GIVE_YOU_A_POKEMON
2014-05-18 18:19:10 +00:00
FightingDojoTrainerHeaders:
def_trainers 2
2016-06-12 00:24:04 +00:00
FightingDojoTrainerHeader0:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_0, 4, FightingDojoBlackbelt1BattleText, FightingDojoBlackbelt1EndBattleText, FightingDojoBlackbelt1AfterBattleText
2016-06-12 00:24:04 +00:00
FightingDojoTrainerHeader1:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_1, 4, FightingDojoBlackbelt2BattleText, FightingDojoBlackbelt2EndBattleText, FightingDojoBlackbelt2AfterBattleText
2016-06-12 00:24:04 +00:00
FightingDojoTrainerHeader2:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_2, 3, FightingDojoBlackbelt3BattleText, FightingDojoBlackbelt3EndBattleText, FightingDojoBlackbelt3AfterBattleText
2016-06-12 00:24:04 +00:00
FightingDojoTrainerHeader3:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_3, 3, FightingDojoBlackbelt4BattleText, FightingDojoBlackbelt4EndBattleText, FightingDojoBlackbelt4AfterBattleText
db -1 ; end
2014-05-18 18:19:10 +00:00
FightingDojoKarateMasterText:
text_asm
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
jp nz, .defeated_dojo
2015-07-21 17:36:03 +00:00
CheckEventReuseA EVENT_BEAT_KARATE_MASTER
jp nz, .defeated_master
ld hl, .Text
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, wStatusFlags3
set BIT_TALKED_TO_TRAINER, [hl]
set BIT_PRINT_END_BATTLE_TEXT, [hl]
ld hl, .DefeatedText
ld de, .DefeatedText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
2014-09-13 07:50:56 +00:00
ld [wSpriteIndex], a
2014-05-18 18:19:10 +00:00
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, SCRIPT_FIGHTINGDOJO_KARATE_MASTER_POST_BATTLE
2015-08-31 02:38:41 +00:00
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
jr .end
.defeated_dojo
ld hl, .StayAndTrainWithUsText
2014-05-18 18:19:10 +00:00
call PrintText
jr .end
.defeated_master
ld hl, .IWillGiveYouAPokemonText
2014-05-18 18:19:10 +00:00
call PrintText
.end
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
.Text:
text_far _FightingDojoKarateMasterText
text_end
2014-05-18 18:19:10 +00:00
.DefeatedText:
text_far _FightingDojoKarateMasterDefeatedText
text_end
2014-05-18 18:19:10 +00:00
.IWillGiveYouAPokemonText:
text_far _FightingDojoKarateMasterIWillGiveYouAPokemonText
text_end
2014-05-18 18:19:10 +00:00
.StayAndTrainWithUsText:
text_far _FightingDojoKarateMasterStayAndTrainWithUsText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt1Text:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, FightingDojoTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt1BattleText:
text_far _FightingDojoBlackbelt1BattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt1EndBattleText:
text_far _FightingDojoBlackbelt1EndBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt1AfterBattleText:
text_far _FightingDojoBlackbelt1AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt2Text:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, FightingDojoTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt2BattleText:
text_far _FightingDojoBlackbelt2BattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt2EndBattleText:
text_far _FightingDojoBlackbelt2EndBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt2AfterBattleText:
text_far _FightingDojoBlackbelt2AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt3Text:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, FightingDojoTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt3BattleText:
text_far _FightingDojoBlackbelt3BattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt3EndBattleText:
text_far _FightingDojoBlackbelt3EndBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt3AfterBattleText:
text_far _FightingDojoBlackbelt3AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt4Text:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, FightingDojoTrainerHeader3
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt4BattleText:
text_far _FightingDojoBlackbelt4BattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt4EndBattleText:
text_far _FightingDojoBlackbelt4EndBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBlackbelt4AfterBattleText:
text_far _FightingDojoBlackbelt4AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoHitmonleePokeBallText:
text_asm
2015-07-21 17:36:03 +00:00
CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
2014-05-18 18:19:10 +00:00
jr z, .GetMon
ld hl, FightingDojoBetterNotGetGreedyText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.GetMon
ld a, HITMONLEE
call DisplayPokedex
ld hl, .Text
2014-05-18 18:19:10 +00:00
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
jr nz, .done
ld a, [wCurPartySpecies]
2014-05-18 18:19:10 +00:00
ld b, a
ld c, 30
call GivePokemon
jr nc, .done
; once Poké Ball is taken, hide sprite
ld a, HS_FIGHTING_DOJO_GIFT_1
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
2015-07-21 17:36:03 +00:00
SetEvents EVENT_GOT_HITMONLEE, EVENT_DEFEATED_FIGHTING_DOJO
2014-05-18 18:19:10 +00:00
.done
jp TextScriptEnd
.Text:
text_far _FightingDojoHitmonleePokeBallText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoHitmonchanPokeBallText:
text_asm
2015-07-21 17:36:03 +00:00
CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
2014-05-18 18:19:10 +00:00
jr z, .GetMon
ld hl, FightingDojoBetterNotGetGreedyText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.GetMon
ld a, HITMONCHAN
call DisplayPokedex
ld hl, .Text
2014-05-18 18:19:10 +00:00
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
jr nz, .done
ld a, [wCurPartySpecies]
2014-05-18 18:19:10 +00:00
ld b, a
ld c, 30
2014-05-18 18:19:10 +00:00
call GivePokemon
jr nc, .done
2015-07-21 17:36:03 +00:00
SetEvents EVENT_GOT_HITMONCHAN, EVENT_DEFEATED_FIGHTING_DOJO
2014-05-18 18:19:10 +00:00
; once Poké Ball is taken, hide sprite
ld a, HS_FIGHTING_DOJO_GIFT_2
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
2014-05-18 18:19:10 +00:00
.done
jp TextScriptEnd
.Text:
text_far _FightingDojoHitmonchanPokeBallText
text_end
2014-05-18 18:19:10 +00:00
FightingDojoBetterNotGetGreedyText:
text_far _FightingDojoBetterNotGetGreedyText
text_end