forked from Jaysyn/PRC8
133 lines
5.8 KiB
Plaintext
133 lines
5.8 KiB
Plaintext
|
/*:://////////////////////////////////////////////
|
|||
|
//:: Spell Name Weird
|
|||
|
//:: Spell FileName PHS_S_Weird
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: In Game Spell desctiption
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
Illusion (Phantasm) [Fear, Mind-Affecting]
|
|||
|
Level: Sor/Wiz 9
|
|||
|
Components: V, S
|
|||
|
Casting Time: 1 standard action
|
|||
|
Range: Medium (20M)
|
|||
|
Targets: All Hostile creatures in a 5M radius (15ft) sphere
|
|||
|
Duration: Instantaneous
|
|||
|
Saving Throw: Will disbelief (if interacted with), then Fortitude partial;
|
|||
|
see text
|
|||
|
Spell Resistance: Yes
|
|||
|
|
|||
|
This spell functions like phantasmal killer, except it can affect more than
|
|||
|
one creature. You create a phantasmal image of the most fearsome creature
|
|||
|
imaginable to the subject's simply by forming the fears of the subject<63>s
|
|||
|
subconscious mind into something that its conscious mind can visualize: this
|
|||
|
most horrible beast. Only the affected creatures see the phantasmal
|
|||
|
creatures attacking them, though you see the attackers as shadowy shapes.
|
|||
|
|
|||
|
Each target first gets a Will save to recognize the image as unreal. If that
|
|||
|
save fails, the phantasm touches the subject, and the subject must succeed
|
|||
|
on a Fortitude save or die from fear. Even if a subject<63>s Fortitude save
|
|||
|
succeeds, it still takes 3d6 points of damage and is stunned for 1 round.
|
|||
|
The subject also takes 1d4 points of temporary Strength damage.
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Spell Effects Applied / Notes
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
As spell description.
|
|||
|
|
|||
|
This is actually pretty easy. Note there are quite a few immunties :-)
|
|||
|
Its fear and mind affecting.
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Created By: Jasperre
|
|||
|
//::////////////////////////////////////////////*/
|
|||
|
|
|||
|
#include "PHS_INC_SPELLS"
|
|||
|
|
|||
|
void main()
|
|||
|
{
|
|||
|
// Spell hook check
|
|||
|
if(!PHS_SpellHookCheck(PHS_SPELL_WEIRD)) return;
|
|||
|
|
|||
|
// Declare major variables
|
|||
|
object oCaster = OBJECT_SELF;
|
|||
|
object oTarget;
|
|||
|
location lTarget = GetSpellTargetLocation();
|
|||
|
int nSpellSaveDC = PHS_GetSpellSaveDC();
|
|||
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|||
|
int nDam, nStrDam;
|
|||
|
float fDelay;
|
|||
|
// Duration for stunning is 1 round
|
|||
|
float fStunDuration = PHS_GetDuration(PHS_ROUNDS, 1, nMetaMagic);
|
|||
|
// Duration for strength decrease will be 24 hours, a good enough "Temp" time in NwN.
|
|||
|
// * Ability decreases are not done "correctly" anyway
|
|||
|
float fStrengthDuration = PHS_GetDuration(PHS_HOURS, 24, nMetaMagic);
|
|||
|
|
|||
|
// Declare effects
|
|||
|
effect eDamVis = EffectVisualEffect(VFX_IMP_SONIC);
|
|||
|
effect eDeath = EffectDeath();
|
|||
|
// Need to make this supernatural, so that it ignores death immunity.
|
|||
|
eDeath = SupernaturalEffect(eDeath);
|
|||
|
effect eDeathVis = EffectVisualEffect(VFX_IMP_DEATH);
|
|||
|
|
|||
|
// Declare the 2 tempoary effects
|
|||
|
effect eStun = EffectStunned();
|
|||
|
effect eStunDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
|||
|
effect eStunLink = EffectLinkEffects(eStun, eStunDur);
|
|||
|
|
|||
|
// Strength damage
|
|||
|
effect eStrength; //= EffectAbilityDecrease(ABILITY_STRENGTH, d4());
|
|||
|
effect eStrengthDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|||
|
effect eStrengthLink;// = EffectLinkEffects(eStrength, eStrengthDur);
|
|||
|
|
|||
|
// Apply AOE visual
|
|||
|
effect eImpact = EffectVisualEffect(VFX_FNF_WEIRD);
|
|||
|
PHS_ApplyLocationVFX(lTarget, eImpact);
|
|||
|
|
|||
|
// Get the first creature, in a 30ft diameter, 15ft radius.
|
|||
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_FEET_15, lTarget, TRUE);
|
|||
|
while(GetIsObjectValid(oTarget))
|
|||
|
{
|
|||
|
// Needs to be an enemy to kill them. Add PvP check too.
|
|||
|
if(GetIsReactionTypeHostile(oTarget))
|
|||
|
{
|
|||
|
// Random delay before damage or death
|
|||
|
fDelay = PHS_GetRandomDelay(0.1, 1.5);
|
|||
|
|
|||
|
// Fire cast spell at event for the specified target
|
|||
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_WEIRD);
|
|||
|
|
|||
|
// Check spell resistance and immunity
|
|||
|
if(!PHS_SpellResistanceCheck(oCaster, oTarget, fDelay))
|
|||
|
{
|
|||
|
// Make a will save against mind-affecting spells. Immune save.
|
|||
|
if(!PHS_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_MIND_SPELLS, oCaster, fDelay))
|
|||
|
{
|
|||
|
// Make a fortitude save against Mind Spells again.
|
|||
|
if(!PHS_SavingThrow(SAVING_THROW_FORT, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_MIND_SPELLS, oCaster, fDelay))
|
|||
|
{
|
|||
|
// FAIL: Death!
|
|||
|
DelayCommand(fDelay, PHS_ApplyInstantAndVFX(oTarget, eDeathVis, eDeath));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// PASS: Damage, stun and strength decrease.
|
|||
|
nDam = PHS_MaximizeOrEmpower(6, 3, nMetaMagic);
|
|||
|
nStrDam = PHS_MaximizeOrEmpower(4, 1, nMetaMagic);
|
|||
|
|
|||
|
// Do damage straight away, and declare strength link
|
|||
|
DelayCommand(fDelay, PHS_ApplyDamageVFXToObject(oTarget, eDamVis, nDam));
|
|||
|
|
|||
|
// Strength Link
|
|||
|
eStrength = EffectAbilityDecrease(ABILITY_STRENGTH, nStrDam);
|
|||
|
eStrengthLink = EffectLinkEffects(eStrength, eStrengthDur);
|
|||
|
// Apply strength damage
|
|||
|
DelayCommand(fDelay, PHS_ApplyDuration(oTarget, eStrengthLink, fStrengthDuration));
|
|||
|
|
|||
|
// Do stun
|
|||
|
DelayCommand(fDelay, PHS_ApplyDuration(oTarget, eStunLink, fStunDuration));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
// Get the next creature, in a 30ft diameter, 15ft radius.
|
|||
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_FEET_15, lTarget, TRUE);
|
|||
|
}
|
|||
|
}
|