HoS_PRC8/_mod/_module/nss/uber_spawn.nss
Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

90 lines
2.8 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name x2_def_spawn
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Default On Spawn script
2003-07-28: Georg Zoeller:
If you set a ninteger on the creature named
"X2_USERDEFINED_ONSPAWN_EVENTS"
The creature will fire a pre and a post-spawn
event on itself, depending on the value of that
variable
1 - Fire Userdefined Event 1510 (pre spawn)
2 - Fire Userdefined Event 1511 (post spawn)
3 - Fire both events
*/
//:://////////////////////////////////////////////
//:: Created By: Keith Warner, Georg Zoeller
//:: Created On: June 11/03
//:://////////////////////////////////////////////
const int EVENT_USER_DEFINED_PRESPAWN = 1510;
const int EVENT_USER_DEFINED_POSTSPAWN = 1511;
void fnPersistentVFX(string sVFX)
{
object oMe=OBJECT_SELF;
effect eVFX;
int nVFX;
int nType; // 0=permanent, #=reapply every # seconds
if (sVFX=="shad") nVFX=VFX_DUR_PROT_SHADOW_ARMOR;
else if (sVFX=="stone") nVFX=VFX_DUR_PROT_STONESKIN;
else if (sVFX=="bark") nVFX=VFX_DUR_PROT_BARKSKIN;
else if (sVFX=="tent") nVFX=VFX_DUR_TENTACLE;
else if (sVFX=="ghost") { nVFX=VFX_DUR_GHOST_TRANSPARENT;
eVFX=EffectCutsceneGhost();
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVFX,oMe,10000.0); }
else if (sVFX=="dark") nVFX=VFX_DUR_DARKNESS;
else if (sVFX=="fire") { nVFX=VFX_IMP_FLAME_M; nType=2; }
else if (sVFX=="cold") { nVFX=VFX_IMP_FROST_L; nType=2; }
eVFX=EffectVisualEffect(nVFX);
if (nType==0) ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVFX,oMe,10000.0);
else
{ // not a permanent type
if (GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC,oMe,1)!=OBJECT_INVALID)
{ // PC is in the area
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oMe,3.0);
} // PC is in the area
DelayCommand(IntToFloat(nType),fnPersistentVFX(sVFX));
} // not a permanent type
} // persistentVFX
#include "x2_inc_switches"
void main()
{
string sVFX=GetLocalString(OBJECT_SELF,"sVFX");
if (GetStringLength(sVFX)>1) AssignCommand(OBJECT_SELF,fnPersistentVFX(sVFX));
// User defined OnSpawn event requested?
int nSpecEvent = GetLocalInt(OBJECT_SELF,"X2_USERDEFINED_ONSPAWN_EVENTS");
// Pre Spawn Event requested
if (nSpecEvent == 1 || nSpecEvent == 3 )
{
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_PRESPAWN ));
}
/* Fix for the new golems to reduce their number of attacks */
int nNumber = GetLocalInt(OBJECT_SELF,CREATURE_VAR_NUMBER_OF_ATTACKS);
if (nNumber >0 )
{
SetBaseAttackBonus(nNumber);
}
// Execute default OnSpawn script.
ExecuteScript("nw_c2_default9", OBJECT_SELF);
//Post Spawn event requeste
if (nSpecEvent == 2 || nSpecEvent == 3)
{
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
}
}