mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
- fixed attack rti target action (#758)
This commit is contained in:
@@ -10,8 +10,8 @@
|
|||||||
#include "LootObjectStack.h"
|
#include "LootObjectStack.h"
|
||||||
#include "Playerbots.h"
|
#include "Playerbots.h"
|
||||||
#include "PossibleRpgTargetsValue.h"
|
#include "PossibleRpgTargetsValue.h"
|
||||||
#include "ServerFacade.h"
|
|
||||||
#include "PvpTriggers.h"
|
#include "PvpTriggers.h"
|
||||||
|
#include "ServerFacade.h"
|
||||||
|
|
||||||
bool AttackEnemyPlayerAction::isUseful()
|
bool AttackEnemyPlayerAction::isUseful()
|
||||||
{
|
{
|
||||||
@@ -129,3 +129,33 @@ bool DpsAssistAction::isUseful()
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AttackRtiTargetAction::Execute(Event event)
|
||||||
|
{
|
||||||
|
Unit* rtiTarget = AI_VALUE(Unit*, "rti target");
|
||||||
|
|
||||||
|
if (rtiTarget && rtiTarget->IsInWorld() && rtiTarget->GetMapId() == bot->GetMapId())
|
||||||
|
{
|
||||||
|
botAI->GetAiObjectContext()->GetValue<GuidVector>("prioritized targets")->Set({rtiTarget->GetGUID()});
|
||||||
|
bool result = Attack(botAI->GetUnit(rtiTarget->GetGUID()));
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
context->GetValue<ObjectGuid>("pull target")->Set(rtiTarget->GetGUID());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
botAI->TellError("I dont see my rti attack target");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AttackRtiTargetAction::isUseful()
|
||||||
|
{
|
||||||
|
if (botAI->ContainsStrategy(STRATEGY_TYPE_HEAL))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ public:
|
|||||||
AttackRtiTargetAction(PlayerbotAI* botAI) : AttackAction(botAI, "attack rti target") {}
|
AttackRtiTargetAction(PlayerbotAI* botAI) : AttackAction(botAI, "attack rti target") {}
|
||||||
|
|
||||||
std::string const GetTargetName() override { return "rti target"; }
|
std::string const GetTargetName() override { return "rti target"; }
|
||||||
|
bool Execute(Event event) override;
|
||||||
|
bool isUseful() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AttackEnemyFlagCarrierAction : public AttackAction
|
class AttackEnemyFlagCarrierAction : public AttackAction
|
||||||
|
|||||||
@@ -48,9 +48,6 @@ Unit* RtiTargetValue::Calculate()
|
|||||||
if (!guid)
|
if (!guid)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
if (!bot->IsInCombat())
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////begin: delete below check
|
//////////////////////////////////////////////////////begin: delete below check
|
||||||
// Some units that need to be killed in battle are not on the list of attackers,
|
// Some units that need to be killed in battle are not on the list of attackers,
|
||||||
// such as the Kor'kron Battle-Mage in Icecrown Citadel.
|
// such as the Kor'kron Battle-Mage in Icecrown Citadel.
|
||||||
@@ -62,7 +59,7 @@ Unit* RtiTargetValue::Calculate()
|
|||||||
//////////////////////////////////////////////////////end: delete below check
|
//////////////////////////////////////////////////////end: delete below check
|
||||||
|
|
||||||
Unit* unit = botAI->GetUnit(guid);
|
Unit* unit = botAI->GetUnit(guid);
|
||||||
if (!unit || unit->isDead() || !bot->IsWithinLOSInMap(unit) || !AttackersValue::IsValidTarget(unit, bot) ||
|
if (!unit || unit->isDead() || !bot->IsWithinLOSInMap(unit) || !AttackersValue::IsValidTarget(unit, bot) ||
|
||||||
sServerFacade->IsDistanceGreaterThan(sServerFacade->GetDistance2d(bot, unit),
|
sServerFacade->IsDistanceGreaterThan(sServerFacade->GetDistance2d(bot, unit),
|
||||||
sPlayerbotAIConfig->sightDistance))
|
sPlayerbotAIConfig->sightDistance))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user