The PC is invisible via the Invisibility spell, so the guard eventually returns to the friendly faction, then repeats the actions over again.
Anyone care to see what I've done wrong here?
#include "NW_I0_GENERIC"
void SetDetectState()
{
object oHostile = GetObjectByTag("hostile");
object oPC = GetFirstPC();
object oDetected = GetLastPerceived();
object oAC = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC);
object oD = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC);
object oF = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC);
object oH = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC);
object oS = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC);
int nPC = InvisibleTrue(oPC);
int nAnimalCompanion = InvisibleTrue(oAC);
int nDominated = InvisibleTrue(oD);
int nFamiliar = InvisibleTrue(oF);
int nHenchman = InvisibleTrue(oH);
int nSummoned = InvisibleTrue(oS);
int nIsDetected = GetLocalInt(oPC, "IsDetected");
// PLAYER IN TRIGGER BEHIND CRATES HIDING
// DEBUG: WORKS!
if (GetLocalInt(GetFirstPC(), "lbhide") == 1) return;
// PLAYER MAY HAVE KILLED A GUARD AND IS WALKING AROUND AS ONE
// DEBUG: WORKS!
if ( (GetTag(GetItemInSlot(INVENTORY_SLOT_CHEST, GetFirstPC())) == "bghguardarmor") &&
(GetTag(GetItemInSlot(INVENTORY_SLOT_HEAD, GetFirstPC())) == "bghguardhelm") ) return;
// CHECK TO SEE IF PLAYER PARTY IS INDEED INVISIBLE
// DEBUG: HALF-ASSED FAIL
if ( (nPC == TRUE) &&
(nAnimalCompanion == TRUE) &&
(nDominated == TRUE) &&
(nFamiliar == TRUE) &&
(nHenchman == TRUE) &&
(nSummoned == TRUE)) return;
if ((oDetected == oPC) && (GetLocalInt(OBJECT_SELF, "SeenPC") == 0))
{
SetLocalInt(OBJECT_SELF, "SeenPC", 1);
SetLocalInt(oPC, "IsDetected", (nIsDetected +1));
//FloatingTextStringOnCreature("[DeBug] +1 Detected!", oPC, FALSE);
AssignCommand(OBJECT_SELF, ClearAllActions());
AssignCommand(GetObjectByTag("250B13_GUARD2"), ClearAllActions());
AssignCommand(GetObjectByTag("250B13_GUARD3"), ClearAllActions());
DelayCommand(0.5, ChangeFaction(OBJECT_SELF, oHostile));
DelayCommand(0.5, ChangeFaction(GetObjectByTag("250B13_GUARD2"), oHostile));
DelayCommand(0.5, ChangeFaction(GetObjectByTag("250B13_GUARD3"), oHostile));
DelayCommand(0.5, AssignCommand(OBJECT_SELF, SpeakString("You there! Stop!")));
DelayCommand(0.6, ActionForceMoveToObject(oPC, TRUE, 1.0f, 20.0f));
DelayCommand(0.7, DetermineCombatRound());
DelayCommand(0.7, AssignCommand(GetObjectByTag("250B13_GUARD2"), DetermineCombatRound()));
DelayCommand(0.7, AssignCommand(GetObjectByTag("250B13_GUARD3"), DetermineCombatRound()));
SetLocalObject(OBJECT_SELF, "PCSeen", oDetected);
SetLocalInt(GetModule(), "lbalarm", 1);
}
}
void ClearDetectState()
{
object oPC = GetLocalObject(OBJECT_SELF, "PCSeen");
object oFriendly = GetObjectByTag("friendly");
object oForgotten = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_NOT_SEEN_AND_NOT_HEARD, 1);
int nIsDetected = GetLocalInt(oPC, "IsDetected");
if ((GetLocalInt(OBJECT_SELF, "SeenPC") == 1) && (oPC == oForgotten))
{
SetLocalInt(OBJECT_SELF, "SeenPC", 0);
SetLocalInt(oPC, "IsDetected", (nIsDetected -1));
//FloatingTextStringOnCreature("[DeBug] -1 Forgotten!", oPC, FALSE);
DelayCommand(0.5, ChangeFaction(OBJECT_SELF, oFriendly));
DelayCommand(0.5, ChangeFaction(GetObjectByTag("250B13_GUARD2"), oFriendly));
DelayCommand(0.5, ChangeFaction(GetObjectByTag("250B13_GUARD3"), oFriendly));
if ( (GetLocalInt(oPC, "IsDetected") < 0) )
SetLocalInt(oPC, "IsDetected", 0);
}
}
void main()
{
SetDetectState();
ClearDetectState();
}
Thanks,
FP!





Retour en haut






