diff --git a/src/Ai/Raid/Karazhan/Action/RaidKarazhanActions.cpp b/src/Ai/Raid/Karazhan/Action/RaidKarazhanActions.cpp index 8f7f5f52..4e175f0f 100644 --- a/src/Ai/Raid/Karazhan/Action/RaidKarazhanActions.cpp +++ b/src/Ai/Raid/Karazhan/Action/RaidKarazhanActions.cpp @@ -116,9 +116,9 @@ bool AttumenTheHuntsmanStackBehindAction::Execute(Event /*event*/) float rearX = attumenMounted->GetPositionX() + std::cos(orientation) * distanceBehind; float rearY = attumenMounted->GetPositionY() + std::sin(orientation) * distanceBehind; - if (bot->GetExactDist2d(rearX, rearY) > 1.0f) + if (bot->GetDistance2d(rearX, rearY) > 1.0f) { - return MoveTo(KARAZHAN_MAP_ID, rearX, rearY, attumenMounted->GetPositionZ(), false, false, false, false, + return MoveTo(KARAZHAN_MAP_ID, rearX, rearY, bot->GetPositionZ(), false, false, false, false, MovementPriority::MOVEMENT_FORCED, true, false); } @@ -1178,7 +1178,7 @@ bool PrinceMalchezaarNonTankAvoidInfernalAction::Execute(Event /*event*/) bot->AttackStop(); bot->InterruptNonMeleeSpells(true); return MoveTo(KARAZHAN_MAP_ID, bestDestX, bestDestY, bestDestZ, false, false, false, false, - MovementPriority::MOVEMENT_FORCED, true, false); + MovementPriority::MOVEMENT_COMBAT, true, false); } } @@ -1244,7 +1244,7 @@ bool PrinceMalchezaarMainTankMovementAction::Execute(Event /*event*/) { bot->AttackStop(); return MoveTo(KARAZHAN_MAP_ID, bestDestX, bestDestY, bestDestZ, false, false, false, false, - MovementPriority::MOVEMENT_FORCED, true, false); + MovementPriority::MOVEMENT_COMBAT, true, true); } } diff --git a/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.cpp b/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.cpp index 06a3335c..e68a3885 100644 --- a/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.cpp +++ b/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.cpp @@ -80,6 +80,19 @@ float AttumenTheHuntsmanWaitForDpsMultiplier::GetValue(Action* action) return 1.0f; } +// Disables co +disperse and co +tank face +float MaidenOfVirtueDisableCombatFormationMoveMultiplier::GetValue(Action* action) +{ + if (!AI_VALUE2(Unit*, "find target", "maiden of virtue")) + return 1.0f; + + if (dynamic_cast(action) && + !dynamic_cast(action)) + return 0.0f; + + return 1.0f; +} + // The assist tank should stay on the boss to be 2nd on aggro and tank Hateful Bolts float TheCuratorDisableTankAssistMultiplier::GetValue(Action* action) { @@ -93,6 +106,19 @@ float TheCuratorDisableTankAssistMultiplier::GetValue(Action* action) return 1.0f; } +// Disables co +disperse and co +tank face +float TheCuratorDisableCombatFormationMoveMultiplier::GetValue(Action* action) +{ + if (!AI_VALUE2(Unit*, "find target", "the curator")) + return 1.0f; + + if (dynamic_cast(action) && + !dynamic_cast(action)) + return 0.0f; + + return 1.0f; +} + // Save Bloodlust/Heroism for Evocation (100% increased damage) float TheCuratorDelayBloodlustAndHeroismMultiplier::GetValue(Action* action) { @@ -350,17 +376,11 @@ float NightbaneDisableMovementMultiplier::GetValue(Action* action) if (dynamic_cast(action) || dynamic_cast(action) || - dynamic_cast(action)) - return 0.0f; - - // Disable CombatFormationMoveAction for all bots except: - // (1) main tank and (2) only during the ground phase, other melee - if (botAI->IsRanged(bot) || - (botAI->IsMelee(bot) && !botAI->IsMainTank(bot) && - nightbane->GetPositionZ() > NIGHTBANE_FLIGHT_Z)) + dynamic_cast(action) || + (dynamic_cast(action) && + !dynamic_cast(action))) { - if (dynamic_cast(action)) - return 0.0f; + return 0.0f; } return 1.0f; diff --git a/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.h b/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.h index 8ad5a1d4..23f5617d 100644 --- a/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.h +++ b/src/Ai/Raid/Karazhan/Multiplier/RaidKarazhanMultipliers.h @@ -27,6 +27,14 @@ public: virtual float GetValue(Action* action); }; +class MaidenOfVirtueDisableCombatFormationMoveMultiplier : public Multiplier +{ +public: + MaidenOfVirtueDisableCombatFormationMoveMultiplier( + PlayerbotAI* botAI) : Multiplier(botAI, "maiden of virtue disable combat formation move multiplier") {} + virtual float GetValue(Action* action); +}; + class TheCuratorDisableTankAssistMultiplier : public Multiplier { public: @@ -35,6 +43,14 @@ public: virtual float GetValue(Action* action); }; +class TheCuratorDisableCombatFormationMoveMultiplier : public Multiplier +{ +public: + TheCuratorDisableCombatFormationMoveMultiplier( + PlayerbotAI* botAI) : Multiplier(botAI, "the curator disable combat formation move multiplier") {} + virtual float GetValue(Action* action); +}; + class TheCuratorDelayBloodlustAndHeroismMultiplier : public Multiplier { public: diff --git a/src/Ai/Raid/Karazhan/Strategy/RaidKarazhanStrategy.cpp b/src/Ai/Raid/Karazhan/Strategy/RaidKarazhanStrategy.cpp index 04578f08..d9bbf816 100644 --- a/src/Ai/Raid/Karazhan/Strategy/RaidKarazhanStrategy.cpp +++ b/src/Ai/Raid/Karazhan/Strategy/RaidKarazhanStrategy.cpp @@ -146,7 +146,9 @@ void RaidKarazhanStrategy::InitMultipliers(std::vector& multipliers multipliers.push_back(new AttumenTheHuntsmanDisableTankAssistMultiplier(botAI)); multipliers.push_back(new AttumenTheHuntsmanStayStackedMultiplier(botAI)); multipliers.push_back(new AttumenTheHuntsmanWaitForDpsMultiplier(botAI)); + multipliers.push_back(new MaidenOfVirtueDisableCombatFormationMoveMultiplier(botAI)); multipliers.push_back(new TheCuratorDisableTankAssistMultiplier(botAI)); + multipliers.push_back(new TheCuratorDisableCombatFormationMoveMultiplier(botAI)); multipliers.push_back(new TheCuratorDelayBloodlustAndHeroismMultiplier(botAI)); multipliers.push_back(new ShadeOfAranArcaneExplosionDisableChargeMultiplier(botAI)); multipliers.push_back(new ShadeOfAranFlameWreathDisableMovementMultiplier(botAI)); diff --git a/src/Ai/Raid/Karazhan/Util/RaidKarazhanHelpers.h b/src/Ai/Raid/Karazhan/Util/RaidKarazhanHelpers.h index ad7e8c3d..885af774 100644 --- a/src/Ai/Raid/Karazhan/Util/RaidKarazhanHelpers.h +++ b/src/Ai/Raid/Karazhan/Util/RaidKarazhanHelpers.h @@ -62,7 +62,6 @@ namespace KarazhanHelpers NPC_ATTUMEN_THE_HUNTSMAN_MOUNTED = 16152, // Terestian Illhoof - NPC_TERESTIAN_ILLHOOF = 15688, NPC_DEMON_CHAINS = 17248, NPC_KILREK = 17229,