kep-hack/scripts/PewterGym.asm
Martha Schilling 7742104bbb Bug Fixes and stuff!
(kinda just clearing my commits list while I'm working on 1.3 still.)

- Lance's Room is no longer listed as a dungeon map

- Changed the layout of Cinnabar Volcano YET AGAIN, making it a little more visually appealing. If you get softlocked here, I will just sigh disapprovingly.

- Various moveset fixes:
     - Arcanine-H gets EQ and Fissure now
     - Raichu-A loses Counter
     - Raticate-A gets TBolt and Thunder
     - Swapped Bullet Punch and Iron Head around in Scizor's learnset
     - Umbreon gets Psychic
     - WigWug both now get Ice Beam and Blizzard
     - Seel and Dewgong get Water Gun by level up
     - Swapped inconsistent moveset levels for Omanyte and Omastar
     - Eevee gets Quick Attack earlier

- Fixed a typo in Slowbro-G's dex entry

- Changed the Tauros Combat Breed trader's text to remove a moveset inaccuracy

- Changed Misty's AI to now use X Specials instead of Potions

- Gave Chief's teams a slightly updated moveset

- Fixed an issue where Steel just...didn't resist Rock? How did I miss this?????

- Made Sandshrew more common in Mt Moon B2F

- Changed the Marowaks on Silph Gauntlet 4F to Guardias

- Fixed issues where receiving a Gym badge wouldn't play the correct sound in most situations

- Increased the level of the Salesman's Cubone gift from 17 to 23

- Decreased the levels of the Fossil gifts from 44 to 35

- More text fixes

-
2024-01-26 23:20:54 +00:00

275 lines
5.7 KiB
NASM

PewterGym_Script:
ld hl, wCurrentMapScriptFlags
bit 6, [hl]
res 6, [hl]
call nz, .LoadNames
call EnableAutoTextBoxDrawing
ld hl, PewterGymTrainerHeaders
ld de, PewterGym_ScriptPointers
ld a, [wPewterGymCurScript]
call ExecuteCurMapScriptInTable
ld [wPewterGymCurScript], a
ret
.LoadNames:
ld hl, .CityName
ld de, .LeaderName
jp LoadGymLeaderAndCityName
.CityName:
db "PEWTER CITY@"
.LeaderName:
db "BROCK@"
PewterGymResetScripts:
xor a
ld [wJoyIgnore], a
ld [wPewterGymCurScript], a
ld [wCurMapScript], a
ret
PewterGym_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw PewterGymBrockPostBattle
PewterGymBrockPostBattle:
ld a, [wIsInBattle]
cp $ff
jp z, PewterGymResetScripts
ld a, $f0
ld [wJoyIgnore], a
; fallthrough
PewterGymScriptReceiveTM34:
ld a, $4
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_BEAT_BROCK
lb bc, TM_BIDE, 1
call GiveItem
jr nc, .BagFull
ld a, $5
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_GOT_TM34
jr .gymVictory
.BagFull
ld a, $6
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
.gymVictory
ld hl, wObtainedBadges
set BIT_BOULDERBADGE, [hl]
ld hl, wBeatGymFlags
set BIT_BOULDERBADGE, [hl]
ld a, HS_GYM_GUY
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_ROUTE_22_RIVAL_1
ld [wMissableObjectIndex], a
predef HideObject
ResetEvents EVENT_1ST_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
; deactivate gym trainers
SetEvent EVENT_BEAT_PEWTER_GYM_TRAINER_0
jp PewterGymResetScripts
PewterGym_TextPointers:
dw BrockText
dw PewterGymTrainerText1
dw PewterGymGuideText
dw BeforeReceivedTM34Text
dw ReceivedTM34Text
dw TM34NoRoomText
PewterGymTrainerHeaders:
def_trainers 2
PewterGymTrainerHeader0:
trainer EVENT_BEAT_PEWTER_GYM_TRAINER_0, 5, PewterGymBattleText1, PewterGymEndBattleText1, PewterGymAfterBattleText1
db -1 ; end
BrockText:
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
jr nz, .rematchMode
CheckEvent EVENT_BEAT_BROCK
jr z, .beforeBeat
CheckEventReuseA EVENT_GOT_TM34
jr nz, .afterBeat
call z, PewterGymScriptReceiveTM34
call DisableWaitingAfterTextDisplay
jp .done ; needed due to the rematch script length.
.rematchMode ; Rematch functionality. Just loads pre-battle text and his trainer.
ld hl, BrockRematchPreBattleText
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, BrockRematchDefeatedText
ld de, BrockRematchDefeatedText
call SaveEndBattleTextPointers
call EngageMapTrainer
ld a, OPP_BROCK
ld [wCurOpponent], a
ld a, 9
ld [wTrainerNo], a
ld a, 1
ld [wIsTrainerBattle], a
ld a, $1
ld [wGymLeaderNo], a
jr .done
.afterBeat
ld hl, BrockPostBattleAdviceText
call PrintText
jr .done
.beforeBeat
ld hl, BrockPreBattleText
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ld hl, ReceivedBoulderBadgeText
ld de, ReceivedBoulderBadgeText
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_BROCK
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, $1
ld [wGymLeaderNo], a
xor a
ldh [hJoyHeld], a
ld a, $3
ld [wPewterGymCurScript], a
ld [wCurMapScript], a
.done
jp TextScriptEnd
BrockPreBattleText:
text_far _BrockPreBattleText
text_end
BrockPostBattleAdviceText:
text_far _BrockPostBattleAdviceText
text_end
BeforeReceivedTM34Text:
text_far _BeforeReceivedTM34Text
text_end
ReceivedTM34Text:
text_far _ReceivedTM34Text
sound_get_item_1
text_far _TM34ExplanationText
text_end
TM34NoRoomText:
text_far _TM34NoRoomText
text_end
ReceivedBoulderBadgeText:
text_far _ReceivedBoulderBadgeText
sound_get_key_item
text_far _BrockBoulerBadgeInfoText ; Text to tell that the flash technique can be used
text_end
PewterGymTrainerText1:
text_asm
ld hl, PewterGymTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
PewterGymBattleText1:
text_far _PewterGymBattleText1
text_end
PewterGymEndBattleText1:
text_far _PewterGymEndBattleText1
text_end
PewterGymAfterBattleText1:
text_far _PewterGymAfterBattleText1
text_end
PewterGymGuideText:
text_asm
ld a, [wBeatGymFlags]
bit BIT_BOULDERBADGE, a
jr nz, .afterBeat
ld hl, PewterGymGuidePreAdviceText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jr nz, .PewterGymGuideBeginAdviceText
ld hl, PewterGymGuideBeginAdviceText
call PrintText
jr .PewterGymGuideAdviceText
.PewterGymGuideBeginAdviceText
ld hl, PewterGymText_5c524
call PrintText
.PewterGymGuideAdviceText
ld hl, PewterGymGuideAdviceText
call PrintText
jr .done
.afterBeat
ld hl, PewterGymGuidePostBattleText
call PrintText
.done
jp TextScriptEnd
PewterGymGuidePreAdviceText:
text_far _PewterGymGuidePreAdviceText
text_end
PewterGymGuideBeginAdviceText:
text_far _PewterGymGuideBeginAdviceText
text_end
PewterGymGuideAdviceText:
text_far _PewterGymGuideAdviceText
text_end
PewterGymText_5c524:
text_far _PewterGymText_5c524
text_end
PewterGymGuidePostBattleText:
text_far _PewterGymGuidePostBattleText
text_end
BrockRematchPreBattleText:
text_far _BrockRematchPreBattleText
text_end
BrockRematchDefeatedText:
text_far _BrockRematchDefeatedText
text_end