ERF V1.0heablimit_equipablimit_equipablimit_unequipablimit_unequipExportInfo@\ J%3X@NCS V1.0B WABLimit7   7dcf8 f9  f:  f;       fNormAB7b8 %N9 %Y: %l; %X/,$)a >Le //ArcaneArcher AB Limit V1 By The Killer AkA The Scripter //OnEquip Script (Module) void main() { int iLimit = 15; object oItem = GetPCItemLastEquipped(); object oPC = GetPCItemLastEquippedBy(); int iAA = GetLevelByClass(CLASS_TYPE_ARCANE_ARCHER,oPC); SetLocalInt(GetModule(),"ABLimit",iLimit); if((GetBaseItemType(oItem) == BASE_ITEM_LONGBOW) || (GetBaseItemType(oItem) == BASE_ITEM_SHORTBOW)) { itemproperty ipProperty = GetFirstItemProperty(oItem); int iAB; int iType; int iSubType; itemproperty ipAB; while(GetIsItemPropertyValid(ipProperty)) { if(((GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS) || (GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP) || (GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP) || (GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT)) && (GetItemPropertyCostTableValue(ipProperty) > iLimit) && (iAA > 10)) { iSubType = GetItemPropertySubType(ipProperty); iType = GetItemPropertyType(ipProperty); iAB = GetItemPropertyCostTableValue(ipProperty); SetLocalInt(oItem,"NormAB",iAB); RemoveItemProperty(oItem,ipProperty); switch (iType) { case ITEM_PROPERTY_ATTACK_BONUS: ipAB = ItemPropertyAttackBonus(iLimit);break; case ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP: ipAB = ItemPropertyAttackBonusVsAlign(iSubType,iLimit);break; case ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP: ipAB = ItemPropertyAttackBonusVsRace(iSubType,iLimit);break; case ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT: ipAB = ItemPropertyAttackBonusVsSAlign(iSubType,iLimit);break; } DelayCommand(0.2,AddItemProperty(DURATION_TYPE_PERMANENT,ipAB,oItem)); } ipProperty = GetNextItemProperty(oItem); } } } NCS V1.0BJ NormAB3NormAB3ABLimit3 dcrf8 f9  f:  f;  fb8 %N9 %Y: %l; %X/,)a >Le //ArcaneArcher AB Limit V1 By The Killer AkA The Scripter //OnUnEquip Script (Module) void main() { object oItem = GetPCItemLastUnequipped(); object oPC = GetPCItemLastUnequippedBy(); int iAB = GetLocalInt(oItem,"NormAB"); int iType; int iSubType; itemproperty ipAB; itemproperty ipProperty; if((GetLocalInt(oItem,"NormAB")) >= (GetLocalInt(GetModule(),"ABLimit"))) { ipProperty = GetFirstItemProperty(oItem); while(GetIsItemPropertyValid(ipProperty)) { if((GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS) || (GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP) || (GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP) || (GetItemPropertyType(ipProperty) == ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT)) { iSubType = GetItemPropertySubType(ipProperty); iType = GetItemPropertyType(ipProperty); RemoveItemProperty(oItem,ipProperty); switch (iType) { case ITEM_PROPERTY_ATTACK_BONUS: ipAB = ItemPropertyAttackBonus(iAB);break; case ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP: ipAB = ItemPropertyAttackBonusVsAlign(iSubType,iAB);break; case ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP: ipAB = ItemPropertyAttackBonusVsRace(iSubType,iAB);break; case ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT: ipAB = ItemPropertyAttackBonusVsSAlign(iSubType,iAB);break; } DelayCommand(0.2,AddItemProperty(DURATION_TYPE_PERMANENT,ipAB,oItem)); } ipProperty = GetNextItemProperty(oItem); } } } GFF V3.28dH$ (08@         Mod_MinGameVerExpansion_PackCommentsTopResRefResTypeDependenciesMissing1.60add ablimit_equip to the onequip event of the module and ablimit_unequip to the onunequip event Scripter By The Killer AkA The Scripter ablimit_equipablimit_unequip ablimit_equip ablimit_equipablimit_unequipablimit_unequip