Merge remote-tracking branch 'upstream/master' into karazhan

This commit is contained in:
crow
2025-09-27 03:22:50 -05:00
238 changed files with 106653 additions and 102603 deletions

View File

@@ -215,7 +215,7 @@ bool MalygosTargetAction::Execute(Event event)
// if (!spark->IsInWorld() || spark->GetMapId() != bot->GetMapId())
// return false;
// return bot->GetDistance2d(MALYGOS_STACK_POSITION.first, MALYGOS_STACK_POSITION.second) < 3.0f;
// }

View File

@@ -76,6 +76,6 @@ float MalygosMultiplier::GetValue(Action* action)
return 0.0f;
}
}
return 1.0f;
}

View File

@@ -48,6 +48,6 @@ bool PowerSparkTrigger::IsActive()
return true;
}
}
return false;
}

View File

@@ -12,7 +12,7 @@ enum EyeOfEternityIDs
NPC_NEXUS_LORD = 30245,
NPC_SCION_OF_ETERNITY = 30249,
NPC_WYRMREST_SKYTALON = 30161,
SPELL_POWER_SPARK_VISUAL = 55845,
SPELL_POWER_SPARK_GROUND_BUFF = 55852,
SPELL_POWER_SPARK_MALYGOS_BUFF = 56152,

View File

@@ -10,7 +10,7 @@ class RaidIccActionContext : public NamedObjectContext<Action>
public:
RaidIccActionContext()
{
creators["icc lm tank position"] = &RaidIccActionContext::icc_lm_tank_position;
creators["icc lm tank position"] = &RaidIccActionContext::icc_lm_tank_position;
creators["icc spike"] = &RaidIccActionContext::icc_spike;
creators["icc dark reckoning"] = &RaidIccActionContext::icc_dark_reckoning;
@@ -62,7 +62,7 @@ public:
creators["icc sindragosa blistering cold"] = &RaidIccActionContext::icc_sindragosa_blistering_cold;
creators["icc sindragosa unchained magic"] = &RaidIccActionContext::icc_sindragosa_unchained_magic;
creators["icc sindragosa chilled to the bone"] = &RaidIccActionContext::icc_sindragosa_chilled_to_the_bone;
creators["icc sindragosa mystic buffet"] = &RaidIccActionContext::icc_sindragosa_mystic_buffet;
creators["icc sindragosa mystic buffet"] = &RaidIccActionContext::icc_sindragosa_mystic_buffet;
creators["icc sindragosa frost bomb"] = &RaidIccActionContext::icc_sindragosa_frost_bomb;
creators["icc sindragosa tank swap position"] = &RaidIccActionContext::icc_sindragosa_tank_swap_position;
@@ -121,11 +121,11 @@ private:
static Action* icc_valithria_dream_cloud(PlayerbotAI* ai) { return new IccValithriaDreamCloudAction(ai); }
static Action* icc_sindragosa_group_position(PlayerbotAI* ai) { return new IccSindragosaGroupPositionAction(ai); }
static Action* icc_sindragosa_frost_beacon(PlayerbotAI* ai) { return new IccSindragosaFrostBeaconAction(ai); }
static Action* icc_sindragosa_frost_beacon(PlayerbotAI* ai) { return new IccSindragosaFrostBeaconAction(ai); }
static Action* icc_sindragosa_blistering_cold(PlayerbotAI* ai) { return new IccSindragosaBlisteringColdAction(ai); }
static Action* icc_sindragosa_unchained_magic(PlayerbotAI* ai) { return new IccSindragosaUnchainedMagicAction(ai); }
static Action* icc_sindragosa_chilled_to_the_bone(PlayerbotAI* ai) { return new IccSindragosaChilledToTheBoneAction(ai); }
static Action* icc_sindragosa_mystic_buffet(PlayerbotAI* ai) { return new IccSindragosaMysticBuffetAction(ai); }
static Action* icc_sindragosa_mystic_buffet(PlayerbotAI* ai) { return new IccSindragosaMysticBuffetAction(ai); }
static Action* icc_sindragosa_frost_bomb(PlayerbotAI* ai) { return new IccSindragosaFrostBombAction(ai); }
static Action* icc_sindragosa_tank_swap_position(PlayerbotAI* ai) { return new IccSindragosaTankSwapPositionAction(ai); }

View File

@@ -1690,7 +1690,7 @@ bool IccRotfaceTankPositionAction::PositionMainTankAndMelee(Unit* boss)
if (!isBossCasting && (bot->GetExactDist2d(ICC_ROTFACE_CENTER_POSITION) < 2.0f || bot->GetExactDist2d(ICC_ROTFACE_CENTER_POSITION) > 7.0f) && !botAI->IsTank(bot))
{
MoveTo(bot->GetMapId(), ICC_ROTFACE_CENTER_POSITION.GetPositionX(), ICC_ROTFACE_CENTER_POSITION.GetPositionY(),
bot->GetPositionZ(), false, false, false, true, MovementPriority::MOVEMENT_COMBAT);
bot->GetPositionZ(), false, false, false, true, MovementPriority::MOVEMENT_COMBAT);
}
return false;
@@ -2047,7 +2047,7 @@ bool IccRotfaceGroupPositionAction::PositionRangedAndHealers(Unit* boss,Unit *sm
bot->GetExactDist2d(boss->GetPositionX(), boss->GetPositionY()) > 5.0f))
{
MoveTo(bot->GetMapId(), boss->GetPositionX(), boss->GetPositionY(),
bot->GetPositionZ(), false, false, false, true, MovementPriority::MOVEMENT_COMBAT);
bot->GetPositionZ(), false, false, false, true, MovementPriority::MOVEMENT_COMBAT);
}
if (!isHeroic)
@@ -5168,7 +5168,7 @@ bool IccValithriaGroupAction::Handle25ManGroupLogic()
if (botAI->IsTank(bot) || botAI->IsDps(bot))
HandleMarkingLogic(inGroup1, inGroup2, group1Pos, group2Pos);
// Movement logic for non-healers
if (!botAI->IsHeal(bot))
{
@@ -5190,7 +5190,7 @@ bool IccValithriaGroupAction::Handle25ManGroupLogic()
}
}
}
return false;
}
@@ -5615,7 +5615,7 @@ bool IccValithriaDreamCloudAction::Execute(Event event)
}
}
// All stacked: leader (lowest guid) moves to next cloud, others follow and stack at leader's new position
// Find all dream and nightmare clouds
GuidVector npcs = AI_VALUE(GuidVector, "nearest hostile npcs");
@@ -6104,7 +6104,7 @@ bool IccSindragosaTankSwapPositionAction::Execute(Event event)
return false;
float distToTankPos = bot->GetExactDist2d(ICC_SINDRAGOSA_TANK_POSITION);
// Move to tank position
if (distToTankPos > 3.0f) // Tighter tolerance for tank swap
{
@@ -6305,7 +6305,7 @@ bool IccSindragosaFrostBeaconAction::HandleNonBeaconedPlayer(const Unit* boss)
const bool isRanged = botAI->IsRanged(bot) || (bot->GetExactDist2d(ICC_SINDRAGOSA_RANGED_POSITION.GetPositionX(),ICC_SINDRAGOSA_RANGED_POSITION.GetPositionY()) <
bot->GetExactDist2d(ICC_SINDRAGOSA_MELEE_POSITION.GetPositionX(),ICC_SINDRAGOSA_MELEE_POSITION.GetPositionY()));
const Position& targetPosition = isRanged ? ICC_SINDRAGOSA_RANGED_POSITION : ICC_SINDRAGOSA_MELEE_POSITION;
const Position& targetPosition = isRanged ? ICC_SINDRAGOSA_RANGED_POSITION : ICC_SINDRAGOSA_MELEE_POSITION;
const float deltaX = std::abs(targetPosition.GetPositionX() - bot->GetPositionX());
const float deltaY = std::abs(targetPosition.GetPositionY() - bot->GetPositionY());
@@ -6374,7 +6374,7 @@ bool IccSindragosaBlisteringColdAction::Execute(Event event)
float const STEP_SIZE = 15.0f;
float distToTarget = bot->GetDistance2d(targetPos.GetPositionX(), targetPos.GetPositionY());
if (distToTarget > 0.1f) // Avoid division by zero
{
if (!bot->HasAura(SPELL_NITRO_BOOSTS))
@@ -6382,12 +6382,12 @@ bool IccSindragosaBlisteringColdAction::Execute(Event event)
// Calculate direction vector
float dirX = targetPos.GetPositionX() - bot->GetPositionX();
float dirY = targetPos.GetPositionY() - bot->GetPositionY();
// Normalize direction vector
float length = sqrt(dirX * dirX + dirY * dirY);
dirX /= length;
dirY /= length;
// Move STEP_SIZE yards in that direction
float moveX = bot->GetPositionX() + dirX * STEP_SIZE;
float moveY = bot->GetPositionY() + dirY * STEP_SIZE;
@@ -6441,7 +6441,7 @@ bool IccSindragosaChilledToTheBoneAction::Execute(Event event)
}
}
return false;
return false;
}
bool IccSindragosaMysticBuffetAction::Execute(Event event)
@@ -6517,7 +6517,7 @@ bool IccSindragosaMysticBuffetAction::Execute(Event event)
{
return true;
}
botAI->Reset();
// Move to LOS2 position
@@ -7874,7 +7874,7 @@ bool IccLichKingAddsAction::Execute(Event event)
}
}
//-----------Valkyr bot suicide if group fails to kill Valkyr in time------------- comment out if you dont want it
// Handle teleportation fixes
HandleTeleportationFixes(diff, terenasMenethilHC);

