diff options
Diffstat (limited to 'de/scripts/vermiliongym.asm')
-rwxr-xr-x | de/scripts/vermiliongym.asm | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/de/scripts/vermiliongym.asm b/de/scripts/vermiliongym.asm new file mode 100755 index 00000000..350372f9 --- /dev/null +++ b/de/scripts/vermiliongym.asm @@ -0,0 +1,267 @@ +VermilionGymScript: + ld hl, wCurrentMapScriptFlags + bit 5, [hl] + res 5, [hl] + push hl + call nz, VermilionGymScript_5ca4c + pop hl + bit 6, [hl] + res 6, [hl] + call nz, VermilionGymScript_5ca6d + call EnableAutoTextBoxDrawing + ld hl, VermilionGymTrainerHeader0 + ld de, VermilionGymScriptPointers + ld a, [wVermilionGymCurScript] + call ExecuteCurMapScriptInTable + ld [wVermilionGymCurScript], a + ret + +VermilionGymScript_5ca4c: + ld hl, Gym3CityName + ld de, Gym3LeaderName + jp LoadGymLeaderAndCityName + +Gym3CityName: + db "ORANIA CITY@" + +Gym3LeaderName: + db "MAJOR BOB@" + +VermilionGymScript_5ca6d: + CheckEvent EVENT_2ND_LOCK_OPENED + jr nz, .asm_5ca78 + ld a, $24 + jr .asm_5ca7f +.asm_5ca78 + ld a, SFX_GO_INSIDE + call PlaySound + ld a, $5 +.asm_5ca7f + ld [wNewTileBlockID], a + lb bc, 2, 2 + predef_jump ReplaceTileBlock + +VermilionGymScript_5ca8a: + xor a + ld [wJoyIgnore], a + ld [wVermilionGymCurScript], a + ld [wCurMapScript], a + ret + +VermilionGymScriptPointers: + dw CheckFightingMapTrainers + dw DisplayEnemyTrainerTextAndStartBattle + dw EndTrainerBattle + dw VermilionGymScript3 + +VermilionGymScript3: + ld a, [wIsInBattle] + cp $ff + jp z, VermilionGymScript_5ca8a + ld a, $f0 + ld [wJoyIgnore], a + +VermilionGymScript_5caaa: + ld a, $6 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + SetEvent EVENT_BEAT_LT_SURGE + lb bc, TM_24, 1 + call GiveItem + jr nc, .BagFull + ld a, $7 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + SetEvent EVENT_GOT_TM24 + jr .asm_5cad3 +.BagFull + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID +.asm_5cad3 + ld hl, wObtainedBadges + set 2, [hl] + ld hl, wBeatGymFlags + set 2, [hl] + + ; deactivate gym trainers + SetEventRange EVENT_BEAT_VERMILION_GYM_TRAINER_0, EVENT_BEAT_VERMILION_GYM_TRAINER_2 + + jp VermilionGymScript_5ca8a + +VermilionGymTextPointers: + dw VermilionGymText1 + dw VermilionGymText2 + dw VermilionGymText3 + dw VermilionGymText4 + dw VermilionGymText5 + dw VermilionGymText6 + dw VermilionGymText7 + dw VermilionGymText8 + +VermilionGymTrainerHeader0: + dbEventFlagBit EVENT_BEAT_VERMILION_GYM_TRAINER_0 + db ($3 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_VERMILION_GYM_TRAINER_0 + dw VermilionGymBattleText1 ; TextBeforeBattle + dw VermilionGymAfterBattleText1 ; TextAfterBattle + dw VermilionGymEndBattleText1 ; TextEndBattle + dw VermilionGymEndBattleText1 ; TextEndBattle + +VermilionGymTrainerHeader1: + dbEventFlagBit EVENT_BEAT_VERMILION_GYM_TRAINER_1 + db ($2 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_VERMILION_GYM_TRAINER_1 + dw VermilionGymBattleText2 ; TextBeforeBattle + dw VermilionGymAfterBattleText2 ; TextAfterBattle + dw VermilionGymEndBattleText2 ; TextEndBattle + dw VermilionGymEndBattleText2 ; TextEndBattle + +VermilionGymTrainerHeader2: + dbEventFlagBit EVENT_BEAT_VERMILION_GYM_TRAINER_2 + db ($3 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_VERMILION_GYM_TRAINER_2 + dw VermilionGymBattleText3 ; TextBeforeBattle + dw VermilionGymAfterBattleText3 ; TextAfterBattle + dw VermilionGymEndBattleText3 ; TextEndBattle + dw VermilionGymEndBattleText3 ; TextEndBattle + + db $ff + +VermilionGymText1: + TX_ASM + CheckEvent EVENT_BEAT_LT_SURGE + jr z, .asm_5cb39 + CheckEventReuseA EVENT_GOT_TM24 + jr nz, .asm_5cb31 + call z, VermilionGymScript_5caaa + call DisableWaitingAfterTextDisplay + jr .asm_5cb6a +.asm_5cb31 + ld hl, VermilionGymText_5cb72 + call PrintText + jr .asm_5cb6a +.asm_5cb39 + ld hl, VermilionGymText_5cb6d + call PrintText + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, ReceivedThunderbadgeText + ld de, ReceivedThunderbadgeText + call SaveEndBattleTextPointers + ld a, [H_SPRITEINDEX] + ld [wSpriteIndex], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $3 + ld [wGymLeaderNo], a + xor a + ld [hJoyHeld], a + ld a, $3 + ld [wVermilionGymCurScript], a + ld [wCurMapScript], a +.asm_5cb6a + jp TextScriptEnd + +VermilionGymText_5cb6d: + TX_FAR _VermilionGymText_5cb6d + db "@" + +VermilionGymText_5cb72: + TX_FAR _VermilionGymText_5cb72 + db "@" + +VermilionGymText6: + TX_FAR _VermilionGymText_5cb77 + db "@" + +VermilionGymText7: + TX_FAR _ReceivedTM24Text + TX_SFX_KEY_ITEM + TX_FAR _TM24ExplanationText + db "@" + +VermilionGymText8: + TX_FAR _TM24NoRoomText + db "@" + +ReceivedThunderbadgeText: + TX_FAR _ReceivedThunderbadgeText + db "@" + +VermilionGymText2: + TX_ASM + ld hl, VermilionGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +VermilionGymBattleText1: + TX_FAR _VermilionGymBattleText1 + db "@" + +VermilionGymEndBattleText1: + TX_FAR _VermilionGymEndBattleText1 + db "@" + +VermilionGymAfterBattleText1: + TX_FAR _VermilionGymAfterBattleText1 + db "@" + +VermilionGymText3: + TX_ASM + ld hl, VermilionGymTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +VermilionGymBattleText2: + TX_FAR _VermilionGymBattleText2 + db "@" + +VermilionGymEndBattleText2: + TX_FAR _VermilionGymEndBattleText2 + db "@" + +VermilionGymAfterBattleText2: + TX_FAR _VermilionGymAfterBattleText2 + db "@" + +VermilionGymText4: + TX_ASM + ld hl, VermilionGymTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +VermilionGymBattleText3: + TX_FAR _VermilionGymBattleText3 + db "@" + +VermilionGymEndBattleText3: + TX_FAR _VermilionGymEndBattleText3 + db "@" + +VermilionGymAfterBattleText3: + TX_FAR _VermilionGymAfterBattleText3 + db "@" + +VermilionGymText5: + TX_ASM + ld a, [wBeatGymFlags] + bit 2, a + jr nz, .asm_5cbeb + ld hl, VermilionGymText_5cbf4 + call PrintText + jr .asm_5cbf1 +.asm_5cbeb + ld hl, VermilionGymText_5cbf9 + call PrintText +.asm_5cbf1 + jp TextScriptEnd + +VermilionGymText_5cbf4: + TX_FAR _VermilionGymText_5cbf4 + db "@" + +VermilionGymText_5cbf9: + TX_FAR _VermilionGymText_5cbf9 + db "@" |