Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
60 lines
2.2 KiB
Plaintext
60 lines
2.2 KiB
Plaintext
// Dread Necromancer passive abilities.
|
|
|
|
#include "prc_inc_template"
|
|
|
|
void DNDamageResist(object oPC, int nLevel)
|
|
{
|
|
object oSkin = GetPCSkin(oPC);
|
|
if(GetLocalInt(oSkin, "DNDamageResist") == TRUE) return;
|
|
|
|
int nDR;
|
|
if (nLevel >= 15) nDR = IP_CONST_DAMAGERESIST_8;
|
|
else if (nLevel >= 11) nDR = IP_CONST_DAMAGERESIST_6;
|
|
else if (nLevel >= 7) nDR = IP_CONST_DAMAGERESIST_4;
|
|
else if (nLevel >= 2) nDR = IP_CONST_DAMAGERESIST_2;
|
|
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_PIERCING, nDR), oSkin);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SLASHING, nDR), oSkin);
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_BLUDGEONING, nDR), oSkin);
|
|
SetLocalInt(oSkin, "DNDamageResist", TRUE);
|
|
}
|
|
|
|
// Armour Spell Fail reduction
|
|
/*void ReducedASF(object oCreature)
|
|
{
|
|
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oCreature);
|
|
object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCreature);
|
|
object oSkin = GetPCSkin(oCreature);
|
|
int nAC = GetBaseAC(oArmor);
|
|
int nClass = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oCreature);
|
|
int iBonus = GetLocalInt(oSkin, "DreadNecroArmour");
|
|
int nASF = -1;
|
|
itemproperty ip;
|
|
|
|
// First thing is to remove old ASF (in case armor is changed.)
|
|
if (iBonus != -1)
|
|
RemoveSpecificProperty(oSkin, ITEM_PROPERTY_ARCANE_SPELL_FAILURE, -1, iBonus, 1, "DreadNecroArmour");
|
|
|
|
// As long as they meet the requirements, just give em max ASF reduction
|
|
// I know it could cause problems if they have increased ASF, but thats unlikely
|
|
else if (3 >= nAC)
|
|
nASF = IP_CONST_ARCANE_SPELL_FAILURE_MINUS_25_PERCENT;
|
|
|
|
// Apply the ASF to the skin.
|
|
ip = ItemPropertyArcaneSpellFailure(nASF);
|
|
|
|
AddItemProperty(DURATION_TYPE_PERMANENT, ip, oSkin);
|
|
SetLocalInt(oSkin, "DreadNecroArmour", nASF);
|
|
}*/
|
|
|
|
void main()
|
|
{
|
|
//Declare main variables.
|
|
object oPC = OBJECT_SELF;
|
|
int nClass = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC);
|
|
|
|
//if (GetIsPC(oPC)) ReducedASF(oPC);
|
|
if(nClass > 1) DNDamageResist(oPC, nClass);
|
|
if(nClass > 19) ApplyTemplateToObject(TEMPLATE_LICH, oPC);
|
|
}
|