PRC8/trunk/include/spinc_engimm.nss
Jaysyn904 1662218bb4 Initial upload.
Adding base PRC 4.19a files to repository.
2022-10-07 13:51:24 -04:00

40 lines
1.4 KiB
Plaintext

///////////////////////////////////////////////////////////////////////////
//
// DoEnergyImmunity - Apply a 24 hour immunity to one element to the
// target.
// nDamageType - the damage type (DAMAGE_TYPE_xxx) to be immune to
// nVfx - The visual effect to use at cast time.
//
///////////////////////////////////////////////////////////////////////////
#include "prc_inc_spells"
void DoEnergyImmunity (int nDamageType, int nVfx)
{
PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION);
object oTarget = PRCGetSpellTargetObject();
// Determine the duration
float fDuration = PRCGetMetaMagicDuration(HoursToSeconds(24));
// Build a list of the duration effects which includes the actually immunity
// effect and all visual effects.
effect eList = EffectDamageResistance(nDamageType, 9999, 0);
effect eDur = EffectVisualEffect(VFX_DUR_PROTECTION_ELEMENTS);
eList = EffectLinkEffects(eList, eDur);
eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
eList = EffectLinkEffects(eList, eDur);
// Fire cast spell at event for the specified target
PRCSignalSpellEvent(oTarget, FALSE, SPELL_ENERGY_IMMUNITY);
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eList, oTarget, fDuration, TRUE, -1, PRCGetCasterLevel(OBJECT_SELF));
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nVfx), oTarget);
PRCSetSchool();
}
// Test main
//void main(){}