Index: scripts/globals/effects/bio.lua =================================================================== --- scripts/globals/effects/bio.lua (revision 1631) +++ scripts/globals/effects/bio.lua (working copy) @@ -20,8 +20,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; ----------------------------------- Index: scripts/globals/effects/burn.lua =================================================================== --- scripts/globals/effects/burn.lua (revision 1631) +++ scripts/globals/effects/burn.lua (working copy) @@ -20,8 +20,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; ----------------------------------- Index: scripts/globals/effects/choke.lua =================================================================== --- scripts/globals/effects/choke.lua (revision 1631) +++ scripts/globals/effects/choke.lua (working copy) @@ -20,8 +20,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; ----------------------------------- Index: scripts/globals/effects/dia.lua =================================================================== --- scripts/globals/effects/dia.lua (revision 1631) +++ scripts/globals/effects/dia.lua (working copy) @@ -24,8 +24,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; ----------------------------------- Index: scripts/globals/effects/drown.lua =================================================================== --- scripts/globals/effects/drown.lua (revision 1631) +++ scripts/globals/effects/drown.lua (working copy) @@ -20,8 +20,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; ----------------------------------- Index: scripts/globals/effects/frost.lua =================================================================== --- scripts/globals/effects/frost.lua (revision 1631) +++ scripts/globals/effects/frost.lua (working copy) @@ -20,8 +20,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; ----------------------------------- Index: scripts/globals/effects/poison.lua =================================================================== --- scripts/globals/effects/poison.lua (revision 1631) +++ scripts/globals/effects/poison.lua (working copy) @@ -22,8 +22,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; Index: scripts/globals/effects/rasp.lua =================================================================== --- scripts/globals/effects/rasp.lua (revision 1631) +++ scripts/globals/effects/rasp.lua (working copy) @@ -20,8 +20,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; ----------------------------------- Index: scripts/globals/effects/shock.lua =================================================================== --- scripts/globals/effects/shock.lua (revision 1631) +++ scripts/globals/effects/shock.lua (working copy) @@ -20,8 +20,23 @@ ----------------------------------- function onEffectTick(target,effect) - target:delHP(effect:getPower()); - target:wakeUp(); + skin = target:getMod(MOD_STONESKIN); + if(skin>0) then + if(skin >= effect:getPower()) then --absorb all damage + target:delMod(MOD_STONESKIN,effect:getPower()); + if(target:getMod(MOD_STONESKIN)==0) then + target:delStatusEffect(EFFECT_STONESKIN); + end + else --absorbs some damage then wear + target:delMod(MOD_STONESKIN,skin); + target:delStatusEffect(EFFECT_STONESKIN); + target:wakeUp(); + target:delHP(effect:getPower() - skin); + end + else + target:delHP(effect:getPower()); + target:wakeUp(); + end end; -----------------------------------