Moldorm stunnable with hookshot/boomerang; only damagable when stunned
This commit is contained in:
BIN
damage_table.bin
BIN
damage_table.bin
Binary file not shown.
25
hooks.asm
25
hooks.asm
@@ -3106,3 +3106,28 @@ org $079DAB
|
|||||||
JSL SwordSwingDelay : NOP
|
JSL SwordSwingDelay : NOP
|
||||||
org $079DEE
|
org $079DEE
|
||||||
JSL SwordSwingDelay : NOP
|
JSL SwordSwingDelay : NOP
|
||||||
|
|
||||||
|
org $088E4A
|
||||||
|
JSL MaybeRecoil
|
||||||
|
BRA + : NOP #6 : +
|
||||||
|
|
||||||
|
org $06EC4D
|
||||||
|
JSL MaybeRecoil2
|
||||||
|
BRA + : NOP #10 : +
|
||||||
|
|
||||||
|
; make moldorm check head for hitbox instead of tail
|
||||||
|
org $1DDADD
|
||||||
|
; BRA + : NOP #22 : +
|
||||||
|
BRA + : NOP #26 : +
|
||||||
|
org $1DDAF9
|
||||||
|
BRA + : NOP : +
|
||||||
|
org $1DDB01
|
||||||
|
BRA + : NOP #3 : +
|
||||||
|
|
||||||
|
; make moldorm repel sword when not stunned
|
||||||
|
org $06F354
|
||||||
|
JSL CheckMoldormRepel
|
||||||
|
BCC .not_moldorm
|
||||||
|
NOP
|
||||||
|
skip 17
|
||||||
|
.not_moldorm
|
||||||
|
|||||||
@@ -126,6 +126,8 @@ Utility_CheckAncillaOverlapWithSprite:
|
|||||||
RTL
|
RTL
|
||||||
.giant_moldorm
|
.giant_moldorm
|
||||||
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
||||||
|
LDA $0C4A, X : CMP #$1F : BEQ .check_collision_moldorm ; hookshot
|
||||||
|
CMP #$05 : BEQ .check_collision_moldorm ; boomerang
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_moldorm
|
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_moldorm
|
||||||
BRA .ignore_collision ; don't collide with non-bombs
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
@@ -274,29 +276,29 @@ Utility_CheckHammerHelmasaurKingMask:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Utility_CheckImpervious:
|
Utility_CheckImpervious:
|
||||||
LDA $0E20, X : CMP.b #$CE : BEQ .blind
|
LDA.w $0E20, X : CMP.b #$CE : BEQ .blind
|
||||||
CMP.b #$CB : BNE .normal
|
CMP.b #$CB : BNE .normal
|
||||||
.trinexx
|
.trinexx
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA.l SpecialWeapons : CMP #$01 : BEQ +
|
||||||
CMP #$03 : BEQ +
|
CMP #$03 : BEQ +
|
||||||
CMP #$04 : BEQ +
|
CMP #$04 : BEQ +
|
||||||
CMP #$05 : BEQ +
|
CMP #$05 : BEQ +
|
||||||
CMP #$06 : BEQ .check_sidenexx
|
CMP #$06 : BEQ .check_sidenexx
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.blind
|
.blind
|
||||||
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
LDA.w $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||||
BRA .normal
|
BRA .normal
|
||||||
+
|
+
|
||||||
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
LDA.w $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||||
.check_sidenexx
|
.check_sidenexx
|
||||||
LDA.w $0DD1 : ORA.w $0DD2 : BNE .impervious ; at least one sidenexx alive
|
LDA.w $0DD1 : ORA.w $0DD2 : BNE .impervious ; at least one sidenexx alive
|
||||||
LDA.w $0D80, X : CMP.b #$02 : BCS .impervious ; at least one sidenexx alive
|
LDA.w $0D80, X : CMP.b #$02 : BCS .impervious ; at least one sidenexx alive
|
||||||
BRA .not_impervious
|
BRA .not_impervious
|
||||||
.normal
|
.normal
|
||||||
LDA $0E60, X : AND.b #$40 : BNE .impervious
|
LDA.w $0E60, X : AND.b #$40 : BNE .impervious
|
||||||
LDA $0CF2 : CMP #$FF : BEQ .impervious ; special "always-impervious" class
|
LDA.w $0CF2 : CMP.b #$FF : BEQ .impervious ; special "always-impervious" class
|
||||||
LDA $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
LDA.w $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
||||||
LDA $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
LDA.w $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
||||||
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA SpecialWeapons : CMP #$01 : BEQ +
|
||||||
CMP #$03 : BEQ +
|
CMP #$03 : BEQ +
|
||||||
@@ -304,7 +306,7 @@ Utility_CheckImpervious:
|
|||||||
CMP #$05 : BEQ +
|
CMP #$05 : BEQ +
|
||||||
BRA .not_impervious
|
BRA .not_impervious
|
||||||
+
|
+
|
||||||
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
LDA.w $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||||
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
||||||
BRA .impervious
|
BRA .impervious
|
||||||
.not_impervious
|
.not_impervious
|
||||||
@@ -336,12 +338,6 @@ Utility_CheckImpervious:
|
|||||||
; start with X = sprite index
|
; start with X = sprite index
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AllowBombingMoldorm:
|
AllowBombingMoldorm:
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .no_disable_projectiles
|
|
||||||
CMP #$03 : BEQ .no_disable_projectiles
|
|
||||||
CMP #$04 : BEQ .no_disable_projectiles
|
|
||||||
CMP #$05 : BEQ .no_disable_projectiles
|
|
||||||
CMP #$06 : BEQ .no_disable_projectiles
|
|
||||||
INC $0BA0, X
|
|
||||||
.no_disable_projectiles
|
.no_disable_projectiles
|
||||||
JSL !SPRITE_INITIALIZED_SEGMENTED
|
JSL !SPRITE_INITIALIZED_SEGMENTED
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
45
trolls.asm
45
trolls.asm
@@ -118,3 +118,48 @@ SwordSwingDelay:
|
|||||||
LDA.l $079CAF, X
|
LDA.l $079CAF, X
|
||||||
STA.b $3D
|
STA.b $3D
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
MaybeRecoil:
|
||||||
|
LDA.w $0E20, Y
|
||||||
|
CMP.b #$09 ; skip recoil on the giant 'dorm
|
||||||
|
BEQ .done
|
||||||
|
LDA.l $088E75, X
|
||||||
|
STA.w $0F40, Y
|
||||||
|
LDA.l $088E79, X
|
||||||
|
STA.w $0F30, Y
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
|
||||||
|
MaybeRecoil2:
|
||||||
|
LDA.w $0E20, X
|
||||||
|
CMP.b #$09
|
||||||
|
BEQ .moldorm
|
||||||
|
LDA.b $00
|
||||||
|
EOR.b #$FF
|
||||||
|
INC
|
||||||
|
STA.w $0F30, X
|
||||||
|
LDA.b $01
|
||||||
|
EOR.b #$FF
|
||||||
|
INC
|
||||||
|
STA.w $0F40, X
|
||||||
|
RTL
|
||||||
|
.moldorm ; skip recoil on the giant 'dorm and unstun
|
||||||
|
STZ.w $0B58, X
|
||||||
|
STZ.w $0D90, X
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckMoldormRepel:
|
||||||
|
CMP.b #$09
|
||||||
|
BNE .not_moldorm
|
||||||
|
LDA.w $0D90, X
|
||||||
|
BEQ .repel
|
||||||
|
LDA.w $0B58, X
|
||||||
|
BEQ .repel
|
||||||
|
.no_repel
|
||||||
|
LDA.b #$01
|
||||||
|
SEC : RTL
|
||||||
|
.repel
|
||||||
|
LDA.b #$00
|
||||||
|
SEC : RTL
|
||||||
|
.not_moldorm
|
||||||
|
CLC : RTL
|
||||||
|
|||||||
Reference in New Issue
Block a user