View File

@@ -68,7 +68,7 @@ const Position ICC_SINDRAGOSA_UNCHAINEDMAGIC2_POSITION = Position(4461.3945f, 24
const Position ICC_SINDRAGOSA_UNCHAINEDMAGIC3_POSITION = Position(4473.6616f, 2484.8489f, 203.38258f);
const Position ICC_SINDRAGOSA_UNCHAINEDMAGIC4_POSITION = Position(4459.9336f, 2507.409f, 203.38606f);
const Position ICC_SINDRAGOSA_UNCHAINEDMAGIC5_POSITION = Position(4442.3096f, 2512.4688f, 203.38647f);
const Position ICC_SINDRAGOSA_CENTER_POSITION = Position(4408.0464f, 2484.478f, 203.37529f);
const Position ICC_SINDRAGOSA_CENTER_POSITION = Position(4408.0464f, 2484.478f, 203.37529f);
const Position ICC_SINDRAGOSA_THOMBMB2_POSITION = Position(4436.895f, 2498.1401f, 203.38133f);
const Position ICC_SINDRAGOSA_FBOMB_POSITION = Position(4449.3647f, 2486.4524f, 203.379f);
const Position ICC_SINDRAGOSA_FBOMB10_POSITION = Position(4449.3647f, 2486.4524f, 203.379f);
@@ -77,11 +77,11 @@ const Position ICC_LICH_KING_ADDS_POSITION = Position(476.7332f, -2095.3894f, 84
const Position ICC_LICH_KING_MELEE_POSITION = Position(503.5546f, -2106.8213f, 840.857f);
const Position ICC_LICH_KING_RANGED_POSITION = Position(501.3563f, -2085.1816f, 840.857f);
const Position ICC_LICH_KING_ASSISTHC_POSITION = Position(517.2145f, -2125.0674f, 840.857f);
const Position ICC_LK_FROST1_POSITION = Position(503.96548f, -2183.216f, 840.857f);
const Position ICC_LK_FROST2_POSITION = Position(563.07166f, -2125.7578f, 840.857f);
const Position ICC_LK_FROST3_POSITION = Position(503.40182f, -2067.3435f, 840.857f);
const Position ICC_LK_FROSTR1_POSITION = Position(481.168f, -2177.8723f, 840.857f);
const Position ICC_LK_FROSTR2_POSITION = Position(562.20807f, -2100.2393f, 840.857f);
const Position ICC_LK_FROST1_POSITION = Position(503.96548f, -2183.216f, 840.857f);
const Position ICC_LK_FROST2_POSITION = Position(563.07166f, -2125.7578f, 840.857f);
const Position ICC_LK_FROST3_POSITION = Position(503.40182f, -2067.3435f, 840.857f);
const Position ICC_LK_FROSTR1_POSITION = Position(481.168f, -2177.8723f, 840.857f);
const Position ICC_LK_FROSTR2_POSITION = Position(562.20807f, -2100.2393f, 840.857f);
const Position ICC_LK_FROSTR3_POSITION = Position(526.35297f, -2071.0317f, 840.857f);
//Lord Marrogwar
@@ -95,7 +95,7 @@ public:
bool MoveTowardPosition(const Position& position, float incrementSize);
};
class IccSpikeAction : public AttackAction
class IccSpikeAction : public AttackAction
{
public:
IccSpikeAction(PlayerbotAI* botAI) : AttackAction(botAI, "icc spike") {}
@@ -289,10 +289,10 @@ public:
bool FindAndMoveFromClosestMember(Unit* boss, Unit* smallOoze);
};
class IccRotfaceMoveAwayFromExplosionAction : public MovementAction
class IccRotfaceMoveAwayFromExplosionAction : public MovementAction
{
public:
IccRotfaceMoveAwayFromExplosionAction(PlayerbotAI* botAI, std::string const name = "icc rotface move away from explosion")
IccRotfaceMoveAwayFromExplosionAction(PlayerbotAI* botAI, std::string const name = "icc rotface move away from explosion")
: MovementAction(botAI, name) {}
bool Execute(Event event) override;
@@ -362,7 +362,7 @@ public:
class IccBpcKelesethTankAction : public AttackAction
{
public:
IccBpcKelesethTankAction(PlayerbotAI* botAI)
IccBpcKelesethTankAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc bpc keleseth tank") {}
bool Execute(Event event) override;
};
@@ -370,7 +370,7 @@ public:
class IccBpcMainTankAction : public AttackAction
{
public:
IccBpcMainTankAction(PlayerbotAI* botAI)
IccBpcMainTankAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc bpc main tank") {}
bool Execute(Event event) override;
@@ -380,7 +380,7 @@ public:
class IccBpcEmpoweredVortexAction : public MovementAction
{
public:
IccBpcEmpoweredVortexAction(PlayerbotAI* botAI)
IccBpcEmpoweredVortexAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc bpc empowered vortex") {}
bool Execute(Event event) override;
@@ -391,7 +391,7 @@ public:
class IccBpcKineticBombAction : public AttackAction
{
public:
IccBpcKineticBombAction(PlayerbotAI* botAI)
IccBpcKineticBombAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc bpc kinetic bomb") {}
bool Execute(Event event) override;
@@ -411,7 +411,7 @@ public:
class IccBqlGroupPositionAction : public AttackAction
{
public:
IccBqlGroupPositionAction(PlayerbotAI* botAI)
IccBqlGroupPositionAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc group tank position") {}
bool Execute(Event event) override;
@@ -429,16 +429,16 @@ private:
int curveIdx = 0;
bool foundSafe = false;
float minDist = 0.0f;
float score = 0.0f;
float score = 0.0f;
Position closestPoint;
float t_closest = 0.0f;
};
};
};
class IccBqlPactOfDarkfallenAction : public MovementAction
{
public:
IccBqlPactOfDarkfallenAction(PlayerbotAI* botAI)
IccBqlPactOfDarkfallenAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc bql pact of darkfallen") {}
bool Execute(Event event) override;
@@ -449,7 +449,7 @@ public:
class IccBqlVampiricBiteAction : public AttackAction
{
public:
IccBqlVampiricBiteAction(PlayerbotAI* botAI)
IccBqlVampiricBiteAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc bql vampiric bite") {}
bool Execute(Event event) override;
@@ -463,15 +463,15 @@ public:
class IccValkyreSpearAction : public AttackAction
{
public:
IccValkyreSpearAction(PlayerbotAI* botAI)
IccValkyreSpearAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc valkyre spear") {}
bool Execute(Event event) override;
};
class IccSisterSvalnaAction : public AttackAction
{
public:
IccSisterSvalnaAction(PlayerbotAI* botAI)
IccSisterSvalnaAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc sister svalna") {}
bool Execute(Event event) override;
};
@@ -494,7 +494,7 @@ public:
class IccValithriaPortalAction : public MovementAction
{
public:
IccValithriaPortalAction(PlayerbotAI* botAI)
IccValithriaPortalAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc valithria portal") {}
bool Execute(Event event) override;
};
@@ -502,7 +502,7 @@ public:
class IccValithriaHealAction : public AttackAction
{
public:
IccValithriaHealAction(PlayerbotAI* botAI)
IccValithriaHealAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc valithria heal") {}
bool Execute(Event event) override;
};
@@ -510,7 +510,7 @@ public:
class IccValithriaDreamCloudAction : public MovementAction
{
public:
IccValithriaDreamCloudAction(PlayerbotAI* botAI)
IccValithriaDreamCloudAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc valithria dream cloud") {}
bool Execute(Event event) override;
};
@@ -519,7 +519,7 @@ public:
class IccSindragosaGroupPositionAction : public AttackAction
{
public:
IccSindragosaGroupPositionAction(PlayerbotAI* botAI)
IccSindragosaGroupPositionAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc sindragosa group position") {}
bool Execute(Event event) override;
@@ -531,7 +531,7 @@ public:
class IccSindragosaFrostBeaconAction : public MovementAction
{
public:
IccSindragosaFrostBeaconAction(PlayerbotAI* botAI)
IccSindragosaFrostBeaconAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc sindragosa frost beacon") {}
bool Execute(Event event) override;
@@ -554,7 +554,7 @@ public:
class IccSindragosaBlisteringColdAction : public MovementAction
{
public:
IccSindragosaBlisteringColdAction(PlayerbotAI* botAI)
IccSindragosaBlisteringColdAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc sindragosa blistering cold") {}
bool Execute(Event event) override;
};
@@ -562,7 +562,7 @@ public:
class IccSindragosaUnchainedMagicAction : public AttackAction
{
public:
IccSindragosaUnchainedMagicAction(PlayerbotAI* botAI)
IccSindragosaUnchainedMagicAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc sindragosa unchained magic") {}
bool Execute(Event event) override;
};
@@ -570,15 +570,15 @@ public:
class IccSindragosaChilledToTheBoneAction : public AttackAction
{
public:
IccSindragosaChilledToTheBoneAction(PlayerbotAI* botAI)
IccSindragosaChilledToTheBoneAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc sindragosa chilled to the bone") {}
bool Execute(Event event) override;
};
};
class IccSindragosaMysticBuffetAction : public MovementAction
{
public:
IccSindragosaMysticBuffetAction(PlayerbotAI* botAI)
IccSindragosaMysticBuffetAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc sindragosa mystic buffet") {}
bool Execute(Event event) override;
};
@@ -586,15 +586,15 @@ public:
class IccSindragosaFrostBombAction : public MovementAction
{
public:
IccSindragosaFrostBombAction(PlayerbotAI* botAI)
IccSindragosaFrostBombAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc sindragosa frost bomb") {}
bool Execute(Event event) override;
};
class IccSindragosaTankSwapPositionAction : public AttackAction
class IccSindragosaTankSwapPositionAction : public AttackAction
{
public:
IccSindragosaTankSwapPositionAction(PlayerbotAI* botAI)
IccSindragosaTankSwapPositionAction(PlayerbotAI* botAI)
: AttackAction(botAI, "sindragosa tank swap position") {}
bool Execute(Event event) override;
};
@@ -604,7 +604,7 @@ class IccSindragosaTankSwapPositionAction : public AttackAction
class IccLichKingShadowTrapAction : public MovementAction
{
public:
IccLichKingShadowTrapAction(PlayerbotAI* botAI)
IccLichKingShadowTrapAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc lich king shadow trap") {}
bool Execute(Event event) override;
};
@@ -612,7 +612,7 @@ class IccLichKingShadowTrapAction : public MovementAction
class IccLichKingNecroticPlagueAction : public MovementAction
{
public:
IccLichKingNecroticPlagueAction(PlayerbotAI* botAI)
IccLichKingNecroticPlagueAction(PlayerbotAI* botAI)
: MovementAction(botAI, "icc lich king necrotic plague") {}
bool Execute(Event event) override;
};
@@ -620,7 +620,7 @@ class IccLichKingNecroticPlagueAction : public MovementAction
class IccLichKingWinterAction : public AttackAction
{
public:
IccLichKingWinterAction(PlayerbotAI* botAI)
IccLichKingWinterAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc lich king winter") {}
bool Execute(Event event) override;
@@ -643,7 +643,7 @@ class IccLichKingWinterAction : public AttackAction
class IccLichKingAddsAction : public AttackAction
{
public:
IccLichKingAddsAction(PlayerbotAI* botAI)
IccLichKingAddsAction(PlayerbotAI* botAI)
: AttackAction(botAI, "icc lich king adds") {}
bool Execute(Event event) override;

View File

@@ -176,8 +176,8 @@ float IccRotfaceMultiplier::GetValue(Action* action)
if (dynamic_cast<CastBlinkBackAction*>(action))
return 0.0f;
if (botAI->IsAssistTank(bot) && (dynamic_cast<AttackRtiTargetAction*>(action) || dynamic_cast<TankAssistAction*>(action)))
return 0.0f;
if (botAI->IsAssistTank(bot) && (dynamic_cast<AttackRtiTargetAction*>(action) || dynamic_cast<TankAssistAction*>(action)))
return 0.0f;
Unit* boss = AI_VALUE2(Unit*, "find target", "big ooze");
if (!boss)
@@ -185,7 +185,7 @@ float IccRotfaceMultiplier::GetValue(Action* action)
static std::map<ObjectGuid, uint32> lastExplosionTimes;
static std::map<ObjectGuid, bool> hasMoved;
ObjectGuid botGuid = bot->GetGUID();
// When cast starts, record the time
@@ -313,7 +313,7 @@ float IccBpcAssistMultiplier::GetValue(Action* action)
return 0.0f;
Aura* aura = botAI->GetAura("Shadow Prison", bot, false, true);
if (aura)
if (aura)
{
if (aura->GetStackAmount() > 18 && botAI->IsTank(bot))
{
@@ -642,8 +642,8 @@ float IccSindragosaMultiplier::GetValue(Action* action)
return 1.0f;
if (dynamic_cast<FollowAction*>(action) || dynamic_cast<IccSindragosaBlisteringColdAction*>(action) ||
dynamic_cast<IccSindragosaChilledToTheBoneAction*>(action) || dynamic_cast<IccSindragosaMysticBuffetAction*>(action) ||
dynamic_cast<IccSindragosaFrostBeaconAction*>(action) || dynamic_cast<IccSindragosaUnchainedMagicAction*>(action) ||
dynamic_cast<IccSindragosaChilledToTheBoneAction*>(action) || dynamic_cast<IccSindragosaMysticBuffetAction*>(action) ||
dynamic_cast<IccSindragosaFrostBeaconAction*>(action) || dynamic_cast<IccSindragosaUnchainedMagicAction*>(action) ||
dynamic_cast<FleeAction*>(action) || dynamic_cast<CastDisengageAction*>(action) || dynamic_cast<PetAttackAction*>(action) ||
dynamic_cast<IccSindragosaGroupPositionAction*>(action) || dynamic_cast<TankAssistAction*>(action) ||
dynamic_cast<DpsAoeAction*>(action) || dynamic_cast<CastHurricaneAction*>(action) ||

View File

@@ -71,7 +71,7 @@ public:
class IccBqlMultiplier : public Multiplier
{
public:
IccBqlMultiplier(PlayerbotAI* botAI) : Multiplier(botAI, "icc bql multiplier") {}
IccBqlMultiplier(PlayerbotAI* botAI) : Multiplier(botAI, "icc bql multiplier") {}
virtual float GetValue(Action* action) override;
};

View File

@@ -13,7 +13,7 @@ void RaidIccStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode("icc dark reckoning",
NextAction::array(0, new NextAction("icc dark reckoning", ACTION_MOVE + 5), nullptr)));
triggers.push_back(new TriggerNode("icc lady deathwhisper",
triggers.push_back(new TriggerNode("icc lady deathwhisper",
NextAction::array(0, new NextAction("icc ranged position lady deathwhisper", ACTION_MOVE + 2),
new NextAction("icc adds lady deathwhisper", ACTION_RAID + 3),
new NextAction("icc shade lady deathwhisper", ACTION_RAID + 4), nullptr)));
@@ -30,7 +30,7 @@ void RaidIccStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode("icc gunship teleport ally",
NextAction::array(0, new NextAction("icc gunship teleport ally", ACTION_RAID + 4), nullptr)));
triggers.push_back(new TriggerNode("icc gunship teleport horde",
NextAction::array(0, new NextAction("icc gunship teleport horde", ACTION_RAID + 4), nullptr)));
@@ -38,24 +38,24 @@ void RaidIccStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode("icc dbs",
NextAction::array(0, new NextAction("icc dbs tank position", ACTION_RAID + 3),
new NextAction("icc adds dbs", ACTION_RAID + 5), nullptr)));
triggers.push_back(new TriggerNode("icc dbs main tank rune of blood",
NextAction::array(0, new NextAction("taunt spell", ACTION_EMERGENCY + 4), nullptr)));
//DOGS
triggers.push_back(new TriggerNode("icc stinky precious main tank mortal wound",
NextAction::array(0, new NextAction("taunt spell", ACTION_EMERGENCY + 4), nullptr)));
//FESTERGUT
triggers.push_back(new TriggerNode("icc festergut group position",
NextAction::array(0, new NextAction("icc festergut group position", ACTION_MOVE + 4), nullptr)));
triggers.push_back(new TriggerNode("icc festergut main tank gastric bloat",
NextAction::array(0, new NextAction("taunt spell", ACTION_EMERGENCY + 6), nullptr)));
triggers.push_back(new TriggerNode("icc festergut spore",
NextAction::array(0, new NextAction("icc festergut spore", ACTION_MOVE + 5), nullptr)));
//ROTFACE
triggers.push_back(new TriggerNode("icc rotface tank position",
NextAction::array(0, new NextAction("icc rotface tank position", ACTION_RAID + 5), nullptr)));
@@ -97,7 +97,7 @@ void RaidIccStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode("icc bpc ball of flame",
NextAction::array(0, new NextAction("icc bpc ball of flame", ACTION_RAID + 7), nullptr)));
//BQL
triggers.push_back(new TriggerNode("icc bql group position",
NextAction::array(0, new NextAction("icc bql group position", ACTION_RAID), nullptr)));
@@ -123,7 +123,7 @@ void RaidIccStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode("icc valithria portal",
NextAction::array(0, new NextAction("icc valithria portal", ACTION_RAID + 5), nullptr)));
triggers.push_back(new TriggerNode("icc valithria heal",
triggers.push_back(new TriggerNode("icc valithria heal",
NextAction::array(0, new NextAction("icc valithria heal", ACTION_RAID+2), nullptr)));
triggers.push_back(new TriggerNode("icc valithria dream cloud",
@@ -131,19 +131,19 @@ void RaidIccStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
//SINDRAGOSA
triggers.push_back(new TriggerNode("icc sindragosa group position",
NextAction::array(0, new NextAction("icc sindragosa group position", ACTION_RAID + 1), nullptr)));
NextAction::array(0, new NextAction("icc sindragosa group position", ACTION_RAID + 1), nullptr)));
triggers.push_back(new TriggerNode("icc sindragosa frost beacon",
NextAction::array(0, new NextAction("icc sindragosa frost beacon", ACTION_RAID + 5), nullptr)));
NextAction::array(0, new NextAction("icc sindragosa frost beacon", ACTION_RAID + 5), nullptr)));
triggers.push_back(new TriggerNode("icc sindragosa blistering cold",
NextAction::array(0, new NextAction("icc sindragosa blistering cold", ACTION_EMERGENCY + 4), nullptr)));
NextAction::array(0, new NextAction("icc sindragosa blistering cold", ACTION_EMERGENCY + 4), nullptr)));
triggers.push_back(new TriggerNode("icc sindragosa unchained magic",
NextAction::array(0, new NextAction("icc sindragosa unchained magic", ACTION_RAID + 2), nullptr)));
triggers.push_back(new TriggerNode("icc sindragosa chilled to the bone",
NextAction::array(0, new NextAction("icc sindragosa chilled to the bone", ACTION_RAID + 2), nullptr)));
NextAction::array(0, new NextAction("icc sindragosa chilled to the bone", ACTION_RAID + 2), nullptr)));
triggers.push_back(new TriggerNode("icc sindragosa mystic buffet",
NextAction::array(0, new NextAction("icc sindragosa mystic buffet", ACTION_RAID + 3), nullptr)));

View File

@@ -58,9 +58,9 @@ public:
creators["icc valithria heal"] = &RaidIccTriggerContext::icc_valithria_heal;
creators["icc valithria dream cloud"] = &RaidIccTriggerContext::icc_valithria_dream_cloud;
creators["icc sindragosa group position"] = &RaidIccTriggerContext::icc_sindragosa_group_position;
creators["icc sindragosa group position"] = &RaidIccTriggerContext::icc_sindragosa_group_position;
creators["icc sindragosa frost beacon"] = &RaidIccTriggerContext::icc_sindragosa_frost_beacon;
creators["icc sindragosa blistering cold"] = &RaidIccTriggerContext::icc_sindragosa_blistering_cold;
creators["icc sindragosa blistering cold"] = &RaidIccTriggerContext::icc_sindragosa_blistering_cold;
creators["icc sindragosa unchained magic"] = &RaidIccTriggerContext::icc_sindragosa_unchained_magic;
creators["icc sindragosa chilled to the bone"] = &RaidIccTriggerContext::icc_sindragosa_chilled_to_the_bone;
creators["icc sindragosa mystic buffet"] = &RaidIccTriggerContext::icc_sindragosa_mystic_buffet;
@@ -99,7 +99,7 @@ private:
static Trigger* icc_rotface_group_position(PlayerbotAI* ai) { return new IccRotfaceGroupPositionTrigger(ai); }
static Trigger* icc_rotface_move_away_from_explosion(PlayerbotAI* ai) { return new IccRotfaceMoveAwayFromExplosionTrigger(ai); }
static Trigger* icc_putricide_volatile_ooze(PlayerbotAI* ai) { return new IccPutricideVolatileOozeTrigger(ai); }
static Trigger* icc_putricide_volatile_ooze(PlayerbotAI* ai) { return new IccPutricideVolatileOozeTrigger(ai); }
static Trigger* icc_putricide_gas_cloud(PlayerbotAI* ai) { return new IccPutricideGasCloudTrigger(ai); }
static Trigger* icc_putricide_growing_ooze_puddle(PlayerbotAI* ai) { return new IccPutricideGrowingOozePuddleTrigger(ai); }
static Trigger* icc_putricide_main_tank_mutated_plague(PlayerbotAI* ai) { return new IccPutricideMainTankMutatedPlagueTrigger(ai); }
@@ -123,9 +123,9 @@ private:
static Trigger* icc_valithria_heal(PlayerbotAI* ai) { return new IccValithriaHealTrigger(ai); }
static Trigger* icc_valithria_dream_cloud(PlayerbotAI* ai) { return new IccValithriaDreamCloudTrigger(ai); }
static Trigger* icc_sindragosa_group_position(PlayerbotAI* ai) { return new IccSindragosaGroupPositionTrigger(ai); }
static Trigger* icc_sindragosa_frost_beacon(PlayerbotAI* ai) { return new IccSindragosaFrostBeaconTrigger(ai); }
static Trigger* icc_sindragosa_blistering_cold(PlayerbotAI* ai) { return new IccSindragosaBlisteringColdTrigger(ai); }
static Trigger* icc_sindragosa_group_position(PlayerbotAI* ai) { return new IccSindragosaGroupPositionTrigger(ai); }
static Trigger* icc_sindragosa_frost_beacon(PlayerbotAI* ai) { return new IccSindragosaFrostBeaconTrigger(ai); }
static Trigger* icc_sindragosa_blistering_cold(PlayerbotAI* ai) { return new IccSindragosaBlisteringColdTrigger(ai); }
static Trigger* icc_sindragosa_unchained_magic(PlayerbotAI* ai) { return new IccSindragosaUnchainedMagicTrigger(ai); }
static Trigger* icc_sindragosa_chilled_to_the_bone(PlayerbotAI* ai) { return new IccSindragosaChilledToTheBoneTrigger(ai); }
static Trigger* icc_sindragosa_mystic_buffet(PlayerbotAI* ai) { return new IccSindragosaMysticBuffetTrigger(ai); }
@@ -137,7 +137,7 @@ private:
static Trigger* icc_lich_king_necrotic_plague(PlayerbotAI* ai) { return new IccLichKingNecroticPlagueTrigger(ai); }
static Trigger* icc_lich_king_winter(PlayerbotAI* ai) { return new IccLichKingWinterTrigger(ai); }
static Trigger* icc_lich_king_adds(PlayerbotAI* ai) { return new IccLichKingAddsTrigger(ai); }
};
#endif

View File

@@ -30,7 +30,7 @@ bool IccLmTrigger::IsActive()
//Lady Deathwhisper
bool IccDarkReckoningTrigger::IsActive()
{
if (bot->HasAura(SPELL_DARK_RECKONING))
if (bot->HasAura(SPELL_DARK_RECKONING))
return true;
return false;
@@ -39,7 +39,7 @@ bool IccDarkReckoningTrigger::IsActive()
bool IccLadyDeathwhisperTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "lady deathwhisper");
if (!boss)
if (!boss)
return false;
if (bot->HasAura(SPELL_EXPERIENCED))
@@ -89,7 +89,7 @@ bool IccGunshipCannonNearTrigger::IsActive()
// Player* master = botAI->GetMaster();
// if (!master)
// return false;
// if (!master->GetVehicle())
// return false;
@@ -137,20 +137,20 @@ bool IccDbsMainTankRuneOfBloodTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "deathbringer saurfang");
if (!boss)
if (!boss)
return false;
if (!botAI->IsAssistTankOfIndex(bot, 0))
if (!botAI->IsAssistTankOfIndex(bot, 0))
return false;
Unit* mt = AI_VALUE(Unit*, "main tank");
if (!mt)
return false;
Aura* aura = botAI->GetAura("rune of blood", mt);
if (!aura)
if (!mt)
return false;
Aura* aura = botAI->GetAura("rune of blood", mt);
if (!aura)
return false;
return true;
}
@@ -182,7 +182,7 @@ bool IccStinkyPreciousMainTankMortalWoundTrigger::IsActive()
bool IccFestergutGroupPositionTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "festergut");
if (!boss)
if (!boss)
return false;
if (bot->HasAura(SPELL_EXPERIENCED))
@@ -194,7 +194,7 @@ bool IccFestergutGroupPositionTrigger::IsActive()
bool IccFestergutMainTankGastricBloatTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "festergut");
if (!boss)
if (!boss)
{
return false;
}
@@ -218,7 +218,7 @@ bool IccFestergutMainTankGastricBloatTrigger::IsActive()
bool IccFestergutSporeTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "festergut");
if (!boss || botAI->IsTank(bot))
if (!boss || botAI->IsTank(bot))
return false;
// Check for spore aura (ID: 69279) on any bot in the group
@@ -243,7 +243,7 @@ bool IccFestergutSporeTrigger::IsActive()
bool IccRotfaceTankPositionTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "rotface");
if (!boss || !(botAI->IsTank(bot) || botAI->IsMelee(bot)))
if (!boss || !(botAI->IsTank(bot) || botAI->IsMelee(bot)))
return false;
if (bot->HasAura(SPELL_EXPERIENCED))
@@ -372,18 +372,18 @@ bool IccPutricideMainTankMutatedPlagueTrigger::IsActive()
bool IccPutricideMalleableGooTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "professor putricide");
if (!boss)
if (!boss)
return false;
if (botAI->IsTank(bot))
return true;
Unit* boss1 = AI_VALUE2(Unit*, "find target", "volatile ooze");
if (boss1)
if (boss1)
return false;
Unit* boss2 = AI_VALUE2(Unit*, "find target", "gas cloud");
if (boss2)
if (boss2)
return false;
return true;
@@ -393,7 +393,7 @@ bool IccPutricideMalleableGooTrigger::IsActive()
bool IccBpcKelesethTankTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "prince keleseth");
if (!boss)
if (!boss)
return false;
if (bot->HasAura(SPELL_EXPERIENCED))
@@ -403,7 +403,7 @@ bool IccBpcKelesethTankTrigger::IsActive()
return false;
Aura* aura = botAI->GetAura("Shadow Prison", bot, false, true);
if (aura)
if (aura)
if (aura->GetStackAmount() > 18)
return false;
@@ -519,7 +519,7 @@ bool IccBpcBallOfFlameTrigger::IsActive()
bool IccBqlGroupPositionTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "blood-queen lana'thel");
if (!boss)
if (!boss)
return false;
if (bot->HasAura(SPELL_EXPERIENCED))
@@ -535,7 +535,7 @@ bool IccBqlPactOfDarkfallenTrigger::IsActive()
return false;
Aura* aura = botAI->GetAura("Pact of the Darkfallen", bot);
if (!aura)
if (!aura)
return false;
return true;
@@ -544,7 +544,7 @@ bool IccBqlPactOfDarkfallenTrigger::IsActive()
bool IccBqlVampiricBiteTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "blood-queen lana'thel");
if (!boss)
if (!boss)
return false;
Aura* aura = botAI->GetAura("Frenzied Bloodthirst", bot);
@@ -567,7 +567,7 @@ bool IccValkyreSpearTrigger::IsActive()
bool IccSisterSvalnaTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "sister svalna");
if (!boss)
if (!boss)
return false;
if (bot->GetExactDist2d(boss) > 30.0f)
@@ -893,7 +893,7 @@ bool IccSindragosaBlisteringColdTrigger::IsActive()
return false;
float dist = bot->GetExactDist2d(boss->GetPositionX(), boss->GetPositionY());
if (dist >= 33.0f)
return false;
@@ -907,7 +907,7 @@ bool IccSindragosaBlisteringColdTrigger::IsActive()
boss->FindCurrentSpellBySpellId(SPELL_BLISTERING_COLD3) ||
boss->FindCurrentSpellBySpellId(SPELL_BLISTERING_COLD4)))
isBlisteringCold = true;
return isCasting && isBlisteringCold;
}
@@ -962,7 +962,7 @@ bool IccSindragosaMysticBuffetTrigger::IsActive()
Unit* boss = AI_VALUE2(Unit*, "find target", "sindragosa");
if (!boss)
return false;
if (boss->GetVictim() == bot)
return false;
@@ -1046,7 +1046,7 @@ bool IccSindragosaTankSwapPositionTrigger::IsActive()
// Check if main tank has high stacks
Unit* mt = AI_VALUE(Unit*, "main tank");
if (!mt)
if (!mt)
return false;
Aura* mtAura = botAI->GetAura("mystic buffet", mt, false, true);
@@ -1126,9 +1126,9 @@ bool IccLichKingNecroticPlagueTrigger::IsActive()
bool IccLichKingWinterTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "the lich king");
if (!boss)
if (!boss)
return false;
// Check for either Remorseless Winter
bool hasWinterAura = false;
if (boss && (boss->HasAura(SPELL_REMORSELESS_WINTER1) || boss->HasAura(SPELL_REMORSELESS_WINTER2) ||
@@ -1156,7 +1156,7 @@ bool IccLichKingWinterTrigger::IsActive()
isWinter = true;
if (hasWinterAura || hasWinter2Aura)
return true;
return true;
if (isCasting && isWinter)
return true;
@@ -1174,14 +1174,14 @@ bool IccLichKingAddsTrigger::IsActive()
Unit* terenasMenethilHC = bot->FindNearestCreature(NPC_TERENAS_MENETHIL_HC, 55.0f);
Unit* terenasMenethil = bot->FindNearestCreature(NPC_TERENAS_MENETHIL, 55.0f);
if (terenasMenethilHC)
return true;
if (terenasMenethil)
return true;
if (!boss)
if (!boss)
return false;
return true;

View File

@@ -135,7 +135,7 @@ enum SpellIdsICC
SPELL_NITRO_BOOSTS = 54861, //Speed
SPELL_PAIN_SUPPRESION = 69910, //40% dmg reduction
SPELL_AGEIS_OF_DALARAN = 71638, //268 all ress
SPELL_CYCLONE = 33786,
SPELL_CYCLONE = 33786,
SPELL_HAMMER_OF_JUSTICE = 10308, //stun
// Lady Deathwhisper
@@ -374,7 +374,7 @@ public:
bool IsActive() override;
};
class IccPutricideMalleableGooTrigger : public Trigger
class IccPutricideMalleableGooTrigger : public Trigger
{
public:
IccPutricideMalleableGooTrigger(PlayerbotAI* ai) : Trigger(ai, "icc putricide malleable goo") {}
@@ -382,7 +382,7 @@ public:
};
//BPC
class IccBpcKelesethTankTrigger : public Trigger
class IccBpcKelesethTankTrigger : public Trigger
{
public:
IccBpcKelesethTankTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc bpc keleseth tank") {}
@@ -445,7 +445,7 @@ class IccValkyreSpearTrigger : public Trigger
public:
IccValkyreSpearTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc valkyre spear") {}
bool IsActive() override;
};
};
class IccSisterSvalnaTrigger : public Trigger
{
@@ -508,7 +508,7 @@ public:
bool IsActive() override;
};
class IccSindragosaUnchainedMagicTrigger : public Trigger
class IccSindragosaUnchainedMagicTrigger : public Trigger
{
public:
IccSindragosaUnchainedMagicTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc sindragosa unchained magic") {}
@@ -559,7 +559,7 @@ public:
bool IsActive() override;
};
class IccLichKingNecroticPlagueTrigger : public Trigger
class IccLichKingNecroticPlagueTrigger : public Trigger
{
public:
IccLichKingNecroticPlagueTrigger(PlayerbotAI* botAI) : Trigger(botAI, "icc lich king necrotic plague") {}

View File

@@ -36,7 +36,7 @@ bool McMoveFromBaronGeddonAction::Execute(Event event)
{
// float angle = bot->GetAngle(boss) + M_PI;
// return Move(angle, distToTravel);
return MoveAway(boss, distToTravel);
return MoveAway(boss, distToTravel);
}
}
return false;

