forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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);
|
|
}
|