67 lines
2.5 KiB
Plaintext
67 lines
2.5 KiB
Plaintext
|
//standard percept with added auto charm
|
||
|
#include "NW_I0_GENERIC"
|
||
|
#include "NW_I0_SPELLS"
|
||
|
#include "inc_utility"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
SpeakString("Come to me.");
|
||
|
effect MyEffect;
|
||
|
MyEffect = EffectDazed();
|
||
|
object oTarget = GetLastPerceived();
|
||
|
if (WillSave(oTarget,17,SAVING_THROW_TYPE_MIND_SPELLS)==0)
|
||
|
{
|
||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, MyEffect, oTarget,60.0);
|
||
|
}
|
||
|
|
||
|
//This is the equivalent of a force conversation bubble, should only be used if you want an NPC
|
||
|
//to say something while he is already engaged in combat.
|
||
|
if(GetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION) && GetIsPC(GetLastPerceived()) && GetLastPerceptionSeen())
|
||
|
{
|
||
|
SpeakOneLinerConversation();
|
||
|
}
|
||
|
//If the last perception event was hearing based or if someone vanished then go to search mode
|
||
|
if ((GetLastPerceptionVanished()) && GetIsEnemy(GetLastPerceived()))
|
||
|
{
|
||
|
object oGone = GetLastPerceived();
|
||
|
if((GetAttemptedAttackTarget() == GetLastPerceived() ||
|
||
|
GetAttemptedSpellTarget() == GetLastPerceived() ||
|
||
|
GetAttackTarget() == GetLastPerceived()) && GetArea(GetLastPerceived()) != GetArea(OBJECT_SELF))
|
||
|
{
|
||
|
ClearAllActions();
|
||
|
DetermineCombatRound();
|
||
|
}
|
||
|
}
|
||
|
//Do not bother checking the last target seen if already fighting
|
||
|
else if(!GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget()))
|
||
|
{
|
||
|
//Check if the last percieved creature was actually seen
|
||
|
if(GetLastPerceptionSeen())
|
||
|
{
|
||
|
if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL))
|
||
|
{
|
||
|
DetermineSpecialBehavior();
|
||
|
}
|
||
|
else if(GetIsEnemy(GetLastPerceived()))
|
||
|
{
|
||
|
if(!PRCGetHasEffect(EFFECT_TYPE_SLEEP))
|
||
|
{
|
||
|
SetFacingPoint(GetPosition(GetLastPerceived()));
|
||
|
SpeakString("NW_I_WAS_ATTACKED", TALKVOLUME_SILENT_TALK);
|
||
|
DetermineCombatRound();
|
||
|
}
|
||
|
}
|
||
|
//Linked up to the special conversation check to initiate a special one-off conversation
|
||
|
//to get the PCs attention
|
||
|
else if(GetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION) && GetIsPC(GetLastPerceived()))
|
||
|
{
|
||
|
ActionStartConversation(OBJECT_SELF);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if(GetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT) && GetLastPerceptionSeen())
|
||
|
{
|
||
|
SignalEvent(OBJECT_SELF, EventUserDefined(1002));
|
||
|
}
|
||
|
}
|