diff --git a/zone/bot.cpp b/zone/bot.cpp index e345bf50a..d8685eb83 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -2300,8 +2300,8 @@ bool Bot::Process() } // Bot AI - Raid* raid = entity_list.GetRaidByBot(this); - if (raid) + uint32 raid = entity_list.GetRaidByBot(this)->GetID(); + if (raid >= 0) AI_Process_Raid(); else AI_Process(); diff --git a/zone/bot_raid.cpp b/zone/bot_raid.cpp index 604640924..ef85d9c3e 100644 --- a/zone/bot_raid.cpp +++ b/zone/bot_raid.cpp @@ -75,7 +75,7 @@ void Bot::AI_Process_Raid() // We also need a leash owner and follow mob (subset of primary AI criteria) Client* leash_owner = nullptr; - if (r_group > 0) { + if (r_group >= 0) { leash_owner = raid->GetGroupLeader(r_group)->CastToClient(); } else { diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 5092375f0..0b901ef0b 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -571,20 +571,25 @@ void Client::CompleteConnect() SetRaidGrouped(true); raid->LearnMembers(); #ifdef BOTS + std::list bots_list; + database.botdb.LoadBotsList(this->CharacterID(), bots_list); std::vector r_members = raid->GetMembers(); - for (RaidMember iter : r_members) { - if (iter.member && iter.member->IsBot() && iter.member->GetOwner()->CastToClient()->CharacterID() == this->CharacterID()) { - char buffer[70]; - sprintf(buffer, "spawn %s", iter.member->GetName()); - bot_command_real_dispatch(this, buffer); - //iter.member->CastToBot()->Spawn(this); - iter.member->CastToBot()->SetRaidGrouped(true); - uint32 r_group = raid->GetGroup(iter.member->GetName()); - if (r_group > 0) { - iter.member->CastToBot()->SetFollowID(raid->GetGroupLeader(r_group)->CastToClient()->GetID()); - } - else { - iter.member->CastToBot()->SetFollowID(raid->GetLeader()->GetID()); + for (const RaidMember& iter : r_members) { + if (iter.membername) { + for (const BotsAvailableList& b_iter : bots_list) + { + if (strcmp(iter.membername, b_iter.Name) == 0) + { + char buffer[71] = "^spawn "; + strcat(buffer, iter.membername); + bot_command_real_dispatch(this, buffer); + Bot* b = entity_list.GetBotByBotName(iter.membername); + if (b) + { + b->SetRaidGrouped(true); + //b->SetFollowID(this->GetID()); + } + } } } }