Battledale_PRC8/_removed/nw_s0_shadshld.nss
Jaysyn904 7b9e44ebbb Initial upload
Initial upload.  PRC8 has been added.  Module compiles, PRC's default AI & treasure scripts have been integrated.  Started work on top hak for SLA / Ability / Scripting modifications.
2024-03-11 23:44:08 -04:00

77 lines
2.5 KiB
Plaintext

///::///////////////////////////////////////////////
//:: Shadow Shield
//:: NW_S0_ShadShld.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Grants the caster +5 AC and 10 / +3 Damage
Reduction and immunity to death effects
and negative energy damage for 3 Turns per level.
Makes the caster immune Necromancy Spells
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 22, 2001
//:://////////////////////////////////////////////
#include "x0_i0_spells"
#include "x2_inc_spellhook"
void main()
{
//--------------------------------------------------------------------------
/*
Spellcast Hook Code
Added 2003-06-20 by Georg
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
//--------------------------------------------------------------------------
if (!X2PreSpellCastCode())
{
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget = GetSpellTargetObject();
int nDuration = GetCasterLevel(OBJECT_SELF);
int nMetaMagic = GetMetaMagicFeat();
//Do metamagic extend check
int nDamage=nDuration*10;
if (nDamage>150)
{
nDamage=150;
}
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration *= 2; //Duration is +100%
}
effect eStone = EffectDamageReduction(10, DAMAGE_POWER_PLUS_THREE,nDamage);
effect eAC = EffectACIncrease(5, AC_NATURAL_BONUS);
effect eVis = EffectVisualEffect(VFX_IMP_DEATH_WARD);
effect eShadow = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR);
effect eSpell = EffectSpellLevelAbsorption(9, 0, SPELL_SCHOOL_NECROMANCY);
effect eImmDeath = EffectImmunity(IMMUNITY_TYPE_DEATH);
effect eImmNeg = EffectDamageImmunityIncrease(DAMAGE_TYPE_NEGATIVE, 100);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
//Link major effects
effect eLink = EffectLinkEffects(eStone, eAC);
eLink = EffectLinkEffects(eLink, eVis);
eLink = EffectLinkEffects(eLink, eShadow);
eLink = EffectLinkEffects(eLink, eImmDeath);
eLink = EffectLinkEffects(eLink, eImmNeg);
eLink = EffectLinkEffects(eLink, eDur);
eLink = EffectLinkEffects(eLink, eSpell);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SHADOW_SHIELD, FALSE));
//Apply linked effect
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration));
}