mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00
416 lines
8.8 KiB
NASM
416 lines
8.8 KiB
NASM
FightingDojo_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, FightingDojoTrainerHeaders
|
|
ld de, FightingDojo_ScriptPointers
|
|
ld a, [wFightingDojoCurScript]
|
|
call ExecuteCurMapScriptInTable
|
|
ld [wFightingDojoCurScript], a
|
|
ret
|
|
|
|
FightingDojoScript_5cd70:
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wFightingDojoCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
FightingDojo_ScriptPointers:
|
|
dw FightingDojoScript1
|
|
dw DisplayEnemyTrainerTextAndStartBattle
|
|
dw EndTrainerBattle
|
|
dw FightingDojoScript3
|
|
|
|
FightingDojoScript1:
|
|
call CheckFightingMapTrainers
|
|
ld a, [wTrainerHeaderFlagBit]
|
|
and a
|
|
ret nz
|
|
CheckEvent EVENT_BEAT_KARATE_MASTER
|
|
ret nz
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
ld [wcf0d], a
|
|
ld a, [wYCoord]
|
|
cp 2
|
|
ret nz
|
|
ld a, [wXCoord]
|
|
cp 4
|
|
ret nz
|
|
ld a, $1
|
|
ld [wcf0d], a
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ret
|
|
|
|
FightingDojoScript3:
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, FightingDojoScript_5cd70
|
|
ld a, [wcf0d]
|
|
and a
|
|
jr z, .asm_5cde4
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
|
|
.asm_5cde4
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
SetEventRange EVENT_DEFEATED_FIGHTING_DOJO, EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
|
|
ld a, $9
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wFightingDojoCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
FightingDojo_TextPointers:
|
|
dw FightingDojoText1
|
|
dw FightingDojoText2
|
|
dw FightingDojoText3
|
|
dw FightingDojoText4
|
|
dw FightingDojoText5
|
|
dw FightingDojoText6
|
|
dw FightingDojoText7
|
|
dw FightingDojoTextHitmontop
|
|
dw FightingDojoText8
|
|
|
|
FightingDojoTrainerHeaders:
|
|
def_trainers 2
|
|
FightingDojoTrainerHeader0:
|
|
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_0, 4, FightingDojoBattleText1, FightingDojoEndBattleText1, FightingDojoAfterBattleText1
|
|
FightingDojoTrainerHeader1:
|
|
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_1, 4, FightingDojoBattleText2, FightingDojoEndBattleText2, FightingDojoAfterBattleText2
|
|
FightingDojoTrainerHeader2:
|
|
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_2, 3, FightingDojoBattleText3, FightingDojoEndBattleText3, FightingDojoAfterBattleText3
|
|
FightingDojoTrainerHeader3:
|
|
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_3, 3, FightingDojoBattleText4, FightingDojoEndBattleText4, FightingDojoAfterBattleText4
|
|
db -1 ; end
|
|
|
|
FightingDojoText1: ; gym scaling can be removed to make space
|
|
text_asm
|
|
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
|
jp z, .normalProcessing
|
|
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
|
|
jp z, .normalProcessing
|
|
ld hl, KoichiRematchPreBattleText ; Rematch functionality. Just loads pre-battle text and his trainer.
|
|
call PrintText
|
|
ld c, BANK(Music_MeetMaleTrainer)
|
|
ld a, MUSIC_MEET_MALE_TRAINER
|
|
call PlayMusic
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ldh a, [hSpriteIndex]
|
|
ld [wSpriteIndex], a
|
|
ld hl, KoichiRematchDefeatedText
|
|
ld de, KoichiRematchDefeatedText
|
|
call SaveEndBattleTextPointers
|
|
call EngageMapTrainer
|
|
ld a, OPP_KOICHI
|
|
ld [wCurOpponent], a
|
|
ld a, 10 ; Silph Gauntlet lineup.
|
|
ld [wTrainerNo], a
|
|
ld a, 1
|
|
ld [wIsTrainerBattle], a
|
|
jr .asm_9dba4
|
|
.normalProcessing
|
|
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
|
|
jp nz, .continue1
|
|
CheckEventReuseA EVENT_BEAT_KARATE_MASTER
|
|
jp nz, .continue2
|
|
CheckEvent EVENT_GOT_HITMON ; failsafe
|
|
jp nz, .continue2
|
|
ld hl, FightingDojoText_5ce8e
|
|
call PrintText
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, FightingDojoText_5ce93
|
|
ld de, FightingDojoText_5ce93
|
|
call SaveEndBattleTextPointers
|
|
ldh a, [hSpriteIndexOrTextID]
|
|
ld [wSpriteIndex], a
|
|
call EngageMapTrainer
|
|
; call InitBattleEnemyParameters ; put this back if you mess up
|
|
|
|
; gym scaling spaghetti code begins here - remove initial parameters as we're making our own
|
|
ld a, OPP_KOICHI
|
|
ld [wCurOpponent], a
|
|
|
|
ld hl, wObtainedBadges ; Picking the team based on badge count. Need +1 so it loads the right team: remember, you're fighting for the badge! Thanks to Chatot4444 for the help.
|
|
ld b, 1
|
|
call CountSetBits
|
|
ld a, [wNumSetBits]
|
|
inc a
|
|
|
|
ld [wTrainerNo], a
|
|
ld a, 1
|
|
ld [wIsTrainerBattle], a
|
|
|
|
;ends here
|
|
|
|
ld a, $3
|
|
ld [wFightingDojoCurScript], a
|
|
ld [wCurMapScript], a
|
|
jr .asm_9dba4
|
|
.continue1
|
|
ld hl, FightingDojoText_5ce9d
|
|
call PrintText
|
|
jr .asm_9dba4
|
|
.continue2
|
|
ld hl, FightingDojoText8
|
|
call PrintText
|
|
.asm_9dba4
|
|
jp TextScriptEnd
|
|
|
|
FightingDojoText_5ce8e:
|
|
text_far _FightingDojoText_5ce8e
|
|
text_end
|
|
|
|
FightingDojoText_5ce93:
|
|
text_far _FightingDojoText_5ce93
|
|
text_end
|
|
|
|
FightingDojoText8:
|
|
text_far _FightingDojoText_5ce98
|
|
text_end
|
|
|
|
FightingDojoText_5ce9d:
|
|
text_far _FightingDojoText_5ce9d
|
|
text_end
|
|
|
|
FightingDojoText2:
|
|
text_asm
|
|
ld hl, FightingDojoTrainerHeader0
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
FightingDojoBattleText1:
|
|
text_far _FightingDojoBattleText1
|
|
text_end
|
|
|
|
FightingDojoEndBattleText1:
|
|
text_far _FightingDojoEndBattleText1
|
|
text_end
|
|
|
|
FightingDojoAfterBattleText1:
|
|
text_far _FightingDojoAfterBattleText1
|
|
text_end
|
|
|
|
FightingDojoText3:
|
|
text_asm
|
|
ld hl, FightingDojoTrainerHeader1
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
FightingDojoBattleText2:
|
|
text_far _FightingDojoBattleText2
|
|
text_end
|
|
|
|
FightingDojoEndBattleText2:
|
|
text_far _FightingDojoEndBattleText2
|
|
text_end
|
|
|
|
FightingDojoAfterBattleText2:
|
|
text_far _FightingDojoAfterBattleText2
|
|
text_end
|
|
|
|
FightingDojoText4:
|
|
text_asm
|
|
ld hl, FightingDojoTrainerHeader2
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
FightingDojoBattleText3:
|
|
text_far _FightingDojoBattleText3
|
|
text_end
|
|
|
|
FightingDojoEndBattleText3:
|
|
text_far _FightingDojoEndBattleText3
|
|
text_end
|
|
|
|
FightingDojoAfterBattleText3:
|
|
text_far _FightingDojoAfterBattleText3
|
|
text_end
|
|
|
|
FightingDojoText5:
|
|
text_asm
|
|
ld hl, FightingDojoTrainerHeader3
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
FightingDojoBattleText4:
|
|
text_far _FightingDojoBattleText4
|
|
text_end
|
|
|
|
FightingDojoEndBattleText4:
|
|
text_far _FightingDojoEndBattleText4
|
|
text_end
|
|
|
|
FightingDojoAfterBattleText4:
|
|
text_far _FightingDojoAfterBattleText4
|
|
text_end
|
|
|
|
; So get this, the game had an EVENT_GOT_HITMONCHAN and EVENT_GOT_HITMONLEE here.
|
|
; However, in the way it was being used...
|
|
; You can just make it EVENT_GOT_HITMON and be outright better off.
|
|
; So when implementing the new stuff, I made this optimisation.
|
|
; Oh, and because of the new Dojo structure, I had to rework the EVENT_DEFEATED_FIGHTING_DOJO system, to ensure people don't grab their prizes early.
|
|
|
|
FightingDojoText6:
|
|
; Hitmonlee Poké Ball
|
|
text_asm
|
|
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
|
|
jr z, .Oi
|
|
CheckEvent EVENT_GOT_HITMON
|
|
jr z, .GetMon
|
|
ld hl, OtherHitmonText
|
|
call PrintText
|
|
jr .done
|
|
.GetMon
|
|
ld a, HITMONLEE
|
|
call DisplayPokedex
|
|
ld hl, WantHitmonleeText
|
|
call PrintText
|
|
call YesNoChoice
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jr nz, .done
|
|
ld a, [wcf91]
|
|
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
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
SetEvents EVENT_GOT_HITMON
|
|
jr .done
|
|
.Oi
|
|
ld hl, OiMateText
|
|
call PrintText
|
|
;fallthrough
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
WantHitmonleeText:
|
|
text_far _WantHitmonleeText
|
|
text_end
|
|
|
|
FightingDojoText7:
|
|
; Hitmonchan Poké Ball
|
|
text_asm
|
|
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
|
|
jr z, .Oi
|
|
CheckEvent EVENT_GOT_HITMON
|
|
jr z, .GetMon
|
|
ld hl, OtherHitmonText
|
|
call PrintText
|
|
jr .done
|
|
.GetMon
|
|
ld a, HITMONCHAN
|
|
call DisplayPokedex
|
|
ld hl, WantHitmonchanText
|
|
call PrintText
|
|
call YesNoChoice
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jr nz, .done
|
|
ld a, [wcf91]
|
|
ld b, a
|
|
ld c, 30
|
|
call GivePokemon
|
|
jr nc, .done
|
|
SetEvent EVENT_GOT_HITMON
|
|
|
|
; once Poké Ball is taken, hide sprite
|
|
ld a, HS_FIGHTING_DOJO_GIFT_2
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
jr .done
|
|
.Oi
|
|
ld hl, OiMateText
|
|
call PrintText
|
|
;fallthrough
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
FightingDojoTextHitmontop:
|
|
; Hitmontop Poké Ball
|
|
text_asm
|
|
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
|
|
jr z, .Oi
|
|
CheckEvent EVENT_GOT_HITMON
|
|
jr z, .GetMon
|
|
ld hl, OtherHitmonText
|
|
call PrintText
|
|
jr .done
|
|
.GetMon
|
|
ld a, HITMONTOP
|
|
call DisplayPokedex
|
|
ld hl, WantHitmontopText
|
|
call PrintText
|
|
call YesNoChoice
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jr nz, .done
|
|
ld a, [wcf91]
|
|
ld b, a
|
|
ld c, 30
|
|
call GivePokemon
|
|
jr nc, .done
|
|
SetEvent EVENT_GOT_HITMON
|
|
|
|
; once Poké Ball is taken, hide sprite
|
|
ld a, HS_FIGHTING_DOJO_GIFT_3
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
jr .done
|
|
.Oi
|
|
ld hl, OiMateText
|
|
call PrintText
|
|
;fallthrough
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
WantHitmonchanText:
|
|
text_far _WantHitmonchanText
|
|
text_end
|
|
|
|
WantHitmontopText:
|
|
text_far _WantHitmontopText
|
|
text_end
|
|
|
|
OtherHitmonText:
|
|
text_far _GreedyBastardText
|
|
text_end
|
|
|
|
OiMateText:
|
|
text_far _OiMateText
|
|
text_end
|
|
|
|
KoichiRematchPreBattleText:
|
|
text_far _KoichiRematchPreBattleText
|
|
text_end
|
|
|
|
KoichiRematchDefeatedText:
|
|
text_far _KoichiRematchDefeatedText
|
|
text_end
|