Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

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();
}