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.
94 lines
3.9 KiB
Plaintext
94 lines
3.9 KiB
Plaintext
/*:://////////////////////////////////////////////
|
||
//:: Spell Name Prismatic Sphere
|
||
//:: Spell FileName PHS_S_PrisSpher
|
||
//:://////////////////////////////////////////////
|
||
//:: In Game Spell desctiption
|
||
//:://////////////////////////////////////////////
|
||
Abjuration
|
||
Level: Sor/Wiz 7
|
||
Components: V
|
||
Casting Time: 1 standard action
|
||
Range: 3.33M (10 ft.)
|
||
Effect: 3.33M.-radius (10-ft.) sphere centered on you
|
||
Duration: 1 min./level (D)
|
||
Saving Throw: See text
|
||
Spell Resistance: Yes
|
||
|
||
You conjure up an immobile, opaque globe of shimmering, multicolored light
|
||
that surrounds you and protects you from all forms of attack. The sphere
|
||
flashes in all colors of the visible spectrum.
|
||
|
||
Any other creature then yourself with less than 8 HD that is within 6.67M
|
||
(20 feet) of the sphere, which is 10M (30ft) from the centre point, is
|
||
blinded for 2d4x10 minutes by the colors (Spell resistance applies, no save).
|
||
|
||
You can pass into and out of the prismatic sphere and remain near it without
|
||
harm. However, when you’re inside it, the sphere blocks any attempt to
|
||
project something through the sphere such as ranged weapons and including
|
||
spells. Other creatures that attempt to attack you or pass through the
|
||
sphere suffer a random effect of a color, randomly chosen from the table
|
||
below.
|
||
|
||
1d8 Color of Beam Effect
|
||
1 Red 20 points fire damage (Reflex half)
|
||
2 Orange 40 points acid damage (Reflex half)
|
||
3 Yellow 80 points electricity damage (Reflex half)
|
||
4 Green Poison (Kills; Fortitude partial, take 1d6 points of Con damage instead)
|
||
5 Blue Turned to stone (Fortitude negates)
|
||
6 Indigo Insane, as insanity spell (Will negates)
|
||
7 Violet Sent to another plane (Will negates)
|
||
8 Struck by two colors; roll twice more, ignoring any “8” results.
|
||
|
||
Typically, only the upper hemisphere of the globe will exist, since you
|
||
are at the center of the sphere, so the lower half is usually excluded by
|
||
the floor surface you are standing on. The sphere is affected by dispel
|
||
magic as normal.
|
||
//:://////////////////////////////////////////////
|
||
//:: Spell Effects Applied / Notes
|
||
//:://////////////////////////////////////////////
|
||
Changes include the fact it won't do all 7 effects, it is affected by dispel
|
||
magic normally, it has a duration (might extend it higher, its a level 7
|
||
spell).
|
||
|
||
It still is immobile, and does blindness normally too (a second AOE)
|
||
|
||
How does the spell stopping work?
|
||
|
||
Well, it will add a new check into the spell hook. If we cast a spell
|
||
into the AOE's location (can use GetNearestObjectByTag() and distance check)
|
||
but we are not ourselves in it, it will fail.
|
||
|
||
Ranged weapons have 100% miss chance from both inside and outside (100%
|
||
concealment + 100% miss chance applied on enter, whatever).
|
||
//:://////////////////////////////////////////////
|
||
//:: Created By: Jasperre
|
||
//::////////////////////////////////////////////*/
|
||
|
||
#include "PHS_INC_SPELLS"
|
||
|
||
void main()
|
||
{
|
||
// Spell hook check.
|
||
if(!PHS_SpellHookCheck(PHS_SPELL_PRISMATIC_SPHERE)) return;
|
||
|
||
// Declare major variables
|
||
object oCaster = OBJECT_SELF;
|
||
location lTarget = GetSpellTargetLocation();// Should be OBJECT_SELF's location
|
||
int nCasterLevel = PHS_GetCasterLevel();
|
||
int nMetaMagic = PHS_GetMetaMagicFeat();
|
||
// Duration - 1 minute/level
|
||
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel, nMetaMagic);
|
||
|
||
// Declare effects
|
||
effect eAOE = EffectAreaOfEffect(PHS_AOE_PER_PRISMATIC_SPHERE);
|
||
|
||
// Set local integer so that the first ones will not be affected, which
|
||
// is removed after 0.2 seconds.
|
||
string sLocal = PHS_MOVING_BARRIER_START + IntToString(PHS_SPELL_PRISMATIC_SPHERE);
|
||
SetLocalInt(oCaster, sLocal, TRUE);
|
||
DelayCommand(0.2, DeleteLocalInt(oCaster, sLocal));
|
||
|
||
// Apply effects
|
||
PHS_ApplyLocationDuration(lTarget, eAOE, fDuration);
|
||
}
|