editing enemy damage class weaknesses/immunities
Zeldix :: Zelda III Hacking :: Requests
Page 1 of 1
editing enemy damage class weaknesses/immunities
how difficult is it to edit the damage class of enemies such as red eyegores and koppies (which can only be killed by arrows) to allow them to get killed by sword strikes or other attacks? is there multiple sprite data that needs to be edited or can it be a few hex codes?
wizzrobemaster- Ganon
- Since : 2015-01-04
Re: editing enemy damage class weaknesses/immunities
I haven't used it in a while so I don't remember, but does Hyrule Add-ons not do this?
SunGodPortal- Since : 2015-01-26
Re: editing enemy damage class weaknesses/immunities
Boy you sure have many questions!
It's very difficult.
A good place to start looking would be in MathOnNapkins disassembly as he did separated the coding of many enemies into separate files.
Then it's a matter of knowing a little bit how asm translates to hex and you can figure out how to change many things in the game on your own, like I did....but it takes time.
His disassembly probably contains all answers to your questions...and beyond...you just have to understand it!
It's very difficult.
A good place to start looking would be in MathOnNapkins disassembly as he did separated the coding of many enemies into separate files.
Then it's a matter of knowing a little bit how asm translates to hex and you can figure out how to change many things in the game on your own, like I did....but it takes time.
His disassembly probably contains all answers to your questions...and beyond...you just have to understand it!
Founder- Since : 2012-06-19
Re: editing enemy damage class weaknesses/immunities
will mathonnapkins disassembly make the editing much easier?
wizzrobemaster- Ganon
- Since : 2015-01-04
Re: editing enemy damage class weaknesses/immunities
Yes, if you know what you're looking for.
No, if you don't.
Here's the sprite code you wanted, for exemple:
^^Your answer lies somewhere in that mumbo jumbo!
No, if you don't.
Here's the sprite code you wanted, for exemple:
- Code:
; ==============================================================================
; *$F4700-$F4720 LONG
SpritePrep_Eyegore:
{
LDA $048E
CMP.b #$0C : BEQ .is_goriya
CMP.b #$1B : BEQ .is_goriya
CMP.b #$4B : BEQ .is_goriya
CMP.b #$6B : BNE .not_goriya
.is_goriya:
INC $0DA0, X
LDA $0E20, X : CMP.b #$83 : BNE .not_red_goriya
; Disable some of the invulnerability properties.
STZ $0CAA, X
.not_red_goriya
.not_goriya
RTL
}
; ==============================================================================
; $F4721-$F4790 DATA
{
}
; ==============================================================================
; *$F4791-$F479A BRANCH LOCATION
Goriya_StayStill:
{
STZ $0D90, X
JSR Sprite3_CheckDamage
JSR Sprite3_CheckTileCollision
RTS
}
; ==============================================================================
; *$F479B-$F4838 JUMP LOCATION
Sprite_Eyegore:
{
LDA $0DA0, X : BNE Sprite_Goriya
JMP Eyegore_Main
Sprite_Goriya:
JSL Goriya_Draw
JSR Sprite3_CheckIfActive
JSR Sprite3_CheckIfRecoiling
LDA $0E00, X : BEQ .phlegm_inhibit
CMP.b #$08 : BNE .phlegm_delay
JSL Sprite_SpawnFirePhlegm
.phlegm_delay
.phlegm_inhibit
; Ignore the player just pressing against a wall
LDA $0048 : CMP.b #$00 : BNE Goriya_StayStill
LDY $0E20, X
LDA $F0 : AND.b #$0F : BEQ Goriya_StayStill
CPY.b #$84 : BNE .not_faster_goriya
ORA.b #$10
.not_faster_goriya
TAY
LDA $C761, Y : STA $0DE0, X
LDA $C721, Y : STA $0D50, X
LDA $C741, Y : STA $0D40, X
LDA $0E70, X : BNE .tile_collision
JSR Sprite3_Move
.tile_collision
JSR Sprite3_CheckDamage
JSR Sprite3_CheckTileCollision
INC $0E80, X : LDA $0E80, X : AND.b #$0C : ORA $0DE0, X : TAY
LDA $C781, Y : STA $0DC0, X
LDA $0E20, X : CMP.b #$84 : BNE .no_fire_phlegm_logic
JSR Sprite3_DirectionToFacePlayer
LDA $0F : ADD.b #$08 : CMP.b #$10 : BCC .in_firing_line
LDA $0E : ADD.b #$08 : CMP.b #$10 : BCS .not_in_firing_line
.in_firing_line
TYA : CMP $0DE0, X : BNE .not_facing_player
LDA $0D90, X : AND.b #$1F : BNE .phlegm_charge_counter_not_maxed
LDA.b #$10 : STA $0E00, X
.phlegm_charge_counter_not_maxed
INC $0D90, X
RTS
.not_facing_player
.not_in_firing_line
.no_fire_phlegm_logic
STZ $0D90, X
RTS
}
; ==============================================================================
; *$F4839-$F4863 ALTERNATE ENTRY POINT
Eyegore_Main:
{
JSR Eyegore_Draw
JSR Sprite3_CheckIfActive
JSR Sprite3_CheckIfRecoiling
JSR Sprite3_CheckDamage
LDA $0E60, X : ORA.b #$40 : STA $0E60, X
LDA $0CAA, X : ORA.b #$04 : STA $0CAA, X
LDA $0D80, X
JSL UseImplicitRegIndexedLocalJumpTable
dw Eyegore_WaitUntilPlayerNearby
dw Eyegore_OpeningEye
dw Eyegore_ChasePlayer
dw Eyegore_ClosingEye
}
; ==============================================================================
; $F4864-$F4867 DATA
pool Eyegore:
{
.timers
db $60, $80, $A0, $80
}
; ==============================================================================
; *$F4868-$F488A JUMP LOCATION
Eyegore_WaitUntilPlayerNearby:
{
LDA $0DF0, X : BNE .delay
JSR Sprite3_DirectionToFacePlayer
LDA $0E : ADD.b #$30 : CMP.b #$60 : BCS .player_not_close
LDA $0F : ADD.b #$30 : CMP.b #$60 : BCS .player_not_close
INC $0D80, X
LDA.b #$3F : STA $0DF0, X
.player_not_close
.delay
RTS
}
; ==============================================================================
; $F488B-$F4892 DATA
pool Eyegore_OpeningEye:
{
db $02, $02, $02, $02, $01, $01, $00, $00
}
; ==============================================================================
; *$F4893-$F48BA JUMP LOCATION
Eyegore_OpeningEye:
{
LDA $0DF0, X : BNE .delay
JSR Sprite3_DirectionToFacePlayer : TYA : STA $0DE0, X
INC $0D80, X
JSL GetRandomInt : AND.b #$03 : TAY
LDA Eyegore.timers, Y : STA $0DF0, X
RTS
.delay
LSR #3 : TAY
LDA .animation_states, Y : STA $0DC0, X
RTS
}
; ==============================================================================
; $F48BB-$F48CA DATA
pool Eyegore_ChasePlayer:
{
.animation_states
db $07, $05, $02, $09, $08, $06, $03, $0A
db $07, $05, $02, $09, $08, $06, $04, $0B
}
; ==============================================================================
; *$F48CB-$F492D JUMP LOCATION
Eyegore_ChasePlayer:
{
LDA $0E60, X : AND.b #$BF : STA $0E60, X
LDA $0E20, X : CMP.b #$84 : BEQ .is_red_eyegore
LDA $0CAA, X : AND.b #$FB : STA $0CAA, X
.is_red_eyegore
LDA $0DF0, X : BNE .close_eye_delay
LDA.b #$3F : STA $0DF0, X
INC $0D80, X
STZ $0DC0, X
RTS
.close_eye_delay
TXA : EOR $1A : AND.b #$1F : BNE .face_player_delay
JSR Sprite3_DirectionToFacePlayer
TYA : STA $0DE0, X
.face_player_delay
LDY $0DE0, X
LDA Sprite3_Shake.x_speeds, Y : STA $0D50, X
LDA Sprite3_Shake.y_speeds, Y : STA $0D40, X
LDA $0E70, X : BNE .collided_with_tile
JSR Sprite3_Move
.collided_with_tile
JSR Sprite3_CheckTileCollision
INC $0E80, X : LDA $0E80, X : AND.b #$0C : ORA $0DE0, X : TAY
LDA .animation_states, Y : STA $0DC0, X
RTS
}
; ==============================================================================
; $F492E-$F4935 DATA
pool Eyegore_ClosingEye:
{
.animation_states
db $00, $00, $01, $01, $02, $02, $02, $02
}
; ==============================================================================
; *$F4936-$F494E JUMP LOCATION
Eyegore_ClosingEye:
{
LDA $0DF0, X : BNE .delay
STZ $0D80, X
LDA.b #$60 : STA $0DF0, X
RTS
.delay
LSR #3 : TAY
LDA .animation_states, Y : STA $0DC0, X
RTS
}
; ==============================================================================
; $F494F-$F4ACE DATA
pool Eyegore_Draw:
{
.oam_groups
dw -4, -4 : db $A2, $00, $00, $02
dw 4, -4 : db $A2, $40, $00, $02
dw -4, 4 : db $9C, $00, $00, $02
dw 4, 4 : db $9C, $40, $00, $02
dw -4, -4 : db $A4, $00, $00, $02
dw 4, -4 : db $A4, $40, $00, $02
dw -4, 4 : db $9C, $00, $00, $02
dw 4, 4 : db $9C, $40, $00, $02
dw -4, -4 : db $8C, $00, $00, $02
dw 4, -4 : db $8C, $40, $00, $02
dw -4, 4 : db $9C, $00, $00, $02
dw 4, 4 : db $9C, $40, $00, $02
dw -4, -3 : db $8C, $00, $00, $02
dw 12, -3 : db $8C, $40, $00, $00
dw -4, 13 : db $BC, $00, $00, $00
dw 4, 5 : db $8A, $40, $00, $02
dw -4, -3 : db $8C, $00, $00, $00
dw 4, -3 : db $8C, $40, $00, $02
dw -4, 5 : db $8A, $00, $00, $02
dw 12, 13 : db $BC, $40, $00, $00
dw 0, -4 : db $AA, $00, $00, $02
dw 0, 4 : db $A6, $00, $00, $02
dw 0, -4 : db $AA, $00, $00, $02
dw 0, 4 : db $A6, $00, $00, $02
dw 0, -3 : db $AA, $00, $00, $02
dw 0, 4 : db $A8, $00, $00, $02
dw 0, -3 : db $AA, $00, $00, $02
dw 0, 4 : db $A8, $00, $00, $02
dw 0, -4 : db $AA, $40, $00, $02
dw 0, 4 : db $A6, $40, $00, $02
dw 0, -4 : db $AA, $40, $00, $02
dw 0, 4 : db $A6, $40, $00, $02
dw 0, -3 : db $AA, $40, $00, $02
dw 0, 4 : db $A8, $40, $00, $02
dw 0, -3 : db $AA, $40, $00, $02
dw 0, 4 : db $A8, $40, $00, $02
dw -4, -4 : db $8E, $00, $00, $02
dw 4, -4 : db $8E, $40, $00, $02
dw -4, 4 : db $9E, $00, $00, $02
dw 4, 4 : db $9E, $40, $00, $02
dw -4, -3 : db $8E, $00, $00, $02
dw 12, -3 : db $8E, $40, $00, $00
dw -4, 13 : db $BD, $00, $00, $00
dw 4, 5 : db $A0, $40, $00, $02
dw -4, -3 : db $8E, $00, $00, $00
dw 4, -3 : db $8E, $40, $00, $02
dw -4, 5 : db $A0, $00, $00, $02
dw 12, 13 : db $BD, $40, $00, $00
}
; ==============================================================================
; *$F4ACF-$F4AF3 LOCAL
Eyegore_Draw:
{
LDA.b #$00 : XBA
LDA $0DC0, X : REP #$20 : ASL #5 : ADC.w #(.oam_groups) : STA $08
SEP #$20
LDA.b #$04 : JSR Sprite3_DrawMultiple
; \note I don't get this. Most other sprites don't have this check,
; do they?
LDA $0F00, X : BNE .dont_draw_shadow
LDA.b #$0E : JSL Sprite_DrawShadowLong.variable
.dont_draw_shadow
RTS
}
; ==============================================================================
^^Your answer lies somewhere in that mumbo jumbo!
Founder- Since : 2012-06-19
Re: editing enemy damage class weaknesses/immunities
*$F4700-$F4720
*$F479B-$F4838
*$F4839-$F4863
etc... those are all hex addresses, so with some digging you can actually find hex values for everything he documented.
; $F4864-$F4867 DATA
pool Eyegore:
{
.timers
db $60, $80, $A0, $80
^^ places like these are amongst the easiest things you can edit without asm knowledge, that's basically four hex bytes only.
*$F479B-$F4838
*$F4839-$F4863
etc... those are all hex addresses, so with some digging you can actually find hex values for everything he documented.
; $F4864-$F4867 DATA
pool Eyegore:
{
.timers
db $60, $80, $A0, $80
^^ places like these are amongst the easiest things you can edit without asm knowledge, that's basically four hex bytes only.
Founder- Since : 2012-06-19
Re: editing enemy damage class weaknesses/immunities
Here's an exemple... I opened the chicken file:
Found this particularly interesting part:
; Begin spawning attack chickens if the player has hit this chicken
; too many times.
LDA $0DA0, X : CMP.b #$23 : BCC .anospawn_attack_chicken
Isolated the 0x32649 hex address as the number of times you need to hit them before their special attack...
...and then changed the default value of 23 to 01 instead, just for fun...
^^and there's the results of less then 20 minutes of digging!
- Code:
; ==============================================================================
; \unused Presumably
; $32540-$325BF DATA
{
dw -24, -8, 8, 24, -24, -8, 8, 24
dw -24, -8, 8, 24, -24, -8, 8, 24
dw -22, -7, 7, 22, -22, -7, 7, 22
dw -22, -7, 7, 22, -22, -7, 7, 22
dw -24, -24, -24, -24, -8, -8, -8, -8
dw 8, 8, 8, 8, 24, 24, 24, 24
dw -22, -22, -22, -22, -7, -7, -7, -7
dw 7, 7, 7, 7, 22, 22, 22, 22
}
; $325C0-$325C1 DATA
{
.h_flip
db $40, $00
}
; ==============================================================================
; *$325C2-$326B0 JUMP LOCATION
Sprite_Chicken:
{
LDA $0D50, X : BEQ .x_speed_at_rest
; Change h-flip status mainly when
ASL A : ROL A : AND.b #$01 : TAY
LDA $0F50, X : AND.b #$BF : ORA .h_flip, Y : STA $0F50, X
.x_speed_at_rest
JSR Sprite_PrepAndDrawSingleLarge
LDA $0EB0, X : BEQ .not_transmutable_to_human
LDA.b #$3D : STA $0E20, X
JSL Sprite_LoadProperties
INC $0E30, X
LDA.b #$30 : STA $0DF0, X
LDA.b #$15 : STA $012E : STA $0BA0, X
RTS
.not_transmutable_to_human
LDA $0DD0, X : CMP.b #$0A : BNE .not_being_held_by_player
LDA.b #$03 : STA $0D80, X
LDA $11 : BNE .inactive_game_submodule
JSR Chicken_SlowAnimate
JSR Chicken_DrawDistressMarker
LDA $1A : AND.b #$0F : BNE .no_bawk_bawk
JSR Chicken_BawkBawk
.no_bawk_bawk
.inactive_game_submodule
.not_being_held_by_player
JSR Sprite_CheckIfActive
LDA $0DB0, X : BEQ .not_part_of_horde
LDA $0F50, X : ORA.b #$10 : STA $0F50, X
JSR Sprite_Move
LDA.b #$0C : STA $0F70, X : STA $0BA0, X
TXA : EOR $1A : AND.b #$07 : BNE .horde_damage_delay
JSR Sprite_CheckDamageToPlayer
.horde_damage_delay
JMP Chicken_FastAnimate
.not_part_of_horde
LDA.b #$FF : STA $0E50, X
; Begin spawning attack chickens if the player has hit this chicken
; too many times.
LDA $0DA0, X : CMP.b #$23 : BCC .anospawn_attack_chicken
JSR Chicken_SpawnAvengerChicken
.anospawn_attack_chicken
LDA $0EA0, X : BEQ .no_new_hits_from_player
STZ $0EA0, X
; If saturated, don't make this particular chicken bawk, because the
; others will be doing a lot of it.
LDA $0DA0, X : CMP.b #$23 : BCS .saturated_with_hits
INC $0DA0, X
JSR Chicken_BawkBawk
.saturated_with_hits
LDA.b #$02 : STA $0D80, X
.no_new_hits_from_player
JSR Sprite_CheckDamageFromPlayer
LDA $0D80, X : BEQ .calm
CMP.b #$01 : BEQ Chicken_Hopping
CMP.b #$02 : BNE .aloft
JMP Chicken_FleeingPlayer
.aloft
JMP Chicken_Aloft
.calm
LDA $0DF0, X : BNE .delay_direction_change
JSL GetRandomInt : AND.b #$0F
PHX : TXY
TAX
LDA $05AAE4, X : STA $0D50, Y
LDA $05AAF4, X : STA $0D40, Y
PLX
JSL GetRandomInt : AND.b #$1F : ADC.b #$10 : STA $0DF0, X
INC $0D80, X
.delay_direction_change
STZ $0DC0, X
; *$326AD ALTERNATE ENTRY POINT
shared Chicken_CheckIfLifted:
JSR Sprite_CheckIfLifted
RTS
}
; ==============================================================================
; *$326B1-$326FB BRANCH LOCATION
Chicken_Hopping:
{
TXA : EOR $1A : LSR A : BCC .skip_tile_collision_logic
JSR Chicken_Move_XY_AndCheckTileCollision : BEQ .no_tile_collision
STZ $0D80, X
.no_tile_collision
.skip_tile_collision_logic
JSR Sprite_MoveAltitude
DEC $0F80, X : DEC $0F80, X
LDA $0F70, X : BPL .tick_animation_counter
STZ $0F70, X
LDA $0DF0, X : BNE .delay_hopping_halt
LDA.b #$20 : STA $0DF0, X
STZ $0D80, X
.delay_hopping_halt
LDA.b #$0A : STA $0F80, X
.tick_animation_counter
; *$326E2 ALTERNATE ENTRY POINT
shared Chicken_FastAnimate:
INC $0E80, X
; *$326E5 ALTERNATE ENTRY POINT
shared Chicken_SlowAnimate:
INC $0E80, X : INC $0E80, X : INC $0E80, X
LDA $0E80, X : LSR #4 : AND.b #$01 : STA $0DC0, X
BRA Chicken_CheckIfLifted
}
; ==============================================================================
; *$326FC-$3272E JUMP LOCATION
Chicken_FleeingPlayer:
{
JSR Chicken_CheckIfLifted
JSR Chicken_Move_XY_AndCheckTileCollision
STZ $0F70, X
TXA : EOR $1A : AND.b #$1F : BNE .flee_delay
; *$3270C ALTERNATE ENTRY POINT
shared Chicken_SetFleePlayerSpeeds:
LDA.b #$10 : JSR Sprite_ProjectSpeedTowardsPlayer
LDA $00 : EOR.b #$FF : INC A : STA $0D40, X
LDA $01 : EOR.b #$FF : INC A : STA $0D50, X
.flee_delay
INC $0E80, X
JSR Chicken_FastAnimate
; *$32727 ALTERNATE ENTRY POINT
shared Chicken_DrawDistressMarker:
JSR Sprite_PrepOamCoord
JSL Sprite_DrawDistressMarker
RTS
}
; ==============================================================================
; *$3272F-$3278D LONG
Sprite_DrawDistressMarker:
{
LDA $1A : STA $06
; *$32733 ALTERNATE ENTRY POINT
shared Sprite_CustomTimedDrawDistressMarker:
; Allocate some oam space...
LDA.b #$10 : JSL OAM_AllocateFromRegionA
LDA $06 : AND.b #$18 : BEQ .return
PHX
LDX.b #$03
LDY.b #$00
.next_oam_entry
PHX : PHX
TXA : ASL A : TAX
REP #$20
LDA $00 : ADD.l .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E
LDA $02 : ADD.l .y_offsets, X : INY : STA ($90), Y
ADD.w #$0010 : CMP.w #$0100 : SEP #$20 : BCC .on_screen_y
LDA.b #$F0 : STA ($90), Y
.on_screen_y
PLX
LDA.b #$83 : INY : STA ($90), Y
LDA.b #$22 : INY : STA ($90), Y
PHY : TYA : LSR #2 : TAY
LDA $0F : STA ($92), Y
PLY : INY
PLX : DEX : BPL .next_oam_entry
PLX
.return
RTL
}
; ==============================================================================
; *$3278E-$327B7 LOCAL
Chicken_Aloft:
{
JSR Chicken_Move_XYZ_AndCheckTileCollision : BEQ .no_tile_collision
JSR Sprite_Invert_XY_Speeds
JSR Sprite_Move
JSR Sprite_Halve_XY_Speeds
JSR Sprite_Halve_XY_Speeds
JSR Chicken_BawkBawk
.no_tile_collision
DEC $0F80, X
LDA $0F70, X : BPL .not_grounded
STZ $0F70, X
LDA.b #$02 : STA $0D80, X
JMP Chicken_SetFleePlayerSpeeds:
.not_grounded
JMP Chicken_FastAnimate
}
; ==============================================================================
; *$327B8-$327C2 ALTERNATE ENTRY POINT
Chicken_Move_XYZ_AndCheckTileCollision:
{
JSR Sprite_MoveAltitude
; $327BB ALTERNATE ENTRY POINT
shared Chicken_Move_XY_AndCheckTileCollision:
JSR Sprite_Move
JSL Sprite_CheckTileCollisionLong
RTS
}
; ==============================================================================
; $327C3-$327D2 DATA
pool Sprite_DrawDistressMarker:
{
; \task Name this pool / routine.
.x_offsets
dw -3, 2, 7, 11
.y_offsets
dw -5, -7, -7, -5
}
; ==============================================================================
; *$327D3-$32852 LOCAL
Chicken_SpawnAvengerChicken:
{
TXA : EOR $1A : AND.b #$0F : ORA $1B : BNE .spawn_delay
LDA.b #$0B
LDY.b #$0A
JSL Sprite_SpawnDynamically.arbitrary : BMI .spawn_failed
PHX
TYX
LDA.b #$1E : JSL Sound_SetSfx3PanLong
PLX
LDA.b #$01 : STA $0DB0, Y
PHX
JSL GetRandomInt : STA $0F : AND.b #$02 : BEQ .vertical_entry_point
LDA $0F : ADC $E2 : STA $0D10, Y
LDA $E3 : ADC.b #$00 : STA $0D30, Y
LDA $0F : AND.b #$01 : TAX
LDA $9F3C, X : ADC $E8 : STA $0D00, Y
LDA $E9 : ADC.b #$00 : STA $0D20, Y
BRA .set_velocity
.vertical_entry_point
LDA $0F : ADC $E8 : STA $0D00, Y
LDA $E9 : ADC.b #$00 : STA $0D20, Y
LDA $0F : AND.b #$01 : TAX
LDA $9F3C, X : ADC $E2 : STA $0D10, Y
LDA $E3 : ADC.b #$00 : STA $0D30, Y
.set_velocity
TYX
LDA.b #$20 : JSR Sprite_ApplySpeedTowardsPlayer
PLX
; *$3284C ALTERNATE ENTRY POINT
shared Chicken_BawkBawk:
LDA.b #$30 : JSL Sound_SetSfx2PanLong
.spawn_failed
.spawn_delay
RTS
}
; ==============================================================================
Found this particularly interesting part:
; Begin spawning attack chickens if the player has hit this chicken
; too many times.
LDA $0DA0, X : CMP.b #$23 : BCC .anospawn_attack_chicken
Isolated the 0x32649 hex address as the number of times you need to hit them before their special attack...
...and then changed the default value of 23 to 01 instead, just for fun...
^^and there's the results of less then 20 minutes of digging!
Founder- Since : 2012-06-19
Re: editing enemy damage class weaknesses/immunities
that does seem as complicated as the beamos edit.
wizzrobemaster- Ganon
- Since : 2015-01-04
Re: editing enemy damage class weaknesses/immunities
You can not just make a sprite which is vulnerable only by arrows to suddenly be vulnerable to sword. This means pretty much the same as before with Beamos (reprograming the sprite).wizrobemaster wrote:how difficult is it to edit the damage class of enemies such as red eyegores and koppies (which can only be killed by arrows) to allow them to get killed by sword strikes or other attacks? is there multiple sprite data that needs to be edited or can it be a few hex codes?
Puzzledude- Since : 2012-06-20
Re: editing enemy damage class weaknesses/immunities
you asked the same thing about damage class editing here:
https://www.zeldix.net/t934-editing-damage-classes
what specifically about the replies given in that topic didn't work?
https://www.zeldix.net/t934-editing-damage-classes
what specifically about the replies given in that topic didn't work?
Re: editing enemy damage class weaknesses/immunities
I found an easier way how to deal with trinexx: change the damage class of the somarian block to 15. that way you do not have to worry about crystal switches getting destroyed. if you find 15 too strong then set the class to one that has a damage half to the fighter sword. it also works against most enemies that require a specific item to kill them and it works against agahnim and ganon when he is invisible. it will also destroy small blade traps. of the bosses not affected, only masked helmasaur king and wart when the fuzzies are attached to him. by changing this damage class, the cane of somaria becomes a lot more versatile. the downside of course is that enemies will not flinch.
wizzrobemaster- Ganon
- Since : 2015-01-04
Similar topics
» The flying floor tiles enemy to be less annoying!
» Attack class of Gold Bees
» Where do I fix the enemy sheet in hex editor?
» enemy sprite data
» Changing price packs that enemy use
» Attack class of Gold Bees
» Where do I fix the enemy sheet in hex editor?
» enemy sprite data
» Changing price packs that enemy use
Zeldix :: Zelda III Hacking :: Requests
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum