138 lines
3.2 KiB
NASM
138 lines
3.2 KiB
NASM
;================================================================
|
|
; Contributor: Myramong
|
|
;================================================================
|
|
Sprite_ShowMessageFromPlayerContact_Edit:
|
|
{
|
|
STZ $1CE8
|
|
JSL.l Sprite_CheckDamageToPlayerSameLayerLong : BCC .dont_show
|
|
|
|
LDA $4D : CMP.b #$02 : BEQ .dont_show
|
|
|
|
JSL.l Sprite_DirectionToFacePlayer : TYA : EOR.b #$03
|
|
SEC
|
|
RTL
|
|
.dont_show
|
|
LDA $0DE0, X
|
|
CLC
|
|
RTL
|
|
}
|
|
;================================================================
|
|
Sprite_ShowSolicitedMessageIfPlayerFacing_Edit:
|
|
{
|
|
JSL.l Sprite_CheckDamageToPlayerSameLayerLong : BCC .alpha
|
|
JSL.l Sprite_CheckIfPlayerPreoccupied : BCS .alpha
|
|
LDA $F6 : BPL .alpha
|
|
LDA $0F10, X : BNE .alpha
|
|
|
|
LDA $4D : CMP.b #$02 : BEQ .alpha
|
|
|
|
STZ $1CE8 ; set text choice to 1st option (usually yes/confirm/etc)
|
|
JSL.l Sprite_DirectionToFacePlayer : PHX : TYX
|
|
|
|
; Make sure that the sprite is facing towards the player, otherwise
|
|
; talking can't happen. (What sprites actually use this???)
|
|
LDA $05E1A3, X : PLX : CMP $2F : BNE .not_facing_each_other
|
|
PHY
|
|
LDA.b #$40 : STA $0F10, X
|
|
PLA : EOR.b #$03
|
|
SEC
|
|
RTL
|
|
.not_facing_each_other
|
|
.alpha
|
|
LDA $0DE0, X
|
|
CLC
|
|
RTL
|
|
}
|
|
;================================================================
|
|
OldMountainMan_TransitionFromTagalong_Edit:
|
|
{
|
|
PHA
|
|
|
|
LDA.b #$AD : JSL Sprite_SpawnDynamically
|
|
|
|
PLA : PHX : TAX
|
|
|
|
LDA $1A64, X : AND.b #$03 : STA $0EB0, Y
|
|
STA $0DE0, Y
|
|
|
|
LDA $1A00, X : CLC : ADC.b #$02 : STA $0D00, Y
|
|
LDA $1A14, X : ADC.b #$00 : STA $0D20, Y
|
|
|
|
LDA $1A28, X : CLC : ADC.b #$02 : STA $0D10, Y
|
|
LDA $1A3C, X : ADC.b #$00 : STA $0D30, Y
|
|
|
|
LDA $EE : STA $0F20, Y
|
|
|
|
LDA.b #$01 : STA $0BA0, Y
|
|
STA $0E80, Y
|
|
|
|
LDA.b #$01 : STA $02E4 ; OldMountainMan_FreezePlayer
|
|
STA $037B ; ^
|
|
|
|
PLX
|
|
|
|
LDA.b #$00 : STA $7EF3CC
|
|
|
|
STZ $5E
|
|
|
|
JML $09A6B6 ; <- 4A6B6 tagalong.asm:1194 (SEP #$30 : RTS)
|
|
}
|
|
;================================================================
|
|
Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
|
{
|
|
STA $1CF0
|
|
STY $1CF1
|
|
|
|
JSL Sprite_CheckDamageToPlayerSameLayerLong : BCC .alpha
|
|
JSL Sprite_CheckIfPlayerPreoccupied : BCS .alpha
|
|
|
|
LDA $F6 : BPL .alpha
|
|
LDA $0F10, X : BNE .alpha
|
|
LDA $4D : CMP.b #$02 : BEQ .alpha
|
|
|
|
JSL Sprite_DirectionToFacePlayer : PHX : TYX
|
|
|
|
; Make sure that the sprite is facing towards the player, otherwise
|
|
; talking can't happen. (What sprites actually use this???)
|
|
LDA $05E1A3, X : PLX : CMP $2F : BNE .not_facing_each_other
|
|
|
|
PHY
|
|
|
|
LDA $1CF0
|
|
LDY $1CF1
|
|
|
|
; Check what room we're in so we know which npc we're talking to
|
|
LDA.b $A0 : CMP #$03 : BEQ .AlcoholicDialog
|
|
CMP #$05 : BEQ .SahasrahlaDialogs
|
|
CMP #$1C : BEQ .BombShopGuyDialog
|
|
BRA .SayNothing
|
|
|
|
.AlcoholicDialog
|
|
JSL DialogAlcoholic : BRA .SayNothing
|
|
|
|
.SahasrahlaDialogs
|
|
JSL DialogSahasrahla : BRA .SayNothing
|
|
|
|
.BombShopGuyDialog
|
|
JSL DialogBombShopGuy
|
|
|
|
.SayNothing
|
|
|
|
LDA.b #$40 : STA $0F10, X
|
|
|
|
PLA : EOR.b #$03
|
|
|
|
SEC
|
|
|
|
RTL
|
|
|
|
.not_facing_each_other
|
|
.alpha
|
|
|
|
LDA $0DE0, X
|
|
|
|
CLC
|
|
|
|
RTL
|
|
}
|
|
;================================================================ |