mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-13 17:09:08 +00:00
Chat tweak, guild bots management tooggle
This commit is contained in:
@@ -159,64 +159,141 @@ bool GuildManageNearbyAction::Execute(Event event)
|
||||
if (!player || bot == player)
|
||||
continue;
|
||||
|
||||
if (player->GetGuildId()) //Promote or demote nearby members based on chance.
|
||||
if (player->isDND())
|
||||
continue;
|
||||
|
||||
|
||||
if (player->GetGuildId() && player->GetGuildId() == bot->GetGuildId()) //Promote or demote nearby members based on chance.
|
||||
{
|
||||
Guild::Member* member = guild->GetMember(player->GetGUID());
|
||||
uint32 dCount = AI_VALUE(uint32, "death count");
|
||||
|
||||
if ((dCount < 2 || !urand(0, 10)) && guild->GetRankRights(botMember->GetRankId() & GR_RIGHT_PROMOTE))
|
||||
if (!urand(0, 30) && dCount < 2 && guild->GetRankRights(botMember->GetRankId()) & GR_RIGHT_PROMOTE)
|
||||
{
|
||||
if (!urand(0, 10))
|
||||
{
|
||||
BroadcastHelper::BroadcastGuildMemberPromotion(botAI, bot, player);
|
||||
botAI->DoSpecificAction("guild promote", Event("guild management", guid), true);
|
||||
BroadcastHelper::BroadcastGuildMemberPromotion(botAI, bot, player);
|
||||
|
||||
continue;
|
||||
}
|
||||
botAI->DoSpecificAction("guild promote", Event("guild management", guid), true);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((dCount > 3 || !urand(0, 10)) && guild->GetRankRights(botMember->GetRankId() & GR_RIGHT_DEMOTE))
|
||||
if (!urand(0, 30) && dCount > 2 && guild->GetRankRights(botMember->GetRankId()) & GR_RIGHT_DEMOTE)
|
||||
{
|
||||
if (!urand(0, 10))
|
||||
{
|
||||
botAI->DoSpecificAction("guild demote", Event("guild management", guid), true);
|
||||
BroadcastHelper::BroadcastGuildMemberDemotion(botAI, bot, player);
|
||||
|
||||
continue;
|
||||
}
|
||||
botAI->DoSpecificAction("guild demote", Event("guild management", guid), true);
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(guild->GetRankRights(botMember->GetRankId()) & GR_RIGHT_INVITE))
|
||||
if (!sPlayerbotAIConfig->randomBotGuildNearby)
|
||||
return false;
|
||||
|
||||
if (guild->GetMemberSize() > 1000)
|
||||
return false;
|
||||
|
||||
if ( (guild->GetRankRights(botMember->GetRankId()) & GR_RIGHT_INVITE) == 0)
|
||||
continue;
|
||||
|
||||
if (player->GetGuildIdInvited())
|
||||
continue;
|
||||
|
||||
PlayerbotAI* botAI = GET_PLAYERBOT_AI(player);
|
||||
PlayerbotAI* botAi = GET_PLAYERBOT_AI(player);
|
||||
|
||||
if (botAI)
|
||||
{
|
||||
|
||||
if (botAI->GetGuilderType() == GuilderType::SOLO && !botAI->HasRealPlayerMaster()) //Do not invite solo players.
|
||||
continue;
|
||||
|
||||
|
||||
if (botAI->HasActivePlayerMaster()) //Do not invite alts of active players.
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!sPlayerbotAIConfig->randomBotGroupNearby)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (sServerFacade->GetDistance2d(bot, player) > sPlayerbotAIConfig->sightDistance)
|
||||
if (!sPlayerbotAIConfig->randomBotInvitePlayer && botAi && botAi->IsRealPlayer())
|
||||
continue;
|
||||
|
||||
if (botAI && botAI->DoSpecificAction("ginvite", Event("guild management", guid)))
|
||||
if (botAi)
|
||||
{
|
||||
if (botAi->GetGuilderType() == GuilderType::SOLO && !botAi->HasRealPlayerMaster()) //Do not invite solo players.
|
||||
continue;
|
||||
|
||||
if (botAi->HasActivePlayerMaster() && !sRandomPlayerbotMgr->IsRandomBot(player)) //Do not invite alts of active players.
|
||||
continue;
|
||||
}
|
||||
|
||||
bool sameGroup = bot->GetGroup() && bot->GetGroup()->IsMember(player->GetGUID());
|
||||
|
||||
if (!sameGroup && sServerFacade->GetDistance2d(bot, player) > sPlayerbotAIConfig->spellDistance)
|
||||
continue;
|
||||
|
||||
if (sPlayerbotAIConfig->inviteChat && (sRandomPlayerbotMgr->IsRandomBot(bot) || !botAI->HasActivePlayerMaster()))
|
||||
{
|
||||
std::map<std::string, std::string> placeholders;
|
||||
placeholders["%name"] = player->GetName();
|
||||
placeholders["%members"] = std::to_string(guild->GetMemberSize());
|
||||
placeholders["%guildname"] = guild->GetName();
|
||||
AreaTableEntry const* current_area = botAI->GetCurrentArea();
|
||||
AreaTableEntry const* current_zone = botAI->GetCurrentZone();
|
||||
placeholders["%area_name"] = current_area ? current_area->area_name[BroadcastHelper::GetLocale()] : BOT_TEXT1("string_unknown_area");
|
||||
placeholders["%zone_name"] = current_zone ? current_zone->area_name[BroadcastHelper::GetLocale()] : BOT_TEXT1("string_unknown_area");
|
||||
|
||||
std::vector<std::string> lines;
|
||||
|
||||
//TODO - Move these hardcoded texts to sql!
|
||||
switch ((urand(0, 10) * urand(0, 10)) / 10)
|
||||
{
|
||||
case 0:
|
||||
lines.push_back(BOT_TEXT2("Hey %name do you want to join my guild?", placeholders));
|
||||
break;
|
||||
case 1:
|
||||
lines.push_back(BOT_TEXT2("Hey man you wanna join my guild %name?", placeholders));
|
||||
break;
|
||||
case 2:
|
||||
lines.push_back(BOT_TEXT2("I think you would be a good contribution to %guildname. Would you like to join %name?", placeholders));
|
||||
break;
|
||||
case 3:
|
||||
lines.push_back(BOT_TEXT2("My guild %guildname has %members quality members. Would you like to make it 1 more %name?", placeholders));
|
||||
break;
|
||||
case 4:
|
||||
lines.push_back(BOT_TEXT2("Hey %name do you want to join %guildname? We have %members members and looking to become number 1 of the server.", placeholders));
|
||||
break;
|
||||
case 5:
|
||||
lines.push_back(BOT_TEXT2("I'm not really good at smalltalk. Do you wanna join my guild %name/r?", placeholders));
|
||||
break;
|
||||
case 6:
|
||||
lines.push_back(BOT_TEXT2("Welcome to %zone_name.... do you want to join my guild %name?", placeholders));
|
||||
break;
|
||||
case 7:
|
||||
lines.push_back(BOT_TEXT2("%name, you should join my guild!", placeholders));
|
||||
break;
|
||||
case 8:
|
||||
lines.push_back(BOT_TEXT2("%name, I got this guild....", placeholders));
|
||||
break;
|
||||
case 9:
|
||||
lines.push_back(BOT_TEXT2("You are actually going to join my guild %name?", placeholders));
|
||||
lines.push_back(BOT_TEXT2("Haha.. you are the man! We are going to raid Molten...", placeholders));
|
||||
break;
|
||||
case 10:
|
||||
lines.push_back(BOT_TEXT2("Hey Hey! do you guys wanna join my gild????", placeholders));
|
||||
lines.push_back(BOT_TEXT2("We've got a bunch of high levels and we are really super friendly..", placeholders));
|
||||
lines.push_back(BOT_TEXT2("..and watch your dog and do your homework...", placeholders));
|
||||
lines.push_back(BOT_TEXT2("..and we raid once a week and are working on MC raids...", placeholders));
|
||||
lines.push_back(BOT_TEXT2("..and we have more members than just me...", placeholders));
|
||||
lines.push_back(BOT_TEXT2("..and please stop I'm lonenly and we can get a ride the whole time...", placeholders));
|
||||
lines.push_back(BOT_TEXT2("..and it's really beautifull and I feel like crying...", placeholders));
|
||||
lines.push_back(BOT_TEXT2("So what do you guys say are you going to join are you going to join?", placeholders));
|
||||
break;
|
||||
}
|
||||
|
||||
for (auto line : lines)
|
||||
if (sameGroup)
|
||||
{
|
||||
WorldPacket data;
|
||||
ChatHandler::BuildChatPacket(data, bot->GetGroup()->isRaidGroup() ? CHAT_MSG_RAID : CHAT_MSG_PARTY, line.c_str(), LANG_UNIVERSAL, CHAT_TAG_NONE, bot->GetGUID(), bot->GetName());
|
||||
bot->GetGroup()->BroadcastPacket(&data, true);
|
||||
}
|
||||
else
|
||||
bot->Say(line, (bot->GetTeamId() == TEAM_ALLIANCE ? LANG_COMMON : LANG_ORCISH));
|
||||
}
|
||||
|
||||
if (botAI->DoSpecificAction("guild invite", Event("guild management", guid), true))
|
||||
{
|
||||
if (sPlayerbotAIConfig->inviteChat)
|
||||
return true;
|
||||
found++;
|
||||
}
|
||||
}
|
||||
|
||||
return found > 0;
|
||||
|
||||
Reference in New Issue
Block a user