//:://///////////////////////////////////////////// //:: [Harm] //:: [NW_S0_Harm.nss] //:: Copyright (c) 2000 Bioware Corp. //::////////////////////////////////////////////// //:: Reduces target to 1d4 HP on successful touch //:: attack. If the target is undead it is healed. //::////////////////////////////////////////////// //:: Created By: Keith Soleski //:: Created On: Jan 18, 2001 //:: Modified: 69MEH69 JUL2003 //::////////////////////////////////////////////// //:: VFX Pass By: Preston W, On: June 20, 2001 //:: Update Pass By: Preston W, On: Aug 1, 2001 #include "69_hench_lib" #include "NW_I0_SPELLS" void main() { //Declare major variables object oTarget = GetSpellTargetObject(); int nDamage, nHeal; int nMetaMagic = GetMetaMagicFeat(); int nTouch = TouchAttackMelee(oTarget); effect eVis = EffectVisualEffect(246); effect eVis2 = EffectVisualEffect(VFX_IMP_HEALING_G); effect eHeal, eDam; string sTag = GetTag(oTarget); object oArea = GetArea(oTarget); //Check that the target is undead if (GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) { //Figure out the amount of damage to heal nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget); //Set the heal effect eHeal = EffectHeal(nHeal); //Apply heal effect and VFX impact ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HARM, FALSE)); if(GetIsHenchmanDying(oTarget)) { SetLocalInt(oArea, "nCHP" +sTag, 21); } } else if (nTouch) //== TRUE) 1 or 2 are valid return numbers from TouchAttackMelee { if(!GetIsReactionTypeFriendly(oTarget)) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HARM)); if (!MyResistSpell(OBJECT_SELF, oTarget)) { nDamage = GetCurrentHitPoints(oTarget) - d4(1); //Check for metamagic if (nMetaMagic == METAMAGIC_MAXIMIZE) { nDamage = GetCurrentHitPoints(oTarget) - 1; } eDam = EffectDamage(nDamage,DAMAGE_TYPE_NEGATIVE); //Apply the VFX impact and effects DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } } } }