Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system. Added PC deleter. Added ACP 4.1. Full compile. Updated release archive.
86 lines
2.8 KiB
Plaintext
86 lines
2.8 KiB
Plaintext
#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));
|
|
}
|
|
}
|