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.
68 lines
2.5 KiB
Plaintext
68 lines
2.5 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Hallucinatory Terrain: On Heartbeat (AOE)
|
|
//:: Spell FileName PHS_S_HallTerrnC
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
It has a special (hidden!) Will Save for this spell, when they enter in the
|
|
area and stay in for a cirtain number of rounds.
|
|
|
|
Choose the terrain from a preset list. Bioware's "tilemagic" is what is used,
|
|
IE the visual effect is a terrain piece.
|
|
|
|
The AOE is placed via. the use of a placeable, which also has the correct
|
|
visual applied to it.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Check AOE
|
|
if(!PHS_CheckAOECreator()) return;
|
|
|
|
// Declare major variables
|
|
object oTarget;
|
|
object oCaster = GetAreaOfEffectCreator();
|
|
object oSelf = OBJECT_SELF;
|
|
int nSpellSaveDC = PHS_GetAOESpellSaveDC();
|
|
int nMetaMagic = PHS_GetAOEMetaMagic();
|
|
string sName = "PHS_HALL";
|
|
int nTurnsIn, nWill, nRoll;
|
|
|
|
// Start cycling through the AOE Object for viable targets
|
|
oTarget = GetFirstInPersistentObject(OBJECT_SELF, OBJECT_TYPE_CREATURE);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
// Won't bother checking for people who know its an illusion
|
|
if(!GetFactionEqual(oTarget, oCaster))
|
|
{
|
|
// We store a local variable on us until they are in the AOE for a
|
|
// while.
|
|
nTurnsIn = PHS_IncreaseStoredInteger(oSelf, sName + ObjectToString(oTarget));
|
|
|
|
// Need to have been in for an amount of rounds which is
|
|
// 5 - nWill/5. Once we are, great!
|
|
nWill = GetWillSavingThrow(oTarget);
|
|
if(5 - (nWill/5) >= nTurnsIn)
|
|
{
|
|
nRoll = d20();
|
|
// We will do a will save
|
|
if((nRoll + nWill >= nSpellSaveDC || nRoll == 20) &&
|
|
(nRoll != 1))
|
|
{
|
|
// Fire cast spell at event for the affected target
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_HALLUCINATORY_TERRAIN);
|
|
|
|
// We tell them
|
|
FloatingTextStringOnCreature("*You see the terrain around you is an illusion*", oTarget, FALSE);
|
|
}
|
|
}
|
|
}
|
|
//Get next target.
|
|
oTarget = GetNextInPersistentObject(OBJECT_SELF, OBJECT_TYPE_CREATURE);
|
|
}
|
|
}
|