PoA_PRC8/_module/nss/spawn_npc_vfx_oe.nss

501 lines
22 KiB
Plaintext
Raw Normal View History

2022-10-07 14:20:31 -04:00
//Script Name: spawn_npc_vfx_oe
//////////////////////////////////////////
//Created By: Genisys (Guile)
//Created On: 8/13/08
/////////////////////////////////////////
/*
This script goes in the OnEnter Event
for an Area or a Tracks Trigger.
(Preferrably an Area's OnEnter Event)
(The PC will not notice the NPC's being spawned in)
This script will spawn in an NPC
at the proper way point and destroy it
after an amount of time set by you.
You MUST create the first walk waypoint for the NPC
(put the npc in the module right click on it)
(select create way point, then delete the NPC)
If you wish for the NPC to walk around create more
walk waypoint by moving the NPC and creating more way points
as instructed above.
*/
////////////////////////////////////////
//PROTOTYPE DECLARED
void SpawnNPC(string sTag, string sResref, float fSeconds);
void ApplyVFX();
//Main Script
void main()
{
//Define the PC
object oPC = GetEnteringObject();
//Stop here if it's not a PC entering!
if(!GetIsPC(oPC)) {return;}
//Enter the tagname and resref name of the NPC below
//600.0 = How many seconds before the NPC is destroyed
//Default = 10 Minutes (600.0 seconds)
SpawnNPC("fx05_noble_fx24", "fx05_noble_fx24", 600.0);
//If you wish to spawn multiple NPCs simply delete the // before SpawnNPC
//For each additional NPC you wish to spawn in.(follow instructions above)
//SpawnNPC("tagname", "resrefname", 600.0);
//SpawnNPC("tagname", "resrefname", 600.0);
//SpawnNPC("tagname", "resrefname", 600.0);
//SpawnNPC("tagname", "resrefname", 600.0);
//SpawnNPC("tagname", "resrefname", 600.0);
//NOTE: This options is NOT for spawning in multiple NPCs with the same tagname!
//I recommend that you create copies of the NPCs and spawn them in seperately.
//(each copied NPC needs thier own tagname / resref name & walk waypoints!)
//Enter any additional code here if your merging this script..
//Delay Applying the VFX just a tad!
DelayCommand(0.3, ApplyVFX());
//Main Script End
}
/////////////////////DO NOT TOUCH ANYTHING BELOW!/////////////////////
//PROTOTYPE DEFINED
void SpawnNPC(string sTag, string sResref, float fSeconds)
{
object oTarget;
object oObject = GetWaypointByTag("WP_"+sTag+"_01");
if (!GetIsObjectValid(GetNearestObjectByTag(sTag, oObject)))
{
CreateObject(OBJECT_TYPE_CREATURE, sResref, GetLocation(oObject));
}
oTarget = GetObjectByTag(sTag);
DelayCommand(fSeconds, DestroyObject(oTarget, 0.0));
//PROTOTYPE END
}
void ApplyVFX()
{
object oRefPoint = OBJECT_SELF;
object oEnterer = GetEnteringObject();
if (GetIsPC(oEnterer) == TRUE) {
//Create shadow vfx on placeables the first time in the area..
if (GetLocalInt(oEnterer, "CreateVFX") != 1) {
//Set an intergal on the are to tell we have done this before!
SetLocalInt(oEnterer, "CreateVFX", 1);
effect eEffect;
//Loop through all of the objects in the area
//and see if they have an VFX Tagname..
//If so apply the appropriate VFX(s) to the object
//The incrementing # to tell us which object to look at.
int nCount = 1;
//The object we are looking at..
object oThing = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, oEnterer, nCount);
//As long as the object is a valid object continue to examine
while (oThing != OBJECT_INVALID)
{
if(!GetIsPC(oThing))
{
//Let's define the tagname strings first!
string sTag = GetStringLeft(GetTag(oThing), 4);
string sEnd = GetStringRight(GetTag(oThing), 4);
//fx01 = Anti Light 10 Ft Radius
if (sTag == "fx01" || sEnd == "fx01")
{
eEffect = EffectVisualEffect(VFX_DUR_ANTI_LIGHT_10);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx02 = Blue / Black Pulsating Aura
if (sTag == "fx02" || sEnd == "fx02")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_BLUE_BLACK);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx03 = Blue / White Pulsating Aura
if (sTag == "fx03" || sEnd == "fx03")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_BLUE_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx04 = Cyan / Black Pulsating Aura
if (sTag == "fx04" || sEnd == "fx04")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_CYAN_BLACK);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx05 = Cyan / Blue Pulsating Aura
if (sTag == "fx05" || sEnd == "fx05")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_CYAN_BLUE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx06 = Cyan / Green Pulsating Aura
if (sTag == "fx06" || sEnd == "fx06")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_CYAN_GREEN);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx07 = Green / Black Pulsating Aura
if (sTag == "fx07" || sEnd == "fx07")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_GREEN_BLACK);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx08 = Green / White Pulsating Aura
if (sTag == "fx08" || sEnd == "fx08")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_GREEN_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx09 = Magenta / Blue Pulsating Aura
if (sTag == "fx09" || sEnd == "fx09")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_MAGENTA_BLUE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx10 = Magenta / White Pulsating Aura
if (sTag == "fx10" || sEnd == "fx10")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_MAGENTA_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx11 = Purple / Black Pulsating Aura
if (sTag == "fx11" || sEnd == "fx11")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_PURPLE_BLACK);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx12 =Purple / White Pulsating Aura
if (sTag == "fx12" || sEnd == "fx12")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_PURPLE_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx13 = Red / Black Pulsating Aura
if (sTag == "fx13" || sEnd == "fx13")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_RED_BLACK);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx14 = Red / Green Pulsating Aura
if (sTag == "fx14" || sEnd == "fx14")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_RED_GREEN);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx15 = Red / White Pulsating Aura
if (sTag == "fx15" || sEnd == "fx15")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_RED_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx16 = Red / Yellow Pulsating Aura
if (sTag == "fx16" || sEnd == "fx16")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_RED_YELLOW);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx17 = Yellow / Black Pulsating Aura
if (sTag == "fx17" || sEnd == "fx17")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_YELLOW_BLACK);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx18 = Yellow / Orange Pulsating Aura
if (sTag == "fx18" || sEnd == "fx18")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_YELLOW_ORANGE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx19 = Yellow / White Pulsating Aura
if (sTag == "fx19" || sEnd == "fx19")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_YELLOW_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx20 = Purple Aura
if (sTag == "fx20" || sEnd == "fx20")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_PULSE_YELLOW_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx21 = Red Aura
if (sTag == "fx21" || sEnd == "fx21")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_RED);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx22 = White Aura
if (sTag == "fx22" || sEnd == "fx22")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_WHITE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx23 = Yellow Aura
if (sTag == "fx23" || sEnd == "fx23")
{
eEffect = EffectVisualEffect(VFX_DUR_AURA_YELLOW);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx24 = Bard Song
if (sTag == "fx24" || sEnd == "fx24")
{
eEffect = EffectVisualEffect(VFX_DUR_BARD_SONG);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx25 = Death Armor (Black Circle)
if (sTag == "fx25" || sEnd == "fx25")
{
eEffect = EffectVisualEffect(VFX_DUR_DEATH_ARMOR);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx26 = Elemental Shield
if (sTag == "fx26" || sEnd == "fx26")
{
eEffect = EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx27 = Freedome Of Movement (Green glow at bottom only)
if (sTag == "fx27" || sEnd == "fx27")
{
eEffect = EffectVisualEffect(VFX_DUR_FREEDOM_OF_MOVEMENT);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx28 = Ghost Smoke (White Smoke)
if (sTag == "fx28" || sEnd == "fx28")
{
eEffect = EffectVisualEffect(VFX_DUR_GHOST_SMOKE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx29 = Ghost - White/Transparent Aura
if (sTag == "fx29" || sEnd == "fx29")
{
eEffect = EffectVisualEffect(VFX_DUR_GHOST_TRANSPARENT);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx30 = Ghostly Pulsating Aura (transparent / white)
if (sTag == "fx30" || sEnd == "fx30")
{
eEffect = EffectVisualEffect(VFX_DUR_GHOSTLY_PULSE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx31 = GLOBE of INVULNERABILITY
if (sTag == "fx31" || sEnd == "fx31")
{
eEffect = EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx32 = Grey Glow
if (sTag == "fx32" || sEnd == "fx32")
{
eEffect = EffectVisualEffect(VFX_DUR_GLOW_GREY);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx33 = Green Glow
if (sTag == "fx33" || sEnd == "fx33")
{
eEffect = EffectVisualEffect(VFX_DUR_GLOW_GREEN);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx34 = Light Orange Glow
if (sTag == "fx34" || sEnd == "fx34")
{
eEffect = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx35 = Glyph of Warding (Just like the spell!)
if (sTag == "fx35" || sEnd == "fx35")
{
eEffect = EffectVisualEffect(VFX_DUR_GLYPH_OF_WARDING);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx36 = Ice Skin (The object turns completely white)
if (sTag == "fx36" || sEnd == "fx36")
{
eEffect = EffectVisualEffect(VFX_DUR_ICESKIN);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx37 = Animated Huge Flames
if (sTag == "fx37" || sEnd == "fx37")
{
eEffect = EffectVisualEffect(VFX_DUR_INFERNO);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx38 = Iounstone Blue
if (sTag == "fx38" || sEnd == "fx38")
{
eEffect = EffectVisualEffect(VFX_DUR_IOUNSTONE_BLUE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx39 = Iounstone Green
if (sTag == "fx39" || sEnd == "fx39")
{
eEffect = EffectVisualEffect(VFX_DUR_IOUNSTONE_GREEN);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx40 = Iounstone Red
if (sTag == "fx40" || sEnd == "fx40")
{
eEffect = EffectVisualEffect(VFX_DUR_IOUNSTONE_RED);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx41 = Iounstone Yellow
if (sTag == "fx41" || sEnd == "fx41")
{
eEffect = EffectVisualEffect(VFX_DUR_IOUNSTONE_YELLOW);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx42 = Magical Resistance Globe
if (sTag == "fx42" || sEnd == "fx42")
{
eEffect = EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx43 = Stone Skin Look
if (sTag == "fx43" || sEnd == "fx43")
{
eEffect = EffectVisualEffect(VFX_DUR_PETRIFY);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx44 = Pixie Dust
if (sTag == "fx44" || sEnd == "fx44")
{
eEffect = EffectVisualEffect(VFX_DUR_PIXIEDUST);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx45 = Barkskin Effect
if (sTag == "fx45" || sEnd == "fx45")
{
eEffect = EffectVisualEffect(VFX_DUR_PROT_BARKSKIN);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx46 = Premonition Globe
if (sTag == "fx46" || sEnd == "fx46")
{
eEffect = EffectVisualEffect(VFX_DUR_PROT_PREMONITION);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx47 = Black Shadow Skin
if (sTag == "fx47" || sEnd == "fx47")
{
eEffect = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx48 = Protection From Elements
if (sTag == "fx48" || sEnd == "fx48")
{
eEffect = EffectVisualEffect(VFX_DUR_PROTECTION_ELEMENTS);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx49 = Protection From Evil (Yellow Moving Lights)
if (sTag == "fx49" || sEnd == "fx49")
{
eEffect = EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx50 = Protection From Good (Red Moving Lights)
if (sTag == "fx50" || sEnd == "fx50")
{
eEffect = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MAJOR);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx51 = Smoke
if (sTag == "fx51" || sEnd == "fx51")
{
eEffect = EffectVisualEffect(VFX_DUR_SMOKE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx52 = Small Web
if (sTag == "fx52" || sEnd == "fx52")
{
eEffect = EffectVisualEffect(VFX_DUR_WEB);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
//fx53 = Massive Web
if (sTag == "fx53" || sEnd == "fx53")
{
eEffect = EffectVisualEffect(VFX_DUR_WEB_MASS);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oThing); }
}
//Increment the variable that tells us which object to look at..
nCount++;
//Coninue to look for the next valid object..
oThing = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, oEnterer, nCount);
}
}
}
}