diff options
Diffstat (limited to 'scripts/VermilionCity.asm')
-rwxr-xr-x | scripts/VermilionCity.asm | 286 |
1 files changed, 286 insertions, 0 deletions
diff --git a/scripts/VermilionCity.asm b/scripts/VermilionCity.asm new file mode 100755 index 00000000..a9336970 --- /dev/null +++ b/scripts/VermilionCity.asm @@ -0,0 +1,286 @@ +VermilionCity_Script: + call EnableAutoTextBoxDrawing + ld hl, wd492 + res 7, [hl] + ld hl, wCurrentMapScriptFlags + bit 6, [hl] + res 6, [hl] + push hl + call nz, .initCityScript + pop hl + bit 5, [hl] + res 5, [hl] + call nz, .setFirstLockTrashCanIndex + ld hl, VermilionCity_ScriptPointers + ld a, [wVermilionCityCurScript] + call CallFunctionInTable + call .vermilionCityScript_19869 + ret + +.vermilionCityScript_19869 + CheckEventHL EVENT_152 + ret nz + CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER + ret z + SetEventReuseHL EVENT_152 + ret + +.setFirstLockTrashCanIndex + call Random + ld a, [hRandomAdd] + ld b, a + ld a, [hRandomSub] + adc b + and $e + ld [wFirstLockTrashCanIndex], a + ret + +.initCityScript + CheckEventHL EVENT_SS_ANNE_LEFT + ret z + CheckEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT + SetEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT + ret nz + ld a, $2 + ld [wVermilionCityCurScript], a + ret + +VermilionCity_ScriptPointers: + dw VermilionCityScript0 + dw VermilionCityScript1 + dw VermilionCityScript2 + dw VermilionCityScript3 + dw VermilionCityScript4 + +VermilionCityScript0: + ld a, [wSpritePlayerStateData1FacingDirection] + and a ; cp SPRITE_FACING_DOWN + jr nz, .return + ld hl, SSAnneTicketCheckCoords + call ArePlayerCoordsInArray + jr nc, .return + xor a + ld [hJoyHeld], a + ld [wcf0d], a + ld a, $3 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + CheckEvent EVENT_SS_ANNE_LEFT + jr nz, .shipHasDeparted + ld b, S_S_TICKET + predef GetQuantityOfItemInBag + ld a, b + and a + ret nz +.shipHasDeparted + ld a, D_UP + ld [wSimulatedJoypadStatesEnd], a + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + call StartSimulatingJoypadStates + ld a, $1 + ld [wVermilionCityCurScript], a + ret + +.return + ret + +SSAnneTicketCheckCoords: + db $1e,$12 ; y, x + db $ff + +VermilionCityScript4: + ld hl, SSAnneTicketCheckCoords + call ArePlayerCoordsInArray + ret c + ld a, $0 + ld [wVermilionCityCurScript], a + ret + +VermilionCityScript2: + ld a, $ff + ld [wJoyIgnore], a + ld a, D_UP + ld [wSimulatedJoypadStatesEnd], a + ld [wSimulatedJoypadStatesEnd + 1], a + ld a, 2 + ld [wSimulatedJoypadStatesIndex], a + call StartSimulatingJoypadStates + ld a, $3 + ld [wVermilionCityCurScript], a + ret + +VermilionCityScript3: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + xor a + ld [wJoyIgnore], a + ld [hJoyHeld], a + ld a, $0 + ld [wVermilionCityCurScript], a + ret + +VermilionCityScript1: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + ld c, 10 + call DelayFrames + ld a, $0 + ld [wVermilionCityCurScript], a + ret + +VermilionCity_TextPointers: + dw VermilionCityText1 + dw VermilionCityText2 + dw VermilionCityText3 + dw VermilionCityText4 + dw VermilionCityText5 + dw VermilionCityText6 + dw VermilionCityText7 + dw VermilionCityText8 + dw VermilionCityText9 + dw MartSignText + dw PokeCenterSignText + dw VermilionCityText12 + dw VermilionCityText13 + dw VermilionCityText14 + +VermilionCityText1: + TX_FAR _VermilionCityText1 + db "@" + +VermilionCityText2: + TX_ASM + CheckEvent EVENT_SS_ANNE_LEFT + jr nz, .shipHasDeparted + ld hl, VermilionCityTextDidYouSee + call PrintText + jr .end +.shipHasDeparted + ld hl, VermilionCityTextSSAnneDeparted + call PrintText +.end + jp TextScriptEnd + +VermilionCityTextDidYouSee: + TX_FAR _VermilionCityTextDidYouSee + db "@" + +VermilionCityTextSSAnneDeparted: + TX_FAR _VermilionCityTextSSAnneDeparted + db "@" + +VermilionCityText3: + TX_ASM + CheckEvent EVENT_SS_ANNE_LEFT + jr nz, .shipHasDeparted + ld a, [wSpritePlayerStateData1FacingDirection] + cp SPRITE_FACING_RIGHT + jr z, .greetPlayer + ld hl, .inFrontOfOrBehindGuardCoords + call ArePlayerCoordsInArray + jr nc, .greetPlayerAndCheckTicket +.greetPlayer + ld hl, SSAnneWelcomeText4 + call PrintText + jr .end +.greetPlayerAndCheckTicket + ld hl, SSAnneWelcomeText9 + call PrintText + ld b, S_S_TICKET + predef GetQuantityOfItemInBag + ld a, b + and a + jr nz, .playerHasTicket + ld hl, SSAnneNoTicketText + call PrintText + jr .end +.playerHasTicket + ld hl, SSAnneFlashedTicketText + call PrintText + ld a, $4 + ld [wVermilionCityCurScript], a + jr .end +.shipHasDeparted + ld hl, SSAnneNotHereText + call PrintText +.end + jp TextScriptEnd + +.inFrontOfOrBehindGuardCoords + db $1d,$13 ; y, x of tile in front of guard + db $1f,$13 ; y, x of tile behind guard + db $ff + +SSAnneWelcomeText4: + TX_FAR _SSAnneWelcomeText4 + db "@" + +SSAnneWelcomeText9: + TX_FAR _SSAnneWelcomeText9 + db "@" + +SSAnneFlashedTicketText: + TX_FAR _SSAnneFlashedTicketText + db "@" + +SSAnneNoTicketText: + TX_FAR _SSAnneNoTicketText + db "@" + +SSAnneNotHereText: + TX_FAR _SSAnneNotHereText + db "@" + +VermilionCityText4: + TX_FAR _VermilionCityText4 + db "@" + +VermilionCityText5: + TX_FAR _VermilionCityText5 + TX_ASM + ld a, MACHOP + call PlayCry + call WaitForSoundToFinish + ld hl, VermilionCityText15 + ret + +VermilionCityText15: + TX_FAR _VermilionCityText15 + db "@" + +VermilionCityText6: + TX_FAR _VermilionCityText6 + db "@" + +VermilionCityText8: + TX_ASM + callba Func_f1a8a + jp TextScriptEnd + +VermilionCityText9: + TX_ASM + callba Func_f1a96 + jp TextScriptEnd + +VermilionCityText12: + TX_ASM + callba Func_f1aa2 + jp TextScriptEnd + +VermilionCityText13: + TX_ASM + callba Func_f1aae + jp TextScriptEnd + +VermilionCityText14: + TX_ASM + callba Func_f1aba + jp TextScriptEnd + +VermilionCityText7: + TX_ASM + callba Func_f1a0f + jp TextScriptEnd |