[HOT FIX] MS build issues regarding folder / command lenght usage or rc.exe (#2038)

This commit is contained in:
bashermens
2026-01-19 22:45:28 +01:00
committed by GitHub
parent fd07e02a8a
commit 41c53365ae
1119 changed files with 27 additions and 27 deletions

View File

@@ -0,0 +1,112 @@
/*
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
* and/or modify it under version 3 of the License, or (at your option), any later version.
*/
#include "ShareQuestAction.h"
#include "Event.h"
#include "Playerbots.h"
bool ShareQuestAction::Execute(Event event)
{
std::string const link = event.getParam();
if (!GetMaster())
return false;
PlayerbotChatHandler handler(GetMaster());
uint32 entry = handler.extractQuestId(link);
if (!entry)
return false;
Quest const* quest = sObjectMgr->GetQuestTemplate(entry);
if (!quest)
return false;
// remove all quest entries for 'entry' from quest log
for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot)
{
uint32 logQuest = bot->GetQuestSlotQuestId(slot);
if (logQuest == entry)
{
WorldPacket p;
p << entry;
bot->GetSession()->HandlePushQuestToParty(p);
botAI->TellMaster("Quest shared");
return true;
}
}
return false;
}
bool AutoShareQuestAction::Execute(Event event)
{
Player* requester = event.getOwner() ? event.getOwner() : GetMaster();
bool shared = false;
for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot)
{
uint32 logQuest = bot->GetQuestSlotQuestId(slot);
Quest const* quest = sObjectMgr->GetQuestTemplate(logQuest);
if (!quest)
continue;
bool partyNeedsQuest = false;
for (GroupReference* itr = bot->GetGroup()->GetFirstMember(); itr != nullptr; itr = itr->next())
{
Player* player = itr->GetSource();
if (!player || player == bot || !player->IsInWorld() || !botAI->IsSafe(player)) // skip self
continue;
if (bot->GetDistance(player) > 10)
continue;
if (!player->SatisfyQuestStatus(quest, false))
continue;
if (player->GetQuestStatus(logQuest) == QUEST_STATUS_COMPLETE)
continue;
if (!player->CanTakeQuest(quest, false))
continue;
if (!player->SatisfyQuestLog(false))
continue;
if (player->GetDivider())
continue;
if (auto ai = GET_PLAYERBOT_AI(player))
{
if (PAI_VALUE(uint8, "free quest log slots") < 15 || !urand(0,5))
{
WorldPacket packet(CMSG_PUSHQUESTTOPARTY, 20);
packet << logQuest;
ai->HandleMasterIncomingPacket(packet);
}
}
else
partyNeedsQuest = true;
}
if (!partyNeedsQuest)
continue;
WorldPacket p;
p << logQuest;
bot->GetSession()->HandlePushQuestToParty(p);
botAI->TellMaster("Quest shared");
shared = true;
}
return shared;
}
bool AutoShareQuestAction::isUseful()
{
return bot->GetGroup() && !botAI->HasActivePlayerMaster();
}