fix deku scrub enemy pea shot collision

This commit is contained in:
scawful
2024-06-21 09:59:02 -04:00
parent d24b4cd17d
commit 0005130520
2 changed files with 279 additions and 272 deletions

View File

@@ -51,7 +51,7 @@ Sprite_DekuScrubEnemy_Prep:
LDA SprSubtype, X : CMP #$01 : BNE .normal_scrub LDA SprSubtype, X : CMP #$01 : BNE .normal_scrub
LDA.b #$06 : STA SprAction, X ; Pea Shot State LDA.b #$06 : STA SprAction, X ; Pea Shot State
LDA.b #$A0 : STA.b SprPrize, X LDA.b #$20 : STA.b SprPrize, X
.normal_scrub .normal_scrub
PLB PLB
@@ -110,16 +110,16 @@ Sprite_DekuScrubEnemy_Main:
%PlayAnimation(0,2,8) %PlayAnimation(0,2,8)
JSL Sprite_PlayerCantPassThrough JSL Sprite_PlayerCantPassThrough
JSR CheckForPeaShotRedirect
LDA SprTimerA, X : BNE .not_done LDA SprTimerA, X : BNE .not_done
JSR SpawnPeaShot JSR SpawnPeaShot
LDA #$40 : STA SprTimerA, X LDA #$50 : STA SprTimerA, X
INC.w SprAction, X INC.w SprAction, X
.not_done .not_done
LDA $22 : STA $02 LDA POSX : STA $02
LDA $20 : STA $03 LDA POSY : STA $03
LDA SprX, X : STA $04 LDA SprX, X : STA $04
LDA SprY, X : STA $05 LDA SprY, X : STA $05
JSR GetDistance8bit : CMP #$18 : BCS .not_too_close JSR GetDistance8bit : CMP #$18 : BCS .not_too_close
@@ -137,6 +137,10 @@ Sprite_DekuScrubEnemy_Main:
JSL Sprite_PlayerCantPassThrough JSL Sprite_PlayerCantPassThrough
JSR CheckForPeaShotRedirect JSR CheckForPeaShotRedirect
LDA.w SprTimerA, X : BNE +
%GotoAction(0)
+
RTS RTS
} }
@@ -199,6 +203,10 @@ Sprite_DekuScrubEnemy_Main:
%DoDamageToPlayerSameLayerOnContact() %DoDamageToPlayerSameLayerOnContact()
JSL Sprite_MoveVert JSL Sprite_MoveVert
JSL Sprite_CheckTileCollision
LDA.w SprCollision, X : BEQ .no_collision
STZ.w SprState, X
.no_collision
JSL Sprite_CheckDamageFromPlayerLong : BCC .no_damage JSL Sprite_CheckDamageFromPlayerLong : BCC .no_damage
; Apply force in the opposite direction ; Apply force in the opposite direction
@@ -225,11 +233,9 @@ CheckForPeaShotRedirect:
PLX PLX
JSL CheckIfHitBoxesOverlap : BCC .no_dano JSL CheckIfHitBoxesOverlap : BCC .no_dano
INC.w SprAction, X %GotoAction(3)
RTS
.no_dano .no_dano
; Wait while the pea shot is on screen
; Link may redirect it towards us
LDA SprTimerA, X : BNE .not_done
; If the pea shot and deku scrub hitboxes intersect ; If the pea shot and deku scrub hitboxes intersect
; We will go to recoil ; We will go to recoil
PHX PHX
@@ -240,11 +246,6 @@ CheckForPeaShotRedirect:
%GotoAction(3) %GotoAction(3)
RTS RTS
.not_done2 .not_done2
; However, he may also dodge it and try to attack
; So if he gets too close, we go back to hiding
%GotoAction(0)
.not_done
RTS RTS
} }

View File

