//:://///////////////////////////////////////////// //:: Shield //:: x0_s0_shield.nss //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Immune to magic Missile +4 general AC DIFFERENCES: should be +7 against one opponent but this cannot be done. Duration: 1 turn/level */ //::////////////////////////////////////////////// //:: Created By: Brent Knowles //:: Created On: July 15, 2002 //::////////////////////////////////////////////// //:: Last Update By: Andrew Nobbs May 01, 2003 //:: altered by mr_bumpkin Dec 4, 2003 for prc stuff #include "prc_alterations" #include "x2_inc_spellhook" void ShieldDuration() { object oCaster = OBJECT_SELF; object oTarget = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, OBJECT_SELF, 1, -1, -1, -1, -1); if (GetHasSpellEffect(SPELL_SHADOWSHIELD)) { if ( !GetHasFeat(FEAT_SA_SHIELDSHADOW)) { PRCRemoveSpellEffects(SPELL_SHADOWSHIELD,oCaster,oCaster); return; } else DecrementRemainingFeatUses(oCaster,FEAT_SA_SHIELDSHADOW); DelayCommand(6.0f,ShieldDuration() ); } } void main() { DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION); /* 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()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook if (GetHasSpellEffect(SPELL_SHADOWSHIELD)) { PRCRemoveSpellEffects(SPELL_SHADOWSHIELD,OBJECT_SELF,OBJECT_SELF); IncrementRemainingFeatUses(OBJECT_SELF,FEAT_SA_SHIELDSHADOW); return; } //Declare major variables object oTarget = OBJECT_SELF; effect eVis = EffectVisualEffect(VFX_IMP_AC_BONUS); int nMetaMagic = PRCGetMetaMagicFeat(); int nClass = GetLevelByClass(CLASS_TYPE_SHADOW_ADEPT,OBJECT_SELF); effect eArmor = EffectACIncrease(4, AC_SHIELD_ENCHANTMENT_BONUS); effect eSpell = EffectSpellImmunity(SPELL_MAGIC_MISSILE); effect eSpell2 = EffectSpellImmunity(SPELL_MAJOR_MAGIC_MISSILE); effect eConc = EffectConcealment(20, MISS_CHANCE_TYPE_NORMAL); effect eDur = EffectVisualEffect(VFX_DUR_GLOBE_MINOR); effect eLink = EffectLinkEffects(eArmor, eDur); eLink = EffectLinkEffects(eLink, eSpell); eLink = EffectLinkEffects(eLink, eConc); if ( nClass>7) eLink = EffectLinkEffects(eLink, EffectSpellResistanceIncrease(12+nClass)); //Fire spell cast at event for target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 417, FALSE)); PRCRemoveEffectsFromSpell(OBJECT_SELF, GetSpellId()); //Apply VFX impact and bonus effects ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(eLink), oTarget); DelayCommand(6.0f,ShieldDuration() ); DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); // Erasing the variable used to store the spell's spell school }