Some Bot Raid working

This commit is contained in:
neckkola
2022-01-07 18:57:26 -04:00
parent ec26281ad5
commit 40e3484bb4
3 changed files with 26 additions and 12 deletions
+12 -4
View File
@@ -10136,16 +10136,24 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
else { else {
raid->AddBot(b, free_group_id, false, false, false); raid->AddBot(b, free_group_id, false, false, false);
} }
raid->SendBulkRaid(b->CastToClient());
} }
else if (group->members[x]->IsClient()) { else if (group->members[x]->IsClient()) {
c = group->members[x]->CastToClient(); c = group->members[x]->CastToClient();
if (x == 0) { if (x == 0) {
raid->SendRaidCreate(c);
raid->SendMakeLeaderPacketTo(raid->leadername, c);
raid->AddMember(c, free_group_id, false, true, false); raid->AddMember(c, free_group_id, false, true, false);
raid->SetGroupLeader(c->GetName()); raid->SetGroupLeader(c->GetName());
} }
else { else {
raid->SendRaidCreate(c);
raid->SendMakeLeaderPacketTo(raid->leadername, c);
raid->AddMember(c, free_group_id, false, false, false); raid->AddMember(c, free_group_id, false, false, false);
} }
raid->SendBulkRaid(c);
if (raid->IsLocked())
raid->SendRaidLockTo(c);
} }
//if (!addClient) //if (!addClient)
@@ -10161,9 +10169,7 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
// else // else
// raid->AddMember(c, free_group_id); // raid->AddMember(c, free_group_id);
//raid->SendRaidGroupAdd(b_owner->GetName(), free_group_id); //raid->SendRaidGroupAdd(b_owner->GetName(), free_group_id);
if (raid->IsLocked()) {
raid->SendRaidLockTo(b_owner);
}
} }
} }
group->JoinRaidXTarget(raid); group->JoinRaidXTarget(raid);
@@ -10174,7 +10180,9 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
//raid->SendRaidCreate(b_owner); //raid->SendRaidCreate(b_owner);
//raid->SendMakeLeaderPacketTo(raid->leadername, b_owner); //raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
raid->AddBot(player_accepting_invite); 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()) { if (raid->IsLocked()) {
raid->SendRaidLockTo(b_owner); raid->SendRaidLockTo(b_owner);
} }
+12 -7
View File
@@ -194,10 +194,11 @@ void Raid::AddBot(Bot* b, uint32 group, bool rleader, bool groupleader, bool loo
GroupUpdate(group); GroupUpdate(group);
else // get raid AAs, GroupUpdate will handles it otherwise else // get raid AAs, GroupUpdate will handles it otherwise
//SendGroupLeadershipAA(c, RAID_GROUPLESS); Is this needed for bots? //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); b->SetRaidGrouped(true);
SendRaidMOTD(b->GetOwner()->CastToClient()); //SendRaidMOTD(b->GetOwner()->CastToClient());
// Mitch What to do here? // Mitch What to do here?
// xtarget shit .......... // xtarget shit ..........
@@ -1075,7 +1076,7 @@ void Raid::SendRaidAdd(const char *who, Client *to)
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) if(strcmp(members[x].membername, who) == 0 || !members[x].SentToBotOwner) //Mitch
{ {
auto outapp = new EQApplicationPacket(OP_RaidUpdate, sizeof(RaidAddMember_Struct)); auto outapp = new EQApplicationPacket(OP_RaidUpdate, sizeof(RaidAddMember_Struct));
RaidAddMember_Struct *ram = (RaidAddMember_Struct*)outapp->pBuffer; 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) 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)); 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.action = raidAdd;
ram->raidGen.parameter = members[x].GroupNumber; ram->raidGen.parameter = members[x].GroupNumber;
strcpy(ram->raidGen.leader_name, members[x].membername); strcpy(ram->raidGen.leader_name, members[x].membername);
@@ -1111,6 +1115,7 @@ void Raid::SendRaidAddAll(const char *who)
this->QueuePacket(outapp); this->QueuePacket(outapp);
safe_delete(outapp); safe_delete(outapp);
return; return;
} }
} }
} }
+2 -1
View File
@@ -88,6 +88,7 @@ struct RaidMember{
bool IsGroupLeader; bool IsGroupLeader;
bool IsRaidLeader; bool IsRaidLeader;
bool IsLooter; bool IsLooter;
bool SentToBotOwner;
}; };
struct GroupMentor { struct GroupMentor {
@@ -112,7 +113,7 @@ public:
bool IsRaid() { return true; } bool IsRaid() { return true; }
void AddMember(Client *c, uint32 group = 0xFFFFFFFF, bool rleader=false, bool groupleader=false, bool looter=false); 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 RemoveMember(const char *c);
void DisbandRaid(); void DisbandRaid();
void MoveMember(const char *name, uint32 newGroup); void MoveMember(const char *name, uint32 newGroup);