@@ -448,274 +448,280 @@ Link_SetupHitBox:
Sprite_SetupHitBox: Sprite_SetupHitBox:
#_06F7EF: LDA.w $0F70, X PHB : PHK : PLB
#_06F7F2: BMI .too_high LDA.w $0F70, X
BMI .too_high
#_06F7F4: PHY PHY
#_06F7F5: LDA.w $0F60, X LDA.w $0F60, X
#_06F7F8: AND.b #$1F AND.b #$1F
#_06F7FA: TAY TAY
#_06F7FB: LDA.w $0D10, X LDA.w $0D10, X
#_06F7FE: CLC CLC
#_06F7FF: ADC.w .offset_x_low, Y ADC.w .offset_x_low, Y
#_06F802: STA.b $04 STA.b $04
#_06F804: LDA.w $0D30, X LDA.w $0D30, X
#_06F807: ADC.w .offset_x_high, Y ADC.w .offset_x_high, Y
#_06F80A: STA.b $0A STA.b $0A
#_06F80C: LDA.w $0D00, X LDA.w $0D00, X
#_06F80F: CLC CLC
#_06F810: ADC.w .offset_y_low, Y ADC.w .offset_y_low, Y
#_06F813: PHP PHP
#_06F814: SEC SEC
#_06F815: SBC.w $0F70, X SBC.w $0F70, X
#_06F818: STA.b $05 STA.b $05
#_06F81A: LDA.w $0D20, X LDA.w $0D20, X
#_06F81D: SBC.b #$00 SBC.b #$00
#_06F81F: PLP PLP
#_06F820: ADC.w .offset_y_high, Y ADC.w .offset_y_high, Y
#_06F823: STA.b $0B STA.b $0B
#_06F825: LDA.w .width, Y LDA.w .width, Y
#_06F828: STA.b $06 STA.b $06
#_06F82A: LDA.w .height, Y LDA.w .height, Y
#_06F82D: STA.b $07 STA.b $07
#_06F82F: PLY PLY
#_06F830: RTL PLB
RTL
; --------------------------------------------------------- ; ---------------------------------------------------------
.too_high .too_high
#_06F831: LDA.b #$80 LDA.b #$80
#_06F833: STA.b $0A STA.b $0A
#_06F835: RTL PLB
RTL
.offset_x_low .offset_x_low
#_06F72F: db 2 ; 0x00 db 2 ; 0x00
#_06F730: db 3 ; 0x01 db 3 ; 0x01
#_06F731: db 0 ; 0x02 db 0 ; 0x02
#_06F732: db -3 ; 0x03 db -3 ; 0x03
#_06F733: db -6 ; 0x04 db -6 ; 0x04
#_06F734: db 0 ; 0x05 db 0 ; 0x05
#_06F735: db 2 ; 0x06 db 2 ; 0x06
#_06F736: db -8 ; 0x07 db -8 ; 0x07
#_06F737: db 0 ; 0x08 db 0 ; 0x08
#_06F738: db -4 ; 0x09 db -4 ; 0x09
#_06F739: db -8 ; 0x0A db -8 ; 0x0A
#_06F73A: db 0 ; 0x0B db 0 ; 0x0B
#_06F73B: db -8 ; 0x0C db -8 ; 0x0C
#_06F73C: db -16 ; 0x0D db -16 ; 0x0D
#_06F73D: db 2 ; 0x0E db 2 ; 0x0E
#_06F73E: db 2 ; 0x0F db 2 ; 0x0F
#_06F73F: db 2 ; 0x10 db 2 ; 0x10
#_06F740: db 2 ; 0x11 db 2 ; 0x11
#_06F741: db 2 ; 0x12 db 2 ; 0x12
#_06F742: db -8 ; 0x13 db -8 ; 0x13
#_06F743: db 2 ; 0x14 db 2 ; 0x14
#_06F744: db 2 ; 0x15 db 2 ; 0x15
#_06F745: db -16 ; 0x16 db -16 ; 0x16
#_06F746: db -8 ; 0x17 db -8 ; 0x17
#_06F747: db -12 ; 0x18 db -12 ; 0x18
#_06F748: db 4 ; 0x19 db 4 ; 0x19
#_06F749: db -4 ; 0x1A db -4 ; 0x1A
#_06F74A: db -12 ; 0x1B db -12 ; 0x1B
#_06F74B: db 5 ; 0x1C db 5 ; 0x1C
#_06F74C: db -32 ; 0x1D db -32 ; 0x1D
#_06F74D: db -2 ; 0x1E db -2 ; 0x1E
#_06F74E: db 4 ; 0x1F db 4 ; 0x1F
; --------------------------------------------------------- ; ---------------------------------------------------------
.offset_x_high .offset_x_high
#_06F74F: db 0 ; 0x00 db 0 ; 0x00
#_06F750: db 0 ; 0x01 db 0 ; 0x01
#_06F751: db 0 ; 0x02 db 0 ; 0x02
#_06F752: db -1 ; 0x03 db -1 ; 0x03
#_06F753: db -1 ; 0x04 db -1 ; 0x04
#_06F754: db 0 ; 0x05 db 0 ; 0x05
#_06F755: db 0 ; 0x06 db 0 ; 0x06
#_06F756: db -1 ; 0x07 db -1 ; 0x07
#_06F757: db 0 ; 0x08 db 0 ; 0x08
#_06F758: db -1 ; 0x09 db -1 ; 0x09
#_06F759: db -1 ; 0x0A db -1 ; 0x0A
#_06F75A: db 0 ; 0x0B db 0 ; 0x0B
#_06F75B: db -1 ; 0x0C db -1 ; 0x0C
#_06F75C: db -1 ; 0x0D db -1 ; 0x0D
#_06F75D: db 0 ; 0x0E db 0 ; 0x0E
#_06F75E: db 0 ; 0x0F db 0 ; 0x0F
#_06F75F: db 0 ; 0x10 db 0 ; 0x10
#_06F760: db 0 ; 0x11 db 0 ; 0x11
#_06F761: db 0 ; 0x12 db 0 ; 0x12
#_06F762: db -1 ; 0x13 db -1 ; 0x13
#_06F763: db 0 ; 0x14 db 0 ; 0x14
#_06F764: db 0 ; 0x15 db 0 ; 0x15
#_06F765: db -1 ; 0x16 db -1 ; 0x16
#_06F766: db -1 ; 0x17 db -1 ; 0x17
#_06F767: db -1 ; 0x18 db -1 ; 0x18
#_06F768: db 0 ; 0x19 db 0 ; 0x19
#_06F769: db -1 ; 0x1A db -1 ; 0x1A
#_06F76A: db -1 ; 0x1B db -1 ; 0x1B
#_06F76B: db 0 ; 0x1C db 0 ; 0x1C
#_06F76C: db -1 ; 0x1D db -1 ; 0x1D
#_06F76D: db -1 ; 0x1E db -1 ; 0x1E
#_06F76E: db 0 ; 0x1F db 0 ; 0x1F
; --------------------------------------------------------- ; ---------------------------------------------------------
.width .width
#_06F76F: db 12 ; 0x00 db 12 ; 0x00
#_06F770: db 1 ; 0x01 db 1 ; 0x01
#_06F771: db 16 ; 0x02 db 16 ; 0x02
#_06F772: db 20 ; 0x03 db 20 ; 0x03
#_06F773: db 20 ; 0x04 db 20 ; 0x04
#_06F774: db 8 ; 0x05 db 8 ; 0x05
#_06F775: db 4 ; 0x06 db 4 ; 0x06
#_06F776: db 32 ; 0x07 db 32 ; 0x07
#_06F777: db 48 ; 0x08 db 48 ; 0x08
#_06F778: db 24 ; 0x09 db 24 ; 0x09
#_06F779: db 32 ; 0x0A db 32 ; 0x0A
#_06F77A: db 32 ; 0x0B db 32 ; 0x0B
#_06F77B: db 32 ; 0x0C db 32 ; 0x0C
#_06F77C: db 48 ; 0x0D db 48 ; 0x0D
#_06F77D: db 12 ; 0x0E db 12 ; 0x0E
#_06F77E: db 12 ; 0x0F db 12 ; 0x0F
#_06F77F: db 60 ; 0x10 db 60 ; 0x10
#_06F780: db 124 ; 0x11 db 124 ; 0x11
#_06F781: db 12 ; 0x12 db 12 ; 0x12
#_06F782: db 32 ; 0x13 db 32 ; 0x13
#_06F783: db 4 ; 0x14 db 4 ; 0x14
#_06F784: db 12 ; 0x15 db 12 ; 0x15
#_06F785: db 48 ; 0x16 db 48 ; 0x16
#_06F786: db 32 ; 0x17 db 32 ; 0x17
#_06F787: db 40 ; 0x18 db 40 ; 0x18
#_06F788: db 8 ; 0x19 db 8 ; 0x19
#_06F789: db 24 ; 0x1A db 24 ; 0x1A
#_06F78A: db 24 ; 0x1B db 24 ; 0x1B
#_06F78B: db 5 ; 0x1C db 5 ; 0x1C
#_06F78C: db 80 ; 0x1D db 80 ; 0x1D
#_06F78D: db 4 ; 0x1E db 4 ; 0x1E
#_06F78E: db 8 ; 0x1F db 8 ; 0x1F
; --------------------------------------------------------- ; ---------------------------------------------------------
.offset_y_low .offset_y_low
#_06F78F: db 0 ; 0x00 db 0 ; 0x00
#_06F790: db 3 ; 0x01 db 3 ; 0x01
#_06F791: db 4 ; 0x02 db 4 ; 0x02
#_06F792: db -4 ; 0x03 db -4 ; 0x03
#_06F793: db -8 ; 0x04 db -8 ; 0x04
#_06F794: db 2 ; 0x05 db 2 ; 0x05
#_06F795: db 0 ; 0x06 db 0 ; 0x06
#_06F796: db -16 ; 0x07 db -16 ; 0x07
#_06F797: db 12 ; 0x08 db 12 ; 0x08
#_06F798: db -4 ; 0x09 db -4 ; 0x09
#_06F799: db -8 ; 0x0A db -8 ; 0x0A
#_06F79A: db 0 ; 0x0B db 0 ; 0x0B
#_06F79B: db -10 ; 0x0C db -10 ; 0x0C
#_06F79C: db -16 ; 0x0D db -16 ; 0x0D
#_06F79D: db 2 ; 0x0E db 2 ; 0x0E
#_06F79E: db 2 ; 0x0F db 2 ; 0x0F
#_06F79F: db 2 ; 0x10 db 2 ; 0x10
#_06F7A0: db 2 ; 0x11 db 2 ; 0x11
#_06F7A1: db -3 ; 0x12 db -3 ; 0x12
#_06F7A2: db -12 ; 0x13 db -12 ; 0x13
#_06F7A3: db 2 ; 0x14 db 2 ; 0x14
#_06F7A4: db 10 ; 0x15 db 10 ; 0x15
#_06F7A5: db 0 ; 0x16 db 0 ; 0x16
#_06F7A6: db -12 ; 0x17 db -12 ; 0x17
#_06F7A7: db 16 ; 0x18 db 16 ; 0x18
#_06F7A8: db 4 ; 0x19 db 4 ; 0x19
#_06F7A9: db -4 ; 0x1A db -4 ; 0x1A
#_06F7AA: db -12 ; 0x1B db -12 ; 0x1B
#_06F7AB: db 3 ; 0x1C db 3 ; 0x1C
#_06F7AC: db -16 ; 0x1D db -16 ; 0x1D
#_06F7AD: db -8 ; 0x1E db -8 ; 0x1E
#_06F7AE: db 10 ; 0x1F db 10 ; 0x1F
; --------------------------------------------------------- ; ---------------------------------------------------------
.offset_y_high .offset_y_high
#_06F7AF: db 0 ; 0x00 db 0 ; 0x00
#_06F7B0: db 0 ; 0x01 db 0 ; 0x01
#_06F7B1: db 0 ; 0x02 db 0 ; 0x02
#_06F7B2: db -1 ; 0x03 db -1 ; 0x03
#_06F7B3: db -1 ; 0x04 db -1 ; 0x04
#_06F7B4: db 0 ; 0x05 db 0 ; 0x05
#_06F7B5: db 0 ; 0x06 db 0 ; 0x06
#_06F7B6: db -1 ; 0x07 db -1 ; 0x07
#_06F7B7: db 0 ; 0x08 db 0 ; 0x08
#_06F7B8: db -1 ; 0x09 db -1 ; 0x09
#_06F7B9: db -1 ; 0x0A db -1 ; 0x0A
#_06F7BA: db 0 ; 0x0B db 0 ; 0x0B
#_06F7BB: db -1 ; 0x0C db -1 ; 0x0C
#_06F7BC: db -1 ; 0x0D db -1 ; 0x0D
#_06F7BD: db 0 ; 0x0E db 0 ; 0x0E
#_06F7BE: db 0 ; 0x0F db 0 ; 0x0F
#_06F7BF: db 0 ; 0x10 db 0 ; 0x10
#_06F7C0: db 0 ; 0x11 db 0 ; 0x11
#_06F7C1: db -1 ; 0x12 db -1 ; 0x12
#_06F7C2: db -1 ; 0x13 db -1 ; 0x13
#_06F7C3: db 0 ; 0x14 db 0 ; 0x14
#_06F7C4: db 0 ; 0x15 db 0 ; 0x15
#_06F7C5: db 0 ; 0x16 db 0 ; 0x16
#_06F7C6: db -1 ; 0x17 db -1 ; 0x17
#_06F7C7: db 0 ; 0x18 db 0 ; 0x18
#_06F7C8: db 0 ; 0x19 db 0 ; 0x19
#_06F7C9: db -1 ; 0x1A db -1 ; 0x1A
#_06F7CA: db -1 ; 0x1B db -1 ; 0x1B
#_06F7CB: db 0 ; 0x1C db 0 ; 0x1C
#_06F7CC: db -1 ; 0x1D db -1 ; 0x1D
#_06F7CD: db -1 ; 0x1E db -1 ; 0x1E
#_06F7CE: db 0 ; 0x1F db 0 ; 0x1F
; --------------------------------------------------------- ; ---------------------------------------------------------
.height .height
#_06F7CF: db 14 ; 0x00 db 14 ; 0x00
#_06F7D0: db 1 ; 0x01 db 1 ; 0x01
#_06F7D1: db 16 ; 0x02 db 16 ; 0x02
#_06F7D2: db 21 ; 0x03 db 21 ; 0x03
#_06F7D3: db 24 ; 0x04 db 24 ; 0x04
#_06F7D4: db 4 ; 0x05 db 4 ; 0x05
#_06F7D5: db 8 ; 0x06 db 8 ; 0x06
#_06F7D6: db 40 ; 0x07 db 40 ; 0x07
#_06F7D7: db 20 ; 0x08 db 20 ; 0x08
#_06F7D8: db 24 ; 0x09 db 24 ; 0x09
#_06F7D9: db 40 ; 0x0A db 40 ; 0x0A
#_06F7DA: db 29 ; 0x0B db 29 ; 0x0B
#_06F7DB: db 36 ; 0x0C db 36 ; 0x0C
#_06F7DC: db 48 ; 0x0D db 48 ; 0x0D
#_06F7DD: db 60 ; 0x0E db 60 ; 0x0E
#_06F7DE: db 124 ; 0x0F db 124 ; 0x0F
db 12 ; 0x10
db 12 ; 0x11
db 17 ; 0x12
db 28 ; 0x13
db 4 ; 0x14
db 2 ; 0x15
db 28 ; 0x16
db 20 ; 0x17
db 10 ; 0x18
db 4 ; 0x19
db 24 ; 0x1A
db 16 ; 0x1B
db 5 ; 0x1C
db 48 ; 0x1D
db 8 ; 0x1E
db 12 ; 0x1F
#_06F7DF: db 12 ; 0x10
#_06F7E0: db 12 ; 0x11
#_06F7E1: db 17 ; 0x12
#_06F7E2: db 28 ; 0x13
#_06F7E3: db 4 ; 0x14
#_06F7E4: db 2 ; 0x15
#_06F7E5: db 28 ; 0x16
#_06F7E6: db 20 ; 0x17
#_06F7E7: db 10 ; 0x18
#_06F7E8: db 4 ; 0x19
#_06F7E9: db 24 ; 0x1A
#_06F7EA: db 16 ; 0x1B
#_06F7EB: db 5 ; 0x1C
#_06F7EC: db 48 ; 0x1D
#_06F7ED: db 8 ; 0x1E
#_06F7EE: db 12 ; 0x1F