diff --git a/src/strategy/actions/TellTargetAction.cpp b/src/strategy/actions/TellTargetAction.cpp index 43ab55dc..f54fe5ea 100644 --- a/src/strategy/actions/TellTargetAction.cpp +++ b/src/strategy/actions/TellTargetAction.cpp @@ -46,7 +46,7 @@ bool TellAttackersAction::Execute(Event event) { ThreatMgr* threatMgr = ref->GetSource(); Unit* unit = threatMgr->GetOwner(); - float threat = ref->getThreat(); + float threat = ref->GetThreat(); std::ostringstream out; out << unit->GetName() << " (" << threat << ")"; diff --git a/src/strategy/values/AttackersValue.cpp b/src/strategy/values/AttackersValue.cpp index bc94d045..f87baf32 100644 --- a/src/strategy/values/AttackersValue.cpp +++ b/src/strategy/values/AttackersValue.cpp @@ -72,7 +72,7 @@ void AttackersValue::AddAttackersOf(Player* player, std::set& targets) { if (!player->GetGroup()) { - if (!unit->GetThreatMgr().getThreat(player) && (!unit->GetThreatMgr().getCurrentVictim() || unit->GetThreatMgr().getCurrentVictim()->getTarget() != player)) + if (!unit->GetThreatMgr().GetThreat(player) && (!unit->GetThreatMgr().getCurrentVictim() || unit->GetThreatMgr().getCurrentVictim()->getTarget() != player)) continue; } @@ -107,7 +107,7 @@ bool AttackersValue::IsPossibleTarget(Unit* attacker, Player* bot, float range) bool leaderHasThreat = false; if (attacker && bot->GetGroup() && botAI->GetMaster()) - leaderHasThreat = attacker->GetThreatMgr().getThreat(botAI->GetMaster()); + leaderHasThreat = attacker->GetThreatMgr().GetThreat(botAI->GetMaster()); bool isMemberBotGroup = false; if (bot->GetGroup() && botAI->GetMaster()) @@ -119,10 +119,14 @@ bool AttackersValue::IsPossibleTarget(Unit* attacker, Player* bot, float range) bool inCannon = botAI->IsInVehicle(false, true); + bool enemy = botAI->GetAiObjectContext()->GetValue("enemy player target")->Get(); + return attacker && attacker->IsInWorld() && attacker->GetMapId() == bot->GetMapId() && !attacker->isDead() && !attacker->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NON_ATTACKABLE_2) && (inCannon || !attacker->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE)) && attacker->CanSeeOrDetect(bot) && !(attacker->HasUnitState(UNIT_STATE_STUNNED) && botAI->HasAura("shackle undead", attacker)) && !((attacker->IsPolymorphed() || botAI->HasAura("sap", attacker) || /*attacker->IsCharmed() ||*/ attacker->isFeared()) && !rti) && /*!sServerFacade->IsInRoots(attacker) &&*/!attacker->IsFriendlyTo(bot) && bot->IsWithinDistInMap(attacker, range) && + !attacker->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION) && + !(attacker->GetGUID().IsPet() && enemy) && !(attacker->GetCreatureType() == CREATURE_TYPE_CRITTER && !attacker->IsInCombat()) && !(sPlayerbotAIConfig->IsInPvpProhibitedZone(attacker->GetAreaId()) && (attacker->GetGUID().IsPlayer() || attacker->GetGUID().IsPet())) && (!c || (!c->IsInEvadeMode() && ((!isMemberBotGroup && botAI->HasStrategy("attack tagged", BOT_STATE_NON_COMBAT)) || leaderHasThreat || (!c->hasLootRecipient() && (!c->GetVictim() || c->GetVictim() && ((!c->GetVictim()->IsPlayer() || bot->IsInSameGroupWith(c->GetVictim()->ToPlayer())) || diff --git a/src/strategy/values/TankTargetValue.cpp b/src/strategy/values/TankTargetValue.cpp index 8cb299f4..52c60c85 100644 --- a/src/strategy/values/TankTargetValue.cpp +++ b/src/strategy/values/TankTargetValue.cpp @@ -17,7 +17,7 @@ class FindTargetForTankStrategy : public FindNonCcTargetStrategy if (IsCcTarget(creature)) return; - float threat = threatMgr->getThreat(bot); + float threat = threatMgr->GetThreat(bot); if (!result || (minThreat - threat) > 0.1f) { minThreat = threat; diff --git a/src/strategy/values/ThreatValues.cpp b/src/strategy/values/ThreatValues.cpp index 39b9a885..1d3b6394 100644 --- a/src/strategy/values/ThreatValues.cpp +++ b/src/strategy/values/ThreatValues.cpp @@ -42,7 +42,7 @@ uint8 ThreatValue::Calculate(Unit* target) if (!group) return 0; - float botThreat = target->GetThreatMgr().getThreat(bot); + float botThreat = target->GetThreatMgr().GetThreat(bot); float maxThreat = -1.0f; bool hasTank = false; @@ -55,7 +55,7 @@ uint8 ThreatValue::Calculate(Unit* target) if (botAI->IsTank(player)) { hasTank = true; - float threat = target->GetThreatMgr().getThreat(player); + float threat = target->GetThreatMgr().GetThreat(player); if (maxThreat < threat) maxThreat = threat; }