Aantioch_Infernum/_module/nss/npc_sit_stay.nss

63 lines
2.0 KiB
Plaintext
Raw Normal View History

2023-08-08 16:22:17 -04:00
//::///////////////////////////////////////////////
//:: 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"
2023-08-08 16:22:17 -04:00
#include "NW_I0_GENERIC"
void main()
{
int nMatch = GetListenPatternNumber();
object oShouter = GetLastSpeaker();
object oIntruder;
if (nMatch == -1 && GetCommandable(OBJECT_SELF))
{
ClearAllActions();
2023-08-08 16:22:17 -04:00
}
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();
//}
2023-08-08 16:22:17 -04:00
ClearAllActions();
int nChair = 1;
string sMyTagName = GetTag(OBJECT_SELF);
string sSittableTagName = "CHAIR_" + sMyTagName;
object oChair = GetRandomObjectByTag(sSittableTagName, 110.0);
ActionMoveToObject (oChair, FALSE);
2023-08-08 16:22:17 -04:00
ActionSit(oChair);
}
DelayCommand(GetRandomDelay(120.0, 300.0), ExecuteScript("npc_sit_stay", OBJECT_SELF));
2023-08-08 16:22:17 -04:00
}