// 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);
}