Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
130 lines
5.0 KiB
Plaintext
130 lines
5.0 KiB
Plaintext
//:://////////////////////////////////////////////
|
|
//:: Name Invoke the Cerulean Sign
|
|
//:: FileName sp_invCS.nss
|
|
//:://////////////////////////////////////////////
|
|
/** @file
|
|
Evocation
|
|
Level: Druid 2, Ranger 2, Bard 3, Cleric 3, Paladin 3, Sorcerer 3, Wizard 3,
|
|
Components: S,
|
|
Casting Time: 1 standard action
|
|
Range: 30 ft.
|
|
Area: Multiple aberrations whose combined total Hit Dice do not exceed twice
|
|
caster level in a spread emanating from the character to the extreme of the range
|
|
Duration: Instantaneous
|
|
Saving Throw: Fortitude negates
|
|
Spell Resistance: No
|
|
|
|
The cerulean sign is an ancient symbol said to embody
|
|
the purity of the natural world, and as such it is
|
|
anathema to aberrations.
|
|
While druids and rangers are the classes most often
|
|
known to cast this ancient spell, its magic is nearly
|
|
universal and can be mastered by all spellcasting classes.
|
|
When you cast this spell, you trace the cerulean sign
|
|
in the air with a hand, leaving a glowing blue rune
|
|
in the air for a brief moment before it flashes and fills
|
|
the area of effect with a pulse of cerulean light.
|
|
Any aberration within the area must make a Fortitude
|
|
saving throw or suffer the following ill effects.
|
|
Closer aberrations are affected first.
|
|
Each effect lasts for 1 round.
|
|
|
|
None: The aberration suffers no ill effect, even if it fails the
|
|
saving throw.
|
|
Sickened: The aberration takes a -2 penalty on attack
|
|
rolls, saving throws, skill checks, and ability checks for 1 round.
|
|
Nauseated: The aberration cannot attack, cast spells, concentrate
|
|
on spells, or do anything but take a single move action for 1 round.
|
|
Dazed: The aberration can take no actions, but has no penalty to
|
|
its Armor Class, for 1 round.
|
|
Stunned: The aberration drops everything held, can't take actions,
|
|
takes a -2 penalty to AC, and loses its Dexterity bonus to AC (if any)
|
|
for 1 round.
|
|
|
|
Once a creature recovers from an effect, it moves up one level on the table.
|
|
Thus, a creature that is stunned by this spell is dazed the round after
|
|
that, nauseated the round after that, sickened the round after that, and
|
|
then recovers fully the next round.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Tenjac
|
|
//:: Created On: 7/13/22
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_sp_func"
|
|
#include "prc_add_spell_dc"
|
|
#include "prc_effect_inc"
|
|
|
|
void DoDrop(object oTarget)
|
|
{
|
|
object oTargetWep = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget);
|
|
object oOffhand = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTarget);
|
|
object oNewWeap = CopyObject(oTargetWep, GetLocation(oTarget));
|
|
object oNewOff = CopyObject(oOffhand, GetLocation(oTarget));
|
|
DestroyObject(oTargetWep);
|
|
DestroyObject(oOffhand);
|
|
}
|
|
|
|
void DoSign(object oTarget)
|
|
{
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FROST_L), oTarget);
|
|
|
|
//2nd round sickened
|
|
DelayCommand(6.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSickened(), oTarget, 6.0f));
|
|
|
|
//3rd round Nauseated
|
|
DelayCommand(12.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectNausea(oTarget, 6.0f), oTarget, 6.0f));
|
|
|
|
//4th round Dazed
|
|
DelayCommand(18.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0f));
|
|
|
|
//5th round Stunned
|
|
DelayCommand(24.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0f));
|
|
DelayCommand(24.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectACDecrease(2), oTarget, 6.0f));
|
|
DelayCommand(24.0f, DoDrop(oTarget));
|
|
|
|
//6th round Dazed
|
|
DelayCommand(30.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0f));
|
|
|
|
//7th round Nauseated
|
|
DelayCommand(36.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectNausea(oTarget, 6.0f), oTarget, 6.0f));
|
|
|
|
//8th round sickened
|
|
DelayCommand(42.0f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSickened(), oTarget, 6.0f));
|
|
}
|
|
|
|
void main()
|
|
{
|
|
if(!X2PreSpellCastCode()) return;
|
|
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
|
|
object oPC = OBJECT_SELF;
|
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
|
int nDice = nCasterLvl * 2;
|
|
location lLoc = GetLocation(oPC);
|
|
int nTargetDice;
|
|
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FROST_L), oPC);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HASTE), oPC);
|
|
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 9.144f, lLocl, FALSE, OBJECT_TYPE_CREATURE);
|
|
|
|
while(GetIsObjectValid && nDice > 0)
|
|
{
|
|
//Aberration
|
|
if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_ABERRATION)
|
|
{
|
|
//Save
|
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oPC)))
|
|
{
|
|
nTargetDice = GetHitDice(oTarget);
|
|
if(nDice >= nTargetDice)
|
|
{
|
|
nDice -= nTargetDice;
|
|
DoSign(oTarget);
|
|
}
|
|
}
|
|
}
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, 9.144f, lLocl, FALSE, OBJECT_TYPE_CREATURE);
|
|
}
|
|
PRCSetSchool();
|
|
} |