//:://///////////////////////////////////////////// //:: Lesser Restoration //:: NW_S0_LsRestor.nss //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Removes all supernatural effects related to ability damage, as well as AC, Damage, */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Jan 7, 2002 //::////////////////////////////////////////////// #include "x2_inc_spellhook" #include "wog_horse_inc" // return TRUE if the effect created by a supernatural force and can't be dispelled by spells int GetIsSupernaturalCurse(effect eEff); void main() { /* Spellcast Hook Code Added 2003-06-23 by GeorgZ 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 //Declare major variables object oTarget = GetSpellTargetObject(); effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_LESSER); effect eBad = GetFirstEffect(oTarget); //Search for negative effects while(GetIsEffectValid(eBad)) { if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE) { //Remove effect if it is negative. if(!GetIsSupernaturalCurse(eBad)) RemoveEffect(oTarget, eBad); } eBad = GetNextEffect(oTarget); } //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_LESSER_RESTORATION, FALSE)); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget); } int GetIsSupernaturalCurse(effect eEff) { object oCreator = GetEffectCreator(eEff); if(GetTag(oCreator) == "q6e_ShaorisFellTemple") return TRUE; object horseEffects = GetEffectCreatorObject(WOG_HORSE_EFFECT); if (oCreator == horseEffects) return TRUE; return FALSE; }