<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.larian.game/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scottworld</id>
	<title>Divinity Engine Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.larian.game/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scottworld"/>
	<link rel="alternate" type="text/html" href="https://docs.larian.game/Special:Contributions/Scottworld"/>
	<updated>2026-05-13T06:25:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4161</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4161"/>
		<updated>2017-10-31T10:33:38Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PLEASE READ THE DISCUSSION PAGE - &lt;br /&gt;
There are some key points I missed, which you will need to add to make this work nicely in game.&lt;br /&gt;
&lt;br /&gt;
https://docs.larian.game/Talk:Party_Management_via_Dialog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/WYBKk4pYfPo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove player from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4114</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4114"/>
		<updated>2017-10-24T21:55:39Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/WYBKk4pYfPo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove player from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4113</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4113"/>
		<updated>2017-10-24T21:54:45Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/WYBKk4pYfPo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove player from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4112</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4112"/>
		<updated>2017-10-24T20:01:11Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/WYBKk4pYfPo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove player from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4111</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4111"/>
		<updated>2017-10-24T19:27:26Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
=== Updated Video On its way..... Processing NOW ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove player from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check party number unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4110</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4110"/>
		<updated>2017-10-24T19:16:49Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
=== Updated Video On its way..... Processing NOW ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to set check and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check and unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4109</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4109"/>
		<updated>2017-10-24T19:16:22Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
Updated Video On its way..... Processing NOW&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to set check and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check and unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4108</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4108"/>
		<updated>2017-10-24T19:15:58Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
Updated Video On its way..... Processing NOW&lt;br /&gt;
&lt;br /&gt;
Please note there is an error in the video and line 74 should read&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_PlayerCount &amp;lt; _PlayerMax&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This had been corrected in the code below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to set check and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check and unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4107</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4107"/>
		<updated>2017-10-24T19:12:22Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
Updated Video.. Processing&lt;br /&gt;
&lt;br /&gt;
Please note there is an error in the video and line 74 should read&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_PlayerCount &amp;lt; _PlayerMax&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This had been corrected in the code below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event to set check and set MAX Flag when an NPC joins party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Event to check and unset the max flag when a party member leaves.&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// If a NPC sets their InParty flag.. call a proc to add them to the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// If a Player clears their InParty flag.. call a proc to remove them from the party.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4106</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4106"/>
		<updated>2017-10-24T19:10:01Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
Updated Video.. Processing&lt;br /&gt;
&lt;br /&gt;
Please note there is an error in the video and line 74 should read&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_PlayerCount &amp;lt; _PlayerMax&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This had been corrected in the code below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(4);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4105</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4105"/>
		<updated>2017-10-24T19:08:54Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
Updated Video.. Processing&lt;br /&gt;
&lt;br /&gt;
Please note there is an error in the video and line 74 should read&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_PlayerCount &amp;lt; _PlayerMax&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This had been corrected in the code below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
// you can probably remove this notification - its just to alert you to the event.&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4100</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4100"/>
		<updated>2017-10-24T11:57:28Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/-Wv1Ja4Uw-Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note there is an error in the video and line 74 should read&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_PlayerCount &amp;lt; _PlayerMax&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This had been corrected in the code below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
// you can probably remove this notification - its just to alert you to the event.&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// change this to point to your level name&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4099</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4099"/>
		<updated>2017-10-24T11:04:02Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/-Wv1Ja4Uw-Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note there is an error in the video and line 74 should read&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_PlayerCount &amp;lt; _PlayerMax&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This had been corrected in the code below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
// you can probably remove this notification - its just to alert you to the event.&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4096</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4096"/>
		<updated>2017-10-24T00:11:30Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
I also cover the character creation script inclusion (which is available in other posts), as this is necessary for this to work.&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/-Wv1Ja4Uw-Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
// you can probably remove this notification - its just to alert you to the event.&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4095</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4095"/>
		<updated>2017-10-24T00:07:09Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;https://youtu.be/-Wv1Ja4Uw-Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
// you can probably remove this notification - its just to alert you to the event.&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4094</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4094"/>
		<updated>2017-10-24T00:03:17Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
https://youtu.be/-Wv1Ja4Uw-Q&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
// you can probably remove this notification - its just to alert you to the event.&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4093</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4093"/>
		<updated>2017-10-23T23:31:05Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video link here to video here once it is processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