View File

@@ -143,13 +143,13 @@ float ThaddiusGenericMultiplier::GetValue(Action* action)
// // if (curr_phase == 2 && bot->GetPositionZ() > 312.5f && dynamic_cast<MovementAction*>(action)) {
// if (curr_phase == 2 && (curr_timer % 20000 >= 18000 || curr_timer % 20000 <= 2000) &&
// dynamic_cast<MovementAction*>(action)) {
// // MotionMaster *mm = bot->GetMotionMaster();
// // mm->Clear();
// return 0.0f;
// // MotionMaster *mm = bot->GetMotionMaster();
// // mm->Clear();
// return 0.0f;
// }
// thaddius phase
// if (curr_phase == 8 && dynamic_cast<FleeAction*>(action)) {
// return 0.0f;
// return 0.0f;
// }
return 1.0f;
}
@@ -262,23 +262,23 @@ float FourhorsemanGenericMultiplier::GetValue(Action* action)
// float GothikGenericMultiplier::GetValue(Action* action)
// {
// Unit* boss = AI_VALUE2(Unit*, "find target", "gothik the harvester");
// if (!boss) {
// Unit* boss = AI_VALUE2(Unit*, "find target", "gothik the harvester");
// if (!boss) {
// return 1.0f;
// }
// BossAI* boss_ai = dynamic_cast<BossAI*>(boss->GetAI());
// EventMap* eventMap = boss_botAI->GetEvents();
// BossAI* boss_ai = dynamic_cast<BossAI*>(boss->GetAI());
// EventMap* eventMap = boss_botAI->GetEvents();
// uint32 curr_phase = eventMap->GetPhaseMask();
// if (curr_phase == 1 && (dynamic_cast<FollowAction*>(action))) {
// return 0.0f;
// }
// if (curr_phase == 1 && (dynamic_cast<AttackAction*>(action))) {
// Unit* target = action->GetTarget();
// if (target == boss) {
// return 0.0f;
// }
// }
// return 1.0f;
// if (curr_phase == 1 && (dynamic_cast<FollowAction*>(action))) {
// return 0.0f;
// }
// if (curr_phase == 1 && (dynamic_cast<AttackAction*>(action))) {
// Unit* target = action->GetTarget();
// if (target == boss) {
// return 0.0f;
// }
// }
// return 1.0f;
// }
float GluthGenericMultiplier::GetValue(Action* action)

