I’m having a situation where the PC and the companions enter a trigger, I then teleport them nearby to a waypoint just to get there exact location. The script looks like this:
void main()
{
object oPC = GetEnteringObject();
if(!GetIsPC(oPC)) return;
if(GetLocalInt(OBJECT_SELF,"Done")) return;
object oPC1 = GetFirstPC();
object oWP = GetObjectByTag("talktolazarus");
SetLocalInt(OBJECT_SELF,"Done",1);
object oFM = GetFirstFactionMember(oPC1,FALSE);
while(GetIsObjectValid(oFM))
{
AssignCommand(oFM, ClearAllActions());
AssignCommand(oFM, ActionJumpToObject(oWP));
oFM = GetNextFactionMember(oPC1, FALSE);
}
AssignCommand(oPC1, ClearAllActions());
AssignCommand(oPC1, ActionJumpToObject(oWP));
SetCutsceneMode(oPC1);
object oLazarus = GetObjectByTag("lazarus");
DelayCommand(0.5,AssignCommand(oLazarus, ActionStartConversation(oPC1, "c_sa_lazarustalk", FALSE, FALSE, TRUE, FALSE)));
}
When the conversation starts it’s some other NPCs than the owner of the conversation that talks on two nodes. On the first node I have a script I got from @kevL_s and @travus which I really like:
// ga_jump_face_npc
/*
Jumps companions into formation and makes them face the sFacee at random intervals.
The party will then be immobilized to prevent them from moving around during the convo.
Place this on the very first node of the dialog.
Use this in conjunction with the remove_csi script to remove the immobilization effect.
sFacee - The tag of the NPC to talk to.
fSpacing - The spacing between party menbers. The minimum is 0.8.
script by travus with additions by kevL_s
*/
#include "ginc_group"
#include "nw_i0_spells"
void FaceParty(object oPC, string sFacee)
{
vector v = GetPosition(GetObjectByTag(sFacee));
object oFM = GetFirstFactionMember(oPC, FALSE);
while (GetIsObjectValid(oFM))
{
AssignCommand(oFM, ClearAllActions());
DelayCommand(GetRandomDelay(), AssignCommand(oFM, SetFacingPoint(v, TRUE)));
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneImmobilize(), oFM);
oFM = GetNextFactionMember(oPC, FALSE);
}
}
void main(string sFacee, float fSpacing)
{
object oPC = GetFirstPC();
if (fSpacing < 0.8) fSpacing = 0.8f;
ResetGroup(PARTY_GROUP_NAME);
GroupAddFaction(PARTY_GROUP_NAME, oPC, GROUP_LEADER_FIRST, TRUE);
GroupSetBMAFormation(PARTY_GROUP_NAME, fSpacing);
GroupSetNoise(PARTY_GROUP_NAME);
GroupMoveToFormationLocation(PARTY_GROUP_NAME, GetLocation(oPC), MOVE_JUMP_INSTANT);
DelayCommand(0.1f, FaceParty(oPC, sFacee));
}
Now, the problem I have with this conversation is that on the third red node on the conversation, the owner of the conversation starts to talk. When he does that the camera sort of “turns around” to focus on him. And the camera does that whenever he speaks in the conversation. The camera doesn’t do this on any of the other NPCs or when the PC that speaks. At first I felt like this is no biggie, but having tested this conversation a few times, I have found that I’m quite annoyed by this.
Does anyone know what causes this strange behaviour?