diff options
-rw-r--r-- | db/constants.conf | 1 | ||||
-rw-r--r-- | npc/craft/options.txt | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/db/constants.conf b/db/constants.conf index e96d9c071..6130d40d7 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -2298,6 +2298,7 @@ constants_db: { CSYS_SPECIAL: 32 CSYS_OTHER: 64 CSYS_SAVIOR: 128 + CSYS_SHIELD: 256 comment__: "Easter eggs enum" EE_NONE: 0 diff --git a/npc/craft/options.txt b/npc/craft/options.txt index 22b7f8a71..5ffefe0a1 100644 --- a/npc/craft/options.txt +++ b/npc/craft/options.txt @@ -429,6 +429,14 @@ function script csys_ArmorFix { // Save for csys_BonusCalc @csysArmor=CSYS_ARMOR; + // Shields + if (getiteminfo(getarg(0), ITEMINFO_LOC) == EQP_HAND_L) + @csysArmor=@csysArmor|CSYS_SHIELD; + + // Aegis Shield is special and is not classified as armor + if (compare("aegis shield", strtolower(getitemname(getarg(0))))) + @csysArmor=@csysArmor^CSYS_ARMOR; + // Special sets if (compare("savior", strtolower(getitemname(getarg(0))))) @csysArmor=@csysArmor|CSYS_SAVIOR; @@ -513,6 +521,12 @@ function script csys_BonusCalc { if (@csysArmor & CSYS_ARMOR) .@base=max(1, .@base/4); + // HP/MP/DEF/MDEF for shields? Revert the cap and round it + if (.@var == VAR_ITEMDEFPOWER || .@var == VAR_MAXHPAMOUNT || + .@var == VAR_MDEFPOWER || .@var == VAR_MAXSPAMOUNT) { + if (@csysArmor & CSYS_SHIELD) + .@base*=4; + } return .@base; } |