mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-13 00:58:33 +00:00
Remove "potion" strategy from arenas + code cleanups (#1922)
Lines 481 through 484 are the only substantive changes. Bots were having the potion strategy added in arenas, and since potions are not allowed in arenas, this caused them to lock up and attempt to repeatedly drink potions when under the applicable health or mana trigger thresholds. Now they won't have the potion strategy in arenas. Otherwise, I noticed a bunch of magic numbers for spec tabs and so went ahead and did some refactoring: 1. All references to spec tab numbers now use the appropriate constant name. 2. A bunch of extra braces were deleted. 3. DEATHKNIGHT_TAB was changed to DEATH_KNIGHT_TAB, and HUNTER_TAB_BEASTMASTERY was changed to HUNTER_TAB_BEAST_MASTERY, to reflect the correct names of the class and spec. 4. Deleted some comments that were clearly unneeded. There's much more that can be cleaned up, and probably the entire logic sequence for adding/removing strategies in AiFactory.cpp can be redone, but that's above my pay grade.
This commit is contained in:
@@ -45,7 +45,7 @@
|
|||||||
# HUNTER
|
# HUNTER
|
||||||
# ROGUE
|
# ROGUE
|
||||||
# PRIEST
|
# PRIEST
|
||||||
# DEATHKNIGHT
|
# DEATH KNIGHT
|
||||||
# SHAMAN
|
# SHAMAN
|
||||||
# MAGE
|
# MAGE
|
||||||
# WARLOCK
|
# WARLOCK
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
# HUNTER
|
# HUNTER
|
||||||
# ROGUE
|
# ROGUE
|
||||||
# PRIEST
|
# PRIEST
|
||||||
# DEATHKNIGHT
|
# DEATH KNIGHT
|
||||||
# SHAMAN
|
# SHAMAN
|
||||||
# MAGE
|
# MAGE
|
||||||
# WARLOCK
|
# 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
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|||||||
@@ -140,37 +140,37 @@ BotRoles AiFactory::GetPlayerRoles(Player* player)
|
|||||||
switch (player->getClass())
|
switch (player->getClass())
|
||||||
{
|
{
|
||||||
case CLASS_PRIEST:
|
case CLASS_PRIEST:
|
||||||
if (tab == 2)
|
if (tab == PRIEST_TAB_SHADOW)
|
||||||
role = BOT_ROLE_DPS;
|
role = BOT_ROLE_DPS;
|
||||||
else
|
else
|
||||||
role = BOT_ROLE_HEALER;
|
role = BOT_ROLE_HEALER;
|
||||||
break;
|
break;
|
||||||
case CLASS_SHAMAN:
|
case CLASS_SHAMAN:
|
||||||
if (tab == 2)
|
if (tab == SHAMAN_TAB_RESTORATION)
|
||||||
role = BOT_ROLE_HEALER;
|
role = BOT_ROLE_HEALER;
|
||||||
else
|
else
|
||||||
role = BOT_ROLE_DPS;
|
role = BOT_ROLE_DPS;
|
||||||
break;
|
break;
|
||||||
case CLASS_WARRIOR:
|
case CLASS_WARRIOR:
|
||||||
if (tab == 2)
|
if (tab == WARRIOR_TAB_PROTECTION)
|
||||||
role = BOT_ROLE_TANK;
|
role = BOT_ROLE_TANK;
|
||||||
else
|
else
|
||||||
role = BOT_ROLE_DPS;
|
role = BOT_ROLE_DPS;
|
||||||
break;
|
break;
|
||||||
case CLASS_PALADIN:
|
case CLASS_PALADIN:
|
||||||
if (tab == 0)
|
if (tab == PALADIN_TAB_HOLY)
|
||||||
role = BOT_ROLE_HEALER;
|
role = BOT_ROLE_HEALER;
|
||||||
else if (tab == 1)
|
else if (tab == PALADIN_TAB_PROTECTION)
|
||||||
role = BOT_ROLE_TANK;
|
role = BOT_ROLE_TANK;
|
||||||
else if (tab == 2)
|
else if (tab == PALADIN_TAB_RETRIBUTION)
|
||||||
role = BOT_ROLE_DPS;
|
role = BOT_ROLE_DPS;
|
||||||
break;
|
break;
|
||||||
case CLASS_DRUID:
|
case CLASS_DRUID:
|
||||||
if (tab == 0)
|
if (tab == DRUID_TAB_BALANCE)
|
||||||
role = BOT_ROLE_DPS;
|
role = BOT_ROLE_DPS;
|
||||||
else if (tab == 1)
|
else if (tab == DRUID_TAB_FERAL)
|
||||||
role = (BotRoles)(BOT_ROLE_TANK | BOT_ROLE_DPS);
|
role = (BotRoles)(BOT_ROLE_TANK | BOT_ROLE_DPS);
|
||||||
else if (tab == 2)
|
else if (tab == DRUID_TAB_RESTORATION)
|
||||||
role = BOT_ROLE_HEALER;
|
role = BOT_ROLE_HEALER;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -188,84 +188,83 @@ std::string AiFactory::GetPlayerSpecName(Player* player)
|
|||||||
switch (player->getClass())
|
switch (player->getClass())
|
||||||
{
|
{
|
||||||
case CLASS_PRIEST:
|
case CLASS_PRIEST:
|
||||||
if (tab == 2)
|
if (tab == PRIEST_TAB_SHADOW)
|
||||||
specName = "shadow";
|
specName = "shadow";
|
||||||
else if (tab == 1)
|
else if (tab == PRIEST_TAB_HOLY)
|
||||||
specName = "holy";
|
specName = "holy";
|
||||||
else
|
else
|
||||||
specName = "disc";
|
specName = "disc";
|
||||||
;
|
|
||||||
break;
|
break;
|
||||||
case CLASS_SHAMAN:
|
case CLASS_SHAMAN:
|
||||||
if (tab == 2)
|
if (tab == SHAMAN_TAB_RESTORATION)
|
||||||
specName = "resto";
|
specName = "resto";
|
||||||
else if (tab == 1)
|
else if (tab == SHAMAN_TAB_ENHANCEMENT)
|
||||||
specName = "enhance";
|
specName = "enhance";
|
||||||
else
|
else
|
||||||
specName = "elem";
|
specName = "elem";
|
||||||
break;
|
break;
|
||||||
case CLASS_WARRIOR:
|
case CLASS_WARRIOR:
|
||||||
if (tab == 2)
|
if (tab == WARRIOR_TAB_PROTECTION)
|
||||||
specName = "prot";
|
specName = "prot";
|
||||||
else if (tab == 1)
|
else if (tab == WARRIOR_TAB_FURY)
|
||||||
specName = "fury";
|
specName = "fury";
|
||||||
else
|
else
|
||||||
specName = "arms";
|
specName = "arms";
|
||||||
break;
|
break;
|
||||||
case CLASS_PALADIN:
|
case CLASS_PALADIN:
|
||||||
if (tab == 0)
|
if (tab == PALADIN_TAB_HOLY)
|
||||||
specName = "holy";
|
specName = "holy";
|
||||||
else if (tab == 1)
|
else if (tab == PALADIN_TAB_PROTECTION)
|
||||||
specName = "prot";
|
specName = "prot";
|
||||||
else if (tab == 2)
|
else if (tab == PALADIN_TAB_RETRIBUTION)
|
||||||
specName = "retrib";
|
specName = "retrib";
|
||||||
break;
|
break;
|
||||||
case CLASS_DRUID:
|
case CLASS_DRUID:
|
||||||
if (tab == 0)
|
if (tab == DRUID_TAB_BALANCE)
|
||||||
specName = "balance";
|
specName = "balance";
|
||||||
else if (tab == 1)
|
else if (tab == DRUID_TAB_FERAL)
|
||||||
specName = "feraldps";
|
specName = "feraldps";
|
||||||
else if (tab == 2)
|
else if (tab == DRUID_TAB_RESTORATION)
|
||||||
specName = "resto";
|
specName = "resto";
|
||||||
break;
|
break;
|
||||||
case CLASS_ROGUE:
|
case CLASS_ROGUE:
|
||||||
if (tab == 0)
|
if (tab == ROGUE_TAB_ASSASSINATION)
|
||||||
specName = "assas";
|
specName = "assas";
|
||||||
else if (tab == 1)
|
else if (tab == ROGUE_TAB_COMBAT)
|
||||||
specName = "combat";
|
specName = "combat";
|
||||||
else if (tab == 2)
|
else if (tab == ROGUE_TAB_SUBTLETY)
|
||||||
specName = "subtle";
|
specName = "subtle";
|
||||||
break;
|
break;
|
||||||
case CLASS_HUNTER:
|
case CLASS_HUNTER:
|
||||||
if (tab == 0)
|
if (tab == HUNTER_TAB_BEAST_MASTERY)
|
||||||
specName = "beast";
|
specName = "beast";
|
||||||
else if (tab == 1)
|
else if (tab == HUNTER_TAB_MARKSMANSHIP)
|
||||||
specName = "marks";
|
specName = "marks";
|
||||||
else if (tab == 2)
|
else if (tab == HUNTER_TAB_SURVIVAL)
|
||||||
specName = "surv";
|
specName = "surv";
|
||||||
break;
|
break;
|
||||||
case CLASS_DEATH_KNIGHT:
|
case CLASS_DEATH_KNIGHT:
|
||||||
if (tab == 0)
|
if (tab == DEATH_KNIGHT_TAB_BLOOD)
|
||||||
specName = "blooddps";
|
specName = "blooddps";
|
||||||
else if (tab == 1)
|
else if (tab == DEATH_KNIGHT_TAB_FROST)
|
||||||
specName = "frostdps";
|
specName = "frostdps";
|
||||||
else if (tab == 2)
|
else if (tab == DEATH_KNIGHT_TAB_UNHOLY)
|
||||||
specName = "unholydps";
|
specName = "unholydps";
|
||||||
break;
|
break;
|
||||||
case CLASS_MAGE:
|
case CLASS_MAGE:
|
||||||
if (tab == 0)
|
if (tab == MAGE_TAB_ARCANE)
|
||||||
specName = "arcane";
|
specName = "arcane";
|
||||||
else if (tab == 1)
|
else if (tab == MAGE_TAB_FIRE)
|
||||||
specName = "fire";
|
specName = "fire";
|
||||||
else if (tab == 2)
|
else if (tab == MAGE_TAB_FROST)
|
||||||
specName = "frost";
|
specName = "frost";
|
||||||
break;
|
break;
|
||||||
case CLASS_WARLOCK:
|
case CLASS_WARLOCK:
|
||||||
if (tab == 0)
|
if (tab == WARLOCK_TAB_AFFLICTION)
|
||||||
specName = "afflic";
|
specName = "afflic";
|
||||||
else if (tab == 1)
|
else if (tab == WARLOCK_TAB_DEMONOLOGY)
|
||||||
specName = "demo";
|
specName = "demo";
|
||||||
else if (tab == 2)
|
else if (tab == WARLOCK_TAB_DESTRUCTION)
|
||||||
specName = "destro";
|
specName = "destro";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -280,147 +279,124 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
|||||||
uint8 tab = GetPlayerSpecTab(player);
|
uint8 tab = GetPlayerSpecTab(player);
|
||||||
|
|
||||||
if (!player->InBattleground())
|
if (!player->InBattleground())
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("racials", "chat", "default", "cast time", "potions", "duel", "boost", nullptr);
|
engine->addStrategiesNoInit("racials", "chat", "default", "cast time", "potions", "duel", "boost", nullptr);
|
||||||
}
|
|
||||||
if (sPlayerbotAIConfig->autoAvoidAoe && facade->HasRealPlayerMaster())
|
if (sPlayerbotAIConfig->autoAvoidAoe && facade->HasRealPlayerMaster())
|
||||||
{
|
|
||||||
engine->addStrategy("avoid aoe", false);
|
engine->addStrategy("avoid aoe", false);
|
||||||
}
|
|
||||||
engine->addStrategy("formation", false);
|
engine->addStrategy("formation", false);
|
||||||
|
|
||||||
switch (player->getClass())
|
switch (player->getClass())
|
||||||
{
|
{
|
||||||
case CLASS_PRIEST:
|
case CLASS_PRIEST:
|
||||||
if (tab == 2)
|
if (tab == PRIEST_TAB_SHADOW)
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("dps", "shadow debuff", "shadow aoe", nullptr);
|
engine->addStrategiesNoInit("dps", "shadow debuff", "shadow aoe", nullptr);
|
||||||
}
|
|
||||||
else if (tab == PRIEST_TAB_DISCIPLINE)
|
else if (tab == PRIEST_TAB_DISCIPLINE)
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("heal", nullptr);
|
engine->addStrategiesNoInit("heal", nullptr);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("holy heal", nullptr);
|
engine->addStrategiesNoInit("holy heal", nullptr);
|
||||||
}
|
|
||||||
|
|
||||||
engine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
engine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_MAGE:
|
case CLASS_MAGE:
|
||||||
if (tab == 0) // Arcane
|
if (tab == MAGE_TAB_ARCANE)
|
||||||
engine->addStrategiesNoInit("arcane", nullptr);
|
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*/)
|
if (player->HasSpell(44614) /*Frostfire Bolt*/ && player->HasAura(15047) /*Ice Shards*/)
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("frostfire", nullptr);
|
engine->addStrategiesNoInit("frostfire", nullptr);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("fire", nullptr);
|
engine->addStrategiesNoInit("fire", nullptr);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else // Frost
|
else
|
||||||
engine->addStrategiesNoInit("frost", nullptr);
|
engine->addStrategiesNoInit("frost", nullptr);
|
||||||
|
|
||||||
engine->addStrategiesNoInit("dps", "dps assist", "cure", "aoe", nullptr);
|
engine->addStrategiesNoInit("dps", "dps assist", "cure", "aoe", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_WARRIOR:
|
case CLASS_WARRIOR:
|
||||||
if (tab == 2)
|
if (tab == WARRIOR_TAB_PROTECTION)
|
||||||
engine->addStrategiesNoInit("tank", "tank assist", "aoe", nullptr);
|
engine->addStrategiesNoInit("tank", "tank assist", "aoe", nullptr);
|
||||||
else if (tab == 0 || !player->HasSpell(1680)) // Whirlwind
|
else if (tab == WARRIOR_TAB_ARMS || !player->HasSpell(1680)) // Whirlwind
|
||||||
engine->addStrategiesNoInit("arms", "aoe", "dps assist", /*"behind",*/ nullptr);
|
engine->addStrategiesNoInit("arms", "aoe", "dps assist", nullptr);
|
||||||
else
|
else
|
||||||
engine->addStrategiesNoInit("fury", "aoe", "dps assist", /*"behind",*/ nullptr);
|
engine->addStrategiesNoInit("fury", "aoe", "dps assist", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_SHAMAN:
|
case CLASS_SHAMAN:
|
||||||
if (tab == 0) // Elemental
|
if (tab == SHAMAN_TAB_ELEMENTAL)
|
||||||
engine->addStrategiesNoInit("ele", "stoneskin", "wrath", "mana spring", "wrath of air", nullptr);
|
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);
|
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("enh", "strength of earth", "magma", "healing stream", "windfury", nullptr);
|
||||||
|
|
||||||
engine->addStrategiesNoInit("dps assist", "cure", "aoe", nullptr);
|
engine->addStrategiesNoInit("dps assist", "cure", "aoe", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_PALADIN:
|
case CLASS_PALADIN:
|
||||||
if (tab == 1)
|
if (tab == PALADIN_TAB_PROTECTION)
|
||||||
engine->addStrategiesNoInit("tank", "tank assist", "bthreat", "barmor", "cure", nullptr);
|
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);
|
engine->addStrategiesNoInit("heal", "dps assist", "cure", "bcast", nullptr);
|
||||||
else
|
else
|
||||||
engine->addStrategiesNoInit("dps", "dps assist", "cure", "baoe", nullptr);
|
engine->addStrategiesNoInit("dps", "dps assist", "cure", "baoe", nullptr);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case CLASS_DRUID:
|
case CLASS_DRUID:
|
||||||
if (tab == 0)
|
if (tab == DRUID_TAB_BALANCE)
|
||||||
{
|
{
|
||||||
engine->addStrategiesNoInit("caster", "cure", "caster aoe", "dps assist", nullptr);
|
engine->addStrategiesNoInit("caster", "cure", "caster aoe", "dps assist", nullptr);
|
||||||
engine->addStrategy("caster debuff", false);
|
engine->addStrategy("caster debuff", false);
|
||||||
}
|
}
|
||||||
else if (tab == 2)
|
else if (tab == DRUID_TAB_RESTORATION)
|
||||||
engine->addStrategiesNoInit("heal", "cure", "dps assist", nullptr);
|
engine->addStrategiesNoInit("heal", "cure", "dps assist", nullptr);
|
||||||
else
|
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);
|
engine->addStrategiesNoInit("cat", "dps assist", nullptr);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("bear", "tank assist", nullptr);
|
engine->addStrategiesNoInit("bear", "tank assist", nullptr);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CLASS_HUNTER:
|
case CLASS_HUNTER:
|
||||||
if (tab == 0) // Beast Mastery
|
if (tab == HUNTER_TAB_BEAST_MASTERY)
|
||||||
engine->addStrategiesNoInit("bm", nullptr);
|
engine->addStrategiesNoInit("bm", nullptr);
|
||||||
else if (tab == 1) // Marksmanship
|
else if (tab == HUNTER_TAB_MARKSMANSHIP)
|
||||||
engine->addStrategiesNoInit("mm", nullptr);
|
engine->addStrategiesNoInit("mm", nullptr);
|
||||||
else if (tab == 2) // Survival
|
else
|
||||||
engine->addStrategiesNoInit("surv", nullptr);
|
engine->addStrategiesNoInit("surv", nullptr);
|
||||||
|
|
||||||
engine->addStrategiesNoInit("cc", "dps assist", "aoe", nullptr);
|
engine->addStrategiesNoInit("cc", "dps assist", "aoe", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_ROGUE:
|
case CLASS_ROGUE:
|
||||||
if (tab == ROGUE_TAB_ASSASSINATION || tab == ROGUE_TAB_SUBTLETY)
|
if (tab == ROGUE_TAB_ASSASSINATION || tab == ROGUE_TAB_SUBTLETY)
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("melee", "dps assist", "aoe", nullptr);
|
engine->addStrategiesNoInit("melee", "dps assist", "aoe", nullptr);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("dps", "dps assist", "aoe", nullptr);
|
engine->addStrategiesNoInit("dps", "dps assist", "aoe", nullptr);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case CLASS_WARLOCK:
|
case CLASS_WARLOCK:
|
||||||
if (tab == 0) // Affliction
|
if (tab == WARLOCK_TAB_AFFLICTION)
|
||||||
engine->addStrategiesNoInit("affli", "curse of agony", nullptr);
|
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);
|
engine->addStrategiesNoInit("demo", "curse of agony", "meta melee", nullptr);
|
||||||
else if (tab == 2) // Destruction
|
else
|
||||||
engine->addStrategiesNoInit("destro", "curse of elements", nullptr);
|
engine->addStrategiesNoInit("destro", "curse of elements", nullptr);
|
||||||
|
|
||||||
engine->addStrategiesNoInit("cc", "dps assist", "aoe", nullptr);
|
engine->addStrategiesNoInit("cc", "dps assist", "aoe", nullptr);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLASS_DEATH_KNIGHT:
|
case CLASS_DEATH_KNIGHT:
|
||||||
if (tab == 0)
|
if (tab == DEATH_KNIGHT_TAB_BLOOD)
|
||||||
engine->addStrategiesNoInit("blood", "tank assist", nullptr);
|
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);
|
engine->addStrategiesNoInit("frost", "frost aoe", "dps assist", nullptr);
|
||||||
else
|
else
|
||||||
engine->addStrategiesNoInit("unholy", "unholy aoe", "dps assist", nullptr);
|
engine->addStrategiesNoInit("unholy", "unholy aoe", "dps assist", nullptr);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayerbotAI::IsTank(player, true))
|
if (PlayerbotAI::IsTank(player, true))
|
||||||
{
|
|
||||||
engine->addStrategy("tank face", false);
|
engine->addStrategy("tank face", false);
|
||||||
}
|
|
||||||
if (PlayerbotAI::IsMelee(player, true) && PlayerbotAI::IsDps(player, true))
|
if (PlayerbotAI::IsMelee(player, true) && PlayerbotAI::IsDps(player, true))
|
||||||
{
|
|
||||||
engine->addStrategy("behind", false);
|
engine->addStrategy("behind", false);
|
||||||
}
|
|
||||||
if (PlayerbotAI::IsHeal(player, true))
|
if (PlayerbotAI::IsHeal(player, true))
|
||||||
{
|
{
|
||||||
if (sPlayerbotAIConfig->autoSaveMana)
|
if (sPlayerbotAIConfig->autoSaveMana)
|
||||||
@@ -428,6 +404,7 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
|||||||
if (!sPlayerbotAIConfig->IsRestrictedHealerDPSMap(player->GetMapId()))
|
if (!sPlayerbotAIConfig->IsRestrictedHealerDPSMap(player->GetMapId()))
|
||||||
engine->addStrategy("healer dps", false);
|
engine->addStrategy("healer dps", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (facade->IsRealPlayer() || sRandomPlayerbotMgr->IsRandomBot(player))
|
if (facade->IsRealPlayer() || sRandomPlayerbotMgr->IsRandomBot(player))
|
||||||
{
|
{
|
||||||
if (!player->GetGroup())
|
if (!player->GetGroup())
|
||||||
@@ -436,15 +413,13 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
|||||||
engine->addStrategy("boost", false);
|
engine->addStrategy("boost", false);
|
||||||
engine->addStrategy("dps assist", false);
|
engine->addStrategy("dps assist", false);
|
||||||
engine->removeStrategy("threat", false);
|
engine->removeStrategy("threat", false);
|
||||||
// engine-
|
|
||||||
switch (player->getClass())
|
switch (player->getClass())
|
||||||
{
|
{
|
||||||
case CLASS_PRIEST:
|
case CLASS_PRIEST:
|
||||||
{
|
{
|
||||||
if (tab != PRIEST_TAB_SHADOW)
|
if (tab != PRIEST_TAB_SHADOW)
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("holy dps", "shadow debuff", "shadow aoe", nullptr);
|
engine->addStrategiesNoInit("holy dps", "shadow debuff", "shadow aoe", nullptr);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CLASS_DRUID:
|
case CLASS_DRUID:
|
||||||
@@ -459,17 +434,13 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
|||||||
case CLASS_SHAMAN:
|
case CLASS_SHAMAN:
|
||||||
{
|
{
|
||||||
if (tab == SHAMAN_TAB_RESTORATION)
|
if (tab == SHAMAN_TAB_RESTORATION)
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("caster", "caster aoe", "bmana", nullptr);
|
engine->addStrategiesNoInit("caster", "caster aoe", "bmana", nullptr);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CLASS_PALADIN:
|
case CLASS_PALADIN:
|
||||||
{
|
{
|
||||||
if (tab == PALADIN_TAB_HOLY)
|
if (tab == PALADIN_TAB_HOLY)
|
||||||
{
|
|
||||||
engine->addStrategiesNoInit("dps", "dps assist", "baoe", nullptr);
|
engine->addStrategiesNoInit("dps", "dps assist", "baoe", nullptr);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -478,13 +449,9 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sRandomPlayerbotMgr->IsRandomBot(player))
|
if (sRandomPlayerbotMgr->IsRandomBot(player))
|
||||||
{
|
|
||||||
engine->ChangeStrategy(sPlayerbotAIConfig->randomBotCombatStrategies);
|
engine->ChangeStrategy(sPlayerbotAIConfig->randomBotCombatStrategies);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
engine->ChangeStrategy(sPlayerbotAIConfig->combatStrategies);
|
engine->ChangeStrategy(sPlayerbotAIConfig->combatStrategies);
|
||||||
}
|
|
||||||
|
|
||||||
// Battleground switch
|
// Battleground switch
|
||||||
if (player->InBattleground() && player->GetBattleground())
|
if (player->InBattleground() && player->GetBattleground())
|
||||||
@@ -511,23 +478,15 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
|||||||
if (player->InArena())
|
if (player->InArena())
|
||||||
{
|
{
|
||||||
engine->addStrategy("arena", false);
|
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("custom::say", false);
|
||||||
engine->removeStrategy("flee", false);
|
engine->removeStrategy("flee", false);
|
||||||
engine->removeStrategy("threat", false);
|
engine->removeStrategy("threat", false);
|
||||||
engine->addStrategy("boost", 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);
|
nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_PALADIN:
|
case CLASS_PALADIN:
|
||||||
if (tab == 1)
|
if (tab == PALADIN_TAB_PROTECTION)
|
||||||
{
|
{
|
||||||
nonCombatEngine->addStrategiesNoInit("bthreat", "tank assist", "barmor", nullptr);
|
nonCombatEngine->addStrategiesNoInit("bthreat", "tank assist", "barmor", nullptr);
|
||||||
if (player->GetLevel() >= 20)
|
if (player->GetLevel() >= 20)
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategy("bhealth", false);
|
nonCombatEngine->addStrategy("bhealth", false);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategy("bdps", false);
|
nonCombatEngine->addStrategy("bdps", false);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (tab == 0)
|
else if (tab == PALADIN_TAB_HOLY)
|
||||||
nonCombatEngine->addStrategiesNoInit("dps assist", "bmana", "bcast", nullptr);
|
nonCombatEngine->addStrategiesNoInit("dps assist", "bmana", "bcast", nullptr);
|
||||||
else
|
else
|
||||||
nonCombatEngine->addStrategiesNoInit("dps assist", "bdps", "baoe", nullptr);
|
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);
|
nonCombatEngine->addStrategiesNoInit("bdps", "dps assist", "pet", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_SHAMAN:
|
case CLASS_SHAMAN:
|
||||||
if (tab == 0 || tab == 2)
|
if (tab == SHAMAN_TAB_ELEMENTAL || tab == SHAMAN_TAB_RESTORATION)
|
||||||
nonCombatEngine->addStrategy("bmana", false);
|
nonCombatEngine->addStrategy("bmana", false);
|
||||||
else
|
else
|
||||||
nonCombatEngine->addStrategy("bdps", false);
|
nonCombatEngine->addStrategy("bdps", false);
|
||||||
@@ -588,43 +543,34 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const
|
|||||||
nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_DRUID:
|
case CLASS_DRUID:
|
||||||
if (tab == 1)
|
if (tab == DRUID_TAB_FERAL)
|
||||||
{
|
{
|
||||||
if (player->GetLevel() >= 20 && !player->HasAura(16931) /*thick hide*/)
|
if (player->GetLevel() >= 20 && !player->HasAura(16931) /*thick hide*/)
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategy("dps assist", false);
|
nonCombatEngine->addStrategy("dps assist", false);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategy("tank assist", false);
|
nonCombatEngine->addStrategy("tank assist", false);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
nonCombatEngine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_WARRIOR:
|
case CLASS_WARRIOR:
|
||||||
if (tab == 2)
|
if (tab == WARRIOR_TAB_PROTECTION)
|
||||||
nonCombatEngine->addStrategy("tank assist", false);
|
nonCombatEngine->addStrategy("tank assist", false);
|
||||||
else
|
else
|
||||||
nonCombatEngine->addStrategy("dps assist", false);
|
nonCombatEngine->addStrategy("dps assist", false);
|
||||||
break;
|
break;
|
||||||
case CLASS_WARLOCK:
|
case CLASS_WARLOCK:
|
||||||
if (tab == WARLOCK_TAB_AFFLICTION)
|
if (tab == WARLOCK_TAB_AFFLICTION)
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategiesNoInit("felhunter", "spellstone", nullptr);
|
nonCombatEngine->addStrategiesNoInit("felhunter", "spellstone", nullptr);
|
||||||
}
|
|
||||||
else if (tab == WARLOCK_TAB_DEMONOLOGY)
|
else if (tab == WARLOCK_TAB_DEMONOLOGY)
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategiesNoInit("felguard", "spellstone", nullptr);
|
nonCombatEngine->addStrategiesNoInit("felguard", "spellstone", nullptr);
|
||||||
}
|
|
||||||
else if (tab == WARLOCK_TAB_DESTRUCTION)
|
else if (tab == WARLOCK_TAB_DESTRUCTION)
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategiesNoInit("imp", "firestone", nullptr);
|
nonCombatEngine->addStrategiesNoInit("imp", "firestone", nullptr);
|
||||||
}
|
|
||||||
nonCombatEngine->addStrategiesNoInit("dps assist", "ss self", nullptr);
|
nonCombatEngine->addStrategiesNoInit("dps assist", "ss self", nullptr);
|
||||||
break;
|
break;
|
||||||
case CLASS_DEATH_KNIGHT:
|
case CLASS_DEATH_KNIGHT:
|
||||||
if (tab == 0)
|
if (tab == DEATH_KNIGHT_TAB_BLOOD)
|
||||||
nonCombatEngine->addStrategy("tank assist", false);
|
nonCombatEngine->addStrategy("tank assist", false);
|
||||||
else
|
else
|
||||||
nonCombatEngine->addStrategy("dps assist", false);
|
nonCombatEngine->addStrategy("dps assist", false);
|
||||||
@@ -641,9 +587,7 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sPlayerbotAIConfig->autoSaveMana && PlayerbotAI::IsHeal(player, true))
|
if (sPlayerbotAIConfig->autoSaveMana && PlayerbotAI::IsHeal(player, true))
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategy("save mana", false);
|
nonCombatEngine->addStrategy("save mana", false);
|
||||||
}
|
|
||||||
|
|
||||||
if ((sRandomPlayerbotMgr->IsRandomBot(player)) && !player->InBattleground())
|
if ((sRandomPlayerbotMgr->IsRandomBot(player)) && !player->InBattleground())
|
||||||
{
|
{
|
||||||
@@ -669,18 +613,14 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const
|
|||||||
nonCombatEngine->addStrategy("grind", false);
|
nonCombatEngine->addStrategy("grind", false);
|
||||||
|
|
||||||
if (sPlayerbotAIConfig->enableNewRpgStrategy)
|
if (sPlayerbotAIConfig->enableNewRpgStrategy)
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategy("new rpg", false);
|
nonCombatEngine->addStrategy("new rpg", false);
|
||||||
}
|
|
||||||
else if (sPlayerbotAIConfig->autoDoQuests)
|
else if (sPlayerbotAIConfig->autoDoQuests)
|
||||||
{
|
{
|
||||||
// nonCombatEngine->addStrategy("travel");
|
// nonCombatEngine->addStrategy("travel");
|
||||||
nonCombatEngine->addStrategy("rpg", false);
|
nonCombatEngine->addStrategy("rpg", false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
nonCombatEngine->addStrategy("move random", false);
|
nonCombatEngine->addStrategy("move random", false);
|
||||||
}
|
|
||||||
|
|
||||||
if (sPlayerbotAIConfig->randomBotJoinBG)
|
if (sPlayerbotAIConfig->randomBotJoinBG)
|
||||||
nonCombatEngine->addStrategy("bg", false);
|
nonCombatEngine->addStrategy("bg", false);
|
||||||
@@ -729,11 +669,8 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
nonCombatEngine->ChangeStrategy(sPlayerbotAIConfig->nonCombatStrategies);
|
nonCombatEngine->ChangeStrategy(sPlayerbotAIConfig->nonCombatStrategies);
|
||||||
}
|
|
||||||
// nonCombatEngine->addStrategy("battleground");
|
|
||||||
// nonCombatEngine->addStrategy("warsong");
|
|
||||||
// Battleground switch
|
// Battleground switch
|
||||||
if (player->InBattleground() && player->GetBattleground())
|
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);
|
deadEngine->addStrategiesNoInit("dead", "stay", "chat", "default", "follow", nullptr);
|
||||||
|
|
||||||
if (sRandomPlayerbotMgr->IsRandomBot(player) && !player->GetGroup())
|
if (sRandomPlayerbotMgr->IsRandomBot(player) && !player->GetGroup())
|
||||||
{
|
|
||||||
deadEngine->removeStrategy("follow", false);
|
deadEngine->removeStrategy("follow", false);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Engine* AiFactory::createDeadEngine(Player* player, PlayerbotAI* const facade, AiObjectContext* AiObjectContext)
|
Engine* AiFactory::createDeadEngine(Player* player, PlayerbotAI* const facade, AiObjectContext* AiObjectContext)
|
||||||
|
|||||||
@@ -2034,7 +2034,7 @@ bool PlayerbotAI::IsTank(Player* player, bool bySpec)
|
|||||||
switch (player->getClass())
|
switch (player->getClass())
|
||||||
{
|
{
|
||||||
case CLASS_DEATH_KNIGHT:
|
case CLASS_DEATH_KNIGHT:
|
||||||
if (tab == DEATHKNIGHT_TAB_BLOOD)
|
if (tab == DEATH_KNIGHT_TAB_BLOOD)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2142,7 +2142,7 @@ bool PlayerbotAI::IsDps(Player* player, bool bySpec)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CLASS_DEATH_KNIGHT:
|
case CLASS_DEATH_KNIGHT:
|
||||||
if (tab != DEATHKNIGHT_TAB_BLOOD)
|
if (tab != DEATH_KNIGHT_TAB_BLOOD)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ enum BotRoles : uint8
|
|||||||
|
|
||||||
enum HUNTER_TABS
|
enum HUNTER_TABS
|
||||||
{
|
{
|
||||||
HUNTER_TAB_BEASTMASTERY,
|
HUNTER_TAB_BEAST_MASTERY,
|
||||||
HUNTER_TAB_MARKSMANSHIP,
|
HUNTER_TAB_MARKSMANSHIP,
|
||||||
HUNTER_TAB_SURVIVAL,
|
HUNTER_TAB_SURVIVAL,
|
||||||
};
|
};
|
||||||
@@ -295,11 +295,11 @@ enum PRIEST_TABS
|
|||||||
PRIEST_TAB_SHADOW,
|
PRIEST_TAB_SHADOW,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum DEATHKNIGHT_TABS
|
enum DEATH_KNIGHT_TABS
|
||||||
{
|
{
|
||||||
DEATHKNIGHT_TAB_BLOOD,
|
DEATH_KNIGHT_TAB_BLOOD,
|
||||||
DEATHKNIGHT_TAB_FROST,
|
DEATH_KNIGHT_TAB_FROST,
|
||||||
DEATHKNIGHT_TAB_UNHOLY,
|
DEATH_KNIGHT_TAB_UNHOLY,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum DRUID_TABS
|
enum DRUID_TABS
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ StatsWeightCalculator::StatsWeightCalculator(Player* player) : player_(player)
|
|||||||
tab = AiFactory::GetPlayerSpecTab(player);
|
tab = AiFactory::GetPlayerSpecTab(player);
|
||||||
collector_ = std::make_unique<StatsCollector>(type_, cls);
|
collector_ = std::make_unique<StatsCollector>(type_, cls);
|
||||||
|
|
||||||
if (cls == CLASS_DEATH_KNIGHT && tab == DEATHKNIGHT_TAB_UNHOLY)
|
if (cls == CLASS_DEATH_KNIGHT && tab == DEATH_KNIGHT_TAB_UNHOLY)
|
||||||
hitOverflowType_ = CollectorType::SPELL;
|
hitOverflowType_ = CollectorType::SPELL;
|
||||||
else if (cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT)
|
else if (cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT)
|
||||||
hitOverflowType_ = CollectorType::SPELL;
|
hitOverflowType_ = CollectorType::SPELL;
|
||||||
@@ -193,7 +193,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player)
|
|||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 0.01f;
|
stats_weights_[STATS_TYPE_MELEE_DPS] += 0.01f;
|
||||||
stats_weights_[STATS_TYPE_RANGED_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_AGILITY] += 2.5f;
|
||||||
stats_weights_[STATS_TYPE_ATTACK_POWER] += 1.0f;
|
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_EXPERTISE] += 2.1f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 5.0f;
|
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_AGILITY] += 1.8f;
|
||||||
stats_weights_[STATS_TYPE_STRENGTH] += 2.6f;
|
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_EXPERTISE] += 2.5f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 7.0f;
|
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_AGILITY] += 1.6f;
|
||||||
stats_weights_[STATS_TYPE_STRENGTH] += 2.3f;
|
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_EXPERTISE] += 1.4f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 7.0f;
|
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_AGILITY] += 1.7f;
|
||||||
stats_weights_[STATS_TYPE_STRENGTH] += 2.8f;
|
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_EXPERTISE] += 2.5f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 7.0f;
|
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_AGILITY] += 0.9f;
|
||||||
stats_weights_[STATS_TYPE_STRENGTH] += 2.5f;
|
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_EXPERTISE] += 1.5f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 5.0f;
|
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_AGILITY] += 1.6f;
|
||||||
stats_weights_[STATS_TYPE_STRENGTH] += 2.5f;
|
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_EXPERTISE] += 2.0f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 9.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_AGILITY] += 1.4f;
|
||||||
stats_weights_[STATS_TYPE_STRENGTH] += 1.1f;
|
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_EXPERTISE] += 2.0f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 8.5f;
|
stats_weights_[STATS_TYPE_MELEE_DPS] += 8.5f;
|
||||||
}
|
}
|
||||||
else if (cls == CLASS_WARLOCK || (cls == CLASS_MAGE && tab != MAGE_TAB_FIRE) ||
|
else if (cls == CLASS_WARLOCK ||
|
||||||
(cls == CLASS_PRIEST && tab == PRIEST_TAB_SHADOW) || // shadow
|
(cls == CLASS_MAGE && tab != MAGE_TAB_FIRE) ||
|
||||||
(cls == CLASS_DRUID && tab == DRUID_TAB_BALANCE)) // balance
|
(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_INTELLECT] += 0.3f;
|
||||||
stats_weights_[STATS_TYPE_SPIRIT] += 0.6f;
|
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_CRIT] += 0.8f;
|
||||||
stats_weights_[STATS_TYPE_HASTE] += 1.0f;
|
stats_weights_[STATS_TYPE_HASTE] += 1.0f;
|
||||||
}
|
}
|
||||||
else if ((cls == CLASS_PALADIN && tab == PALADIN_TAB_HOLY) || // holy
|
else if ((cls == CLASS_PALADIN && tab == PALADIN_TAB_HOLY) ||
|
||||||
(cls == CLASS_SHAMAN && tab == SHAMAN_TAB_RESTORATION)) // heal
|
(cls == CLASS_SHAMAN && tab == SHAMAN_TAB_RESTORATION))
|
||||||
{
|
{
|
||||||
stats_weights_[STATS_TYPE_INTELLECT] += 0.9f;
|
stats_weights_[STATS_TYPE_INTELLECT] += 0.9f;
|
||||||
stats_weights_[STATS_TYPE_SPIRIT] += 0.15f;
|
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_CRIT] += 0.6f;
|
||||||
stats_weights_[STATS_TYPE_HASTE] += 0.8f;
|
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))
|
(cls == CLASS_DRUID && tab == DRUID_TAB_RESTORATION))
|
||||||
{
|
{
|
||||||
stats_weights_[STATS_TYPE_INTELLECT] += 0.8f;
|
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_EXPERTISE] += 3.0f;
|
||||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 2.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_AGILITY] += 2.0f;
|
||||||
stats_weights_[STATS_TYPE_STRENGTH] += 1.0f;
|
stats_weights_[STATS_TYPE_STRENGTH] += 1.0f;
|
||||||
@@ -539,7 +540,7 @@ void StatsWeightCalculator::CalculateItemTypePenalty(ItemTemplate const* proto)
|
|||||||
// spec without double hand
|
// spec without double hand
|
||||||
// enhancement, rogue, ice dk, unholy dk, shield tank, fury warrior without titan's grip but with duel wield
|
// 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()) ||
|
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() &&
|
(cls == CLASS_WARRIOR && tab == WARRIOR_TAB_FURY && !player_->CanTitanGrip() &&
|
||||||
player_->CanDualWield()) ||
|
player_->CanDualWield()) ||
|
||||||
(cls == CLASS_WARRIOR && tab == WARRIOR_TAB_PROTECTION) ||
|
(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_FURY && !player_->CanDualWield()) ||
|
||||||
(cls == CLASS_WARRIOR && tab == WARRIOR_TAB_ARMS) || (cls == CLASS_DRUID && tab == DRUID_TAB_FERAL) ||
|
(cls == CLASS_WARRIOR && tab == WARRIOR_TAB_ARMS) || (cls == CLASS_DRUID && tab == DRUID_TAB_FERAL) ||
|
||||||
(cls == CLASS_PALADIN && tab == PALADIN_TAB_RETRIBUTION) ||
|
(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()))
|
(cls == CLASS_SHAMAN && tab == SHAMAN_TAB_ENHANCEMENT && !player_->CanDualWield()))
|
||||||
{
|
{
|
||||||
weight_ *= 0.1;
|
weight_ *= 0.1;
|
||||||
|
|||||||
Reference in New Issue
Block a user