Files
PoA_PRC8/_haks/poa_exp_spells/sp_close_wounds.nss
Jaysyn904 9405f279d5 2026/04/27 Update
Updated expanded spells & abilities.
Updated PEPS.
Updated Markshire Nomeclature.
Full compile.
2026-04-27 10:21:53 -04:00

71 lines
2.2 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name Close Wounds
//:: FileName sp_close_wounds.nss
//:://////////////////////////////////////////////
/** @file Close Wounds
Conjuration (Healing)
Level: Clr 3, Hlr 3
Components: V
Casting Time: 1 swift action
Range: Close
Target: One creature
Duration: Instantaneous
Saving Throw: Will half (harmless)
Spell Resistance: Yes (harmless)
This spell cures 2d4 points of damage. You can cast
this spell with an instant utterance.
Used against an undead creature, close wounds deals
damage instea of curing the creature (which takes half
damage if it makes a Will saving throw).
**/
//////////////////////////////////////////////////
// Author: Tenjac
// Date: 5.10.06
///////////////////////////////////////////////////
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
if(!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
object oPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nMetaMagic = PRCGetMetaMagicFeat();
int nCasterLvl = PRCGetCasterLevel(oPC);
int nHeal = d4(nCasterLvl)+8;
if(nMetaMagic & METAMAGIC_MAXIMIZE)
nHeal = 8+ (nCasterLvl*4);
if(nMetaMagic & METAMAGIC_EMPOWER)
nHeal += (nHeal/2);
//Damage if undead
if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD
|| (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD))
{
//SR
if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
{
//save for 1/2 dam
nHeal += SpellDamagePerDice(oPC, 2);
if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, oPC), SAVING_THROW_TYPE_POSITIVE))
nHeal = nHeal/2;
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_S), oTarget);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nHeal, DAMAGE_TYPE_POSITIVE), oTarget);
}
}
else
{
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_S), oTarget);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(nHeal, oTarget), oTarget);
}
PRCSetSchool();
}