I have seen a few complaints about movegrp not moving the requesting character. Well here is why
Zone\groups.cpp
Code:
void Group::TeleportGroup(Mob* sender, int32 zoneID, float x, float y, float z, float heading)
{
uint32 i;
for (i = 0; i < MAX_GROUP_MEMBERS; i++)
{
#ifdef IPC
if (members[i] != NULL && (members[i]->IsClient() || (members[i]->IsNPC() && members[i]->CastToNPC()->IsInteractive())) && members[i] != sender)
#else
if (members[i] != NULL && members[i]->IsClient() && members[i] != sender)
#endif
{
members[i]->CastToClient()->MovePC(int(zoneID), x, y, z, heading, 0, ZoneSolicited);
}
}
}
The code in red causes the requester to be skipped. (members[i] != sender)
This function appears to only be used twice in the code.
By QuestManager::movegrp in questmgr.cpp and XS(XS_Group_TeleportGroup) in perl_groups.cpp
I do not know where XS_Group_TeleportGroup is used. Can someone enlighten me before I remove (members[i] != sender) and break something?
Also what is IPC? I did not see any reference to it in my source.