Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
130
trunk/users/Tenjac/spells/sp_invcs.nss
Normal file
130
trunk/users/Tenjac/spells/sp_invcs.nss
Normal file
@@ -0,0 +1,130 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: 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();
|
||||
}
|
Reference in New Issue
Block a user