Added elephant & ankheg models & portraits Imported pnp creature UTCs over from NWNDS for ankhegs, air elementals, scorpions, cheetahs & invisible stalkers. Setup burrower AI or testing. Full compile.
538 lines
22 KiB
Plaintext
538 lines
22 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: burrow_onspawn.nss
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
OnSpawnIn, sets up scorpions to teleport
|
|
during combat (requires scorp_onuserdef in the
|
|
user defined event slot for the creature)
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By:
|
|
//:: Created On:
|
|
//:: Modified By: Luna_C on 5/24/2003 for Scorpions Demo v1.0
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "NW_I0_GENERIC"
|
|
#include "ms_name_inc"
|
|
#include "x2_inc_switches"
|
|
|
|
void ShrinkEm(object oPC)
|
|
{
|
|
SetObjectVisualTransform(oPC, OBJECT_VISUAL_TRANSFORM_SCALE, 0.5f);
|
|
}
|
|
|
|
|
|
void main()
|
|
{
|
|
int nGetIsDay = GetIsDay();
|
|
|
|
// User defined OnSpawn event requested?
|
|
int nSpecEvent = GetLocalInt(OBJECT_SELF,"X2_USERDEFINED_ONSPAWN_EVENTS");
|
|
|
|
//:: Sets a random integer on the creature to use with other spell functions
|
|
string sImmune = GetName(OBJECT_SELF)+"_AURA_IMMUNE";
|
|
int nRandomSeed = Random(999);
|
|
SetLocalInt(OBJECT_SELF, sImmune, nRandomSeed);
|
|
|
|
//:: Creature will quickly & automatically buff itself up with any defensive
|
|
//:: spells it has memorized.
|
|
|
|
int nAutobuff = GetLocalInt(OBJECT_SELF,"AUTOBUFF");
|
|
if (nAutobuff > 0 )
|
|
{
|
|
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY);
|
|
}
|
|
|
|
//:: Creature will flee those that close within 7m if they are not friends,
|
|
//:: Rangers or Druids.
|
|
|
|
int nHerbivore = GetLocalInt(OBJECT_SELF,"CREATURE_VAR_HERBIVORE");
|
|
if (nHerbivore > 0 )
|
|
{
|
|
SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL);
|
|
SetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE);
|
|
}
|
|
|
|
//:: Creature will only attack those that close within 5m and are not friends,
|
|
//:: Rangers or Druids.
|
|
|
|
int nOmnivore = GetLocalInt(OBJECT_SELF,"CREATURE_VAR_OMNIVORE");
|
|
if (nOmnivore > 0 )
|
|
{
|
|
SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL);
|
|
SetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE);
|
|
}
|
|
|
|
int nOLM = GetLocalInt(OBJECT_SELF,"OLM");
|
|
if (nOLM > 0)
|
|
{
|
|
DelayCommand(0.0f, ShrinkEm(OBJECT_SELF));
|
|
|
|
effect eSlow = EffectMovementSpeedDecrease(50);
|
|
eSlow = SupernaturalEffect(eSlow);
|
|
eSlow = ExtraordinaryEffect(eSlow);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eSlow,OBJECT_SELF));
|
|
}
|
|
|
|
int nNoStun = GetLocalInt(OBJECT_SELF,"NOSTUN");
|
|
if (nNoStun > 0)
|
|
{
|
|
effect eNoStun = EffectImmunity(IMMUNITY_TYPE_STUN);
|
|
eNoStun = SupernaturalEffect(eNoStun);
|
|
eNoStun = ExtraordinaryEffect(eNoStun);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNoStun,OBJECT_SELF));
|
|
}
|
|
int nNatInvis = GetLocalInt(OBJECT_SELF,"NATURAL_INVIS");
|
|
if (nNatInvis > 0)
|
|
{
|
|
effect eNatInvis = EffectInvisibility(4);
|
|
eNatInvis = SupernaturalEffect(eNatInvis);
|
|
eNatInvis = ExtraordinaryEffect(eNatInvis);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eNatInvis,OBJECT_SELF));
|
|
}
|
|
|
|
int nNoSleep = GetLocalInt(OBJECT_SELF,"NOSLEEP");
|
|
if (nNoSleep > 0)
|
|
{
|
|
effect eNoSleep = EffectImmunity(IMMUNITY_TYPE_SLEEP);
|
|
eNoSleep = SupernaturalEffect(eNoSleep);
|
|
eNoSleep = ExtraordinaryEffect(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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
if(nGetIsDay)
|
|
{
|
|
int nShadowCamo = GetLocalInt(OBJECT_SELF,"SHADOWCAMO");
|
|
|
|
if (nShadowCamo)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
|
|
effect eConceal = EffectConcealment(40, 0);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(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);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
|
|
int nConcealed40 = GetLocalInt(OBJECT_SELF,"CONCEALED40");
|
|
if (nConcealed40)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_BLUR );
|
|
effect eConceal = EffectConcealment(40, 0);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(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);
|
|
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);
|
|
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);
|
|
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);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eAttack,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);
|
|
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);
|
|
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);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eShield,OBJECT_SELF);
|
|
}
|
|
|
|
int nGlow = GetLocalInt (OBJECT_SELF,"GLOW_COLOR");
|
|
if (nGlow == 1)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BLUE);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,OBJECT_SELF));
|
|
}
|
|
else if (nGlow == 17)
|
|
{
|
|
effect eVis = EffectVisualEffect(VFX_DUR_AURA_GREEN_DARK);
|
|
eVis = SupernaturalEffect(eVis);
|
|
eVis = ExtraordinaryEffect(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);
|
|
}
|
|
|
|
if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_STEALTH) == TRUE)
|
|
{
|
|
SetSpawnInCondition(NW_FLAG_STEALTH);
|
|
}
|
|
|
|
if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_SEARCH) == TRUE)
|
|
{
|
|
SetSpawnInCondition(NW_FLAG_SEARCH);
|
|
}
|
|
|
|
if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_AMBIENT_IMMOBILE) == TRUE)
|
|
{
|
|
SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);
|
|
}
|
|
|
|
|
|
if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_AMBIENT) == TRUE)
|
|
{
|
|
SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
|
|
}
|
|
|
|
|
|
|
|
//modify to try fix on Various Aura effects.
|
|
//NC:EDIT
|
|
int nAtropal = GetTag(OBJECT_SELF)=="ATROPAL001" ? TRUE : FALSE;
|
|
if(nAtropal)ExecuteScript("atropal_aura",OBJECT_SELF);
|
|
|
|
int nCryptChanter = GetTag(OBJECT_SELF)=="CRYPTCHANTER001" ? TRUE : FALSE;
|
|
if(nCryptChanter)ExecuteScript("DrainingMelody",OBJECT_SELF);
|
|
|
|
int nNWalker = GetTag(OBJECT_SELF)=="NIGHTWALKER001" ? TRUE : FALSE;
|
|
if(nNWalker)ExecuteScript("desecrating_aura",OBJECT_SELF);
|
|
|
|
int nNCrawler = GetTag(OBJECT_SELF)=="Nightcrawler" ? TRUE : FALSE;
|
|
if(nNCrawler)ExecuteScript("desecrating_aura",OBJECT_SELF);
|
|
|
|
int nVoidWraith = GetTag(OBJECT_SELF)=="VOIDWRAITH001" ? TRUE : FALSE;
|
|
if(nVoidWraith)ExecuteScript("airlessaura",OBJECT_SELF);
|
|
|
|
int AtropalScion = GetTag(OBJECT_SELF)=="ATROPALSCION001" ? TRUE : FALSE;
|
|
if(AtropalScion)ExecuteScript("neaura",OBJECT_SELF);
|
|
|
|
int nGhast1 = GetTag(OBJECT_SELF)=="GHAST001" ? TRUE : FALSE;
|
|
if(nGhast1)ExecuteScript("ghast_stench",OBJECT_SELF);
|
|
|
|
int nGhast2 = GetTag(OBJECT_SELF)=="GHAST002" ? TRUE : FALSE;
|
|
if(nGhast2)ExecuteScript("ghast_stench",OBJECT_SELF);
|
|
|
|
int nGhast3 = GetTag(OBJECT_SELF)=="GHAST003" ? TRUE : FALSE;
|
|
if(nGhast3)ExecuteScript("ghast_stench",OBJECT_SELF);
|
|
|
|
int nTliz = GetTag(OBJECT_SELF)=="TLIZ001" ? TRUE : FALSE;
|
|
if(nTliz)ExecuteScript("tliz_aura",OBJECT_SELF);
|
|
|
|
int nDecay = GetTag(OBJECT_SELF)=="ANGELOFDECAY001" ? TRUE : FALSE;
|
|
if(nDecay)ExecuteScript("rotura",OBJECT_SELF);
|
|
|
|
|
|
// Execute default OnSpawn script.
|
|
ExecuteScript("nw_c2_default9", OBJECT_SELF);
|
|
ExecuteScript("prc_npc_spawn", OBJECT_SELF);
|
|
ExecuteScript("prc_pwonspawn", OBJECT_SELF);
|
|
|
|
ms_Nomenclature(OBJECT_SELF);
|
|
|
|
// OPTIONAL BEHAVIORS (Comment In or Out to Activate ) ****************************************************************************
|
|
//SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION);
|
|
//SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION);
|
|
// This causes the creature to say a special greeting in their conversation file
|
|
// upon Perceiving the player. Attach the [NW_D2_GenCheck.nss] script to the desired
|
|
// greeting in order to designate it. As the creature is actually saying this to
|
|
// himself, don't attach any player responses to the greeting.
|
|
//SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET);
|
|
// This will set the listening pattern on the NPC to attack when allies call
|
|
//SetSpawnInCondition(NW_FLAG_STEALTH);
|
|
// If the NPC has stealth and they are a rogue go into stealth mode
|
|
//SetSpawnInCondition(NW_FLAG_SEARCH);
|
|
// If the NPC has Search go into Search Mode
|
|
SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION);
|
|
//SetSpawnInCondition(NW_FLAG_SET_WARNINGS);
|
|
// This will set the NPC to give a warning to non-enemies before attacking
|
|
SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
|
|
//This will play Ambient Animations until the NPC sees an enemy or is cleared.
|
|
//NOTE that these animations will play automatically for Encounter Creatures.
|
|
// NOTE: ONLY ONE OF THE FOLOOWING ESCAPE COMMANDS SHOULD EVER BE ACTIVATED AT ANY ONE TIME.
|
|
//SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN); // OPTIONAL BEHAVIOR (Flee to a way point and return a short time later.)
|
|
//SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE); // OPTIONAL BEHAVIOR (Flee to a way point and do not return.)
|
|
//SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE); // OPTIONAL BEHAVIOR (Teleport to safety and do not return.)
|
|
//SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN); // OPTIONAL BEHAVIOR (Teleport to safety and return a short time later.)
|
|
|
|
// CUSTOM USER DEFINED EVENTS
|
|
/*
|
|
The following settings will allow the user to fire one of the blank user defined events in the NW_D2_DefaultD. Like the
|
|
On Spawn In script this script is meant to be customized by the end user to allow for unique behaviors. The user defined
|
|
events user 1000 - 1010
|
|
*/
|
|
//SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1002
|
|
//SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1005
|
|
//SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1006
|
|
//SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1008
|
|
SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1003
|
|
//SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1004
|
|
//SetSpawnInCondition(NW_FLAG_DEATH_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1007
|
|
|
|
// DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) *****************************************************************************************
|
|
SetListeningPatterns(); // Goes through and sets up which shouts the NPC will listen to.
|
|
WalkWayPoints(); // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
|
|
// 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
|
|
// 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after
|
|
// combat.
|
|
}
|
|
|