Further file organization
Further file organization
This commit is contained in:
75
nwn/nwnprc/trunk/smp/phs_s_imprisonc.nss
Normal file
75
nwn/nwnprc/trunk/smp/phs_s_imprisonc.nss
Normal file
@@ -0,0 +1,75 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: 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));
|
||||
}
|
Reference in New Issue
Block a user