63 lines
1.9 KiB
Plaintext
63 lines
1.9 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: npc_sit_stay
|
|
//:://////////////////////////////////////////////
|
|
/*Goes on the OnSpawn and OnConversation script of the NPC that you want to stay <span class="highlight">seated</span>*/
|
|
//#include "nw_i0_spells"
|
|
#include "NW_I0_GENERIC"
|
|
void main()
|
|
{
|
|
int nMatch = GetListenPatternNumber();
|
|
object oShouter = GetLastSpeaker();
|
|
object oIntruder;
|
|
if (nMatch == -1 && GetCommandable(OBJECT_SELF))
|
|
{
|
|
ClearAllActions();
|
|
}
|
|
else
|
|
if(nMatch != -1 && GetIsObjectValid(oShouter) && !GetIsPC(oShouter) && GetIsFriend(oShouter))
|
|
{
|
|
if(nMatch == 4)
|
|
{
|
|
oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER");
|
|
}
|
|
else if (nMatch == 5)
|
|
{
|
|
oIntruder = GetLastHostileActor(oShouter);
|
|
if(!GetIsObjectValid(oIntruder))
|
|
{
|
|
oIntruder = GetAttemptedAttackTarget();
|
|
if(!GetIsObjectValid(oIntruder))
|
|
{
|
|
oIntruder = GetAttemptedSpellTarget();
|
|
if(!GetIsObjectValid(oIntruder))
|
|
{
|
|
oIntruder = OBJECT_INVALID;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
RespondToShout(oShouter, nMatch, oIntruder);
|
|
}
|
|
|
|
if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT))
|
|
{
|
|
SignalEvent(OBJECT_SELF, EventUserDefined(1004));
|
|
}
|
|
if(GetCommandable(OBJECT_SELF))
|
|
{
|
|
//{
|
|
//BeginConversation();
|
|
//}
|
|
ClearAllActions();
|
|
|
|
string sWay = "NW_STOP";
|
|
object oWay = GetRandomObjectByTag(sWay, 110.0);
|
|
ActionMoveToObject (oWay, FALSE);
|
|
|
|
}
|
|
int nTime = Random(180) + 120;
|
|
float fTime = IntToFloat(nTime);
|
|
DelayCommand(fTime, ExecuteScript("npc_sit_chair", OBJECT_SELF));
|
|
}
|
|
|