67 lines
2.0 KiB
Plaintext
67 lines
2.0 KiB
Plaintext
/////////////////////////////////////////////////
|
|
/*
|
|
Summon guard if unlocked.
|
|
|
|
Variables set on the Defender(at spawn in);
|
|
int "DEFENDER" 1
|
|
|
|
*/
|
|
/////////////////////////////////////////////////
|
|
#include "nw_i0_generic"
|
|
void GoHostile(object oPC, object oDefender);
|
|
void main()
|
|
{
|
|
object oDest = GetTransitionTarget(OBJECT_SELF);
|
|
object oPC = GetLastUnlocked();
|
|
SetLocked(oDest,FALSE);
|
|
/*
|
|
if(GetAssociateType(oNPC) != ASSOCIATE_TYPE_NONE)
|
|
{oPC = GetMaster(oPC);}
|
|
*/
|
|
int bDefender;
|
|
int nth = 1;
|
|
object oDefender = GetNearestObject(OBJECT_TYPE_CREATURE,OBJECT_SELF,nth);
|
|
|
|
while(oDefender != OBJECT_INVALID)
|
|
{
|
|
bDefender = GetLocalInt(oDefender,"DEFENDER");
|
|
|
|
// Am I a defender
|
|
if(bDefender == TRUE)
|
|
{
|
|
if(GetIsInCombat(oDefender) == FALSE)
|
|
{
|
|
|
|
if(LineOfSightObject(oDefender,oPC) == TRUE)
|
|
{
|
|
vector vFacing = GetPosition(oPC);
|
|
//SetIsTemporaryEnemy(oPC,oDefender,TRUE);
|
|
GoHostile(oPC,oDefender);
|
|
AssignCommand(oDefender,ClearAllActions());
|
|
AssignCommand(oDefender,SetFacingPoint(vFacing));
|
|
AssignCommand(oDefender,SpeakString("Stop theif!"));
|
|
AssignCommand(oDefender,PlayVoiceChat(VOICE_CHAT_BATTLECRY1));
|
|
AssignCommand(oDefender,ActionForceMoveToObject(oPC,TRUE,4.0));
|
|
AssignCommand(oDefender,ActionDoCommand(DetermineCombatRound(oPC)));}
|
|
}
|
|
oDefender = OBJECT_INVALID;
|
|
}
|
|
else
|
|
{
|
|
nth=nth+1;
|
|
oDefender = GetNearestObject(OBJECT_TYPE_CREATURE,OBJECT_SELF,nth);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
void GoHostile(object oPC, object oDefender)
|
|
{
|
|
object oFactionMember = GetFactionLeader(oPC);
|
|
while(oFactionMember != OBJECT_INVALID)
|
|
{
|
|
SetIsTemporaryEnemy(oFactionMember,oDefender,TRUE);
|
|
oFactionMember = GetNextFactionMember(oPC);
|
|
}
|
|
}
|