shithub: pokered

ref: a1ca8aa239837496f98e54c7c246fd9fb9c8a5e3
dir: /scripts/silphco7.asm/

View raw version
SilphCo7Script:
	call SilphCo7Script_51b77
	call EnableAutoTextBoxDrawing
	ld hl, SilphCo7TrainerHeader0
	ld de, SilphCo7ScriptPointers
	ld a, [wSilphCo7CurScript]
	call ExecuteCurMapScriptInTable
	ld [wSilphCo7CurScript], a
	ret

SilphCo7Script_51b77:
	ld hl, wCurrentMapScriptFlags
	bit 5, [hl]
	res 5, [hl]
	ret z
	ld hl, SilphCo7GateCoords
	call SilphCo7Text_51bc8
	call SilphCo7Text_51bf4
	CheckEvent EVENT_SILPH_CO_7_UNLOCKED_DOOR1
	jr nz, .asm_51b9e
	push af
	ld a, $54
	ld [wNewTileBlockID], a
	lb bc, 3, 5
	predef ReplaceTileBlock
	pop af
.asm_51b9e
	CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
	jr nz, .asm_51bb1
	push af
	ld a, $54
	ld [wNewTileBlockID], a
	lb bc, 2, 10
	predef ReplaceTileBlock
	pop af
.asm_51bb1
	CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR2
	ret nz
	ld a, $54
	ld [wNewTileBlockID], a
	lb bc, 6, 10
	predef_jump ReplaceTileBlock

SilphCo7GateCoords:
	db $03,$05
	db $02,$0A
	db $06,$0A
	db $FF

SilphCo7Text_51bc8:
	push hl
	ld hl, wCardKeyDoorY
	ld a, [hli]
	ld b, a
	ld a, [hl]
	ld c, a
	xor a
	ld [$ffe0], a
	pop hl
.asm_51bd4
	ld a, [hli]
	cp $ff
	jr z, .asm_51bf0
	push hl
	ld hl, $ffe0
	inc [hl]
	pop hl
	cp b
	jr z, .asm_51be5
	inc hl
	jr .asm_51bd4
.asm_51be5
	ld a, [hli]
	cp c
	jr nz, .asm_51bd4
	ld hl, wCardKeyDoorY
	xor a
	ld [hli], a
	ld [hl], a
	ret
.asm_51bf0
	xor a
	ld [$ffe0], a
	ret

SilphCo7Text_51bf4:
	EventFlagAddress hl, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
	ld a, [$ffe0]
	and a
	ret z
	cp $1
	jr nz, .next1
	SetEventReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR1
	ret
.next1
	cp $2
	jr nz, .next2
	SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
	ret
.next2
	SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
	ret

SilphCo7Text_51c0c:
	xor a
	ld [wJoyIgnore], a

SilphCo7Text_51c10:
	ld [wSilphCo7CurScript], a
	ld [wCurMapScript], a
	ret

SilphCo7ScriptPointers:
	dw SilphCo7Script0
	dw DisplayEnemyTrainerTextAndStartBattle
	dw EndTrainerBattle
	dw SilphCo7Script3
	dw SilphCo7Script4
	dw SilphCo7Script5

SilphCo7Script0:
	CheckEvent EVENT_BEAT_SILPH_CO_RIVAL
	jp nz, CheckFightingMapTrainers
	ld hl, CoordsData_51c78
	call ArePlayerCoordsInArray
	jp nc, CheckFightingMapTrainers
	xor a
	ld [hJoyHeld], a
	ld a, $f0
	ld [wJoyIgnore], a
	ld a, PLAYER_DIR_DOWN
	ld [wPlayerMovingDirection], a
	ld a, $ff
	ld [wNewSoundID], a
	call PlaySound
	ld c, BANK(Music_MeetRival)
	ld a, MUSIC_MEET_RIVAL
	call PlayMusic
	ld a, $9
	ld [hSpriteIndexOrTextID], a
	call DisplayTextID
	ld a, $9
	ld [H_SPRITEINDEX], a
	call SetSpriteMovementBytesToFF
	ld de, MovementData_51c7d
	ld a, [wCoordIndex]
	ld [wcf0d], a
	cp $1
	jr z, .asm_51c6c
	inc de
.asm_51c6c
	ld a, $9
	ld [H_SPRITEINDEX], a
	call MoveSprite
	ld a, $3
	jp SilphCo7Text_51c10

CoordsData_51c78:
	db $02,$03
	db $03,$03
	db $FF

MovementData_51c7d:
	db NPC_MOVEMENT_UP
	db NPC_MOVEMENT_UP
	db NPC_MOVEMENT_UP
	db NPC_MOVEMENT_UP
	db $FF

