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

71 lines
2.0 KiB
Plaintext

#include "prc_alterations"
#include "prc_feat_const"
#include "prc_spell_const"
void main()
{
if (!GetHasFeat(FEAT_TURN_UNDEAD, OBJECT_SELF))
{
SpeakStringByStrRef(40550);
return;
}
int nClericLevel = GetLevelByClass(CLASS_TYPE_CLERIC);
int nPaladinLevel = GetLevelByClass(CLASS_TYPE_PALADIN);
int nBlackguardlevel = GetLevelByClass(CLASS_TYPE_BLACKGUARD);
int nHospLevel = GetLevelByClass(CLASS_TYPE_HOSPITALER);
int nSolLevel = GetLevelByClass(CLASS_TYPE_SOLDIER_OF_LIGHT);
int nTNLevel = GetLevelByClass(CLASS_TYPE_TRUENECRO);
int nTotalLevel = GetHitDice(OBJECT_SELF);
int nTurnLevel = nClericLevel;
int nClassLevel = nClericLevel;
int nAlign = GetAlignmentGoodEvil(OBJECT_SELF);
// GZ: Since paladin levels stack when turning, blackguard levels should stack as well
// GZ: but not with the paladin levels (thus else if).
if(nTNLevel > 0)
{
nClassLevel += (nTNLevel);
nTurnLevel += (nTNLevel);
}
if((nBlackguardlevel - 2) > 0 && (nBlackguardlevel > nPaladinLevel))
{
nClassLevel += (nBlackguardlevel - 2);
nTurnLevel += (nBlackguardlevel - 2);
}
else if((nPaladinLevel - 2) > 0)
{
nClassLevel += (nPaladinLevel -2);
nTurnLevel += (nPaladinLevel - 2);
}
if((nHospLevel - 2) > 0)
{
nClassLevel += (nHospLevel -2);
nTurnLevel += (nHospLevel - 2);
}
if ( nAlign == ALIGNMENT_GOOD)
{
nClassLevel += nSolLevel;
nTurnLevel += nSolLevel;
}
object oTarget = PRCGetSpellTargetObject();
int nDC = 10 + GetAbilityModifier(ABILITY_CHARISMA) + nTurnLevel/2;
if (!FortitudeSave(oTarget,nDC))
{
effect eVis = EffectVisualEffect(VFX_IMP_HARM);
effect eDmg = EffectDamage(d8(nClassLevel/2),DAMAGE_TYPE_DIVINE,DAMAGE_POWER_ENERGY);
effect eLink =EffectLinkEffects(eVis,eDmg);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eLink,oTarget);
}
DecrementRemainingFeatUses(OBJECT_SELF, FEAT_TURN_UNDEAD);
}