mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00

This adds gym scaling for every leader, plus Koichi of the Fighting Dojo. Me and Ema decided to give Koichi scaling, as he is a gym leader in everything but class. I will likely give Yujirou the same treatment once he's all set up. The parties have not been set up, assuming Martha is working on them. An important note: space is somewhat limited on trainers now, so the leaders will need implementing incrementally. You will most likely have to remove unnecessary trainers to make this work.
266 lines
5.6 KiB
NASM
266 lines
5.6 KiB
NASM
VermilionGym_Script:
|
|
ld hl, wCurrentMapScriptFlags
|
|
bit 5, [hl]
|
|
res 5, [hl]
|
|
push hl
|
|
call nz, .LoadNames
|
|
pop hl
|
|
bit 6, [hl]
|
|
res 6, [hl]
|
|
call nz, VermilionGymSetDoorTile
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, VermilionGymTrainerHeaders
|
|
ld de, VermilionGym_ScriptPointers
|
|
ld a, [wVermilionGymCurScript]
|
|
call ExecuteCurMapScriptInTable
|
|
ld [wVermilionGymCurScript], a
|
|
ret
|
|
|
|
.LoadNames:
|
|
ld hl, .CityName
|
|
ld de, .LeaderName
|
|
jp LoadGymLeaderAndCityName
|
|
|
|
.CityName:
|
|
db "VERMILION CITY@"
|
|
|
|
.LeaderName:
|
|
db "LT.SURGE@"
|
|
|
|
VermilionGymSetDoorTile:
|
|
CheckEvent EVENT_2ND_LOCK_OPENED
|
|
jr nz, .doorsOpen
|
|
ld a, $24 ; double door tile ID
|
|
jr .replaceTile
|
|
.doorsOpen
|
|
ld a, SFX_GO_INSIDE
|
|
call PlaySound
|
|
ld a, $5 ; clear floor tile ID
|
|
.replaceTile
|
|
ld [wNewTileBlockID], a
|
|
lb bc, 2, 2
|
|
predef_jump ReplaceTileBlock
|
|
|
|
VermilionGymResetScripts:
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wVermilionGymCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
VermilionGym_ScriptPointers:
|
|
dw CheckFightingMapTrainers
|
|
dw DisplayEnemyTrainerTextAndStartBattle
|
|
dw EndTrainerBattle
|
|
dw VermilionGymLTSurgePostBattle
|
|
|
|
VermilionGymLTSurgePostBattle:
|
|
ld a, [wIsInBattle]
|
|
cp $ff ; did we lose?
|
|
jp z, VermilionGymResetScripts
|
|
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
|
|
ld [wJoyIgnore], a
|
|
|
|
VermilionGymReceiveTM24:
|
|
ld a, $6
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_BEAT_LT_SURGE
|
|
lb bc, TM_THUNDERBOLT, 1
|
|
call GiveItem
|
|
jr nc, .BagFull
|
|
ld a, $7
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_GOT_TM24
|
|
jr .gymVictory
|
|
.BagFull
|
|
ld a, $8
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
.gymVictory
|
|
ld hl, wObtainedBadges
|
|
set BIT_THUNDERBADGE, [hl]
|
|
ld hl, wBeatGymFlags
|
|
set BIT_THUNDERBADGE, [hl]
|
|
|
|
; deactivate gym trainers
|
|
SetEventRange EVENT_BEAT_VERMILION_GYM_TRAINER_0, EVENT_BEAT_VERMILION_GYM_TRAINER_2
|
|
|
|
jp VermilionGymResetScripts
|
|
|
|
VermilionGym_TextPointers:
|
|
dw LTSurgeText
|
|
dw VermilionGymTrainerText1
|
|
dw VermilionGymTrainerText2
|
|
dw VermilionGymTrainerText3
|
|
dw VermilionGymGuideText
|
|
dw LTSurgeThunderBadgeInfoText
|
|
dw ReceivedTM24Text
|
|
dw TM24NoRoomText
|
|
|
|
VermilionGymTrainerHeaders:
|
|
def_trainers 2
|
|
VermilionGymTrainerHeader0:
|
|
trainer EVENT_BEAT_VERMILION_GYM_TRAINER_0, 3, VermilionGymBattleText1, VermilionGymEndBattleText1, VermilionGymAfterBattleText1
|
|
VermilionGymTrainerHeader1:
|
|
trainer EVENT_BEAT_VERMILION_GYM_TRAINER_1, 2, VermilionGymBattleText2, VermilionGymEndBattleText2, VermilionGymAfterBattleText2
|
|
VermilionGymTrainerHeader2:
|
|
trainer EVENT_BEAT_VERMILION_GYM_TRAINER_2, 3, VermilionGymBattleText3, VermilionGymEndBattleText3, VermilionGymAfterBattleText3
|
|
db -1 ; end
|
|
|
|
LTSurgeText:
|
|
text_asm
|
|
CheckEvent EVENT_BEAT_LT_SURGE
|
|
jr z, .beforeBeat
|
|
CheckEventReuseA EVENT_GOT_TM24
|
|
jr nz, .afterBeat
|
|
call z, VermilionGymReceiveTM24
|
|
call DisableWaitingAfterTextDisplay
|
|
jr .done
|
|
.afterBeat
|
|
ld hl, LTSurgePostBattleAdviceText
|
|
call PrintText
|
|
jr .done
|
|
.beforeBeat
|
|
ld hl, LTSurgePreBattleText
|
|
call PrintText
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, ReceivedThunderBadgeText
|
|
ld de, ReceivedThunderBadgeText
|
|
call SaveEndBattleTextPointers
|
|
ldh a, [hSpriteIndex]
|
|
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_LT_SURGE
|
|
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 [wGymLeaderNo], a
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
ld a, $3 ; set script index to LT Surge post-battle script
|
|
ld [wVermilionGymCurScript], a
|
|
ld [wCurMapScript], a
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
LTSurgePreBattleText:
|
|
text_far _LTSurgePreBattleText
|
|
text_end
|
|
|
|
LTSurgePostBattleAdviceText:
|
|
text_far _LTSurgePostBattleAdviceText
|
|
text_end
|
|
|
|
LTSurgeThunderBadgeInfoText:
|
|
text_far _LTSurgeThunderBadgeInfoText
|
|
text_end
|
|
|
|
ReceivedTM24Text:
|
|
text_far _ReceivedTM24Text
|
|
sound_get_key_item
|
|
text_far _TM24ExplanationText
|
|
text_end
|
|
|
|
TM24NoRoomText:
|
|
text_far _TM24NoRoomText
|
|
text_end
|
|
|
|
ReceivedThunderBadgeText:
|
|
text_far _ReceivedThunderBadgeText
|
|
text_end
|
|
|
|
VermilionGymTrainerText1:
|
|
text_asm
|
|
ld hl, VermilionGymTrainerHeader0
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
VermilionGymBattleText1:
|
|
text_far _VermilionGymBattleText1
|
|
text_end
|
|
|
|
VermilionGymEndBattleText1:
|
|
text_far _VermilionGymEndBattleText1
|
|
text_end
|
|
|
|
VermilionGymAfterBattleText1:
|
|
text_far _VermilionGymAfterBattleText1
|
|
text_end
|
|
|
|
VermilionGymTrainerText2:
|
|
text_asm
|
|
ld hl, VermilionGymTrainerHeader1
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
VermilionGymBattleText2:
|
|
text_far _VermilionGymBattleText2
|
|
text_end
|
|
|
|
VermilionGymEndBattleText2:
|
|
text_far _VermilionGymEndBattleText2
|
|
text_end
|
|
|
|
VermilionGymAfterBattleText2:
|
|
text_far _VermilionGymAfterBattleText2
|
|
text_end
|
|
|
|
VermilionGymTrainerText3:
|
|
text_asm
|
|
ld hl, VermilionGymTrainerHeader2
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
VermilionGymBattleText3:
|
|
text_far _VermilionGymBattleText3
|
|
text_end
|
|
|
|
VermilionGymEndBattleText3:
|
|
text_far _VermilionGymEndBattleText3
|
|
text_end
|
|
|
|
VermilionGymAfterBattleText3:
|
|
text_far _VermilionGymAfterBattleText3
|
|
text_end
|
|
|
|
VermilionGymGuideText:
|
|
text_asm
|
|
ld a, [wBeatGymFlags]
|
|
bit BIT_THUNDERBADGE, a
|
|
jr nz, .afterBeat
|
|
ld hl, VermilionGymGuidePreBattleText
|
|
call PrintText
|
|
jr .done
|
|
.afterBeat
|
|
ld hl, VermilionGymGuidePostBattleText
|
|
call PrintText
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
VermilionGymGuidePreBattleText:
|
|
text_far _VermilionGymGuidePreBattleText
|
|
text_end
|
|
|
|
VermilionGymGuidePostBattleText:
|
|
text_far _VermilionGymGuidePostBattleText
|
|
text_end
|