SilphCo7Script3:
	ld a, [wd730]
	bit 0, a
	ret nz
	xor a
	ld [wJoyIgnore], a
	ld a, $d
	ld [hSpriteIndexOrTextID], a
	call DisplayTextID
	call Delay3
	ld hl, wd72d
	set 6, [hl]
	set 7, [hl]
	ld hl, SilphCo7Text14
	ld de, SilphCo7Text_51ecd
	call SaveEndBattleTextPointers
	ld a, OPP_SONY2
	ld [wCurOpponent], a
	ld a, [wRivalStarter]
	cp STARTER2
	jr nz, .asm_51cb6
	ld a, $7
	jr .asm_51cc0
.asm_51cb6
	cp STARTER3
	jr nz, .asm_51cbe
	ld a, $8
	jr .asm_51cc0
.asm_51cbe
	ld a, $9
.asm_51cc0
	ld [wTrainerNo], a
	ld a, $4
	jp SilphCo7Text_51c10

SilphCo7Script4:
	ld a, [wIsInBattle]
	cp $ff
	jp z, SilphCo7Text_51c0c
	ld a, $f0
	ld [wJoyIgnore], a
	SetEvent EVENT_BEAT_SILPH_CO_RIVAL
	ld a, PLAYER_DIR_DOWN
	ld [wPlayerMovingDirection], a
	ld a, $9
	ld [H_SPRITEINDEX], a
	ld a, SPRITE_FACING_UP
	ld [hSpriteFacingDirection], a
	call SetSpriteFacingDirectionAndDelay
	ld a, $f
	ld [hSpriteIndexOrTextID], a
	call DisplayTextID
	ld a, $ff
	ld [wNewSoundID], a
	call PlaySound
	callba Music_RivalAlternateStart
	ld de, MovementData_51d1d
	ld a, [wcf0d]
	cp $1
	jr nz, .asm_51d0e
	ld de, MovementData_51d1a
.asm_51d0e
	ld a, $9
	ld [H_SPRITEINDEX], a
	call MoveSprite
	ld a, $5
	jp SilphCo7Text_51c10

MovementData_51d1a:
	db NPC_MOVEMENT_RIGHT
	db NPC_MOVEMENT_RIGHT
	db $FF

MovementData_51d1d:
	db NPC_MOVEMENT_LEFT
	db NPC_MOVEMENT_UP
	db NPC_MOVEMENT_UP
	db NPC_MOVEMENT_RIGHT
	db NPC_MOVEMENT_RIGHT
	db NPC_MOVEMENT_RIGHT
	db NPC_MOVEMENT_DOWN
	db $FF

SilphCo7Script5:
	ld a, [wd730]
	bit 0, a
	ret nz
	ld a, HS_SILPH_CO_7F_RIVAL
	ld [wMissableObjectIndex], a
	predef HideObject
	call PlayDefaultMusic
	xor a
	ld [wJoyIgnore], a
	jp SilphCo7Text_51c10

SilphCo7TextPointers:
	dw SilphCo7Text1
	dw SilphCo7Text2
	dw SilphCo7Text3
	dw SilphCo7Text4
	dw SilphCo7Text5
	dw SilphCo7Text6
	dw SilphCo7Text7
	dw SilphCo7Text8
	dw SilphCo7Text9
	dw PickUpItemText
	dw PickUpItemText
	dw PickUpItemText
	dw SilphCo7Text13
	dw SilphCo7Text14
	dw SilphCo7Text15

SilphCo7TrainerHeader0:
	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_0
	db ($2 << 4) ; trainer's view range
	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_0
	dw SilphCo7BattleText1 ; TextBeforeBattle
	dw SilphCo7AfterBattleText1 ; TextAfterBattle
	dw SilphCo7EndBattleText1 ; TextEndBattle
	dw SilphCo7EndBattleText1 ; TextEndBattle

SilphCo7TrainerHeader1:
	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_1
	db ($3 << 4) ; trainer's view range
	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_1
	dw SilphCo7BattleText2 ; TextBeforeBattle
	dw SilphCo7AfterBattleText2 ; TextAfterBattle
	dw SilphCo7EndBattleText2 ; TextEndBattle
	dw SilphCo7EndBattleText2 ; TextEndBattle

SilphCo7TrainerHeader2:
	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_2
	db ($3 << 4) ; trainer's view range
	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_2
	dw SilphCo7BattleText3 ; TextBeforeBattle
	dw SilphCo7AfterBattleText3 ; TextAfterBattle
	dw SilphCo7EndBattleText3 ; TextEndBattle
	dw SilphCo7EndBattleText3 ; TextEndBattle

SilphCo7TrainerHeader3:
	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_3, 1
	db ($4 << 4) ; trainer's view range
	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_3, 1
	dw SilphCo7BattleText4 ; TextBeforeBattle
	dw SilphCo7AfterBattleText4 ; TextAfterBattle
	dw SilphCo7EndBattleText4 ; TextEndBattle
	dw SilphCo7EndBattleText4 ; TextEndBattle

	db $ff

