forked from Jaysyn/PRC8
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.
76 lines
2.4 KiB
Plaintext
76 lines
2.4 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Imprisonment
|
|
//:: Spell FileName PHS_S_ImprisonC
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
This is used, when a PC is in the area, it randomly does globes
|
|
around the area to make it look pretty.
|
|
|
|
Goes in the imprisonment area's on heartbeat.
|
|
|
|
Change: Since it is just a sphere under the earth, uncommented the main
|
|
of this script. Still will be useful for other things however (Planes!)
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_CONSTANTS"
|
|
|
|
// Creates a random globe effect at a random location (using oWP, as the
|
|
// center of the area)
|
|
void GlobeRandom(location lWP);
|
|
|
|
void main()
|
|
{
|
|
/*
|
|
// Get WP
|
|
object oWP = GetWaypointByTag(PHS_S_IMPRISONMENT_TARGET);
|
|
|
|
// Get PC to target
|
|
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oWP);
|
|
|
|
// If not valid, stop
|
|
if(!GetIsObjectValid(oPC)) return;
|
|
|
|
// Get WP location
|
|
location lWP = GetLocation(oWP);
|
|
|
|
// Do 6 of these each heartbeat
|
|
GlobeRandom(lWP);
|
|
GlobeRandom(lWP);
|
|
GlobeRandom(lWP);
|
|
GlobeRandom(lWP);
|
|
GlobeRandom(lWP);
|
|
GlobeRandom(lWP);
|
|
*/
|
|
}
|
|
|
|
// Creates a random globe effect at a random location (using oWP, as the
|
|
// center of the area)
|
|
void GlobeRandom(location lWP)
|
|
{
|
|
// Get a random location around lWP
|
|
// The area is 40x40, so we want a random point up to 20M from the location.
|
|
vector vOld = GetPositionFromLocation(lWP);
|
|
// X and Y are randomly 20M from the centre.
|
|
float fNewX = vOld.x + IntToFloat(Random(40) - 20);
|
|
float fNewY = vOld.y + IntToFloat(Random(40) - 20);
|
|
// Z - it will be 1 to 6 meters
|
|
float fNewZ = vOld.z + IntToFloat(d6());
|
|
vector vNew = Vector(fNewX, fNewY, fNewZ);
|
|
// Create new location
|
|
location lGlobe = Location(OBJECT_SELF, vNew, 0.0);
|
|
|
|
// Declare effects
|
|
effect eGlobe = EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY);
|
|
effect eUse = EffectVisualEffect(VFX_IMP_GLOBE_USE);
|
|
float fRandom = IntToFloat(d6());
|
|
float fDelay = 5.0;
|
|
float fDelayRandom = fRandom + 3.4;
|
|
|
|
// Apply Effects
|
|
DelayCommand(fRandom, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eGlobe, lGlobe, fDelay));
|
|
DelayCommand(fDelayRandom, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eUse, lGlobe));
|
|
}
|