From 40e3484bb41219d59794cc7301e38cf2018c521a Mon Sep 17 00:00:00 2001 From: neckkola <65987027+neckkola@users.noreply.github.com> Date: Fri, 7 Jan 2022 18:57:26 -0400 Subject: [PATCH] Some Bot Raid working --- zone/bot.cpp | 16 ++++++++++++---- zone/raids.cpp | 19 ++++++++++++------- zone/raids.h | 3 ++- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/zone/bot.cpp b/zone/bot.cpp index a2ccbe234..40dd18456 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -10136,16 +10136,24 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) { else { raid->AddBot(b, free_group_id, false, false, false); } + raid->SendBulkRaid(b->CastToClient()); } else if (group->members[x]->IsClient()) { c = group->members[x]->CastToClient(); if (x == 0) { + raid->SendRaidCreate(c); + raid->SendMakeLeaderPacketTo(raid->leadername, c); raid->AddMember(c, free_group_id, false, true, false); raid->SetGroupLeader(c->GetName()); } else { + raid->SendRaidCreate(c); + raid->SendMakeLeaderPacketTo(raid->leadername, c); raid->AddMember(c, free_group_id, false, false, false); } + raid->SendBulkRaid(c); + if (raid->IsLocked()) + raid->SendRaidLockTo(c); } //if (!addClient) @@ -10161,9 +10169,7 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) { // else // raid->AddMember(c, free_group_id); //raid->SendRaidGroupAdd(b_owner->GetName(), free_group_id); - if (raid->IsLocked()) { - raid->SendRaidLockTo(b_owner); - } + } } group->JoinRaidXTarget(raid); @@ -10174,7 +10180,9 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) { //raid->SendRaidCreate(b_owner); //raid->SendMakeLeaderPacketTo(raid->leadername, b_owner); raid->AddBot(player_accepting_invite); - raid->SendBulkRaid(b_owner); + // Set indicator that bot owner has already received this update. Mitch + + //raid->SendBulkRaid(b_owner); if (raid->IsLocked()) { raid->SendRaidLockTo(b_owner); } diff --git a/zone/raids.cpp b/zone/raids.cpp index 3b589b8a8..32f19045a 100644 --- a/zone/raids.cpp +++ b/zone/raids.cpp @@ -194,10 +194,11 @@ void Raid::AddBot(Bot* b, uint32 group, bool rleader, bool groupleader, bool loo GroupUpdate(group); else // get raid AAs, GroupUpdate will handles it otherwise //SendGroupLeadershipAA(c, RAID_GROUPLESS); Is this needed for bots? - //SendRaidAddAll(b->GetOwner()->GetName()); - + SendRaidAddAll(b->GetName()); + + members[GetPlayerIndex(b->GetName())].SentToBotOwner = true; //Mitch indicates that the BotOwner has received this raid info already. b->SetRaidGrouped(true); - SendRaidMOTD(b->GetOwner()->CastToClient()); + //SendRaidMOTD(b->GetOwner()->CastToClient()); // Mitch What to do here? // xtarget shit .......... @@ -1075,7 +1076,7 @@ void Raid::SendRaidAdd(const char *who, Client *to) for(int x = 0; x < MAX_RAID_MEMBERS; x++) { - if(strcmp(members[x].membername, who) == 0) + if(strcmp(members[x].membername, who) == 0 || !members[x].SentToBotOwner) //Mitch { auto outapp = new EQApplicationPacket(OP_RaidUpdate, sizeof(RaidAddMember_Struct)); RaidAddMember_Struct *ram = (RaidAddMember_Struct*)outapp->pBuffer; @@ -1095,12 +1096,15 @@ void Raid::SendRaidAdd(const char *who, Client *to) void Raid::SendRaidAddAll(const char *who) { - for(int x = 0; x < MAX_RAID_MEMBERS; x++) + for (int x = 0; x < MAX_RAID_MEMBERS; x++) { - if(strcmp(members[x].membername, who) == 0 && members[x].membername != "MyBard") //Mitch add IsBot + if (strcmp(members[x].membername, who) == 0 ) //Mitch add IsBot + //if (!members[x].member->IsBot() || + // strcmp(members[x].membername, who) == 0 || + // (members[x].SentToBotOwner && members[x].member->GetOwnerID() != entity_list.GetClientByName(who)->CharacterID())) //Mitch add IsBot { auto outapp = new EQApplicationPacket(OP_RaidUpdate, sizeof(RaidAddMember_Struct)); - RaidAddMember_Struct *ram = (RaidAddMember_Struct*)outapp->pBuffer; + RaidAddMember_Struct* ram = (RaidAddMember_Struct*)outapp->pBuffer; ram->raidGen.action = raidAdd; ram->raidGen.parameter = members[x].GroupNumber; strcpy(ram->raidGen.leader_name, members[x].membername); @@ -1111,6 +1115,7 @@ void Raid::SendRaidAddAll(const char *who) this->QueuePacket(outapp); safe_delete(outapp); return; + } } } diff --git a/zone/raids.h b/zone/raids.h index 1662bb6ad..9961be2e8 100644 --- a/zone/raids.h +++ b/zone/raids.h @@ -88,6 +88,7 @@ struct RaidMember{ bool IsGroupLeader; bool IsRaidLeader; bool IsLooter; + bool SentToBotOwner; }; struct GroupMentor { @@ -112,7 +113,7 @@ public: bool IsRaid() { return true; } void AddMember(Client *c, uint32 group = 0xFFFFFFFF, bool rleader=false, bool groupleader=false, bool looter=false); - void AddBot(Bot* b, uint32 group = 0xFFFFFFFF, bool rleader=false, bool groupleader=false, bool looter=false); + void AddBot(Bot* b, uint32 group = 0xFFFFFFFF, bool rleader=false, bool groupleader=false, bool looter=false); //Mitch void RemoveMember(const char *c); void DisbandRaid(); void MoveMember(const char *name, uint32 newGroup);