Index: scripts/globals/utils.lua =================================================================== --- scripts/globals/utils.lua (revision 3776) +++ scripts/globals/utils.lua (working copy) @@ -151,6 +151,14 @@ if(resist < 0.5) then resist = 0.5; end + + if(target:getObjType() == TYPE_PC) then + if((((dmg * resist) / target:getMaxHP()) * 100) > 50) then + if(target:getEquipID(SLOT_BACK) == 14646 and (math.random(100) <= 5)) then -- Archon Cape + dmg = 0; + end + end + end return dmg * resist; end; Index: src/map/battleutils.cpp =================================================================== --- src/map/battleutils.cpp (revision 3776) +++ src/map/battleutils.cpp (working copy) @@ -490,17 +490,31 @@ { switch(PArmor->getID()) { - //shadow mantle 10% chance to annual damage + // Shadow Mantle 10% chance to annual damage case 13658: - if (rand()%100 > 10) return originalDamage; - damage = 0; + if (rand()%100 > 10) + { + damage = 0; + } break; + // Archon Cape 5% chance to annul "severe" physical damage + case 10975: + if ((ceil((float)(((float)damage / (float)PChar->GetMaxHP())) * 100)) > 50) + { + if (rand()%100 <= 5) + { + damage = 0; + } + } + break; + default: - return originalDamage; + break; } } + return damage; }