void GetSmugglingGuildMembers(int NumMembers, string Category, string Dialog)
{
int chosen = 0;
int chridx = 0;
ref pchar = GetMainCharacter();
if(DEBUG_SMUGGLING>0) trace("SMUGGLING GUILD MEMBERS: Start picking "+NumMembers+" new members for the guild");
string index = "";
string sLocName = "";
string sIslandName = "";
while (chosen < NumMembers) {
chridx = rand(MAX_CHARACTERS);
ref chr = GetCharacter(chridx);
if (GetAttribute(chr, "id") == "0" || GetAttribute(chr, "id") == "-1") continue; // PB: Invalid character, no point checking further
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS Character index: " + chridx + ", name = " + GetMySimpleName(chr) + " (" + chr.id + ")");
if (bAllies(chr)) continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass player party check");
if (CheckAttribute(chr,"Dialog.Filename.SmugglingGuild")) continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass guildmember already check");
if (CharacterIsDead(chr)) continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass still alive");
sLocName = GetAttribute(chr,"location");
if (sLocName == "-1" || sLocName == "" || sLocName == "none") continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass location");
sIslandName = FindIslandByLocation(sLocName);
if (sIslandName == "") continue;
if (sIslandName == sLocName) continue; // This avoids captains at sea and fort commanders
if (IsIslandDisabled(sIslandName)) continue;
if (GetAttribute(GetIslandByID(sIslandName),"skipCR") == "1") continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass island check");
if (isSoldier(chr) != UNKNOWN_NATION) continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass soldier check");
if (CheckAttribute(chr,"questchar")) continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass quest character check");
// if (CheckAttribute(chr,"quest.officertype")) continue; // PB: This is not safe anymore due to the Leveling system!
if (GetAttribute(chr,"isOfficer") == true) continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass officer check");
if (GetAttribute(chr,"chr_ai.type") == LAI_TYPE_MERCHANT) continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass merchant check");
if (GetAttribute(chr,"Dialog.Filename") == "governor.c") continue;
if (GetAttribute(chr,"Dialog.Filename.GroupDialog") == "governor.c") continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass govenor check");
if (GetAttribute(chr,"Dialog.Filename") == "Smuggler_OnShore_dialog.c") continue;
if (GetAttribute(chr,"Dialog.Filename") == "Agent_dialog.c") continue;
if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass smuggler check");
// if (GetAttribute(chr,"abordagemode") != "1") continue; // PB: This can only be disabled for officers, who aren't valid clients
// if(DEBUG_SMUGGLING>2) trace("SMUGGLING GUILD MEMBERS pass boardingmode check");
if (chr.lastname == "") {
if(DEBUG_SMUGGLING>0) trace("SMUGGLING GUILD MEMBERS RENAMED: "+GetMySimpleName(chr));
SetRandomNameToCharacter(chr);
}
index = Category + chosen;
pchar.quest.smuggling_guild.people.(Category).(index) = chr.id;
pchar.quest.smuggling_guild.people.(Category).(index).name = GetMySimpleName(chr);
pchar.quest.smuggling_guild.people.(Category).(index).location = GetPrettyLocationName(chr.location);
pchar.quest.smuggling_guild.people.(Category).(index).island = GetIslandNameByLocationID(chr.location);
if(DEBUG_SMUGGLING>0) trace("SMUGGLING GUILD MEMBERS PICKED: "+pchar.quest.smuggling_guild.people.(Category).(index).name+" at: "+pchar.quest.smuggling_guild.people.(Category).(index).location+" ("+chr.location+") on: "+pchar.quest.smuggling_guild.people.(Category).(index).island));
chr.Dialog.Filename.SmugglingGuild = Dialog;
chosen += 1;
}
}