diff --git a/conf/playerbots.conf.dist b/conf/playerbots.conf.dist index 4e17ea06..2c317a4a 100644 --- a/conf/playerbots.conf.dist +++ b/conf/playerbots.conf.dist @@ -45,7 +45,7 @@ # HUNTER # ROGUE # PRIEST -# DEATHKNIGHT +# DEATH KNIGHT # SHAMAN # MAGE # WARLOCK @@ -56,7 +56,7 @@ # HUNTER # ROGUE # PRIEST -# DEATHKNIGHT +# DEATH KNIGHT # SHAMAN # MAGE # WARLOCK @@ -1474,7 +1474,7 @@ AiPlayerbot.PremadeSpecLink.5.5.80 = 50332031003--005323241223112003102311351 #################################################################################################### #################################################################################################### -# DEATHKNIGHT +# DEATH KNIGHT # # @@ -1797,7 +1797,7 @@ AiPlayerbot.RandomClassSpecIndex.5.2 = 2 #################################################################################################### #################################################################################################### -# DEATHKNIGHT +# DEATH KNIGHT # # diff --git a/src/AiFactory.cpp b/src/AiFactory.cpp index 5d6377f4..8ca3534b 100644 --- a/src/AiFactory.cpp +++ b/src/AiFactory.cpp @@ -140,37 +140,37 @@ BotRoles AiFactory::GetPlayerRoles(Player* player) switch (player->getClass()) { case CLASS_PRIEST: - if (tab == 2) + if (tab == PRIEST_TAB_SHADOW) role = BOT_ROLE_DPS; else role = BOT_ROLE_HEALER; break; case CLASS_SHAMAN: - if (tab == 2) + if (tab == SHAMAN_TAB_RESTORATION) role = BOT_ROLE_HEALER; else role = BOT_ROLE_DPS; break; case CLASS_WARRIOR: - if (tab == 2) + if (tab == WARRIOR_TAB_PROTECTION) role = BOT_ROLE_TANK; else role = BOT_ROLE_DPS; break; case CLASS_PALADIN: - if (tab == 0) + if (tab == PALADIN_TAB_HOLY) role = BOT_ROLE_HEALER; - else if (tab == 1) + else if (tab == PALADIN_TAB_PROTECTION) role = BOT_ROLE_TANK; - else if (tab == 2) + else if (tab == PALADIN_TAB_RETRIBUTION) role = BOT_ROLE_DPS; break; case CLASS_DRUID: - if (tab == 0) + if (tab == DRUID_TAB_BALANCE) role = BOT_ROLE_DPS; - else if (tab == 1) + else if (tab == DRUID_TAB_FERAL) role = (BotRoles)(BOT_ROLE_TANK | BOT_ROLE_DPS); - else if (tab == 2) + else if (tab == DRUID_TAB_RESTORATION) role = BOT_ROLE_HEALER; break; default: @@ -188,84 +188,83 @@ std::string AiFactory::GetPlayerSpecName(Player* player) switch (player->getClass()) { case CLASS_PRIEST: - if (tab == 2) + if (tab == PRIEST_TAB_SHADOW) specName = "shadow"; - else if (tab == 1) + else if (tab == PRIEST_TAB_HOLY) specName = "holy"; else specName = "disc"; - ; break; case CLASS_SHAMAN: - if (tab == 2) + if (tab == SHAMAN_TAB_RESTORATION) specName = "resto"; - else if (tab == 1) + else if (tab == SHAMAN_TAB_ENHANCEMENT) specName = "enhance"; else specName = "elem"; break; case CLASS_WARRIOR: - if (tab == 2) + if (tab == WARRIOR_TAB_PROTECTION) specName = "prot"; - else if (tab == 1) + else if (tab == WARRIOR_TAB_FURY) specName = "fury"; else specName = "arms"; break; case CLASS_PALADIN: - if (tab == 0) + if (tab == PALADIN_TAB_HOLY) specName = "holy"; - else if (tab == 1) + else if (tab == PALADIN_TAB_PROTECTION) specName = "prot"; - else if (tab == 2) + else if (tab == PALADIN_TAB_RETRIBUTION) specName = "retrib"; break; case CLASS_DRUID: - if (tab == 0) + if (tab == DRUID_TAB_BALANCE) specName = "balance"; - else if (tab == 1) + else if (tab == DRUID_TAB_FERAL) specName = "feraldps"; - else if (tab == 2) + else if (tab == DRUID_TAB_RESTORATION) specName = "resto"; break; case CLASS_ROGUE: - if (tab == 0) + if (tab == ROGUE_TAB_ASSASSINATION) specName = "assas"; - else if (tab == 1) + else if (tab == ROGUE_TAB_COMBAT) specName = "combat"; - else if (tab == 2) + else if (tab == ROGUE_TAB_SUBTLETY) specName = "subtle"; break; case CLASS_HUNTER: - if (tab == 0) + if (tab == HUNTER_TAB_BEAST_MASTERY) specName = "beast"; - else if (tab == 1) + else if (tab == HUNTER_TAB_MARKSMANSHIP) specName = "marks"; - else if (tab == 2) + else if (tab == HUNTER_TAB_SURVIVAL) specName = "surv"; break; case CLASS_DEATH_KNIGHT: - if (tab == 0) + if (tab == DEATH_KNIGHT_TAB_BLOOD) specName = "blooddps"; - else if (tab == 1) + else if (tab == DEATH_KNIGHT_TAB_FROST) specName = "frostdps"; - else if (tab == 2) + else if (tab == DEATH_KNIGHT_TAB_UNHOLY) specName = "unholydps"; break; case CLASS_MAGE: - if (tab == 0) + if (tab == MAGE_TAB_ARCANE) specName = "arcane"; - else if (tab == 1) + else if (tab == MAGE_TAB_FIRE) specName = "fire"; - else if (tab == 2) + else if (tab == MAGE_TAB_FROST) specName = "frost"; break; case CLASS_WARLOCK: - if (tab == 0) + if (tab == WARLOCK_TAB_AFFLICTION) specName = "afflic"; - else if (tab == 1) + else if (tab == WARLOCK_TAB_DEMONOLOGY) specName = "demo"; - else if (tab == 2) + else if (tab == WARLOCK_TAB_DESTRUCTION) specName = "destro"; break; default: @@ -280,147 +279,124 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa uint8 tab = GetPlayerSpecTab(player); if (!player->InBattleground()) - { engine->addStrategiesNoInit("racials", "chat", "default", "cast time", "potions", "duel", "boost", nullptr); - } + if (sPlayerbotAIConfig->autoAvoidAoe && facade->HasRealPlayerMaster()) - { engine->addStrategy("avoid aoe", false); - } + engine->addStrategy("formation", false); + switch (player->getClass()) { case CLASS_PRIEST: - if (tab == 2) - { + if (tab == PRIEST_TAB_SHADOW) engine->addStrategiesNoInit("dps", "shadow debuff", "shadow aoe", nullptr); - } else if (tab == PRIEST_TAB_DISCIPLINE) - { engine->addStrategiesNoInit("heal", nullptr); - } else - { engine->addStrategiesNoInit("holy heal", nullptr); - } engine->addStrategiesNoInit("dps assist", "cure", nullptr); break; case CLASS_MAGE: - if (tab == 0) // Arcane + if (tab == MAGE_TAB_ARCANE) engine->addStrategiesNoInit("arcane", nullptr); - else if (tab == 1) // Fire + else if (tab == MAGE_TAB_FIRE) { if (player->HasSpell(44614) /*Frostfire Bolt*/ && player->HasAura(15047) /*Ice Shards*/) - { engine->addStrategiesNoInit("frostfire", nullptr); - } else - { engine->addStrategiesNoInit("fire", nullptr); - } } - else // Frost + else engine->addStrategiesNoInit("frost", nullptr); engine->addStrategiesNoInit("dps", "dps assist", "cure", "aoe", nullptr); break; case CLASS_WARRIOR: - if (tab == 2) + if (tab == WARRIOR_TAB_PROTECTION) engine->addStrategiesNoInit("tank", "tank assist", "aoe", nullptr); - else if (tab == 0 || !player->HasSpell(1680)) // Whirlwind - engine->addStrategiesNoInit("arms", "aoe", "dps assist", /*"behind",*/ nullptr); + else if (tab == WARRIOR_TAB_ARMS || !player->HasSpell(1680)) // Whirlwind + engine->addStrategiesNoInit("arms", "aoe", "dps assist", nullptr); else - engine->addStrategiesNoInit("fury", "aoe", "dps assist", /*"behind",*/ nullptr); + engine->addStrategiesNoInit("fury", "aoe", "dps assist", nullptr); break; case CLASS_SHAMAN: - if (tab == 0) // Elemental + if (tab == SHAMAN_TAB_ELEMENTAL) engine->addStrategiesNoInit("ele", "stoneskin", "wrath", "mana spring", "wrath of air", nullptr); - else if (tab == 2) // Restoration + else if (tab == SHAMAN_TAB_RESTORATION) engine->addStrategiesNoInit("resto", "stoneskin", "flametongue", "mana spring", "wrath of air", nullptr); - else // Enhancement + else engine->addStrategiesNoInit("enh", "strength of earth", "magma", "healing stream", "windfury", nullptr); engine->addStrategiesNoInit("dps assist", "cure", "aoe", nullptr); break; case CLASS_PALADIN: - if (tab == 1) + if (tab == PALADIN_TAB_PROTECTION) engine->addStrategiesNoInit("tank", "tank assist", "bthreat", "barmor", "cure", nullptr); - else if (tab == 0) + else if (tab == PALADIN_TAB_HOLY) engine->addStrategiesNoInit("heal", "dps assist", "cure", "bcast", nullptr); else engine->addStrategiesNoInit("dps", "dps assist", "cure", "baoe", nullptr); - break; case CLASS_DRUID: - if (tab == 0) + if (tab == DRUID_TAB_BALANCE) { engine->addStrategiesNoInit("caster", "cure", "caster aoe", "dps assist", nullptr); engine->addStrategy("caster debuff", false); } - else if (tab == 2) + else if (tab == DRUID_TAB_RESTORATION) engine->addStrategiesNoInit("heal", "cure", "dps assist", nullptr); else { - if (player->HasSpell(768) /*cat form*/&& !player->HasAura(16931) /*thick hide*/) - { + if (player->HasSpell(768) /*cat form*/ && !player->HasAura(16931) /*thick hide*/) engine->addStrategiesNoInit("cat", "dps assist", nullptr); - } else - { engine->addStrategiesNoInit("bear", "tank assist", nullptr); - } } break; case CLASS_HUNTER: - if (tab == 0) // Beast Mastery + if (tab == HUNTER_TAB_BEAST_MASTERY) engine->addStrategiesNoInit("bm", nullptr); - else if (tab == 1) // Marksmanship + else if (tab == HUNTER_TAB_MARKSMANSHIP) engine->addStrategiesNoInit("mm", nullptr); - else if (tab == 2) // Survival + else engine->addStrategiesNoInit("surv", nullptr); engine->addStrategiesNoInit("cc", "dps assist", "aoe", nullptr); break; case CLASS_ROGUE: if (tab == ROGUE_TAB_ASSASSINATION || tab == ROGUE_TAB_SUBTLETY) - { engine->addStrategiesNoInit("melee", "dps assist", "aoe", nullptr); - } else - { engine->addStrategiesNoInit("dps", "dps assist", "aoe", nullptr); - } break; case CLASS_WARLOCK: - if (tab == 0) // Affliction + if (tab == WARLOCK_TAB_AFFLICTION) engine->addStrategiesNoInit("affli", "curse of agony", nullptr); - else if (tab == 1) // Demonology + else if (tab == WARLOCK_TAB_DEMONOLOGY) engine->addStrategiesNoInit("demo", "curse of agony", "meta melee", nullptr); - else if (tab == 2) // Destruction + else engine->addStrategiesNoInit("destro", "curse of elements", nullptr); engine->addStrategiesNoInit("cc", "dps assist", "aoe", nullptr); break; - case CLASS_DEATH_KNIGHT: - if (tab == 0) + if (tab == DEATH_KNIGHT_TAB_BLOOD) engine->addStrategiesNoInit("blood", "tank assist", nullptr); - else if (tab == 1) + else if (tab == DEATH_KNIGHT_TAB_FROST) engine->addStrategiesNoInit("frost", "frost aoe", "dps assist", nullptr); else engine->addStrategiesNoInit("unholy", "unholy aoe", "dps assist", nullptr); - break; } + if (PlayerbotAI::IsTank(player, true)) - { engine->addStrategy("tank face", false); - } + if (PlayerbotAI::IsMelee(player, true) && PlayerbotAI::IsDps(player, true)) - { engine->addStrategy("behind", false); - } + if (PlayerbotAI::IsHeal(player, true)) { if (sPlayerbotAIConfig->autoSaveMana) @@ -428,6 +404,7 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa if (!sPlayerbotAIConfig->IsRestrictedHealerDPSMap(player->GetMapId())) engine->addStrategy("healer dps", false); } + if (facade->IsRealPlayer() || sRandomPlayerbotMgr->IsRandomBot(player)) { if (!player->GetGroup()) @@ -436,15 +413,13 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa engine->addStrategy("boost", false); engine->addStrategy("dps assist", false); engine->removeStrategy("threat", false); - // engine- + switch (player->getClass()) { case CLASS_PRIEST: { if (tab != PRIEST_TAB_SHADOW) - { engine->addStrategiesNoInit("holy dps", "shadow debuff", "shadow aoe", nullptr); - } break; } case CLASS_DRUID: @@ -459,17 +434,13 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa case CLASS_SHAMAN: { if (tab == SHAMAN_TAB_RESTORATION) - { engine->addStrategiesNoInit("caster", "caster aoe", "bmana", nullptr); - } break; } case CLASS_PALADIN: { if (tab == PALADIN_TAB_HOLY) - { engine->addStrategiesNoInit("dps", "dps assist", "baoe", nullptr); - } break; } default: @@ -478,13 +449,9 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa } } if (sRandomPlayerbotMgr->IsRandomBot(player)) - { engine->ChangeStrategy(sPlayerbotAIConfig->randomBotCombatStrategies); - } else - { engine->ChangeStrategy(sPlayerbotAIConfig->combatStrategies); - } // Battleground switch if (player->InBattleground() && player->GetBattleground()) @@ -511,23 +478,15 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa if (player->InArena()) { engine->addStrategy("arena", false); + engine->addStrategiesNoInit("boost", "racials", "chat", "default", "aoe", "cast time", "dps assist", nullptr); } + else + engine->addStrategiesNoInit("boost", "racials", "chat", "default", "aoe", "potions", "cast time", "dps assist", nullptr); - engine->addStrategiesNoInit("boost", "racials", "chat", "default", "aoe", "potions", "cast time", "dps assist", - nullptr); engine->removeStrategy("custom::say", false); engine->removeStrategy("flee", false); engine->removeStrategy("threat", false); engine->addStrategy("boost", false); - - // if ((player->getClass() == CLASS_DRUID && tab == 2) || (player->getClass() == CLASS_SHAMAN && tab == 2)) - // engine->addStrategiesNoInit("caster", "caster aoe", nullptr); - - // if (player->getClass() == CLASS_DRUID && tab == 1) - // engine->addStrategiesNoInit(/*"behind",*/ "dps", nullptr); - - // if (player->getClass() == CLASS_ROGUE) - // engine->addStrategiesNoInit(/*"behind",*/ "stealth", nullptr); } } @@ -549,19 +508,15 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr); break; case CLASS_PALADIN: - if (tab == 1) + if (tab == PALADIN_TAB_PROTECTION) { nonCombatEngine->addStrategiesNoInit("bthreat", "tank assist", "barmor", nullptr); if (player->GetLevel() >= 20) - { nonCombatEngine->addStrategy("bhealth", false); - } else - { nonCombatEngine->addStrategy("bdps", false); - } } - else if (tab == 0) + else if (tab == PALADIN_TAB_HOLY) nonCombatEngine->addStrategiesNoInit("dps assist", "bmana", "bcast", nullptr); else nonCombatEngine->addStrategiesNoInit("dps assist", "bdps", "baoe", nullptr); @@ -572,7 +527,7 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const nonCombatEngine->addStrategiesNoInit("bdps", "dps assist", "pet", nullptr); break; case CLASS_SHAMAN: - if (tab == 0 || tab == 2) + if (tab == SHAMAN_TAB_ELEMENTAL || tab == SHAMAN_TAB_RESTORATION) nonCombatEngine->addStrategy("bmana", false); else nonCombatEngine->addStrategy("bdps", false); @@ -588,43 +543,34 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr); break; case CLASS_DRUID: - if (tab == 1) + if (tab == DRUID_TAB_FERAL) { if (player->GetLevel() >= 20 && !player->HasAura(16931) /*thick hide*/) - { nonCombatEngine->addStrategy("dps assist", false); - } else - { nonCombatEngine->addStrategy("tank assist", false); - } } else nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr); break; case CLASS_WARRIOR: - if (tab == 2) + if (tab == WARRIOR_TAB_PROTECTION) nonCombatEngine->addStrategy("tank assist", false); else nonCombatEngine->addStrategy("dps assist", false); break; case CLASS_WARLOCK: if (tab == WARLOCK_TAB_AFFLICTION) - { nonCombatEngine->addStrategiesNoInit("felhunter", "spellstone", nullptr); - } else if (tab == WARLOCK_TAB_DEMONOLOGY) - { nonCombatEngine->addStrategiesNoInit("felguard", "spellstone", nullptr); - } else if (tab == WARLOCK_TAB_DESTRUCTION) - { nonCombatEngine->addStrategiesNoInit("imp", "firestone", nullptr); - } + nonCombatEngine->addStrategiesNoInit("dps assist", "ss self", nullptr); break; case CLASS_DEATH_KNIGHT: - if (tab == 0) + if (tab == DEATH_KNIGHT_TAB_BLOOD) nonCombatEngine->addStrategy("tank assist", false); else nonCombatEngine->addStrategy("dps assist", false); @@ -641,9 +587,7 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const } if (sPlayerbotAIConfig->autoSaveMana && PlayerbotAI::IsHeal(player, true)) - { nonCombatEngine->addStrategy("save mana", false); - } if ((sRandomPlayerbotMgr->IsRandomBot(player)) && !player->InBattleground()) { @@ -669,18 +613,14 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const nonCombatEngine->addStrategy("grind", false); if (sPlayerbotAIConfig->enableNewRpgStrategy) - { nonCombatEngine->addStrategy("new rpg", false); - } else if (sPlayerbotAIConfig->autoDoQuests) { // nonCombatEngine->addStrategy("travel"); nonCombatEngine->addStrategy("rpg", false); } else - { nonCombatEngine->addStrategy("move random", false); - } if (sPlayerbotAIConfig->randomBotJoinBG) nonCombatEngine->addStrategy("bg", false); @@ -729,11 +669,8 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const } } else - { nonCombatEngine->ChangeStrategy(sPlayerbotAIConfig->nonCombatStrategies); - } - // nonCombatEngine->addStrategy("battleground"); - // nonCombatEngine->addStrategy("warsong"); + // Battleground switch if (player->InBattleground() && player->GetBattleground()) { @@ -790,9 +727,7 @@ void AiFactory::AddDefaultDeadStrategies(Player* player, PlayerbotAI* const faca deadEngine->addStrategiesNoInit("dead", "stay", "chat", "default", "follow", nullptr); if (sRandomPlayerbotMgr->IsRandomBot(player) && !player->GetGroup()) - { deadEngine->removeStrategy("follow", false); - } } Engine* AiFactory::createDeadEngine(Player* player, PlayerbotAI* const facade, AiObjectContext* AiObjectContext) diff --git a/src/PlayerbotAI.cpp b/src/PlayerbotAI.cpp index d05bbe5c..f0ec2482 100644 --- a/src/PlayerbotAI.cpp +++ b/src/PlayerbotAI.cpp @@ -2034,7 +2034,7 @@ bool PlayerbotAI::IsTank(Player* player, bool bySpec) switch (player->getClass()) { case CLASS_DEATH_KNIGHT: - if (tab == DEATHKNIGHT_TAB_BLOOD) + if (tab == DEATH_KNIGHT_TAB_BLOOD) { return true; } @@ -2142,7 +2142,7 @@ bool PlayerbotAI::IsDps(Player* player, bool bySpec) } break; case CLASS_DEATH_KNIGHT: - if (tab != DEATHKNIGHT_TAB_BLOOD) + if (tab != DEATH_KNIGHT_TAB_BLOOD) { return true; } diff --git a/src/PlayerbotAI.h b/src/PlayerbotAI.h index 3b9eaab1..602b18d2 100644 --- a/src/PlayerbotAI.h +++ b/src/PlayerbotAI.h @@ -276,7 +276,7 @@ enum BotRoles : uint8 enum HUNTER_TABS { - HUNTER_TAB_BEASTMASTERY, + HUNTER_TAB_BEAST_MASTERY, HUNTER_TAB_MARKSMANSHIP, HUNTER_TAB_SURVIVAL, }; @@ -295,11 +295,11 @@ enum PRIEST_TABS PRIEST_TAB_SHADOW, }; -enum DEATHKNIGHT_TABS +enum DEATH_KNIGHT_TABS { - DEATHKNIGHT_TAB_BLOOD, - DEATHKNIGHT_TAB_FROST, - DEATHKNIGHT_TAB_UNHOLY, + DEATH_KNIGHT_TAB_BLOOD, + DEATH_KNIGHT_TAB_FROST, + DEATH_KNIGHT_TAB_UNHOLY, }; enum DRUID_TABS diff --git a/src/factory/StatsWeightCalculator.cpp b/src/factory/StatsWeightCalculator.cpp index 8a304891..1b3f3dcf 100644 --- a/src/factory/StatsWeightCalculator.cpp +++ b/src/factory/StatsWeightCalculator.cpp @@ -37,7 +37,7 @@ StatsWeightCalculator::StatsWeightCalculator(Player* player) : player_(player) tab = AiFactory::GetPlayerSpecTab(player); collector_ = std::make_unique(type_, cls); - if (cls == CLASS_DEATH_KNIGHT && tab == DEATHKNIGHT_TAB_UNHOLY) + if (cls == CLASS_DEATH_KNIGHT && tab == DEATH_KNIGHT_TAB_UNHOLY) hitOverflowType_ = CollectorType::SPELL; else if (cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT) hitOverflowType_ = CollectorType::SPELL; @@ -193,7 +193,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_MELEE_DPS] += 0.01f; stats_weights_[STATS_TYPE_RANGED_DPS] += 0.01f; - if (cls == CLASS_HUNTER && (tab == HUNTER_TAB_BEASTMASTERY || tab == HUNTER_TAB_SURVIVAL)) + if (cls == CLASS_HUNTER && (tab == HUNTER_TAB_BEAST_MASTERY || tab == HUNTER_TAB_SURVIVAL)) { stats_weights_[STATS_TYPE_AGILITY] += 2.5f; stats_weights_[STATS_TYPE_ATTACK_POWER] += 1.0f; @@ -249,7 +249,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 2.1f; stats_weights_[STATS_TYPE_MELEE_DPS] += 5.0f; } - else if (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_FURY) // fury + else if (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_FURY) { stats_weights_[STATS_TYPE_AGILITY] += 1.8f; stats_weights_[STATS_TYPE_STRENGTH] += 2.6f; @@ -261,7 +261,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 2.5f; stats_weights_[STATS_TYPE_MELEE_DPS] += 7.0f; } - else if (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_ARMS) // arm + else if (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_ARMS) { stats_weights_[STATS_TYPE_AGILITY] += 1.6f; stats_weights_[STATS_TYPE_STRENGTH] += 2.3f; @@ -273,7 +273,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 1.4f; stats_weights_[STATS_TYPE_MELEE_DPS] += 7.0f; } - else if (cls == CLASS_DEATH_KNIGHT && tab == DEATHKNIGHT_TAB_FROST) // frost dk + else if (cls == CLASS_DEATH_KNIGHT && tab == DEATH_KNIGHT_TAB_FROST) { stats_weights_[STATS_TYPE_AGILITY] += 1.7f; stats_weights_[STATS_TYPE_STRENGTH] += 2.8f; @@ -285,7 +285,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 2.5f; stats_weights_[STATS_TYPE_MELEE_DPS] += 7.0f; } - else if (cls == CLASS_DEATH_KNIGHT && tab == DEATHKNIGHT_TAB_UNHOLY) + else if (cls == CLASS_DEATH_KNIGHT && tab == DEATH_KNIGHT_TAB_UNHOLY) { stats_weights_[STATS_TYPE_AGILITY] += 0.9f; stats_weights_[STATS_TYPE_STRENGTH] += 2.5f; @@ -297,7 +297,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 1.5f; stats_weights_[STATS_TYPE_MELEE_DPS] += 5.0f; } - else if (cls == CLASS_PALADIN && tab == PALADIN_TAB_RETRIBUTION) // retribution + else if (cls == CLASS_PALADIN && tab == PALADIN_TAB_RETRIBUTION) { stats_weights_[STATS_TYPE_AGILITY] += 1.6f; stats_weights_[STATS_TYPE_STRENGTH] += 2.5f; @@ -311,7 +311,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 2.0f; stats_weights_[STATS_TYPE_MELEE_DPS] += 9.0f; } - else if ((cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT)) // enhancement + else if ((cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT)) { stats_weights_[STATS_TYPE_AGILITY] += 1.4f; stats_weights_[STATS_TYPE_STRENGTH] += 1.1f; @@ -325,9 +325,10 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 2.0f; stats_weights_[STATS_TYPE_MELEE_DPS] += 8.5f; } - else if (cls == CLASS_WARLOCK || (cls == CLASS_MAGE && tab != MAGE_TAB_FIRE) || - (cls == CLASS_PRIEST && tab == PRIEST_TAB_SHADOW) || // shadow - (cls == CLASS_DRUID && tab == DRUID_TAB_BALANCE)) // balance + else if (cls == CLASS_WARLOCK || + (cls == CLASS_MAGE && tab != MAGE_TAB_FIRE) || + (cls == CLASS_PRIEST && tab == PRIEST_TAB_SHADOW) || + (cls == CLASS_DRUID && tab == DRUID_TAB_BALANCE)) { stats_weights_[STATS_TYPE_INTELLECT] += 0.3f; stats_weights_[STATS_TYPE_SPIRIT] += 0.6f; @@ -355,8 +356,8 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_CRIT] += 0.8f; stats_weights_[STATS_TYPE_HASTE] += 1.0f; } - else if ((cls == CLASS_PALADIN && tab == PALADIN_TAB_HOLY) || // holy - (cls == CLASS_SHAMAN && tab == SHAMAN_TAB_RESTORATION)) // heal + else if ((cls == CLASS_PALADIN && tab == PALADIN_TAB_HOLY) || + (cls == CLASS_SHAMAN && tab == SHAMAN_TAB_RESTORATION)) { stats_weights_[STATS_TYPE_INTELLECT] += 0.9f; stats_weights_[STATS_TYPE_SPIRIT] += 0.15f; @@ -365,7 +366,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_CRIT] += 0.6f; stats_weights_[STATS_TYPE_HASTE] += 0.8f; } - else if ((cls == CLASS_PRIEST && tab != PRIEST_TAB_SHADOW) || // discipline / holy + else if ((cls == CLASS_PRIEST && tab != PRIEST_TAB_SHADOW) || (cls == CLASS_DRUID && tab == DRUID_TAB_RESTORATION)) { stats_weights_[STATS_TYPE_INTELLECT] += 0.8f; @@ -396,7 +397,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player) stats_weights_[STATS_TYPE_EXPERTISE] += 3.0f; stats_weights_[STATS_TYPE_MELEE_DPS] += 2.0f; } - else if (cls == CLASS_DEATH_KNIGHT && tab == DEATHKNIGHT_TAB_BLOOD) + else if (cls == CLASS_DEATH_KNIGHT && tab == DEATH_KNIGHT_TAB_BLOOD) { stats_weights_[STATS_TYPE_AGILITY] += 2.0f; stats_weights_[STATS_TYPE_STRENGTH] += 1.0f; @@ -539,7 +540,7 @@ void StatsWeightCalculator::CalculateItemTypePenalty(ItemTemplate const* proto) // spec without double hand // enhancement, rogue, ice dk, unholy dk, shield tank, fury warrior without titan's grip but with duel wield if (((cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT && player_->CanDualWield()) || - (cls == CLASS_ROGUE) || (cls == CLASS_DEATH_KNIGHT && tab == DEATHKNIGHT_TAB_FROST) || + (cls == CLASS_ROGUE) || (cls == CLASS_DEATH_KNIGHT && tab == DEATH_KNIGHT_TAB_FROST) || (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_FURY && !player_->CanTitanGrip() && player_->CanDualWield()) || (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_PROTECTION) || @@ -556,7 +557,7 @@ void StatsWeightCalculator::CalculateItemTypePenalty(ItemTemplate const* proto) (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_FURY && !player_->CanDualWield()) || (cls == CLASS_WARRIOR && tab == WARRIOR_TAB_ARMS) || (cls == CLASS_DRUID && tab == DRUID_TAB_FERAL) || (cls == CLASS_PALADIN && tab == PALADIN_TAB_RETRIBUTION) || - (cls == CLASS_DEATH_KNIGHT && tab == DEATHKNIGHT_TAB_BLOOD) || + (cls == CLASS_DEATH_KNIGHT && tab == DEATH_KNIGHT_TAB_BLOOD) || (cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT && !player_->CanDualWield())) { weight_ *= 0.1;