Added more creature model overrides. Added another "boss" creature to the Labyrinth. Tweaked several other creatures. Full compile. Updated release archive.
591 lines
22 KiB
Plaintext
591 lines
22 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
|
|
|
|
2007-12-31: Deva Winblood
|
|
Modified to look for X3_HORSE_OWNER_TAG and if
|
|
it is defined look for an NPC with that tag
|
|
nearby or in the module (checks near first).
|
|
It will make that NPC this horse's master.
|
|
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: 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;
|
|
|
|
#include "ms_name_inc"
|
|
#include "x2_inc_switches"
|
|
#include "nwnx_webhook"
|
|
#include "nwnx_util"
|
|
|
|
void Embiggen(object oNPC, float fIncrease);
|
|
|
|
void Embiggen(object oNPC, float fIncrease)
|
|
{
|
|
SetObjectVisualTransform(OBJECT_SELF, OBJECT_VISUAL_TRANSFORM_SCALE, fIncrease);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
string sTag;
|
|
string NWNX_DISCORD_URL = "webhook URL here";
|
|
object oNPC;
|
|
|
|
//:: 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 ));
|
|
}
|
|
|
|
sTag=GetLocalString(OBJECT_SELF,"X3_HORSE_OWNER_TAG");
|
|
if (GetStringLength(sTag)>0)
|
|
{ // look for master
|
|
oNPC=GetNearestObjectByTag(sTag);
|
|
if (GetIsObjectValid(oNPC)&&GetObjectType(oNPC)==OBJECT_TYPE_CREATURE)
|
|
{ // master found
|
|
AddHenchman(oNPC);
|
|
} // master found
|
|
else
|
|
{ // look in module
|
|
oNPC=GetObjectByTag(sTag);
|
|
if (GetIsObjectValid(oNPC)&&GetObjectType(oNPC)==OBJECT_TYPE_CREATURE)
|
|
{ // master found
|
|
AddHenchman(oNPC);
|
|
} // master found
|
|
else
|
|
{ // master does not exist - remove X3_HORSE_OWNER_TAG
|
|
DeleteLocalString(OBJECT_SELF,"X3_HORSE_OWNER_TAG");
|
|
} // master does not exist - remove X3_HORSE_OWNER_TAG
|
|
} // look in module
|
|
} // look for master
|
|
|
|
//:: Handles various Aura & AI effects
|
|
int nAtropal = GetTag(OBJECT_SELF) == "ATROPAL001" ? TRUE : FALSE;
|
|
if(nAtropal)ExecuteScript("atropal_aura",OBJECT_SELF);
|
|
if(nAtropal)ExecuteScript("atropal_ai",OBJECT_SELF);
|
|
|
|
int AtropalScion = GetTag(OBJECT_SELF) == "ATROPALSCION001" ? TRUE : FALSE;
|
|
if(AtropalScion)ExecuteScript("neaura",OBJECT_SELF);
|
|
|
|
int nBleakborn = GetStringLeft(GetTag(OBJECT_SELF), 9) == "BLEAKBORN" ? TRUE : FALSE;
|
|
if(nBleakborn)ExecuteScript("bleakaura",OBJECT_SELF);
|
|
|
|
int nCryptChanter = GetStringLeft(GetTag(OBJECT_SELF), 12) == "CRYPTCHANTER" ? TRUE : FALSE;
|
|
if(nCryptChanter)ExecuteScript("DrainingMelody",OBJECT_SELF);
|
|
|
|
int nNWalker = GetStringLeft(GetTag(OBJECT_SELF), 11) == "NIGHTWALKER" ? TRUE : FALSE;
|
|
if(nNWalker)ExecuteScript("desecrating_aura",OBJECT_SELF);
|
|
|
|
int nNCrawler = GetStringLeft(GetTag(OBJECT_SELF), 12) == "NIGHTCRAWLER" ? TRUE : FALSE;
|
|
if(nNCrawler)ExecuteScript("desecrating_aura",OBJECT_SELF);
|
|
|
|
int nVoidWraith = GetStringLeft(GetTag(OBJECT_SELF), 10) == "VOIDWRAITH" ? TRUE : FALSE;
|
|
if(nVoidWraith)ExecuteScript("airlessaura",OBJECT_SELF);
|
|
|
|
int nGhast1 = GetStringLeft(GetTag(OBJECT_SELF), 5) == "GHAST" ? TRUE : FALSE;
|
|
if(nGhast1)ExecuteScript("ghast_stench",OBJECT_SELF);
|
|
if(nGhast1)ExecuteScript("zombie_feed",OBJECT_SELF);
|
|
|
|
int nGhast2 = GetStringLeft(GetTag(OBJECT_SELF), 8) == "NW_GHAST" ? TRUE : FALSE;
|
|
if(nGhast2)ExecuteScript("ghast_stench",OBJECT_SELF);
|
|
if(nGhast2)ExecuteScript("zombie_feed",OBJECT_SELF);
|
|
|
|
int nGhoul = GetStringLeft(GetTag(OBJECT_SELF), 5) == "GHOUL" ? TRUE : FALSE;
|
|
if(nGhoul)ExecuteScript("zombie_feed",OBJECT_SELF);
|
|
|
|
int nGhoul2 = GetStringLeft(GetTag(OBJECT_SELF), 8) == "NW_GHOUL" ? TRUE : FALSE;
|
|
if(nGhoul2)ExecuteScript("zombie_feed",OBJECT_SELF);
|
|
|
|
int nZombie = GetStringLeft(GetTag(OBJECT_SELF), 7) == "NW_ZOMB" ? TRUE : FALSE;
|
|
if(nZombie)ExecuteScript("zombie_feed",OBJECT_SELF);
|
|
|
|
int nDecay = GetStringLeft(GetTag(OBJECT_SELF), 12) == "ANGELOFDECAY" ? TRUE : FALSE;
|
|
if(nDecay)ExecuteScript("rotura",OBJECT_SELF);
|
|
|
|
int nDecay1 = GetStringLeft(GetTag(OBJECT_SELF), 13) == "DS_YELMUSKCRP" ? TRUE : FALSE;
|
|
if(nDecay1)ExecuteScript("consume_int",OBJECT_SELF);
|
|
|
|
int nPrisma = GetStringLeft(GetTag(OBJECT_SELF), 12) == "PRISMASAURUS" ? TRUE : FALSE;
|
|
if(nPrisma)ExecuteScript("prism_aura",OBJECT_SELF);
|
|
|
|
int nDream = GetStringLeft(GetTag(OBJECT_SELF), 12) == "DREAMVESTIGE" ? TRUE : FALSE;
|
|
if(nDream)ExecuteScript("desecrating_aura",OBJECT_SELF);
|
|
|
|
int nWinter = GetStringLeft(GetTag(OBJECT_SELF), 11) == "WINTERWIGHT" ? TRUE : FALSE;
|
|
if(nWinter)ExecuteScript("ww_aura",OBJECT_SELF);
|
|
|
|
int nPlague = GetStringLeft(GetTag(OBJECT_SELF), 12) == "PLAGUEBLIGHT" ? TRUE : FALSE;
|
|
if(nPlague)ExecuteScript("plagueaura",OBJECT_SELF);
|
|
|
|
int nHunefer = GetStringLeft(GetTag(OBJECT_SELF), 7) == "HUNEFER" ? TRUE : FALSE;
|
|
if(nHunefer)ExecuteScript("fear2_aura",OBJECT_SELF);
|
|
|
|
//:: Make a creature a little bigger.
|
|
int nEmbiggen = GetLocalInt(OBJECT_SELF,"EMBIGGEN");
|
|
if (nEmbiggen > 0)
|
|
{
|
|
float fIncrease = (IntToFloat(nEmbiggen)+100.0) / 100.0;
|
|
DelayCommand(0.0f, Embiggen(OBJECT_SELF, fIncrease));
|
|
}
|
|
|
|
//:: Handle various onspawn immunities & buffs
|
|
|
|
//:: Shadows should be unaffected by darkness
|
|
int nShadow1 = GetStringLeft(GetTag(OBJECT_SELF), 9) == "NW_SHADOW" ? TRUE : FALSE;
|
|
if(nShadow1)
|
|
{
|
|
effect eUltraVis = EffectUltravision();
|
|
eUltraVis = SupernaturalEffect(eUltraVis);
|
|
eUltraVis = ExtraordinaryEffect(eUltraVis);
|
|
eUltraVis = UnyieldingEffect(eUltraVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eUltraVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nShadow2 = GetStringLeft(GetTag(OBJECT_SELF), 6) == "SHADOW" ? TRUE : FALSE;
|
|
if(nShadow2)
|
|
{
|
|
effect eUltraVis = EffectUltravision();
|
|
eUltraVis = SupernaturalEffect(eUltraVis);
|
|
eUltraVis = ExtraordinaryEffect(eUltraVis);
|
|
eUltraVis = UnyieldingEffect(eUltraVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eUltraVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nNoStun = GetLocalInt(OBJECT_SELF,"NOSTUN");
|
|
if (nNoStun > 0)
|
|
{
|
|
effect eNoStun = EffectImmunity(IMMUNITY_TYPE_STUN);
|
|
eNoStun = SupernaturalEffect(eNoStun);
|
|
eNoStun = ExtraordinaryEffect(eNoStun);
|
|
eNoStun = UnyieldingEffect(eNoStun);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNoStun,OBJECT_SELF));
|
|
}
|
|
|
|
int nNatInvis1 = GetLocalInt(OBJECT_SELF,"NATURAL_INVIS");
|
|
if (nNatInvis1 == 1)
|
|
{
|
|
effect eNatInvis = EffectInvisibility(4);
|
|
eNatInvis = SupernaturalEffect(eNatInvis);
|
|
//eNatInvis = ExtraordinaryEffect(eNatInvis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNatInvis,OBJECT_SELF));
|
|
}
|
|
|
|
int nNatInvis2 = GetLocalInt(OBJECT_SELF,"NATURAL_INVIS");
|
|
if (nNatInvis2 == 2)
|
|
{
|
|
effect eNatInvis = EffectInvisibility(4);
|
|
eNatInvis = SupernaturalEffect(eNatInvis);
|
|
eNatInvis = ExtraordinaryEffect(eNatInvis);
|
|
eNatInvis = UnyieldingEffect(eNatInvis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNatInvis,OBJECT_SELF));
|
|
}
|
|
|
|
int nSeeInvis = GetLocalInt(OBJECT_SELF,"SEE_INVIS");
|
|
if (nSeeInvis > 0)
|
|
{
|
|
effect eSeeInvis = EffectSeeInvisible();
|
|
eSeeInvis = SupernaturalEffect(eSeeInvis);
|
|
eSeeInvis = ExtraordinaryEffect(eSeeInvis);
|
|
eSeeInvis = UnyieldingEffect(eSeeInvis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eSeeInvis,OBJECT_SELF));
|
|
}
|
|
|
|
int nNoSleep = GetLocalInt(OBJECT_SELF,"NOSLEEP");
|
|
if (nNoSleep > 0)
|
|
{
|
|
effect eNoSleep = EffectImmunity(IMMUNITY_TYPE_SLEEP);
|
|
eNoSleep = SupernaturalEffect(eNoSleep);
|
|
eNoSleep = ExtraordinaryEffect(eNoSleep);
|
|
eNoSleep = UnyieldingEffect(eNoSleep);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNoSleep,OBJECT_SELF));
|
|
}
|
|
|
|
int nNoDaze = GetLocalInt(OBJECT_SELF,"NODAZE");
|
|
if (nNoDaze > 0)
|
|
{
|
|
effect eNoDaze = EffectImmunity(IMMUNITY_TYPE_DAZED);
|
|
eNoDaze = SupernaturalEffect(eNoDaze);
|
|
eNoDaze = ExtraordinaryEffect(eNoDaze);
|
|
eNoDaze = UnyieldingEffect(eNoDaze);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNoDaze,OBJECT_SELF));
|
|
}
|
|
|
|
int nNoBlind = GetLocalInt(OBJECT_SELF,"NOBLIND");
|
|
if (nNoBlind > 0)
|
|
{
|
|
effect eNoBlind = EffectImmunity(IMMUNITY_TYPE_BLINDNESS);
|
|
eNoBlind = SupernaturalEffect(eNoBlind);
|
|
eNoBlind = ExtraordinaryEffect(eNoBlind);
|
|
eNoBlind = UnyieldingEffect(eNoBlind);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNoBlind,OBJECT_SELF));
|
|
}
|
|
|
|
int nNoDeaf = GetLocalInt(OBJECT_SELF,"NODEAF");
|
|
if (nNoDeaf > 0)
|
|
{
|
|
effect eNoDeaf = EffectImmunity(IMMUNITY_TYPE_DEAFNESS);
|
|
eNoDeaf = SupernaturalEffect(eNoDeaf);
|
|
eNoDeaf = ExtraordinaryEffect(eNoDeaf);
|
|
eNoDeaf = UnyieldingEffect(eNoDeaf);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNoDeaf,OBJECT_SELF));
|
|
}
|
|
|
|
int nDeaf = GetLocalInt(OBJECT_SELF,"IS_DEAF");
|
|
if (nDeaf > 0)
|
|
{
|
|
effect eDeaf = EffectDeaf();
|
|
eDeaf = SupernaturalEffect(eDeaf);
|
|
eDeaf = ExtraordinaryEffect(eDeaf);
|
|
eDeaf = UnyieldingEffect(eDeaf);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eDeaf,OBJECT_SELF));
|
|
}
|
|
|
|
/* 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);
|
|
}
|
|
|
|
int nVFX = GetLocalInt(OBJECT_SELF,"SpawnVFX");
|
|
if(nVFX)
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,SupernaturalEffect(EffectVisualEffect(nVFX)),OBJECT_SELF);
|
|
}
|
|
|
|
int nRegen = GetLocalInt(OBJECT_SELF,"FAST_HEALING");
|
|
if(nRegen)
|
|
{
|
|
effect eRegen = EffectRegenerate(nRegen, 6.0f);
|
|
eRegen = SupernaturalEffect(eRegen);
|
|
eRegen = ExtraordinaryEffect(eRegen);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eRegen, OBJECT_SELF));
|
|
}
|
|
|
|
int nShadowy = GetLocalInt(OBJECT_SELF,"SHADOWY");
|
|
if (nShadowy)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nStony = GetLocalInt(OBJECT_SELF,"STONY");
|
|
if (nStony)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_PROT_STONESKIN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
int nFirey = GetLocalInt(OBJECT_SELF,"FIREY");
|
|
if (nFirey)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_INFERNO_NO_SOUND);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
int nWoody = GetLocalInt(OBJECT_SELF,"WOODY");
|
|
if (nWoody)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_PROT_BARKSKIN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nConcealed20 = GetLocalInt(OBJECT_SELF,"CONCEALED20");
|
|
if (nConcealed20)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
|
|
effect eConceal = EffectConcealment(20, 0);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nConcealed50 = GetLocalInt(OBJECT_SELF,"CONCEALED50");
|
|
if (nConcealed50)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
|
|
effect eConceal = EffectConcealment(50, 0);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nIcy = GetLocalInt(OBJECT_SELF,"ICY");
|
|
if (nIcy)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_ICESKIN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nSR = GetLocalInt(OBJECT_SELF,"SPELL_RESISTANCE");
|
|
if ( nSR )
|
|
{
|
|
effect eSR = EffectSpellResistanceIncrease(nSR);
|
|
eSR = SupernaturalEffect(eSR);
|
|
eSR = ExtraordinaryEffect(eSR);
|
|
eSR = UnyieldingEffect(eSR);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eSR,OBJECT_SELF);
|
|
}
|
|
|
|
int nAttackBonus = GetLocalInt(OBJECT_SELF,"ATTACK_BONUS");
|
|
if ( nAttackBonus )
|
|
{
|
|
effect eAttack = EffectAttackIncrease(nAttackBonus);
|
|
eAttack = SupernaturalEffect(eAttack);
|
|
eAttack = ExtraordinaryEffect(eAttack);
|
|
eAttack = UnyieldingEffect(eAttack);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eAttack,OBJECT_SELF);
|
|
}
|
|
|
|
int nIceShield = GetLocalInt(OBJECT_SELF,"FROST_SHIELD");
|
|
if ( nIceShield )
|
|
{
|
|
effect eShield = EffectDamageShield(0,DAMAGE_BONUS_1d6,DAMAGE_TYPE_COLD);
|
|
eShield = SupernaturalEffect(eShield);
|
|
eShield = ExtraordinaryEffect(eShield);
|
|
eShield = UnyieldingEffect(eShield);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eShield,OBJECT_SELF);
|
|
}
|
|
|
|
int nAcidShield = GetLocalInt(OBJECT_SELF,"ACID_SHIELD");
|
|
if ( nAcidShield )
|
|
{
|
|
effect eShield = EffectDamageShield(0,DAMAGE_BONUS_1d8,DAMAGE_TYPE_ACID);
|
|
eShield = SupernaturalEffect(eShield);
|
|
eShield = ExtraordinaryEffect(eShield);
|
|
eShield = UnyieldingEffect(eShield);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eShield,OBJECT_SELF);
|
|
}
|
|
|
|
int nSerratedEdge = GetLocalInt(OBJECT_SELF,"SERRATED_EDGE");
|
|
if ( nSerratedEdge )
|
|
{
|
|
effect eShield = EffectDamageShield(0,DAMAGE_BONUS_1d6,DAMAGE_TYPE_SLASHING);
|
|
eShield = SupernaturalEffect(eShield);
|
|
eShield = ExtraordinaryEffect(eShield);
|
|
eShield = UnyieldingEffect(eShield);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eShield,OBJECT_SELF);
|
|
}
|
|
|
|
int nSpikedArmor = GetLocalInt(OBJECT_SELF,"SPIKED_ARMOR");
|
|
if ( nSpikedArmor )
|
|
{
|
|
effect eShield = EffectDamageShield(0,DAMAGE_BONUS_1d4,DAMAGE_TYPE_PIERCING);
|
|
eShield = SupernaturalEffect(eShield);
|
|
eShield = ExtraordinaryEffect(eShield);
|
|
eShield = UnyieldingEffect(eShield);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eShield,OBJECT_SELF);
|
|
}
|
|
|
|
//:: OnSpawn Glow effects
|
|
int nGlow = GetLocalInt (OBJECT_SELF,"GLOW_COLOR");
|
|
if (nGlow == 1)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BLUE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 2)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BROWN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 3)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_GREEN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 4)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_GREY);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 5)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 6)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BROWN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 7)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 8)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 9)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_PURPLE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 10)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_RED);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 11)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 12)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_ORANGE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 13)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_PURPLE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 14)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_RED);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 15)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_WHITE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 16)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_YELLOW);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(eVis);
|
|
eVis = UnyieldingEffect(eVis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
//:: If Incorporeal, apply changes
|
|
if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) == TRUE)
|
|
{
|
|
effect eConceal = EffectConcealment(50, MISS_CHANCE_TYPE_NORMAL);
|
|
eConceal = ExtraordinaryEffect(eConceal);
|
|
effect eGhost = EffectCutsceneGhost();
|
|
eGhost = ExtraordinaryEffect(eGhost);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eConceal, OBJECT_SELF);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, OBJECT_SELF);
|
|
}
|
|
|
|
//:: Execute OnSpawn script.
|
|
|
|
int nSpider = GetStringLeft(GetTag(OBJECT_SELF), 12) == "MONST_SPIDER" ? TRUE : FALSE;
|
|
if(nSpider)
|
|
{
|
|
//:: Execute drop in from above spawn.
|
|
ExecuteScript("nw_c2_dropin9", OBJECT_SELF);
|
|
}
|
|
else
|
|
{
|
|
//:: Execute default OnSpawn script.
|
|
ExecuteScript("nw_c2_default9", OBJECT_SELF);
|
|
}
|
|
|
|
//:: Set or Randomize name
|
|
ms_Nomenclature(OBJECT_SELF);
|
|
|
|
//:: Execute PRC OnSpawn script.
|
|
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
|
|
|
|
|
|
//Post Spawn event requeste
|
|
if (nSpecEvent == 2 || nSpecEvent == 3)
|
|
{
|
|
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
|
|
}
|
|
//
|
|
NWNX_WebHook_SendWebHookHTTPS("discordapp.com", NWNX_DISCORD_URL, "Good Morning Ascension.", "The Madman");
|
|
//
|
|
|
|
}
|