diff --git a/src/strategy/actions/GenericSpellActions.h b/src/strategy/actions/GenericSpellActions.h index be1dc200..daf361b1 100644 --- a/src/strategy/actions/GenericSpellActions.h +++ b/src/strategy/actions/GenericSpellActions.h @@ -28,7 +28,8 @@ public: ActionThreatType getThreatType() override { return ActionThreatType::Single; } NextAction** getPrerequisites() override; - + std::string const getSpell() { return spell; } + protected: std::string spell; float range; diff --git a/src/strategy/generic/CastTimeStrategy.cpp b/src/strategy/generic/CastTimeStrategy.cpp index 483e2b8c..3990bd7d 100644 --- a/src/strategy/generic/CastTimeStrategy.cpp +++ b/src/strategy/generic/CastTimeStrategy.cpp @@ -13,15 +13,13 @@ float CastTimeMultiplier::GetValue(Action* action) if (action == nullptr) return 1.0f; - // uint8 targetHealth = AI_VALUE2(uint8, "health", "current target"); - std::string const name = action->getName(); - if (!action->GetTarget() || action->GetTarget() != AI_VALUE(Unit*, "current target")) return 1.0f; if (/*targetHealth < sPlayerbotAIConfig->criticalHealth && */ dynamic_cast(action)) { - uint32 spellId = AI_VALUE2(uint32, "spell id", name); + CastSpellAction* spellAction = dynamic_cast(action); + uint32 spellId = AI_VALUE2(uint32, "spell id", spellAction->getSpell()); SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId); if (!spellInfo) return 1.0f; @@ -35,7 +33,7 @@ float CastTimeMultiplier::GetValue(Action* action) if (spellInfo->IsChanneled()) { int32 duration = spellInfo->GetDuration(); - bot->ApplySpellMod(spellInfo->Id, SPELLMOD_DURATION, duration); + // bot->ApplySpellMod(spellInfo->Id, SPELLMOD_DURATION, duration); duration = std::min(duration, 3000); if (duration > 0) castTime += duration; diff --git a/src/strategy/mage/FrostMageStrategy.cpp b/src/strategy/mage/FrostMageStrategy.cpp index 6dfaaf36..79214108 100644 --- a/src/strategy/mage/FrostMageStrategy.cpp +++ b/src/strategy/mage/FrostMageStrategy.cpp @@ -59,7 +59,8 @@ FrostMageStrategy::FrostMageStrategy(PlayerbotAI* botAI) : GenericMageStrategy(b NextAction** FrostMageStrategy::getDefaultActions() { - return NextAction::array(0, new NextAction("frostbolt", ACTION_DEFAULT + 0.2f), + return NextAction::array(0, new NextAction("frostbolt", ACTION_DEFAULT + 0.3f), + new NextAction("fire blast", ACTION_DEFAULT + 0.2f), // cast during movement new NextAction("shoot", ACTION_DEFAULT + 0.1f), new NextAction("fireball", ACTION_DEFAULT), nullptr); } diff --git a/src/strategy/raids/naxxramas/RaidNaxxActions.h b/src/strategy/raids/naxxramas/RaidNaxxActions.h index b065ba74..506fa626 100644 --- a/src/strategy/raids/naxxramas/RaidNaxxActions.h +++ b/src/strategy/raids/naxxramas/RaidNaxxActions.h @@ -65,7 +65,7 @@ public: this->prev_erupt = 0; this->prev_timer = 0; ResetSafe(); - waypoints.push_back(std::make_pair(2793.58f, -3665.93f)); + waypoints.push_back(std::make_pair(2794.88f, -3668.12f)); waypoints.push_back(std::make_pair(2775.49f, -3674.43f)); waypoints.push_back(std::make_pair(2762.30f, -3684.59f)); waypoints.push_back(std::make_pair(2755.99f, -3703.96f)); diff --git a/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp b/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp index 0bb3b876..ac758559 100644 --- a/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp +++ b/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp @@ -48,7 +48,9 @@ float HeiganDanceMultiplier::GetValue(Action* action) uint32 curr_dance = eventMap->GetNextEventTime(4); uint32 curr_timer = eventMap->GetTimer(); uint32 curr_erupt = eventMap->GetNextEventTime(3); - if (dynamic_cast(action)) + if (dynamic_cast(action) || + dynamic_cast(action) || + dynamic_cast(action) ) { return 0.0f; } @@ -62,7 +64,8 @@ float HeiganDanceMultiplier::GetValue(Action* action) } if (dynamic_cast(action) && !dynamic_cast(action)) { - uint32 spellId = AI_VALUE2(uint32, "spell id", action->getName()); + CastSpellAction* spellAction = dynamic_cast(action); + uint32 spellId = AI_VALUE2(uint32, "spell id", spellAction->getSpell()); SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId); if (!spellInfo) { @@ -110,12 +113,13 @@ float ThaddiusGenericMultiplier::GetValue(Action* action) { return 1.0f; } + if (dynamic_cast(action)) + return 0.0f; // pet phase if (helper.IsPhasePet() && (dynamic_cast(action) || dynamic_cast(action) || dynamic_cast(action) || - dynamic_cast(action) || dynamic_cast(action) || - dynamic_cast(action))) + dynamic_cast(action) || dynamic_cast(action))) { return 0.0f; }