add AntiKirby_Sucking using DragPlayer velocities

This commit is contained in:
scawful
2024-06-28 17:09:24 -04:00
parent ea9aae9d1a
commit 01f9bcb9ce

View File

@@ -90,12 +90,16 @@ Sprite_AntiKirby_Main:
STZ.w SprMiscC, X
+
JSL Sprite_DamageFlash_Long
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
dw AntiKirby_Main
dw AntiKirby_Hurt
dw AntiKirby_Suck
dw AntiKirby_BeginSuck
dw AntiKirby_Sucking
dw AntiKirby_Full
dw AntiKirby_Death
@@ -116,7 +120,6 @@ Sprite_AntiKirby_Main:
%PlayAnimation(0, 2, 10) ; Start
JSL Sprite_DamageFlash_Long
JSL Sprite_CheckDamageFromPlayerLong : BCC .NoDamage
LDA #!RecoilTime : STA SprTimerA, X
%GotoAction(1) ; Hurt
@@ -136,8 +139,6 @@ Sprite_AntiKirby_Main:
{
%PlayAnimation(3, 3, 10) ; Hurt
JSL Sprite_DamageFlash_Long
LDA SprTimerA, X : BNE .NotDone
%GotoAction(0)
.NotDone
@@ -145,11 +146,10 @@ Sprite_AntiKirby_Main:
RTS
}
AntiKirby_Suck:
AntiKirby_BeginSuck:
{
%PlayAnimation(4, 5, 10) ; Suck
LDA.b $0E : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link
LDA.b $0F : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link
INC.w SprAction, X
@@ -169,8 +169,6 @@ Sprite_AntiKirby_Main:
.dont_tongue_link
LDA.w SprTimerA, X : BNE +
STZ.w SprAction, X
+
@@ -178,9 +176,35 @@ Sprite_AntiKirby_Main:
RTS
}
AntiKirby_Sucking:
{
%PlayAnimation(5, 5, 10) ; Sucking
; Get the direction of link relative to the anti kirby
; Invert the direction and store it in A, call DragPlayer
; when Link is close enough
JSL Sprite_DirectionToFacePlayer
LDA.b $0E : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link
LDA.b $0F : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link
LDA.w SprMiscC, X
JSL DragPlayer
.dont_tongue_link
JSL Sprite_DirectionToFacePlayer
LDA.b $0E : CLC : ADC.b #$10 : CMP.b #$10 : BCS .NotDone
LDA.b $0F : CLC : ADC.b #$10 : CMP.b #$10 : BCS .NotDone
INC.w SprAction, X
RTS
.NotDone
LDA.w SprTimerA, X : BNE +
%GotoAction(0)
+
RTS
}
AntiKirby_Full:
{
; %PlayAnimation(6, 6, 10) ; Full
%PlayAnimation(6, 6, 10) ; Full
LDA.w SprTimerA, X : BNE .lickylicky
STZ.w SprAction, X
@@ -193,49 +217,29 @@ Sprite_AntiKirby_Main:
RTS
.lickylicky
LSR A
LSR A
PHA
TAY
LDA.w .anim, Y : STA.w SprGfx, X
TYA
LDY.w SprMiscD, X
PHY
RTS
}
CLC : ADC.w .index_offset_x, Y
TAY
AntiKirby_Death:
{
%PlayAnimation(3, 3, 10) ; Death
LDA.w .pos, Y : STA.w SprFrame, X
LDA.b #$06 : STA.w SprState, X
LDA.b #$0A : STA.w SprTimerA, X
STA.b $04
STZ.b $05
STZ.w SprPrize, X
BPL .positive_x
LDA.b #$09 ; SFX2.1E
JSL $0DBB8A ; SpriteSFX_QueueSFX3WithPan
DEC.b $05
.positive_x
PLY
PLA
CLC : ADC.w .index_offset_y, Y
TAY
LDA.w .pos, Y : STA.w SprMiscE, X
STA.b $06
STZ.b $07
STZ.b $07
BPL .positive_y
DEC.b $07
.positive_y
LDA.w SprMiscG, X : BNE .exit
RTS
}
}
AntiKirby_StealItem:
{
REP #$20
LDA.w $0FD8
@@ -248,16 +252,8 @@ Sprite_AntiKirby_Main:
SEC : SBC.b $20
CLC : ADC.w #$000C : CMP.w #$0020 : BCS .exit
; -----------------------------------------------------
SEP #$20
LDA.w SprTimerA, X : CMP.b #$2E : BCS .exit
; JSL Link_CalculateSFXPan
; ORA.b #$26 ; SFX2.26
; STA.w $012E
JSL GetRandomInt
AND.b #$03
INC A
@@ -302,48 +298,7 @@ Sprite_AntiKirby_Main:
LDA.b #$00
STA.l $7EF35A
RTS
.anim
db $04, $04, $04, $04, $05, $05, $05, $05
db $05, $05, $05, $05, $05, $05, $05, $05
db $05, $05, $05, $05, $04, $04, $04, $04
.pos
db 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0
db 12, 16, 24, 32, 32, 24, 16, 12
db 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0
db -12, -16, -24, -32, -32, -24, -16, -12
db 0, 0, 0, 0, 0, 0, 0, 0
.index_offset_x
db $00, $00, $00, $00, $00, $00, $00, $00
.index_offset_y
db $00, $00, $00, $00, $00, $00, $00, $00
}
AntiKirby_Death:
{
%PlayAnimation(3, 3, 10) ; Death
LDA.b #$06 : STA.w SprState, X
LDA.b #$0A : STA.w SprTimerA, X
STZ.w SprPrize, X
LDA.b #$09 ; SFX2.1E
JSL $0DBB8A ; SpriteSFX_QueueSFX3WithPan
RTS
}
}
; 7-9: Walking with hat