Further file organization
Further file organization
This commit is contained in:
93
nwn/nwnprc/trunk/smp/phs_s_prisspher.nss
Normal file
93
nwn/nwnprc/trunk/smp/phs_s_prisspher.nss
Normal file
@@ -0,0 +1,93 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: 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<6F>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 <20>8<EFBFBD> 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);
|
||||
}
|
Reference in New Issue
Block a user