Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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));
|
|
}
|