View File

@@ -19,7 +19,7 @@ void RaidOsStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
// Flank dragon positioning
triggers.push_back(new TriggerNode("sartharion melee positioning",
NextAction::array(0, new NextAction("rear flank", ACTION_MOVE + 4), nullptr)));
triggers.push_back(new TriggerNode("twilight portal enter",
NextAction::array(0, new NextAction("enter twilight portal", ACTION_RAID + 1), nullptr)));
triggers.push_back(new TriggerNode("twilight portal exit",

View File

@@ -6,7 +6,7 @@ bool SartharionTankTrigger::IsActive()
{
Unit* boss = AI_VALUE2(Unit*, "find target", "sartharion");
if (!boss) { return false; }
return botAI->IsTank(bot);
}
@@ -97,7 +97,7 @@ bool TwilightPortalEnterTrigger::IsActive()
// return false;
// }
// }
// Don't enter portal until drakes are dead
if (bot->HasAura(SPELL_POWER_OF_SHADRON) ||

View File

@@ -3150,7 +3150,7 @@ bool YoggSaronIllusionRoomAction::SetBrainRtiTarget(YoggSaronTrigger yoggSaronTr
group->SetTargetIcon(RtiTargetValue::squareIndex, bot->GetGUID(), brain->GetGUID());
Position entrancePosition = yoggSaronTrigger.GetIllusionRoomEntrancePosition();
if (botAI->HasCheat(BotCheatMask::raid))
{
if (Unit const* master = botAI->GetMaster())

View File

@@ -13,7 +13,7 @@
std::unordered_map<ObjectGuid, time_t> RazorscaleBossHelper::_harpoonCooldowns;
// Prevent role assignment spam
std::unordered_map<ObjectGuid, std::time_t> RazorscaleBossHelper::_lastRoleSwapTime;
const std::time_t RazorscaleBossHelper::_roleSwapCooldown;
const std::time_t RazorscaleBossHelper::_roleSwapCooldown;
bool RazorscaleBossHelper::UpdateBossAI()
{

View File

@@ -62,7 +62,7 @@ public:
static constexpr float RAZORSCALE_ARENA_RADIUS = 30.0f;
// Harpoon cooldown (seconds)
static constexpr time_t HARPOON_COOLDOWN_DURATION = 5;
static constexpr time_t HARPOON_COOLDOWN_DURATION = 5;
// Structure for harpoon data
struct HarpoonData
@@ -71,7 +71,7 @@ public:
uint32 chainSpellId;
};
explicit RazorscaleBossHelper(PlayerbotAI* botAI)
explicit RazorscaleBossHelper(PlayerbotAI* botAI)
: AiObject(botAI), _boss(nullptr) {}
bool UpdateBossAI();
@@ -96,7 +96,7 @@ private:
// A map to track the last role swap *per bot* by their GUID
static std::unordered_map<ObjectGuid, std::time_t> _lastRoleSwapTime;
// The cooldown that applies to every bot
static const std::time_t _roleSwapCooldown = 10;

View File

@@ -25,7 +25,7 @@ void RaidUlduarStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode(
"razorscale avoid sentinel",
NextAction::array(0, new NextAction("razorscale avoid sentinel", ACTION_RAID + 2), nullptr)));
triggers.push_back(new TriggerNode(
"razorscale flying alone",
NextAction::array(0, new NextAction("razorscale ignore flying alone", ACTION_MOVE + 5), nullptr)));

View File

@@ -1560,7 +1560,7 @@ bool MimironCheatTrigger::IsActive()
return false;
}
if (!botAI->IsMainTank(bot))
if (!botAI->IsMainTank(bot))
{
return false;
}

View File

@@ -129,7 +129,7 @@ enum UlduarIDs
SPELL_INDUCE_MADNESS = 64059,
SPELL_LUNATIC_GAZE_YS = 64163,
GO_FLEE_TO_THE_SURFACE_PORTAL = 194625,
// Buffs
SPELL_FROST_TRAP = 13809
};