Files
PRC8/nwn/nwnprc/trunk/spells/nw_s1_pulsdrwn.nss
Jaysyn904 48ca4b8acf 2026/01/21 Update
Swapped Disciple of Asmodeus' Summon Glabrezu for Summon Pit Fiend.  Glabrezu aren't devils.
Wisplings can qualify for Warsling Sniper.
Added Maeluth planetouched racialtype.
Maeluth can qualify for Dwarven Defender. Ollam and Ironsoul Forgemaster.
Added Mechanatrix planetouched racialtype.
Updated creature aura scripts to use PRCEffectDamage(), SPApplyEffectToObject() & PRCMySavingThrow().
2026-01-21 16:35:43 -05:00

68 lines
2.3 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Pulse Drown
//:: NW_S1_PulsDrwn
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
CHANGED JANUARY 2003
- does an actual 'drown spell' on each target
in the area of effect.
- Each use of this spells consumes 50% of the
elementals hit points.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watmaniuk
//:: Created On: April 15, 2002
//:://////////////////////////////////////////////
#include "prc_inc_spells"
#include "NW_I0_SPELLS"
void Drown(object oTarget)
{
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
// * certain racial types are immune
if ((GetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT)
&&(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
&&(GetRacialType(oTarget) != RACIAL_TYPE_ELEMENTAL))
{
//Make a fortitude save
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, 20) == FALSE)
{
//Apply the VFX impact and damage effect
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
//Set damage effect to kill the target
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oTarget);
}
}
}
void main ()
{
int nDamage = GetCurrentHitPoints() / 2;
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectDamage(nDamage), OBJECT_SELF);
//Declare major variables
object oTarget;
int bSave = FALSE;
int nIdx;
effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_WATER);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget) == TRUE)
{
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_DROWN));
//Drown(oTarget);
ActionCastSpell(SPELL_DROWN, GetHitDice(OBJECT_SELF), 0, 20, METAMAGIC_NONE, CLASS_TYPE_INVALID, FALSE, TRUE, oTarget);
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
}
}