//:://///////////////////////////////////////////// //:: Heal //:: [NW_S0_Heal.nss] //:: Copyright (c) 2000 Bioware Corp. //::////////////////////////////////////////////// //:: Heals the target to full unless they are undead. //:: If undead they reduced to 1d4 HP. //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Jan 12, 2001 //::////////////////////////////////////////////// //:: Update Pass By: Preston W, On: Aug 1, 2001 //:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff //::Added code to maximize for Faith Healing and Blast Infidel //::Aaon Graywolf - Jan 7, 2004 #include "spinc_common" #include "NW_I0_SPELLS" #include "x2_inc_spellhook" void main() { DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION); /* 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 eKill, eHeal; int nDamage, nHeal, nModify, nMetaMagic, nTouch; int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF); effect eSun = EffectVisualEffect(VFX_IMP_SUNSTRIKE); effect eHealVis = EffectVisualEffect(VFX_IMP_HEALING_X); //Check to see if the target is an undead if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) { if(!GetIsReactionTypeFriendly(oTarget)) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEAL)); //Make a touch attack if (TouchAttackMelee(oTarget)) { //Make SR check if (!MyPRCResistSpell(OBJECT_SELF, oTarget)) { //Roll damage nModify = d4(); nMetaMagic = GetMetaMagicFeat(); //Make metamagic check int iBlastFaith = BlastInfidelOrFaithHeal(OBJECT_SELF, oTarget, DAMAGE_TYPE_POSITIVE, TRUE); if (nMetaMagic == METAMAGIC_MAXIMIZE || iBlastFaith) { nModify = 1; } //Figure out the amount of damage to inflict nDamage = GetCurrentHitPoints(oTarget) - nModify; if(nDamage > 150) nDamage = 150; //Set damage eKill = EffectDamage(nDamage, DAMAGE_TYPE_POSITIVE); //Apply damage effect and VFX impact SPApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget); SPApplyEffectToObject(DURATION_TYPE_INSTANT, eSun, oTarget); } } } } else { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEAL, FALSE)); //Figure out how much to heal nHeal = GetMaxHitPoints(oTarget); if(nHeal > 150) nHeal = 150; //Set the heal effect eHeal = EffectHeal(nHeal); //Apply the heal effect and the VFX impact SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHealVis, oTarget); SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); // Code for FB to remove damage that would be caused at end of Frenzy SetLocalInt(oTarget, "PC_Damage", 0); } DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); // Getting rid of the local integer storing the spellschool name }