SilphCo7Text1:
; lapras guy
	TX_ASM
	ld a, [wd72e]
	bit 0, a ; got lapras?
	jr z, .givelapras
	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
	jr nz, .savedsilph
	ld hl, .LaprasGuyText
	call PrintText
	jr .done
.givelapras
	ld hl, .MeetLaprasGuyText
	call PrintText
	lb bc, LAPRAS, 15
	call GivePokemon
	jr nc, .done
	ld a, [wSimulatedJoypadStatesEnd]
	and a
	call z, WaitForTextScrollButtonPress
	call EnableAutoTextBoxDrawing
	ld hl, .HeresYourLaprasText
	call PrintText
	ld hl, wd72e
	set 0, [hl]
	jr .done
.savedsilph
	ld hl, .LaprasGuySavedText
	call PrintText
.done
	jp TextScriptEnd

.MeetLaprasGuyText
	TX_FAR _MeetLaprasGuyText
	db "@"

.HeresYourLaprasText
	TX_FAR _HeresYourLaprasText
	db "@"

.LaprasGuyText
	TX_FAR _LaprasGuyText
	db "@"

.LaprasGuySavedText
	TX_FAR _LaprasGuySavedText
	db "@"

SilphCo7Text2:
	TX_ASM
	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
	jr nz, .savedsilph
	ld hl, .rockettext
	call PrintText
	jr .done
.savedsilph
	ld hl, .savedtext
	call PrintText
.done
	jp TextScriptEnd

.rockettext
	TX_FAR _SilphCo7Text_51e00
	db "@"

.savedtext
	TX_FAR _CanceledMasterBallText
	db "@"

SilphCo7Text3:
	TX_ASM
	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
	jr nz, .savedsilph
	ld hl, .rockettext
	call PrintText
	jr .done
.savedsilph
	ld hl, .savedtext
	call PrintText
.done
	jp TextScriptEnd

.rockettext
	TX_FAR _SilphCo7Text_51e23
	db "@"

.savedtext
	TX_FAR _SilphCo7Text_51e28
	db "@"

SilphCo7Text4:
	TX_ASM
	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
	jr nz, .savedsilph
	ld hl, .rockettext
	call PrintText
	jr .done
.savedsilph
	ld hl, .savedtext
	call PrintText
.done
	jp TextScriptEnd

.rockettext
	TX_FAR _SilphCo7Text_51e46
	db "@"

.savedtext
	TX_FAR _SilphCo7Text_51e4b
	db "@"

SilphCo7Text5:
	TX_ASM
	ld hl, SilphCo7TrainerHeader0
	call TalkToTrainer
	jp TextScriptEnd

SilphCo7BattleText1:
	TX_FAR _SilphCo7BattleText1
	db "@"

SilphCo7EndBattleText1:
	TX_FAR _SilphCo7EndBattleText1
	db "@"

SilphCo7AfterBattleText1:
	TX_FAR _SilphCo7AfterBattleText1
	db "@"

SilphCo7Text6:
	TX_ASM
	ld hl, SilphCo7TrainerHeader1
	call TalkToTrainer
	jp TextScriptEnd

SilphCo7BattleText2:
	TX_FAR _SilphCo7BattleText2
	db "@"

SilphCo7EndBattleText2:
	TX_FAR _SilphCo7EndBattleText2
	db "@"

SilphCo7AfterBattleText2:
	TX_FAR _SilphCo7AfterBattleText2
	db "@"

SilphCo7Text7:
	TX_ASM
	ld hl, SilphCo7TrainerHeader2
	call TalkToTrainer
	jp TextScriptEnd

SilphCo7BattleText3:
	TX_FAR _SilphCo7BattleText3
	db "@"

SilphCo7EndBattleText3:
	TX_FAR _SilphCo7EndBattleText3
	db "@"

SilphCo7AfterBattleText3:
	TX_FAR _SilphCo7AfterBattleText3
	db "@"

SilphCo7Text8:
	TX_ASM
	ld hl, SilphCo7TrainerHeader3
	call TalkToTrainer
	jp TextScriptEnd

SilphCo7BattleText4:
	TX_FAR _SilphCo7BattleText4
	db "@"

SilphCo7EndBattleText4:
	TX_FAR _SilphCo7EndBattleText4
	db "@"

SilphCo7AfterBattleText4:
	TX_FAR _SilphCo7AfterBattleText4
	db "@"

SilphCo7Text9:
	TX_ASM
	ld hl, SilphCo7Text_51ebe
	call PrintText
	jp TextScriptEnd

SilphCo7Text_51ebe:
	TX_FAR _SilphCo7Text_51ebe
	db "@"

SilphCo7Text13:
	TX_FAR _SilphCo7Text_51ec3
	db "@"

SilphCo7Text14:
	TX_FAR _SilphCo7Text_51ec8
	db "@"

SilphCo7Text_51ecd:
	TX_FAR _SilphCo7Text_51ecd
	db "@"

SilphCo7Text15:
	TX_FAR _SilphCo7Text_51ed2
	db "@"