// you can probably remove this notification - its just to alert you to the event.&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4092</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4092"/>
		<updated>2017-10-23T23:29:53Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via having a dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video link here to video here once it is processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4091</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4091"/>
		<updated>2017-10-23T23:20:04Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video link here to video here once it is processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total, including you.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4090</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4090"/>
		<updated>2017-10-23T22:55:34Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video link here to video here once it is processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove the player you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4089</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4089"/>
		<updated>2017-10-23T22:54:20Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video link here to video here once it is processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add the NPC you are talking to into the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking to from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4088</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4088"/>
		<updated>2017-10-23T22:53:20Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video link here to video here once it is processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Set this variable to your party size N+1  in this example party size is 4 total.&lt;br /&gt;
DB_Scottworld_MaxPartySize(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=4087</id>
		<title>Community page submission</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=4087"/>
		<updated>2017-10-23T22:46:59Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;&lt;br /&gt;
Welcome to the community page submission section.&amp;lt;br /&amp;gt;&lt;br /&gt;
First and foremost: thanks to all of you from everyone at Larian Studios!&amp;lt;br /&amp;gt;&lt;br /&gt;
Without your love and feedback, we wouldn't be where we are today.&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
That being said, let's do our best to keep this wiki just as lovely as you guys:&amp;lt;br /&amp;gt;&lt;br /&gt;
# To add your page to the main wiki pages, please add it to the list below.&lt;br /&gt;
# Once our moderators get a chance, they'll review the submissions and move approved pages to the appropriate location on the [[Community editor guides | Editor Guides]] and/or [[Community tutorials | Community Tutorials]] section.&lt;br /&gt;
# We'll leave the page link a couple of days on here with an approval stamp and a link to its new location, to give the editor a chance to find out where his/her page went.&lt;br /&gt;
# We love you all very much, but we do not tolerate any misbehavior. Please refrain from using foul language, messing with other people's pages,...&lt;br /&gt;
# This wiki follows the general open format. Anyone is allowed to edit a page. View an edit to your page as interest in your content, not as criticism.&lt;br /&gt;
# But do try to avoid editing someone else's pages before it has been approved and moved to the main sections, unless of course you have the permission to do so from the original editor.&lt;br /&gt;
# As always, stay awesome [[File: heart.png | 32px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Example Submission|Example submission]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Party Management via Dialog|Party Management via Dialog]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Subregion UI Notifications|Subregion UI Notifications]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[How to make an NPC sit|How to make an NPC sit]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Creating a book with TEXT inside|Creating a book with TEXT inside]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Pak Extractor Guide|Pak Extractor Guide]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community editor guides|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Tutorial - Implementing a Basic Quest|Tutorial - Implementing a Basic Quest]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]]) ([[Community:_Getting_Started|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[NPC Patrols|NPC Patrols]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Basic Character Creation]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Character and Item Script Triggers, Calls, and Queries]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community:_Script_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Scripting in New Talents, Attributes, and Combat Abilities]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Story_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Creating/Modifying Weapon Elements and Scaling]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Stats_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Adding New Icons]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Texture_atlas_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4086</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4086"/>
		<updated>2017-10-23T22:46:07Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video link here to video here once it is processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4085</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4085"/>
		<updated>2017-10-23T22:45:46Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video will link to video here once processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4084</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4084"/>
		<updated>2017-10-23T22:44:17Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video will link here once processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code for &amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4083</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4083"/>
		<updated>2017-10-23T22:43:36Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video will link here once processed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4082</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4082"/>
		<updated>2017-10-23T22:42:48Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
* The player can recruit companions via dialog with them. &lt;br /&gt;
* They can dismiss them and then remove them from the party. &lt;br /&gt;
* They can replace with another character again by a simple conversation.&lt;br /&gt;
* There are no dependencies on other mods.&lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4081</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4081"/>
		<updated>2017-10-23T22:40:38Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
- The player can recruit companions via dialog with them. &lt;br /&gt;
- They can dismiss them and then remove them from the party. &lt;br /&gt;
- They can replace with another character again by a simple conversation.&lt;br /&gt;
- There are no dependencies on other mods. &lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4080</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4080"/>
		<updated>2017-10-23T22:39:13Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
- The player can recruit companions via dialog with them. &lt;br /&gt;
- They can dismiss them and then remove them from the party. &lt;br /&gt;
- They can replace with another character again by a simple conversation.&lt;br /&gt;
- There are no dependencies on other mods. &lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;GLO_Party_Management&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;CharacterCreation&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]KB SECTION[/color]&lt;br /&gt;
&lt;br /&gt;
[i]IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);[/i]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4079</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4079"/>
		<updated>2017-10-23T22:37:52Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
