mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-24 05:18:40 +00:00
Use Case 1, 2, 3,4,7 working.
Need to fix 5, 6, 8
This commit is contained in:
+232
-248
@@ -10097,297 +10097,281 @@ uint8 Bot::spell_casting_chances[SPELL_TYPE_COUNT][PLAYER_CLASS_COUNT][EQ::const
|
|||||||
void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
|
void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
|
||||||
//Client* player_accepting_invite = entity_list.GetClientByName(raid_command_packet->player_name);
|
//Client* player_accepting_invite = entity_list.GetClientByName(raid_command_packet->player_name);
|
||||||
|
|
||||||
if (player_accepting_invite) {
|
if (player_accepting_invite) {
|
||||||
if (player_accepting_invite->IsRaidGrouped()) {
|
if (player_accepting_invite->IsRaidGrouped()) {
|
||||||
b_owner->MessageString(Chat::White, ALREADY_IN_RAID, player_accepting_invite->GetName()); //group failed, must invite members not in raid...
|
b_owner->MessageString(Chat::White, ALREADY_IN_RAID, player_accepting_invite->GetName()); //group failed, must invite members not in raid...
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Raid* raid = entity_list.GetRaidByClient(b_owner);
|
||||||
|
if (raid) { // Does a raid already exist?
|
||||||
|
raid->VerifyRaid();
|
||||||
|
Group* group = player_accepting_invite->GetGroup();
|
||||||
|
if (group) {
|
||||||
|
if (group->GroupCount() + raid->RaidCount() > MAX_RAID_MEMBERS) {
|
||||||
|
b_owner->Message(Chat::Red, "Invite failed, bot group invite would create a raid larger than the maximum number of members allowed.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Raid* raid = entity_list.GetRaidByClient(b_owner);
|
}
|
||||||
if (raid) { // Does a raid already exist?
|
else {
|
||||||
raid->VerifyRaid();
|
if (1 + raid->RaidCount() > MAX_RAID_MEMBERS) {
|
||||||
Group* group = player_accepting_invite->GetGroup();
|
b_owner->Message(Chat::Red, "Invite failed, bot invite would create a raid larger than the maximum number of members allowed.");
|
||||||
if (group) {
|
return;
|
||||||
if (group->GroupCount() + raid->RaidCount() > MAX_RAID_MEMBERS) {
|
}
|
||||||
b_owner->Message(Chat::Red, "Invite failed, bot group invite would create a raid larger than the maximum number of members allowed.");
|
}
|
||||||
return;
|
//Usecase #3 - Raid already created, Bot is BotGroupLeader.
|
||||||
|
if (group) {//add us all // Is the player already in a group? If yes, add all players from the group
|
||||||
|
uint32 free_group_id = raid->GetFreeGroup();
|
||||||
|
Client* addClient = nullptr;
|
||||||
|
Bot* addBot = nullptr;
|
||||||
|
|
||||||
|
for (int x = 0; x < 6; x++) {
|
||||||
|
if (group->members[x]) {
|
||||||
|
Client* c = nullptr;
|
||||||
|
Bot* b = nullptr;
|
||||||
|
if (group->members[x]->IsBot()) {
|
||||||
|
b = group->members[x]->CastToBot();
|
||||||
|
if (x == 0) {
|
||||||
|
raid->AddBot(b, free_group_id, false, true, false);
|
||||||
|
raid->SetGroupLeader(b->GetName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
raid->AddBot(b, free_group_id, false, false, false);
|
||||||
|
}
|
||||||
|
raid->SendBulkRaid(b->CastToClient());
|
||||||
}
|
}
|
||||||
}
|
else if (group->members[x]->IsClient()) {
|
||||||
else {
|
c = group->members[x]->CastToClient();
|
||||||
if (1 + raid->RaidCount() > MAX_RAID_MEMBERS) {
|
if (x == 0) {
|
||||||
b_owner->Message(Chat::Red, "Invite failed, bot invite would create a raid larger than the maximum number of members allowed.");
|
raid->SendRaidCreate(c);
|
||||||
return;
|
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);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
//Usecase #3 - Raid already created, Bot is BotGroupLeader.
|
|
||||||
if (group) {//add us all // Is the player already in a group? If yes, add all players from the group
|
|
||||||
uint32 free_group_id = raid->GetFreeGroup();
|
|
||||||
Client* addClient = nullptr;
|
|
||||||
Bot* addBot = nullptr;
|
|
||||||
|
|
||||||
for (int x = 0; x < 6; x++) {
|
//if (!addClient)
|
||||||
if (group->members[x]) {
|
//{
|
||||||
Client* c = nullptr;
|
// addClient = c;
|
||||||
Bot* b = nullptr;
|
// raid->SetGroupLeader(addClient->GetName());
|
||||||
if (group->members[x]->IsBot()) {
|
//}
|
||||||
b = group->members[x]->CastToBot();
|
|
||||||
if (x == 0) {
|
|
||||||
raid->AddBot(b, free_group_id, false, true, false);
|
|
||||||
raid->SetGroupLeader(b->GetName());
|
|
||||||
}
|
|
||||||
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)
|
//raid->SendRaidCreate(b_owner);
|
||||||
//{
|
//raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
// addClient = c;
|
//if (group->IsLeader(group->members[x]))
|
||||||
// raid->SetGroupLeader(addClient->GetName());
|
|
||||||
//}
|
|
||||||
|
|
||||||
//raid->SendRaidCreate(b_owner);
|
|
||||||
//raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
|
||||||
//if (group->IsLeader(group->members[x]))
|
|
||||||
// raid->AddMember(c, free_group_id, false, true);
|
// raid->AddMember(c, free_group_id, false, true);
|
||||||
// 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);
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
group->JoinRaidXTarget(raid);
|
|
||||||
group->DisbandGroup(true);
|
|
||||||
raid->GroupUpdate(free_group_id);
|
|
||||||
}
|
|
||||||
else { // Jan 6 this also now works. // If not in a group, invite the individual player
|
|
||||||
//raid->SendRaidCreate(b_owner);
|
|
||||||
//raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
|
||||||
raid->AddBot(player_accepting_invite);
|
|
||||||
// Set indicator that bot owner has already received this update. Mitch
|
|
||||||
|
|
||||||
//raid->SendBulkRaid(b_owner);
|
|
||||||
if (raid->IsLocked()) {
|
|
||||||
raid->SendRaidLockTo(b_owner);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
group->JoinRaidXTarget(raid);
|
||||||
{ // A raid does not already exist. One needs to be created before going forward
|
group->DisbandGroup(true);
|
||||||
Group* player_invited_group = player_accepting_invite->GetGroup();
|
raid->GroupUpdate(free_group_id);
|
||||||
Group* group = entity_list.GetGroupByClient(b_owner); // player_accepting_invite->GetGroup();
|
}
|
||||||
if (group) //if our target has a group
|
else { // Jan 6 this also now works. // If not in a group, invite the individual player
|
||||||
{
|
//raid->SendRaidCreate(b_owner);
|
||||||
// raid = new Raid(player_accepting_invite);
|
//raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
raid = new Raid(b_owner);
|
raid->AddBot(player_accepting_invite);
|
||||||
entity_list.AddRaid(raid);
|
// Set indicator that bot owner has already received this update. Mitch
|
||||||
raid->SetRaidDetails();
|
|
||||||
|
|
||||||
uint32 raid_free_group_id = raid->GetFreeGroup();
|
//raid->SendBulkRaid(b_owner);
|
||||||
|
if (raid->IsLocked()) {
|
||||||
|
raid->SendRaidLockTo(b_owner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//No raid exists.
|
||||||
|
else
|
||||||
|
{ // A raid does not already exist. One needs to be created before going forward
|
||||||
|
Group* player_invited_group = player_accepting_invite->GetGroup();
|
||||||
|
Group* group = entity_list.GetGroupByClient(b_owner); // player_accepting_invite->GetGroup();
|
||||||
|
if (group) //if our target has a group
|
||||||
|
{
|
||||||
|
// raid = new Raid(player_accepting_invite);
|
||||||
|
raid = new Raid(b_owner);
|
||||||
|
entity_list.AddRaid(raid);
|
||||||
|
raid->SetRaidDetails();
|
||||||
|
|
||||||
/* If we already have a group then cycle through adding us... */
|
uint32 raid_free_group_id = raid->GetFreeGroup();
|
||||||
if (player_invited_group) {
|
|
||||||
Client* client_to_be_leader = nullptr;
|
|
||||||
for (int x = 0; x < 6; x++) {
|
|
||||||
if (player_invited_group->members[x]) {
|
|
||||||
if (!client_to_be_leader) {
|
|
||||||
if (player_invited_group->members[x]->IsClient()) {
|
|
||||||
client_to_be_leader = player_invited_group->members[x]->CastToClient();
|
|
||||||
raid->SetGroupLeader(client_to_be_leader->GetName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (player_invited_group->IsLeader(player_invited_group->members[x])) {
|
|
||||||
Client* c = nullptr;
|
|
||||||
|
|
||||||
if (player_invited_group->members[x]->IsClient() || player_invited_group->members[x]->IsBot())
|
/* If we already have a group then cycle through adding us... */
|
||||||
c = player_invited_group->members[x]->CastToClient();
|
if (player_invited_group) {
|
||||||
else
|
Client* client_to_be_leader = nullptr;
|
||||||
continue;
|
for (int x = 0; x < 6; x++) {
|
||||||
|
if (player_invited_group->members[x]) {
|
||||||
raid->SendRaidCreate(b_owner);
|
if (!client_to_be_leader) {
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
if (player_invited_group->members[x]->IsClient()) {
|
||||||
raid->AddMember(c, raid_free_group_id, true, true, true);
|
client_to_be_leader = player_invited_group->members[x]->CastToClient();
|
||||||
raid->SendBulkRaid(c);
|
raid->SetGroupLeader(client_to_be_leader->GetName());
|
||||||
|
|
||||||
if (raid->IsLocked()) {
|
|
||||||
raid->SendRaidLockTo(b_owner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Client* c = nullptr;
|
|
||||||
|
|
||||||
if (player_invited_group->members[x]->IsClient() || player_invited_group->members[x]->IsBot())
|
|
||||||
c = player_invited_group->members[x]->CastToClient();
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
|
|
||||||
raid->SendRaidCreate(b_owner);
|
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
|
||||||
raid->AddMember(c, raid_free_group_id);
|
|
||||||
raid->SendBulkRaid(b_owner);
|
|
||||||
|
|
||||||
if (raid->IsLocked()) {
|
|
||||||
raid->SendRaidLockTo(b_owner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player_invited_group->JoinRaidXTarget(raid, true);
|
if (player_invited_group->IsLeader(player_invited_group->members[x])) {
|
||||||
player_invited_group->DisbandGroup(true);
|
Client* c = nullptr;
|
||||||
raid->GroupUpdate(raid_free_group_id);
|
|
||||||
raid_free_group_id = raid->GetFreeGroup();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// raid->SendRaidCreate(player_accepting_invite);
|
|
||||||
// raid->AddMember(player_accepting_invite, 0xFFFFFFFF, true, false, true);
|
|
||||||
raid->SendRaidCreate(b_owner);
|
|
||||||
raid->AddMember(b_owner, 0xFFFFFFFF, true, false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
Client* client_to_add = nullptr;
|
if (player_invited_group->members[x]->IsClient() || player_invited_group->members[x]->IsBot())
|
||||||
/* Add client to an existing group */
|
c = player_invited_group->members[x]->CastToClient();
|
||||||
for (int x = 0; x < 6; x++) {
|
|
||||||
if (group->members[x]) {
|
|
||||||
if (!client_to_add) {
|
|
||||||
if (group->members[x]->IsClient() || group->members[x]->IsBot()) {
|
|
||||||
client_to_add = group->members[x]->CastToClient();
|
|
||||||
raid->SetGroupLeader(client_to_add->GetName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (group->IsLeader(group->members[x])) {
|
|
||||||
Client* c = nullptr;
|
|
||||||
|
|
||||||
if (group->members[x]->IsClient() || group->members[x]->IsClient())
|
|
||||||
c = group->members[x]->CastToClient();
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
|
|
||||||
raid->SendRaidCreate(b_owner);
|
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
|
||||||
raid->AddMember(c, raid_free_group_id, false, true);
|
|
||||||
raid->SendBulkRaid(b_owner);
|
|
||||||
|
|
||||||
if (raid->IsLocked()) {
|
|
||||||
raid->SendRaidLockTo(b_owner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
continue;
|
||||||
Client* c = nullptr;
|
|
||||||
|
|
||||||
if (group->members[x]->IsClient() || group->members[x]->IsBot())
|
raid->SendRaidCreate(b_owner);
|
||||||
c = group->members[x]->CastToClient();
|
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
else
|
raid->AddMember(c, raid_free_group_id, true, true, true);
|
||||||
continue;
|
raid->SendBulkRaid(c);
|
||||||
|
|
||||||
raid->SendRaidCreate(b_owner);
|
if (raid->IsLocked()) {
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
raid->SendRaidLockTo(b_owner);
|
||||||
raid->AddMember(c, raid_free_group_id);
|
}
|
||||||
raid->SendBulkRaid(b_owner);
|
}
|
||||||
|
else {
|
||||||
|
Client* c = nullptr;
|
||||||
|
|
||||||
if (raid->IsLocked()) {
|
if (player_invited_group->members[x]->IsClient() || player_invited_group->members[x]->IsBot())
|
||||||
raid->SendRaidLockTo(b_owner);
|
c = player_invited_group->members[x]->CastToClient();
|
||||||
}
|
else
|
||||||
|
continue;
|
||||||
|
|
||||||
|
raid->SendRaidCreate(b_owner);
|
||||||
|
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
|
raid->AddMember(c, raid_free_group_id);
|
||||||
|
raid->SendBulkRaid(b_owner);
|
||||||
|
|
||||||
|
if (raid->IsLocked()) {
|
||||||
|
raid->SendRaidLockTo(b_owner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
group->JoinRaidXTarget(raid);
|
|
||||||
group->DisbandGroup(true);
|
|
||||||
|
|
||||||
raid->GroupUpdate(raid_free_group_id);
|
|
||||||
}
|
}
|
||||||
/* Target does not have a group */
|
player_invited_group->JoinRaidXTarget(raid, true);
|
||||||
else {
|
player_invited_group->DisbandGroup(true);
|
||||||
if (player_invited_group) {
|
raid->GroupUpdate(raid_free_group_id);
|
||||||
|
raid_free_group_id = raid->GetFreeGroup();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// raid->SendRaidCreate(player_accepting_invite);
|
||||||
|
// raid->AddMember(player_accepting_invite, 0xFFFFFFFF, true, false, true);
|
||||||
|
raid->SendRaidCreate(b_owner);
|
||||||
|
raid->AddMember(b_owner, 0xFFFFFFFF, true, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
raid = new Raid(b_owner);
|
Client* client_to_add = nullptr;
|
||||||
|
/* Add client to an existing group */
|
||||||
entity_list.AddRaid(raid);
|
for (int x = 0; x < 6; x++) {
|
||||||
raid->SetRaidDetails();
|
if (group->members[x]) {
|
||||||
Client* addClientig = nullptr;
|
if (!client_to_add) {
|
||||||
for (int x = 0; x < 6; x++) {
|
if (group->members[x]->IsClient() || group->members[x]->IsBot()) {
|
||||||
if (player_invited_group->members[x]) {
|
client_to_add = group->members[x]->CastToClient();
|
||||||
if (!addClientig) {
|
raid->SetGroupLeader(client_to_add->GetName());
|
||||||
if (player_invited_group->members[x]->IsClient() || player_invited_group->members[x]->IsBot()) {
|
|
||||||
addClientig = player_invited_group->members[x]->CastToClient();
|
|
||||||
raid->SetGroupLeader(addClientig->GetName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (player_invited_group->IsLeader(player_invited_group->members[x])) {
|
|
||||||
Client* c = nullptr;
|
|
||||||
|
|
||||||
if (player_invited_group->members[x]->IsClient() || player_invited_group->members[x]->IsBot())
|
|
||||||
c = player_invited_group->members[x]->CastToClient();
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
|
|
||||||
raid->SendRaidCreate(b_owner);
|
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
|
||||||
raid->AddMember(c, 0, true, true, true);
|
|
||||||
raid->SendBulkRaid(b_owner);
|
|
||||||
|
|
||||||
if (raid->IsLocked()) {
|
|
||||||
raid->SendRaidLockTo(b_owner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Client* c = nullptr;
|
|
||||||
if (player_invited_group->members[x]->IsClient() || player_invited_group->members[x]->IsBot())
|
|
||||||
c = player_invited_group->members[x]->CastToClient();
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
|
|
||||||
raid->SendRaidCreate(b_owner);
|
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
|
||||||
raid->AddMember(c, 0);
|
|
||||||
raid->SendBulkRaid(b_owner);
|
|
||||||
if (raid->IsLocked()) {
|
|
||||||
raid->SendRaidLockTo(b_owner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (group->IsLeader(group->members[x])) {
|
||||||
|
Client* c = nullptr;
|
||||||
|
|
||||||
|
if (group->members[x]->IsClient() || group->members[x]->IsClient())
|
||||||
|
c = group->members[x]->CastToClient();
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
|
||||||
raid->SendRaidCreate(b_owner);
|
raid->SendRaidCreate(b_owner);
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
|
raid->AddMember(c, raid_free_group_id, false, true);
|
||||||
raid->SendBulkRaid(b_owner);
|
raid->SendBulkRaid(b_owner);
|
||||||
player_invited_group->JoinRaidXTarget(raid, true);
|
|
||||||
raid->AddMember(b_owner);
|
|
||||||
player_invited_group->DisbandGroup(true);
|
|
||||||
raid->GroupUpdate(0);
|
|
||||||
if (raid->IsLocked()) {
|
if (raid->IsLocked()) {
|
||||||
raid->SendRaidLockTo(b_owner);
|
raid->SendRaidLockTo(b_owner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Usecase #2 - Neither the invitor and Bot has a group.
|
else
|
||||||
else { // neither has a group - Jan 6 this appears to work now. One ungrouped player, one/many ungrouped bots
|
{
|
||||||
|
Client* c = nullptr;
|
||||||
|
|
||||||
|
if (group->members[x]->IsClient() || group->members[x]->IsBot())
|
||||||
|
c = group->members[x]->CastToClient();
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
|
||||||
|
raid->SendRaidCreate(b_owner);
|
||||||
|
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
|
raid->AddMember(c, raid_free_group_id);
|
||||||
|
raid->SendBulkRaid(b_owner);
|
||||||
|
|
||||||
|
if (raid->IsLocked()) {
|
||||||
|
raid->SendRaidLockTo(b_owner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group->JoinRaidXTarget(raid);
|
||||||
|
group->DisbandGroup(true);
|
||||||
|
|
||||||
|
raid->GroupUpdate(raid_free_group_id);
|
||||||
|
}
|
||||||
|
/* Target does not have a group */
|
||||||
|
//No raid and bot owner does not have group. Now check for bot having a group
|
||||||
|
else {
|
||||||
|
if (player_invited_group) {
|
||||||
|
// No raid, No bot owner group, bot has group
|
||||||
|
raid = new Raid(b_owner);
|
||||||
|
entity_list.AddRaid(raid);
|
||||||
|
raid->SetRaidDetails();
|
||||||
|
raid->SendRaidCreate(b_owner);
|
||||||
|
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
|
raid->AddMember(b_owner, 0xFFFFFFFF, true, false, true);
|
||||||
|
|
||||||
|
for (int x = 0; x < 6; x++) {
|
||||||
|
if (player_invited_group->members[x]) {
|
||||||
|
Client* c = nullptr;
|
||||||
|
Bot* b = nullptr;
|
||||||
|
if (player_invited_group->members[x]->IsBot()) {
|
||||||
|
b = player_invited_group->members[x]->CastToBot();
|
||||||
|
if (x == 0) {
|
||||||
|
raid->AddBot(b, 0, false, true, false);
|
||||||
|
raid->SetGroupLeader(b->GetName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
raid->AddBot(b, 0, false, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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, 0, false, true, false);
|
||||||
|
raid->SetGroupLeader(c->GetName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
raid->SendRaidCreate(c);
|
||||||
|
raid->SendMakeLeaderPacketTo(raid->leadername, c);
|
||||||
|
raid->AddMember(c, 0, false, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
player_invited_group->JoinRaidXTarget(raid, true);
|
||||||
|
player_invited_group->DisbandGroup(true);
|
||||||
|
raid->GroupUpdate(0);
|
||||||
|
if (raid->IsLocked()) {
|
||||||
|
raid->SendRaidLockTo(b_owner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Usecase #2 - No raid, no bot owner group, no bot group. Working
|
||||||
|
else {
|
||||||
raid = new Raid(b_owner);
|
raid = new Raid(b_owner);
|
||||||
entity_list.AddRaid(raid);
|
entity_list.AddRaid(raid);
|
||||||
raid->SetRaidDetails();
|
raid->SetRaidDetails();
|
||||||
// raid->SendRaidCreate(b_owner); // Not needed as one raid member is a bot
|
|
||||||
raid->SendRaidCreate(b_owner);
|
raid->SendRaidCreate(b_owner);
|
||||||
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
|
||||||
raid->AddMember(b_owner, 0xFFFFFFFF, true, false, true);
|
raid->AddMember(b_owner, 0xFFFFFFFF, true, false, true);
|
||||||
raid->AddBot(player_accepting_invite);
|
raid->AddBot(player_accepting_invite);
|
||||||
// raid->SendBulkRaid(b_owner); //Removed to correct usecase #2
|
|
||||||
|
|
||||||
if (raid->IsLocked()) {
|
if (raid->IsLocked()) {
|
||||||
raid->SendRaidLockTo(b_owner);
|
raid->SendRaidLockTo(b_owner);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -190,11 +190,11 @@ void Raid::AddBot(Bot* b, uint32 group, bool rleader, bool groupleader, bool loo
|
|||||||
database.SetRaidGroupLeaderInfo(group, GetID());
|
database.SetRaidGroupLeaderInfo(group, GetID());
|
||||||
//UpdateGroupAAs(group);
|
//UpdateGroupAAs(group);
|
||||||
}
|
}
|
||||||
if (group < 12)
|
// if (group < 12)
|
||||||
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->GetName());
|
SendRaidAddAll(b->GetName());
|
||||||
|
|
||||||
members[GetPlayerIndex(b->GetName())].SentToBotOwner = true; //Mitch indicates that the BotOwner has received this raid info already.
|
members[GetPlayerIndex(b->GetName())].SentToBotOwner = true; //Mitch indicates that the BotOwner has received this raid info already.
|
||||||
b->SetRaidGrouped(true);
|
b->SetRaidGrouped(true);
|
||||||
@@ -1076,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 || !members[x].SentToBotOwner) //Mitch
|
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user