//:://///////////////////////////////////////////// //:: [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 //::////////////////////////////////////////////// //:: VFX Pass By: Preston W, On: June 20, 2001 //:: Update Pass By: Preston W, On: Aug 1, 2001 #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; int nHalfHp = GetMaxHitPoints(oTarget)/2; //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)); } else if ((nTouch == 1)||(nTouch ==2)) { if(!GetIsReactionTypeFriendly(oTarget)) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HARM)); if (!MyResistSpell(OBJECT_SELF, oTarget)) { if ((GetCurrentHitPoints(oTarget)) > nHalfHp) { nDamage = GetCurrentHitPoints(oTarget)- nHalfHp; } else {nDamage = d6(2);} 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); } } } }