I mentioned this on Discord, so I hope I’m not spamming, but: does anyone have recommendations for a script that will remove a companion from the party, but leave them in the game world? (i.e. keep them waiting where they were standing.)
ga_roster_party_remove should be the correct one (it clearly states that it doesn’t remove the companion from the area) but it’s cheerfully despawning my companions instead of just taking them out of the party.
I could be wrong but afair, the staple way for releasing a henchman is RemoveHenchman.
//This function removes a roster member from the party. By default it
//will remove the NPC from the game world and save them out with their
//current state. If bDespawnNPC is FALSE, then the NPC will not be
//removed from the game world and their state will not be saved.
//Couple with DespawnRosterMember() if you need to remove the roster
//member from the area and save their current state
void RemoveRosterMemberFromParty( string sRosterName, object oPC, int bDespawnNPC=TRUE );
Create a modified version of ga_roster_party_remove where the line
is replaced with
RemoveRosterMemberFromParty(sRosterName, oTarget, FALSE);
I use my own script because I had experienced troubles using the standard scripts/functions. Basically I despawn the companion, and respawn him/her immediatly.
// dismiss a companion and leave him/her where s/he is
void main(string sName)
object oPC = GetFirstPC();
object oC = GetObjectByTag(sName);
location lPosition = GetLocation(oC);
RemoveRosterMemberFromParty(sName, oPC, TRUE); // remove, despawn
SpawnRosterMember(sName, lPosition); // respawn where he/she was
Caution : you must despawn a companion if you intend to meet him/her again in a later module and/or allow the player to come back to the first place from a later module while s/he is in the party again or had been in the party in later modules.
Addition : I always have rostername = tag lowercase only.
Many thanks, Aqvilinus and Claudius, I’ll give those a go!