PRC8/nwn/nwnprc/trunk/scripts/prc_dreadnecro.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

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