forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
86 lines
2.7 KiB
Plaintext
86 lines
2.7 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Death Knell
|
|
//:: prc_blm_dthknell.nss
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
If target creature with less than 10 HP fails save
|
|
caster gains 1d8 temp HP, +2 Str, and +1 Caster level
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Stratovarius
|
|
//:: Created On: Sept 3, 2005
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_alterations"
|
|
#include "prc_inc_spells"
|
|
#include "prc_add_spell_dc"
|
|
|
|
void DeathKnellCheck(object oPC)
|
|
{
|
|
if (!GetHasSpellEffect(2086, oPC)) // Death Knell
|
|
{
|
|
DeleteLocalInt(oPC, "DeathKnell");
|
|
}
|
|
else
|
|
{
|
|
DelayCommand(6.0, DeathKnellCheck(oPC));
|
|
}
|
|
}
|
|
|
|
void main()
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY);
|
|
|
|
//Declare major variables
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
int iHP = GetCurrentHitPoints(oTarget);
|
|
int nCaster = PRCGetCasterLevel(OBJECT_SELF);
|
|
int nDuration = nCaster;
|
|
int nBonus = d8(1);
|
|
int nPenetr = nCaster + SPGetPenetr();
|
|
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH, 2);
|
|
effect eHP = EffectTemporaryHitpoints(nBonus);
|
|
|
|
effect eVis2 = EffectVisualEffect(VFX_IMP_DEATH_L);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID);
|
|
|
|
|
|
effect eLink = EffectLinkEffects(eStr, eDur);
|
|
|
|
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
|
|
//Resist magic check
|
|
|
|
if (iHP < 10)
|
|
{
|
|
if(!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr))
|
|
{
|
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF)))
|
|
{
|
|
//Apply the VFX impact and effects
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oTarget);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget);
|
|
|
|
|
|
//Apply the bonuses to the PC
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, OBJECT_SELF, TurnsToSeconds(nDuration),TRUE,-1,nCaster);
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, OBJECT_SELF, TurnsToSeconds(nDuration),TRUE,-1,nCaster);
|
|
SetLocalInt(OBJECT_SELF, "DeathKnell", TRUE);
|
|
DelayCommand(9.0, DeathKnellCheck(OBJECT_SELF));
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
FloatingTextStringOnCreature("*Death Knell failure: The target isn't weak enough*", OBJECT_SELF, FALSE);
|
|
}
|
|
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
// Getting rid of the local integer storing the spellschool name
|
|
} |