57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
void CreateObject2(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE);
|
|
//::///////////////////////////////////////////////
|
|
//:: Strong Sonic Trap
|
|
//:: Copyright (c) 2000 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
//:: Will save or the creature is stunned
|
|
//:: for 1 round and 5d4 damage
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: Nov 16, 2001
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
#include "NW_I0_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
//Declare major variables
|
|
object oTarget;
|
|
int nDamage;
|
|
effect eDam;
|
|
effect eStun = EffectStunned();
|
|
effect eFNF = EffectVisualEffect(VFX_FNF_SOUND_BURST);
|
|
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
|
effect eLink = EffectLinkEffects(eStun, eMind);
|
|
//effect eDam;
|
|
//Apply the FNF to the spell location
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eFNF, GetLocation(GetEnteringObject()));
|
|
//Get the first target in the spell area
|
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM,GetLocation(GetEnteringObject()));
|
|
while (GetIsObjectValid(oTarget))
|
|
{
|
|
//Roll damage
|
|
nDamage = d4(5);
|
|
//Make a Will roll to avoid being stunned
|
|
if(!MySavingThrow(SAVING_THROW_WILL, oTarget, 17, SAVING_THROW_TYPE_SONIC))
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3));
|
|
}
|
|
//Set the damage effect
|
|
eDam = EffectDamage(nDamage, DAMAGE_TYPE_SONIC);
|
|
//Apply the VFX impact and damage effect
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam,oTarget);
|
|
//Get the next target in the spell area
|
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM,GetLocation(GetEnteringObject()));
|
|
}
|
|
//respawn trap
|
|
DelayCommand(598.0, CreateObject2(GetObjectType(OBJECT_SELF), GetResRef(OBJECT_SELF), GetLocation(OBJECT_SELF)));
|
|
DelayCommand(600.0, DestroyObject(OBJECT_SELF));
|
|
}
|
|
|
|
void CreateObject2(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE)
|
|
{
|
|
CreateObject(nObjectType, sTemplate, lLocation, bUseAppearAnimation);
|
|
return;
|
|
}
|