Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
74
trunk/smp/phs_s_stormven.nss
Normal file
74
trunk/smp/phs_s_stormven.nss
Normal file
@@ -0,0 +1,74 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Spell Name Storm of Vengance
|
||||
//:: Spell FileName PHS_S_StormVen
|
||||
//:://////////////////////////////////////////////
|
||||
//:: In Game Spell desctiption
|
||||
//:://////////////////////////////////////////////
|
||||
Creates a storm, level 9,40M range, 120M AOE, and up to 10 rounds of concentration
|
||||
until finnished.
|
||||
|
||||
On Enter: saving throw or deafened for 1d4x10 minutes.
|
||||
2nd round: Acid rain, 1d6 damage to everyone in AOE. No save.
|
||||
3rd round: 6 bolts of lightning. 6 enemies affected. 10d6 reflex electrcity.
|
||||
4th round: Hailstones, for 5d6 points of bludgeoning damage. No save.
|
||||
5th to 10th rounds: Speed reduced by 3/4ths, and 20% miss chance.
|
||||
|
||||
No ranged attacks in the cloud. Spells cast within the area are disrupted unless
|
||||
the caster succeeds on a Concentration check against a DC equal to the storm
|
||||
of vengeance<63>s save DC + the level of the spell the caster is trying to cast.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Spell Effects Applied / Notes
|
||||
//:://////////////////////////////////////////////
|
||||
As above, really!
|
||||
|
||||
Concentration checks are made here in 2 second delay command heartbeats,
|
||||
which are checked for the integer each time in the heartbeat.
|
||||
|
||||
If concentration is broken, the AOE is destroyed.
|
||||
|
||||
Also note that only 1 AOE can be cast in an area. No overlapping.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
#include "PHS_INC_SPELLS"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Spell hook check
|
||||
if(!PHS_SpellHookCheck(PHS_SPELL_STORM_OF_VENGEANCE)) return;
|
||||
|
||||
// Declare major variables
|
||||
object oCaster = OBJECT_SELF;
|
||||
location lTarget = GetSpellTargetLocation();
|
||||
|
||||
// We cannot actually cast it if it'll be in an exisiting AOE
|
||||
object oOtherAOE = GetNearestObjectByTag(PHS_AOE_TAG_PER_STORM_OF_VENGEANCE, oCaster, 1);
|
||||
object oArea = GetArea(oCaster);
|
||||
|
||||
// check distance and validility
|
||||
if(GetIsObjectValid(oOtherAOE) &&
|
||||
GetDistanceBetweenLocations(GetLocation(oOtherAOE), lTarget) <= 120.0)
|
||||
{
|
||||
FloatingTextStringOnCreature("You cannot create another storm which overlaps with an exsisting one", oCaster, FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Must be above ground, and outside, duh!
|
||||
if(GetIsAreaAboveGround(oArea) == AREA_UNDERGROUND ||
|
||||
GetIsAreaInterior(oArea))
|
||||
{
|
||||
FloatingTextStringOnCreature("You cannot cast Storm of Vengeance underground or inside!", oCaster, FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Declare effects
|
||||
effect eAOE = EffectAreaOfEffect(PHS_AOE_PER_STORM_OF_VENGEANCE);
|
||||
effect eImpact = EffectVisualEffect(VFX_FNF_STORM);
|
||||
|
||||
// Get 10 rounds worth of time
|
||||
float fDuration = RoundsToSeconds(10);
|
||||
|
||||
// Apply AOE effects at location
|
||||
PHS_ApplyLocationDurationAndVFX(lTarget, eImpact, eAOE, fDuration);
|
||||
}
|
Reference in New Issue
Block a user