ON=@GETHIT
IF (<ARGN2> & dam_magic) // splitted if so you can put serv.log to catch errors
IF (<tag0.magicalshield> > 0) // tag0 instead of tag, so if it is not set, it becomes 0
// local variable to calculate the amount absorbed
local.ms_absorb = <qval <argn1> >= <tag0.magicalshield> ? <tag0.magicalshield> : <argn1>>
argn1 -= <local.ms_absorb>
tag.magicalshield -= <local.ms_absorb>
sfx 952
EFFECT 3 i_fx_sparkle_2, 16, 16
resendtooltip=1
// only return 1 if all the damage was mitigated, otherwise go on
IF (<argn1> <= 0)
return 1
ENDIF
ENDIF
ENDIF
// repeat the same as magic shield for physical
IF (<ARGN2> & dam_physical)
IF (<tag0.defenseshield> > 0)
local.ds_absorb = <qval <argn1> >= <tag0.defenseshield> ? <tag0.defenseshield> : <argn1>>
argn1 -= <local.ds_absorb>
tag.defenseshield -= <local.ds_absorb>
EFFECT 3 i_fx_curse, 16, 16
resendtooltip=1
dorand = 3
sfx 952
sfx 953
sfx 954
IF (<argn1> <= 0)
return 1
ENDIF
ENDIF
ENDIF
// ------------------------------------------------- Didn't understand the part below
IF (<eval <tag.defenseshield>> <= 1)
tag.lifeleft <eval <muldiv <hits>,100,<maxhits>>>
tag.defenseshield <eval <tag.defenseshield>>
tag.magicalshield <eval <tag.magicalshield>>
UPDATE 1
resendtooltip=1
ELSEIF (<eval <tag.magicalshield>> <= 1)
tag.lifeleft <eval <muldiv <hits>,100,<maxhits>>>
tag.defenseshield <eval <tag.defenseshield>>
tag.magicalshield <eval <tag.magicalshield>>
UPDATE 1
resendtooltip=1
ENDIF