PRC8_fork/nwn/nwnprc/trunk/smp/phs_s_imprisonc.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

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));
}