#include "nw_i0_generic" #include "prc_inc_spells" void main() { // * if not runnning normal or better Ai then exit for performance reasons if (GetAILevel() == AI_LEVEL_VERY_LOW) return; ExecuteScript("prc_npc_hb", OBJECT_SELF); // Buff ourselves up right away if we should if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY)) { // This will return TRUE if an enemy was within 40.0 m // and we buffed ourselves up instantly to respond -- // simulates a spellcaster with protections enabled // already. if(TalentAdvancedBuff(40.0)) { // This is a one-shot deal SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE); // This return means we skip sending the user-defined // heartbeat signal in this one case. return; } } if(PRCGetHasEffect(EFFECT_TYPE_SLEEP)) { // If we're asleep and this is the result of sleeping // at night, apply the floating 'z's visual effect // every so often if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT)) { effect eVis = EffectVisualEffect(VFX_IMP_SLEEP); if(d10() > 6) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); } } } // Check to see if we should be playing default animations // - make sure we don't have any current targets else if ( !GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget())) { if (GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) || GetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE) || GetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE)) { // This handles special attacking/fleeing behavior // for omnivores & herbivores. DetermineSpecialBehavior(); } else if (!IsInConversation(OBJECT_SELF)) { if (GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN) || GetIsEncounterCreature()) { PlayMobileAmbientAnimations(); } else if (GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS)) { PlayImmobileAmbientAnimations(); } } } // Send the user-defined event signal if specified if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_HEARTBEAT)); } object oNPC = GetLastPerceived(); if ((GetIsPC(oNPC)&&(GetLocalInt(oNPC,"HAS_WEREWOLF_EFFECT")!=1))||(!GetIsPC(oNPC)&&(GetTag(oNPC)!="PCwerewolf"))) { SetIsTemporaryEnemy(oNPC,OBJECT_SELF,FALSE); ActionAttack(GetNearestCreature(CREATURE_TYPE_IS_ALIVE,CREATURE_TYPE_PERCEPTION)); } }