Index: scripts/globals/magic.lua =================================================================== --- scripts/globals/magic.lua (revision 3801) +++ scripts/globals/magic.lua (working copy) @@ -533,6 +533,34 @@ if(dmg < 0) then dmg = 0; end + + if(target:getObjType() == TYPE_PC) then + if(ammo == 18473 and element == 1 and (math.random(100) <= 5)) then -- Flame Sachet + dmg = utils.absorbMagicDmg(target, dmg); + elseif(ammo == 18474 and element == 5 and (math.random(100) <= 5)) then -- Snow Sachet + dmg = utils.absorbMagicDmg(target, dmg); + elseif(ammo == 18475 and element == 4 and (math.random(100) <= 5)) then -- Breeze Sachet + dmg = utils.absorbMagicDmg(target, dmg); + elseif(ammo == 18476 and element == 2 and (math.random(100) <= 5)) then -- Soil Sachet + dmg = utils.absorbMagicDmg(target, dmg); + elseif(ammo == 18477 and element == 6 and (math.random(100) <= 5)) then -- Thunder Sachet + dmg = utils.absorbMagicDmg(target, dmg); + elseif(ammo == 18478 and element == 3 and (math.random(100) <= 5)) then -- Aqua Sachet + dmg = utils.absorbMagicDmg(target, dmg); + elseif(ammo == 18479 and element == 7 and (math.random(100) <= 5)) then -- Light Sachet + dmg = utils.absorbMagicDmg(target, dmg); + elseif(ammo == 18480 and element == 8 and (math.random(100) <= 5)) then -- Shadow Sachet + dmg = utils.absorbMagicDmg(target, dmg); + end + if((target:getEquipID(SLOT_BODY) == 11354) and (math.random(100) <= 5)) then -- Nocturnus Mail + dmg = utils.absorbMagicDmg(target, dmg); + end + if((target:getEquipID(SLOT_BACK) == 10990) and (math.random(100) <= 5)) then -- Engulfer Cape + dmg = utils.absorbMagicDmg(target, dmg); + elseif(target:getEquipID(SLOT_BACK) == 10993 and element == 0 and (math.random(100) <= 10)) then -- Drachenblut Cape + dmg = utils.absorbMagicDmg(target, dmg); + end + end --handling stoneskin dmg = utils.stoneskin(target, dmg); Index: scripts/globals/utils.lua =================================================================== --- scripts/globals/utils.lua (revision 3801) +++ scripts/globals/utils.lua (working copy) @@ -109,6 +109,14 @@ return dmg * resist; end; +function utils.absorbMagicDmg(target, dmg) -- Elemental Sachets + target:addHP(dmg); + if(dmg > 0) then + target:messageBasic(24,0,dmg); + end + dmg = 0; + return dmg; +end; function utils.breathDmgTaken(target, breathDmg) local resist = 1 + (target:getMod(MOD_UDMGBREATH) / 100);