Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system. Added PC deleter. Added ACP 4.1. Full compile. Updated release archive.
75 lines
2.7 KiB
Plaintext
75 lines
2.7 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Gaze: Fear
|
|
//:: NW_S1_GazeFear
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Cone shape that affects all within the AoE if they
|
|
fail a Will Save.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: May 9, 2001
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_inc_spells"
|
|
#include "NW_I0_SPELLS"
|
|
//#include "wm_include"
|
|
#include "x0_i0_match"
|
|
|
|
void main()
|
|
{
|
|
//--------------------------------------------------------------------------
|
|
// Make sure we are not blind
|
|
//--------------------------------------------------------------------------
|
|
if (PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF))
|
|
{
|
|
FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE);
|
|
return;
|
|
}
|
|
|
|
//if (WildMagicOverride()) { return; }
|
|
|
|
//:: Declare major variables
|
|
object oNPC = OBJECT_SELF;
|
|
object oTarget;
|
|
|
|
int nHD = GetHitDice(oNPC);
|
|
int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC);
|
|
int nDC = 10 +nCHAMod+ (nHD/2);
|
|
int nDuration = 1 + (nHD / 3);
|
|
if(nDuration == 0) { nDuration = 1; }
|
|
nDuration = GetScaledDuration(nDuration , oTarget);
|
|
|
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
|
|
|
effect eGaze = EffectFrightened();
|
|
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
|
|
effect eLink = EffectLinkEffects(eGaze, eVisDur);
|
|
eLink = EffectLinkEffects(eLink, eDur);
|
|
|
|
//Get first target in spell area
|
|
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
nDuration = GetScaledDuration(nDuration , oTarget);
|
|
if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC)
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_FEAR));
|
|
//Determine effect delay
|
|
float fDelay = GetDistanceBetween(oNPC, oTarget)/20;
|
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, oNPC, fDelay))
|
|
{
|
|
//Apply the VFX impact and effects
|
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)));
|
|
}
|
|
}
|
|
//Get next target in spell area
|
|
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE);
|
|
}
|
|
}
|
|
|