- The player can recruit companions via dialog with them. &lt;br /&gt;
- They can dismiss them and then remove them from the party. &lt;br /&gt;
- They can replace with another character again by a simple conversation.&lt;br /&gt;
- There are no dependencies on other mods. &lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is the code.&lt;br /&gt;
&lt;br /&gt;
GLO_Party_Management&lt;br /&gt;
&lt;br /&gt;
INIT SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DB_Scottworld_MaxPartySize(5);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KB SECTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CharacterCreation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]INIT SECTION[/color]&lt;br /&gt;
&lt;br /&gt;
[i]DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]KB SECTION[/color]&lt;br /&gt;
&lt;br /&gt;
[i]IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);[/i]&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4078</id>
		<title>Party Management via Dialog</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Party_Management_via_Dialog&amp;diff=4078"/>
		<updated>2017-10-23T22:36:37Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: Created page with &amp;quot;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs  - The player can recruit companions via...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So here is a rather long 1 hour tutorial  (apologies) on how you can give the player the ability to manage a party by talking to NPCs&lt;br /&gt;
&lt;br /&gt;
- The player can recruit companions via dialog with them. &lt;br /&gt;
- They can dismiss them and then remove them from the party. &lt;br /&gt;
- They can replace with another character again by a simple conversation.&lt;br /&gt;
- There are no dependencies on other mods. &lt;br /&gt;
&lt;br /&gt;
There is a also a variable for Maximum party size so you can restrict the number of companions (although the player can swap out whoever they like as long as they don't over do the maximum party number)&lt;br /&gt;
&lt;br /&gt;
Here is the complete video tutorial which starts from a complete blank level. The code is in the post below (and is commented) if you would rather cut and paste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]Here is the code.[/color]&lt;br /&gt;
&lt;br /&gt;
GLO_Party_Management&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]INIT SECTION[/color]&lt;br /&gt;
&lt;br /&gt;
[i]DB_Scottworld_MaxPartySize(5);[/i]&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]KB SECTION[/color]&lt;br /&gt;
&lt;br /&gt;
[i]// Procedure to add an NPC you are talking to the party..&lt;br /&gt;
PROC&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has joined your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakePlayer(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Procedure to remove NPC you are talking from the party&lt;br /&gt;
PROC&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterGetDisplayName(_Char, _, _name)&lt;br /&gt;
AND&lt;br /&gt;
StringConcatenate(_name, &amp;quot; Has left your party&amp;quot;,_MsgDisplay)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
CharacterMakeNPC(_Char);&lt;br /&gt;
CharacterRemoveFromParty(_Char);&lt;br /&gt;
ShowNotification(_MsgDisplay);&lt;br /&gt;
&lt;br /&gt;
// Event on player joining the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterJoinedParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount == _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
ShowNotification(&amp;quot;Max Party Size Reached&amp;quot;);&lt;br /&gt;
GlobalSetFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on player leaving the party&lt;br /&gt;
IF&lt;br /&gt;
CharacterLeftParty(_char)&lt;br /&gt;
AND&lt;br /&gt;
SysCount(&amp;quot;DB_IsPlayer&amp;quot;,1,_PlayerCount)&lt;br /&gt;
AND&lt;br /&gt;
DB_Scottworld_MaxPartySize(_PlayerMax)&lt;br /&gt;
AND&lt;br /&gt;
_PlayerCount &amp;lt; _PlayerMax&lt;br /&gt;
THEN&lt;br /&gt;
//ShowNotification(&amp;quot;Party Dropped by 1&amp;quot;);&lt;br /&gt;
GlobalClearFlag(&amp;quot;GEN_MaxPlayerCountReached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// event on when the fighter leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Fighter_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the rogue leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Rogue_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the wizard leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Wizard_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);&lt;br /&gt;
&lt;br /&gt;
// event on when the Ranger joins.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagSet(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedNPC(_Dialog, 1, _npc)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_AddPlayerToParty((CHARACTERGUID)_npc);&lt;br /&gt;
&lt;br /&gt;
// event on when the ranger leaves.&lt;br /&gt;
IF&lt;br /&gt;
ObjectFlagCleared(&amp;quot;Ranger_InParty&amp;quot;, _, _Dialog)&lt;br /&gt;
AND&lt;br /&gt;
DialogGetInvolvedPlayer(_Dialog, 1, _player)&lt;br /&gt;
THEN&lt;br /&gt;
PROC_RemovePlayerFromParty((CHARACTERGUID)_player);[/i]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CharacterCreation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]INIT SECTION[/color]&lt;br /&gt;
&lt;br /&gt;
[i]DB_CharacterCreationLevels(&amp;quot;SYS_Character_Creation_A&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(&amp;quot;Tutorials&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// level name, start point trigger (this trigger needs to be GLOBAL)&lt;br /&gt;
DB_CharacterCreationTransitionInfo(&amp;quot;Tutorials&amp;quot;,(TRIGGERGUID)TRIGGERGUID_STARTPOINT_1d9675b4-50f6-4665-b630-46c4f5a6f128);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_002_361dacdc-4135-4d3f-a9a2-3cad46ca246a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_003_dded8c22-b28e-45c1-a074-eb0954602c8a);&lt;br /&gt;
DB_CharacterCreationDummy((CHARACTERGUID)S_GLO_CharacterCreationDummy_004_5f93cae7-6c10-4da1-b9a5-0efafc168c8e);&lt;br /&gt;
&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin_7b6c1f26-fe4e-40bd-a5d0-e6ff58cef4fe);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin2_c451954c-73bf-46ce-a1d1-caa9bbdc3cfd);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin3_41a06985-7851-4c29-8a78-398ccb313f39);&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)S_Player_GenericOrigin4_41a594ed-b768-4289-9f17-59f701cc6910);[/i]&lt;br /&gt;
&lt;br /&gt;
[color:#FF0000]KB SECTION[/color]&lt;br /&gt;
&lt;br /&gt;
[i]IF&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
GameModeStarted(&amp;quot;Campaign&amp;quot;,1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_Level)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_Level,_Trigger)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,1);&lt;br /&gt;
CharacterMakePlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
MakePlayerActive(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
DB_IsPlayer(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
ProcMovePartyToStart(S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,_Trigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Lvl,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationStarted(_)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation((CHARACTERGUID)CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406,0,_Success)&lt;br /&gt;
THEN&lt;br /&gt;
DB_InCharacterCreation(_Success);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
TeleportTo(_Dummy,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins((CHARACTERGUID)_Org)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Org,1);&lt;br /&gt;
TeleportTo(_Org,S_CharOriginDest_c9c5e1d7-1998-4d4e-aacb-3970e8823674);&lt;br /&gt;
CharacterMakePlayer(_Org, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
IterateUsers(&amp;quot;_CCUserSetup&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserEvent(_User,&amp;quot;_CCUserSetup&amp;quot;)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_User,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_User,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CurrentLevel(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationLevels(_Lvl)&lt;br /&gt;
AND&lt;br /&gt;
DB_GLO_FirstLevelAfterCharacterCreation(_FirstLevel)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationTransitionInfo(_FirstLevel,_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_IsPlayer(_Char)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_DoNotFace(_Char);&lt;br /&gt;
ProcMovePartyToStart(_Char,_StartTrigger);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Region)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Region,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_StartedActualGame(1);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_InCharacterCreation(1)&lt;br /&gt;
AND &lt;br /&gt;
NOT DB_StartedActualGame(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
DB_TeleportedToStartCharacters(_Char)&lt;br /&gt;
AND&lt;br /&gt;
CharacterIsInPartyWith(_Char,_NewChar,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AlreadyTeleported(1);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcMovePartyToStart((CHARACTERGUID)_NewChar,(TRIGGERGUID)_StartTrigger)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AlreadyTeleported(1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_TeleportedToStartCharacters(_NewChar);&lt;br /&gt;
CharacterTeleportPartiesToTrigger(_StartTrigger,&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
RegionStarted(_Level)&lt;br /&gt;
AND&lt;br /&gt;
IsGameLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
IsCharacterCreationLevel(_Level,0)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
_Dummy != CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406&lt;br /&gt;
THEN&lt;br /&gt;
TeleportTo(_Dummy,CHARACTERGUID_S_GLO_CharacterCreationDummy_001_da072fe7-fdd5-42ae-9139-8bd4b9fca406);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
DB_IsPlayer(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousSelectedCharacter((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_SelectedCC((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ClearTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
NOT DB_IsPlayer(_Char);&lt;br /&gt;
ProcUnRegisterPlayerTriggers(_Char);&lt;br /&gt;
NOT DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcSetSelectedCharCreationPlayer((CHARACTERGUID)_Char,(STRING)_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
SetTag(_Char,&amp;quot;AVATAR&amp;quot;);&lt;br /&gt;
DB_IsPlayer(_Char);&lt;br /&gt;
ProcRegisterPlayerTriggers(_Char);&lt;br /&gt;
DB_SelectedCC(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserDisconnected(_UserID,_,_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
THEN&lt;br /&gt;
ProcRemovePreviousSelectedCharacter(_UserProfile);&lt;br /&gt;
ProcRemovePreviousDummy(_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
GetUserProfileID(_UserID,_UserProfile)&lt;br /&gt;
THEN&lt;br /&gt;
ProcSetSelectedCharCreationPlayer(_Char,_UserProfile);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterSelectedInCharCreation(_Char,_UserID)&lt;br /&gt;
AND&lt;br /&gt;
CharacterHasTalent(_Char,&amp;quot;AnimalEmpathy&amp;quot;,1)&lt;br /&gt;
THEN&lt;br /&gt;
SetTag(_Char,&amp;quot;PETPAL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_,_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserName,_)&lt;br /&gt;
THEN&lt;br /&gt;
ProcAssignDummyToUser(_Dummy,_UserName);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcRemovePreviousDummy((STRING)_UserProfile)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserProfile,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AssignedDummyForUser(_UserProfile,_Dummy);&lt;br /&gt;
DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterMakePlayer(_Dummy, NULL_00000000-0000-0000-0000-000000000000);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
CharacterAddToCharacterCreation(_Dummy,0,1)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_AvailableDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy);&lt;br /&gt;
&lt;br /&gt;
PROC&lt;br /&gt;
ProcAssignDummyToUser((CHARACTERGUID)_Dummy,(STRING)_UserName)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_AvailableDummy(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
UserConnected(_UserID,_,_UserName)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(1)&lt;br /&gt;
AND&lt;br /&gt;
DB_AssignedDummyForUser(_UserName,_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
SetOnStage(_Dummy,1);&lt;br /&gt;
CharacterMakePlayer(_Dummy);&lt;br /&gt;
CharacterAssignToUser(_UserID,_Dummy);&lt;br /&gt;
MakePlayerActive(_Dummy);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_GenericOrigins(_Dummy)&lt;br /&gt;
AND&lt;br /&gt;
NOT DB_SelectedCC(_Dummy,_)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished((CHARACTERGUID)NULL_00000000-0000-0000-0000-000000000000)&lt;br /&gt;
AND&lt;br /&gt;
DB_CharacterCreationDummy(_Dummy)&lt;br /&gt;
THEN&lt;br /&gt;
CharacterRemoveFromParty(_Dummy);&lt;br /&gt;
CharacterMakeNPC(_Dummy);&lt;br /&gt;
SetOnStage(_Dummy,0);&lt;br /&gt;
&lt;br /&gt;
IF&lt;br /&gt;
CharacterCreationFinished(_)&lt;br /&gt;
AND&lt;br /&gt;
DB_InCharacterCreation(_Value)&lt;br /&gt;
THEN&lt;br /&gt;
NOT DB_InCharacterCreation(_Value);[/i]&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=4077</id>
		<title>Community page submission</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=4077"/>
		<updated>2017-10-23T22:35:36Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;&lt;br /&gt;
Welcome to the community page submission section.&amp;lt;br /&amp;gt;&lt;br /&gt;
First and foremost: thanks to all of you from everyone at Larian Studios!&amp;lt;br /&amp;gt;&lt;br /&gt;
Without your love and feedback, we wouldn't be where we are today.&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
That being said, let's do our best to keep this wiki just as lovely as you guys:&amp;lt;br /&amp;gt;&lt;br /&gt;
# To add your page to the main wiki pages, please add it to the list below.&lt;br /&gt;
# Once our moderators get a chance, they'll review the submissions and move approved pages to the appropriate location on the [[Community editor guides | Editor Guides]] and/or [[Community tutorials | Community Tutorials]] section.&lt;br /&gt;
# We'll leave the page link a couple of days on here with an approval stamp and a link to its new location, to give the editor a chance to find out where his/her page went.&lt;br /&gt;
# We love you all very much, but we do not tolerate any misbehavior. Please refrain from using foul language, messing with other people's pages,...&lt;br /&gt;
# This wiki follows the general open format. Anyone is allowed to edit a page. View an edit to your page as interest in your content, not as criticism.&lt;br /&gt;
# But do try to avoid editing someone else's pages before it has been approved and moved to the main sections, unless of course you have the permission to do so from the original editor.&lt;br /&gt;
# As always, stay awesome [[File: heart.png | 32px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Example Submission|Example submission]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Party Management via Dialog|Party Management via Dialog]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Subregion UI Notifications|Subregion UI Notifications]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[How to make an NPC sit|How to make an NPC sit]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Creating a book with TEXT inside|Creating a book with TEXT inside]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Pak Extractor Guide|Pak Extractor Guide]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community editor guides|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Tutorial - Implementing a Basic Quest|Tutorial - Implementing a Basic Quest]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]]) ([[Community:_Getting_Started|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[NPC Patrols|NPC Patrols]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Basic Character Creation]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Character and Item Script Triggers, Calls, and Queries]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community:_Script_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Scripting in New Talents, Attributes, and Combat Abilities]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Story_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Creating/Modifying Weapon Elements and Scaling]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Stats_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Adding New Icons]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Texture_atlas_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Creating_a_book_with_TEXT_inside&amp;diff=3601</id>
		<title>Creating a book with TEXT inside</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Creating_a_book_with_TEXT_inside&amp;diff=3601"/>
		<updated>2017-10-03T14:53:00Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to create a basic information Book which contains some readable TEXT for the players.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1: Open the &amp;quot;Translated String&amp;quot; editor (Little Japanese Character in the top menu bar)&lt;br /&gt;
&lt;br /&gt;
2: FILE.. NEW - to create a new &amp;quot;TranslatedStringKey&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3: Now you can fill in your attributes in the new key.&lt;br /&gt;
Use something along the lines of...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
key = Book_Modding_Guide (you need to remember this)&lt;br /&gt;
ExtraData = &amp;quot;Here is where you cut and paste what text you want in the book.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4: Save All and close the Translated Sting Editor.&lt;br /&gt;
&lt;br /&gt;
5: Grab a book from the resources and drop into your level. (Book_Book_A is the sort of thing you want)&lt;br /&gt;
&lt;br /&gt;
6: Edit the &amp;quot;Use Actions&amp;quot; attibute on the side bar for the book.&lt;br /&gt;
&lt;br /&gt;
7: Remove the &amp;quot;Book: Gen_Unreadable&amp;quot; action if it is present. (red minus button)&lt;br /&gt;
&lt;br /&gt;
8: Ok now add a new BOOK action. (Green + button)&lt;br /&gt;
&lt;br /&gt;
9: Now in the &amp;quot;Bood ID&amp;quot; (yeah I think it is spelled wrong) attibute, type in the name of the string Key you created - in this case it was &amp;quot;Book_Modding_Guide&amp;quot; apply and save.&lt;br /&gt;
&lt;br /&gt;
10: Now go back into your level and try it... pick up the book and read it from your inventory you should see the &amp;quot;Extra Text&amp;quot;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Creating_a_book_with_TEXT_inside&amp;diff=3598</id>
		<title>Creating a book with TEXT inside</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Creating_a_book_with_TEXT_inside&amp;diff=3598"/>
		<updated>2017-10-03T14:52:25Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to create a basic information Book which contains some readable TEXT for the players.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1: Open the &amp;quot;Translated String&amp;quot; editor (Little Japanese Character in the top menu bar)&lt;br /&gt;
&lt;br /&gt;
2: FILE.. NEW - to create a new &amp;quot;TranslatedStringKey&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3: Now you can fill in your attributes in the new key.&lt;br /&gt;
Used something along the lines of...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
key = Book_Modding_Guide (you need to remember this)&lt;br /&gt;
ExtraData = &amp;quot;Here is where you cut and paste what text you want in the book.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4: Save All and close the Translated Sting Editor.&lt;br /&gt;
&lt;br /&gt;
5: Grab a book from the resources and drop into your level. (Book_Book_A is the sort of thing you want)&lt;br /&gt;
&lt;br /&gt;
6: Edit the &amp;quot;Use Actions&amp;quot; attibute on the side bar for the book.&lt;br /&gt;
&lt;br /&gt;
7: Remove the &amp;quot;Book: Gen_Unreadable&amp;quot; action if it is present. (red minus button)&lt;br /&gt;
&lt;br /&gt;
8: Ok now add a new BOOK action. (Green + button)&lt;br /&gt;
&lt;br /&gt;
9: Now in the &amp;quot;Bood ID&amp;quot; (yeah I think it is spelled wrong) attibute, type in the name of the string Key you created - in this case it was &amp;quot;Book_Modding_Guide&amp;quot; apply and save.&lt;br /&gt;
&lt;br /&gt;
10: Now go back into your level and try it... pick up the book and read it from your inventory you should see the &amp;quot;Extra Text&amp;quot;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3597</id>
		<title>Community page submission</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3597"/>
		<updated>2017-10-03T14:51:41Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;&lt;br /&gt;
Welcome to the community page submission section.&amp;lt;br /&amp;gt;&lt;br /&gt;
First and foremost: thanks to all of you from everyone at Larian Studios!&amp;lt;br /&amp;gt;&lt;br /&gt;
Without your love and feedback, we wouldn't be where we are today.&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
That being said, let's do our best to keep this wiki just as lovely as you guys:&amp;lt;br /&amp;gt;&lt;br /&gt;
# To add your page to the main wiki pages, please add it to the list below.&lt;br /&gt;
# Once our moderators get a chance, they'll review the submissions and move approved pages to the appropriate location on the [[Community editor guides | Editor Guides]] and/or [[Community tutorials | Community Tutorials]] section.&lt;br /&gt;
# We'll leave the page link a couple of days on here with an approval stamp and a link to its new location, to give the editor a chance to find out where his/her page went.&lt;br /&gt;
# We love you all very much, but we do not tolerate any misbehavior. Please refrain from using foul language, messing with other people's pages,...&lt;br /&gt;
# This wiki follows the general open format. Anyone is allowed to edit a page. View an edit to your page as interest in your content, not as criticism.&lt;br /&gt;
# But do try to avoid editing someone else's pages before it has been approved and moved to the main sections, unless of course you have the permission to do so from the original editor.&lt;br /&gt;
# As always, stay awesome [[File: heart.png | 32px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Example Submission|Example submission]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[How to make an NPC sit|How to make an NPC sit]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Creating a book with TEXT inside|Creating a book with TEXT inside]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Pak Extractor Guide|Pak Extractor Guide]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community editor guides|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Tutorial - Implementing a Basic Quest|Tutorial - Implementing a Basic Quest]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]]) ([[Community:_Getting_Started|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[NPC Patrols|NPC Patrols]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Basic Character Creation]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Character and Item Script Triggers, Calls, and Queries]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community:_Script_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Scripting in New Talents, Attributes, and Combat Abilities]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Story_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Creating/Modifying Weapon Elements and Scaling]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Stats_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Adding New Icons]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Texture_atlas_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Creating_a_book_with_TEXT_inside&amp;diff=3596</id>
		<title>Creating a book with TEXT inside</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Creating_a_book_with_TEXT_inside&amp;diff=3596"/>
		<updated>2017-10-03T14:50:07Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: Created page with &amp;quot;This article describes how to create a basic information Book which contains some readable TEXT for the players.   1: Open the &amp;quot;Translated String&amp;quot; editor (Little Japanese Char...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to create a basic information Book which contains some readable TEXT for the players.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1: Open the &amp;quot;Translated String&amp;quot; editor (Little Japanese Character in the top menu bar)&lt;br /&gt;
&lt;br /&gt;
2: FILE.. NEW - to create a new &amp;quot;TranslatedStringKey&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3: Now you can fill in your attributes in the new key.&lt;br /&gt;
Used something along the lines of...&lt;br /&gt;
&lt;br /&gt;
key = Book_Modding_Guide (you need to remember this)&lt;br /&gt;
ExtraData = &amp;quot;Here is where you cut and paste what text you want in the book.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
4: Save All and close the Translated Sting Editor.&lt;br /&gt;
&lt;br /&gt;
5: Grab a book from the resources and drop into your level. (Book_Book_A is the sort of thing you want)&lt;br /&gt;
&lt;br /&gt;
6: Edit the &amp;quot;Use Actions&amp;quot; attibute on the side bar for the book.&lt;br /&gt;
&lt;br /&gt;
7: Remove the &amp;quot;Book: Gen_Unreadable&amp;quot; action if it is present. (red minus button)&lt;br /&gt;
&lt;br /&gt;
8: Ok now add a new BOOK action. (Green + button)&lt;br /&gt;
&lt;br /&gt;
9: Now in the &amp;quot;Bood ID&amp;quot; (yeah I think it is spelled wrong) attibute, type in the name of the string Key you created - in this case it was &amp;quot;Book_Modding_Guide&amp;quot; apply and save.&lt;br /&gt;
&lt;br /&gt;
10: Now go back into your level and try it... pick up the book and read it from your inventory you should see the &amp;quot;Extra Text&amp;quot;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3594</id>
		<title>Community page submission</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=Community_page_submission&amp;diff=3594"/>
		<updated>2017-10-03T14:48:06Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;&lt;br /&gt;
Welcome to the community page submission section.&amp;lt;br /&amp;gt;&lt;br /&gt;
First and foremost: thanks to all of you from everyone at Larian Studios!&amp;lt;br /&amp;gt;&lt;br /&gt;
Without your love and feedback, we wouldn't be where we are today.&lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
That being said, let's do our best to keep this wiki just as lovely as you guys:&amp;lt;br /&amp;gt;&lt;br /&gt;
# To add your page to the main wiki pages, please add it to the list below.&lt;br /&gt;
# Once our moderators get a chance, they'll review the submissions and move approved pages to the appropriate location on the [[Community editor guides | Editor Guides]] and/or [[Community tutorials | Community Tutorials]] section.&lt;br /&gt;
# We'll leave the page link a couple of days on here with an approval stamp and a link to its new location, to give the editor a chance to find out where his/her page went.&lt;br /&gt;
# We love you all very much, but we do not tolerate any misbehavior. Please refrain from using foul language, messing with other people's pages,...&lt;br /&gt;
# This wiki follows the general open format. Anyone is allowed to edit a page. View an edit to your page as interest in your content, not as criticism.&lt;br /&gt;
# But do try to avoid editing someone else's pages before it has been approved and moved to the main sections, unless of course you have the permission to do so from the original editor.&lt;br /&gt;
# As always, stay awesome [[File: heart.png | 32px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Example Submission|Example submission]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[How to make an NPC sit|How to make an NPC sit]]&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Pak Extractor Guide|Pak Extractor Guide]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community editor guides|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Tutorial - Implementing a Basic Quest|Tutorial - Implementing a Basic Quest]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]]) ([[Community:_Getting_Started|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[NPC Patrols|NPC Patrols]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Basic Character Creation]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Character and Item Script Triggers, Calls, and Queries]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community:_Script_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Scripting in New Talents, Attributes, and Combat Abilities]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Story_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Creating/Modifying Weapon Elements and Scaling]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Stats_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:LarianLogo_Icon.png|32px]] &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;[[Adding New Icons]]&amp;lt;/b&amp;gt; [[File:LarianLogo_Icon.png|32px]] &amp;lt;b&amp;gt;&amp;lt;font color='green'&amp;gt;APPROVED&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; ([[Community tutorials|Community Tutorials]])([[Community:_Texture_atlas_editor|Editor Guides]])&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
	<entry>
		<id>https://docs.larian.game/index.php?title=How_to_make_an_NPC_sit&amp;diff=3593</id>
		<title>How to make an NPC sit</title>
		<link rel="alternate" type="text/html" href="https://docs.larian.game/index.php?title=How_to_make_an_NPC_sit&amp;diff=3593"/>
		<updated>2017-10-03T14:44:52Z</updated>

		<summary type="html">&lt;p&gt;Scottworld: Created page with &amp;quot;This article explains how to create a chair and an NPC and then add the script parameters to make the NPC sit in the chair.  1: Grab a chair from the Root Templates... I use &amp;quot;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to create a chair and an NPC and then add the script parameters to make the NPC sit in the chair.&lt;br /&gt;
&lt;br /&gt;
1: Grab a chair from the Root Templates... I use &amp;quot;FUR_Humans_Citz_Chair_Poor_A&amp;quot; in this example. Drop it into your level.&lt;br /&gt;
&lt;br /&gt;
2: Grab your NPC from the Root Templates and drop them next to the chair. I used &amp;quot;GameMaster_PoorCivilian_Easy_Human_Female&amp;quot; in this example.&lt;br /&gt;
&lt;br /&gt;
3: Select your chair and change its NAME (not display name) to S_FUR_Humans_Citz_Chair_Poor_A - Make sure you remember this edited NAME.&lt;br /&gt;
Note: You must add the S_ as a prefix for it to show in the list later you can rename it what ever you like but it must have an &amp;quot;S_&amp;quot; prefix.&lt;br /&gt;
&lt;br /&gt;
4: Now select your NPC, and edit the scripts attribute in the side bar.&lt;br /&gt;
&lt;br /&gt;
5: In the Edit Scripts box.. search for and then add the &amp;quot;Sit&amp;quot; script to your NPC.&lt;br /&gt;
&lt;br /&gt;
6: Now select the &amp;quot;Seat&amp;quot; attribute for that script and find the chair you renamed. &amp;quot;S_FUR_Humans_Citz_Chair_Poor_A&amp;quot; from the drop down list.&lt;br /&gt;
&lt;br /&gt;
7: Save and reload .. and when you hit play your NPC will wander over and take a pew.&lt;/div&gt;</summary>
		<author><name>Scottworld</name></author>
	</entry>
</feed>