PRC8/nwn/nwnprc/trunk/scripts/prc_discmeph.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

73 lines
2.6 KiB
Plaintext

//::///////////////////////////////////////////////
//:: [Disciple of Mephistopheles Feats]
//:: [prc_elemsavant.nss]
//:://////////////////////////////////////////////
//:: Check to see which Disciple of Mephistopheles feats a creature
//:: has and apply the appropriate bonuses.
//:://////////////////////////////////////////////
//:: Created By: Attilla. Modified by Aaon Graywolf
//:: Created On: Jan 8, 2004
//:: Modified by Lockindal Linantal: glove property.
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "prc_feat_const"
// * Applies the Disciple of Mephistopheles's resistances on the object's skin.
// * iLevel = IP_CONST_DAMAGERESIST_*
void DiscMephResist(object oPC, object oSkin, int iResist)
{
if(GetLocalInt(oSkin, "DiscMephResist") == iResist) return;
RemoveSpecificProperty(oSkin, ITEM_PROPERTY_DAMAGE_RESISTANCE,IP_CONST_DAMAGETYPE_FIRE, iResist, 1, "DiscMephResist");
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_FIRE, iResist), oSkin);
SetLocalInt(oSkin, "DiscMephResist", iResist);
}
void HellFireGrasp(object oPC, object oGaunt)
{
if(GetLocalInt(oGaunt, "DiscMephGlove") == 6) return;
RemoveSpecificProperty(oGaunt, IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEBONUS_1d6, 1, -1, "DiscMephGlove", -1, DURATION_TYPE_TEMPORARY);
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEBONUS_1d6), oGaunt, 9999.0);
SetLocalInt(oGaunt, "DiscMephGlove", 6);
}
void RemoveHellFire(object oPC, object oGaunt)
{
if(GetLocalInt(oGaunt, "DiscMephGlove") == 6)
RemoveSpecificProperty(oGaunt, ITEM_PROPERTY_DAMAGE_BONUS, IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEBONUS_1d6, 1, "DiscMephGlove", -1, DURATION_TYPE_TEMPORARY);
}
void main()
{
//Declare main variables.
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
object oGaunt = GetItemInSlot(INVENTORY_SLOT_ARMS, oPC);
object oUnequip = GetItemLastUnequipped();
int iResist = -1;
int iEquip = GetLocalInt(oPC, "ONEQUIP");
if(GetHasFeat(FEAT_FIRE_RESISTANCE_10, oPC))
{
iResist = IP_CONST_DAMAGERESIST_10;
}
else if(GetHasFeat(FEAT_FIRE_RESISTANCE_20, oPC))
{
iResist = IP_CONST_DAMAGERESIST_20;
}
if(GetHasFeat(FEAT_HELLFIRE_GRASP, oPC))
{
if (GetLocalInt(oUnequip, "DiscMephGlove") == 6)
{
if (iEquip == 1) RemoveHellFire(oPC, oUnequip);
}
if (iEquip == 2) HellFireGrasp(oPC, oGaunt);
}
//Apply bonuses accordingly
if(iResist > -1) DiscMephResist(oPC, oSkin, iResist);
}