I am running across an issue where one of my bot's pet agros all of my other bots and their pets.
The offending bot pet and its owner, as well as my toon, are the only mobs that do not show up in the extended target window.
I think this problem has been around for a long time, but I just re-noticed it when I started playing with a RoF client. Obviously, my old
SoF client doesn't have the XT window.
There seems to be two different trigger instances for this:
1) Pet attacks its owning bot
2) Pet attacks the corpse of the previously killed mob
One of the above will only fill the XT window, so older clients will not know when this is occurring.
The other one fills up the XT window and then causes the pet to spam the invalid target message..with it likely stuck in combat.
Both seem to occur within 5 seconds of starting a fight or ending one. I don't recall seeing these trigger at any other point.
I do remember seeing the pet spam last year with my SoF client..possibly when I started playing in April/May.
I have verified the hate lists of the affected mobs in-game after many of these occurrences, and they are empty.
If anyone wants to see the Entity list dump, here is the code that I used (I dropped it in over my command_zopp code):
Code:
void command_zopp(Client *c, const Seperator *sep)
{
if(!c) { return; }
c->Message(13, "Dumping Zone Entity list... (Client, Bot, Pet)");
LogFile->write(EQEMuLog::Debug, "Dumping Zone Entity list... (Client, Bot, Pet)");
LogFile->write(EQEMuLog::Debug, "----------------------------------------------");
list<Mob*> zm_list;
entity_list.GetMobList(zm_list);
list<Mob*>::iterator m_itr;
for(m_itr = zm_list.begin(); m_itr != zm_list.end(); m_itr++)
{
Mob* m_inst = *m_itr;
if(!m_inst || (!m_inst->IsBot() && !m_inst->IsPet() && !m_inst->IsClient())) { continue; }
LogFile->write(EQEMuLog::Debug, "Entity Name: %s (ID: %i)",
m_inst->GetName(),
m_inst->GetID());
if(m_inst->IsBot())
{
LogFile->write(EQEMuLog::Debug, "Bot Owner Name: %s, ID: %i (BotOwnerCharacterID: %i)",
m_inst->CastToBot()->GetBotOwner()->GetName(),
m_inst->CastToBot()->GetBotOwner()->GetID(),
m_inst->CastToBot()->GetBotOwnerCharacterID());
}
if(m_inst->IsPet())
{
LogFile->write(EQEMuLog::Debug, "Owner Name: %s, ID: %i (OwnerID: %i)",
m_inst->GetOwner()->GetName(),
m_inst->GetOwner()->GetID(),
m_inst->GetOwnerID());
}
if(m_inst->IsGrouped())
{
LogFile->write(EQEMuLog::Debug, "Group Leader Name: %s (GroupID: %i)",
m_inst->GetGroup()->GetLeaderName(),
m_inst->GetGroup()->GetID());
}
list<tHateEntry*> he_list;
m_inst->GetHateList(he_list);
list<tHateEntry*>::iterator h_itr;
for(h_itr = he_list.begin(); h_itr != he_list.end(); h_itr++)
{
tHateEntry* h_inst = *h_itr;
if(!h_inst) { continue; }
LogFile->write(EQEMuLog::Debug, "Hate Entity Name: %s (ID: %i)",
h_inst->ent->GetName(),
h_inst->ent->GetID());
}
LogFile->write(EQEMuLog::Debug, "----------------------------------------------");
}
LogFile->write(EQEMuLog::Debug, "Zone Entity Dump complete...");
c->Message(13, "Dump complete...");
}
I am trying to trace the cause of this, but if anyone else has any input, it's welcome!