forked from Jaysyn/PRC8
75 lines
2.8 KiB
Plaintext
75 lines
2.8 KiB
Plaintext
|
/*:://////////////////////////////////////////////
|
|||
|
//:: 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);
|
|||
|
}
|