diff --git a/assets/database/db.bin b/assets/database/db.bin index 2970e3eb1..8e1d3be0f 100644 Binary files a/assets/database/db.bin and b/assets/database/db.bin differ diff --git a/assets/database/db.json b/assets/database/db.json index 82d6bc35c..ff7f88a83 100644 --- a/assets/database/db.json +++ b/assets/database/db.json @@ -8740,8 +8740,8 @@ {"effectId":63,"spellId":13538,"name":"Enchant Chest - Lesser Absorption","type":5,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":66,"spellId":7457,"name":"Enchant Bracer - Minor Stamina","type":6,"stats":[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":66,"spellId":7863,"name":"Enchant Boots - Minor Stamina","type":10,"stats":[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, -{"effectId":241,"spellId":13503,"name":"Enchant Weapon - Lesser Striking","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":241,"spellId":7745,"name":"Enchant 2H Weapon - Minor Impact","type":13,"enchantType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, +{"effectId":241,"spellId":13503,"name":"Enchant Weapon - Lesser Striking","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":242,"spellId":7748,"name":"Enchant Chest - Lesser Health","type":5,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":243,"spellId":7766,"name":"Enchant Bracer - Minor Spirit","type":6,"stats":[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":246,"spellId":7776,"name":"Enchant Chest - Lesser Mana","type":5,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, @@ -8843,8 +8843,8 @@ {"effectId":1893,"spellId":20028,"name":"Enchant Chest - Major Mana","type":5,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1894,"spellId":20029,"name":"Enchant Weapon - Icy Chill","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1896,"spellId":20030,"name":"Enchant 2H Weapon - Superior Impact","type":13,"enchantType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, -{"effectId":1897,"spellId":13695,"name":"Enchant 2H Weapon - Impact","type":13,"enchantType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":1897,"spellId":20031,"name":"Enchant Weapon - Superior Striking","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, +{"effectId":1897,"spellId":13695,"name":"Enchant 2H Weapon - Impact","type":13,"enchantType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":1898,"spellId":20032,"name":"Enchant Weapon - Lifestealing","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, {"effectId":1899,"spellId":20033,"name":"Enchant Weapon - Unholy Weapon","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1900,"spellId":20034,"name":"Enchant Weapon - Crusader","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, @@ -13044,7 +13044,6 @@ {"id":409552,"name":"Explosive Shot","icon":"ability_hunter_explosiveshot","requiresLevel":1,"hasBuff":true}, {"id":409554,"name":"Explosive Shot","icon":"ability_hunter_explosiveshot","requiresLevel":1,"hasBuff":true}, {"id":409580,"name":"Heart of the Lion","icon":"ability_hunter_pet_cat","requiresLevel":1,"hasBuff":true}, -{"id":409583,"name":"Heart of the Lion","icon":"ability_hunter_pet_cat","requiresLevel":1,"hasBuff":true}, {"id":409593,"name":"Kill Shot","icon":"ability_hunter_assassinate2","requiresLevel":1}, {"id":409691,"name":"Raptor Strike","icon":"ability_meleedamage","requiresLevel":1}, {"id":409693,"name":"Raptor Strike","icon":"ability_meleedamage","requiresLevel":8}, @@ -13122,7 +13121,6 @@ {"id":415071,"name":"Exorcism","icon":"spell_holy_excorcism_02","requiresLevel":44}, {"id":415072,"name":"Exorcism","icon":"spell_holy_excorcism_02","requiresLevel":52}, {"id":415073,"name":"Exorcism","icon":"spell_holy_excorcism_02","requiresLevel":60}, -{"id":415105,"name":"Power Surge","icon":"inv_misc_orb_05","requiresLevel":1,"hasBuff":true}, {"id":415236,"name":"Healing Rain","icon":"spell_nature_tranquility","hasBuff":true}, {"id":415242,"name":"Healing Rain","icon":"spell_nature_tranquility","requiresLevel":1}, {"id":415320,"name":"Flanking Strike","icon":"ability_hunter_harass","requiresLevel":1,"hasBuff":true}, @@ -13333,7 +13331,6 @@ {"id":440492,"name":"Engrave Cloak - Fresh Meat","icon":"inv_misc_cape_20","requiresLevel":1}, {"id":440494,"name":"Engrave Cloak - Sudden Death","icon":"inv_misc_cape_20","requiresLevel":1}, {"id":440496,"name":"Engrave Cloak - Shockwave","icon":"inv_misc_cape_20","requiresLevel":1}, -{"id":440520,"name":"Improved Volley","icon":"ability_hunter_focusedaim","requiresLevel":1}, {"id":440677,"name":"Righteous Vengeance","icon":"ability_paladin_righteousvengeance","requiresLevel":1}, {"id":440802,"name":"Frozen Orb","icon":"spell_frost_frozencore","requiresLevel":1}, {"id":440809,"name":"Frozen Orb","icon":"spell_frost_frozencore","requiresLevel":1,"hasBuff":true}, diff --git a/assets/database/leftover_db.json b/assets/database/leftover_db.json index 00abbb49c..2b51c860a 100644 --- a/assets/database/leftover_db.json +++ b/assets/database/leftover_db.json @@ -1559,8 +1559,8 @@ {"effectId":1893,"spellId":20028,"name":"Enchant Chest - Major Mana","type":5,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1894,"spellId":20029,"name":"Enchant Weapon - Icy Chill","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1896,"spellId":20030,"name":"Enchant 2H Weapon - Superior Impact","type":13,"enchantType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, -{"effectId":1897,"spellId":13695,"name":"Enchant 2H Weapon - Impact","type":13,"enchantType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":1897,"spellId":20031,"name":"Enchant Weapon - Superior Striking","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, +{"effectId":1897,"spellId":13695,"name":"Enchant 2H Weapon - Impact","type":13,"enchantType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":1898,"spellId":20032,"name":"Enchant Weapon - Lifestealing","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, {"effectId":1899,"spellId":20033,"name":"Enchant Weapon - Unholy Weapon","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1900,"spellId":20034,"name":"Enchant Weapon - Crusader","type":13,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, diff --git a/assets/db_inputs/atlasloot_db.json b/assets/db_inputs/atlasloot_db.json index aa9895ab9..18ff3a804 100644 --- a/assets/db_inputs/atlasloot_db.json +++ b/assets/db_inputs/atlasloot_db.json @@ -5071,8 +5071,6 @@ ], "enchants":[ ], -"runes":[ -], "zones":[ {"id":209,"name":"Shadowfang Keep","expansion":1}, {"id":491,"name":"Razorfen Kraul","expansion":1}, diff --git a/proto/api.proto b/proto/api.proto index 6302145a1..6d06c6e0a 100644 --- a/proto/api.proto +++ b/proto/api.proto @@ -50,7 +50,6 @@ message Player { double distance_from_target = 17; // ISB Info - bool isb_using_shadowflame = 47; double isb_sb_frequency = 41; double isb_crit = 42; int32 isb_warlocks = 43; @@ -77,7 +76,7 @@ message Player { ElementalShaman elemental_shaman = 33; EnhancementShaman enhancement_shaman = 34; RestorationShaman restoration_shaman = 35; - WardenShaman warden_shaman = 48; + WardenShaman warden_shaman = 47; Warlock warlock = 36; TankWarlock tank_warlock = 39; Warrior warrior = 37; diff --git a/proto/apl.proto b/proto/apl.proto index 236a6f804..23ad06d02 100644 --- a/proto/apl.proto +++ b/proto/apl.proto @@ -82,7 +82,7 @@ message APLAction { } } -// NextIndex: 75 +// NextIndex: 74 message APLValue { oneof value { // Operators @@ -112,7 +112,7 @@ message APLValue { APLValueCurrentEnergy current_energy = 15; APLValueCurrentComboPoints current_combo_points = 16; APLValueTimeToEnergyTick time_to_energy_tick = 66; - APLValueEnergyThreshold energy_threshold = 73; + APLValueEnergyThreshold energy_threshold = 72; // GCD values APLValueGCDIsReady gcd_is_ready = 17; @@ -129,7 +129,7 @@ message APLValue { APLValueSpellTimeToReady spell_time_to_ready = 21; APLValueSpellCastTime spell_cast_time = 35; APLValueSpellTravelTime spell_travel_time = 37; - APLValueSpellInFlight spell_in_flight = 74; + APLValueSpellInFlight spell_in_flight = 73; APLValueSpellCPM spell_cpm = 42; APLValueSpellIsChanneling spell_is_channeling = 56; APLValueSpellChanneledTicks spell_channeled_ticks = 57; @@ -145,8 +145,8 @@ message APLValue { APLValueAuraICDIsReadyWithReactionTime aura_icd_is_ready_with_reaction_time = 51; APLValueAuraShouldRefresh aura_should_refresh = 43; - // Rune values - APLValueRuneIsEquipped rune_is_equipped = 69; + // Rune values TODO: remove once APLs for classes are updated + APLValueRuneIsEquipped rune_is_equipped = 74; // Dot values APLValueDotIsActive dot_is_active = 6; @@ -170,9 +170,9 @@ message APLValue { // Warlock APLValueWarlockShouldRecastDrainSoul warlock_should_recast_drain_soul = 59; APLValueWarlockShouldRefreshCorruption warlock_should_refresh_corruption = 60; - APLValueWarlockCurrentPetMana warlock_current_pet_mana = 70; - APLValueWarlockCurrentPetManaPercent warlock_current_pet_mana_percent = 71; - APLValueWarlockPetIsActive warlock_pet_is_active = 72; + APLValueWarlockCurrentPetMana warlock_current_pet_mana = 69; + APLValueWarlockCurrentPetManaPercent warlock_current_pet_mana_percent = 70; + APLValueWarlockPetIsActive warlock_pet_is_active = 71; // Paladin APLValueCurrentSealRemainingTime current_seal_remaining_time = 65; } @@ -489,6 +489,7 @@ message APLValueAuraShouldRefresh { APLValue max_overlap = 3; } +// TODO: remove once APLs for classes are updated message APLValueRuneIsEquipped { ActionID rune_id = 1; } diff --git a/proto/common.proto b/proto/common.proto index f32c20e03..a2d0679b0 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -127,7 +127,7 @@ enum Stat { // between the UI and backend. // // It's also OK to include things here which aren't in the PseudoStats struct. -// NextIndex: 32 +// NextIndex: 31 enum PseudoStat { PseudoStatMainHandDps = 0; PseudoStatOffHandDps = 1; @@ -135,7 +135,7 @@ enum PseudoStat { PseudoStatBlockValueMultiplier = 3; PseudoStatDodge = 4; PseudoStatParry = 5; - BonusPhysicalDamage = 31; + BonusPhysicalDamage = 30; // Melee Weapon Skill PseudoStatUnarmedSkill = 6; @@ -168,9 +168,6 @@ enum PseudoStat { PseudoStatMeleeSpeedMultiplier = 27; PseudoStatRangedSpeedMultiplier = 28; PseudoStatBlockValuePerStrength = 29; - - // Special Pseudostats - TimewornBonus = 30; } message UnitStats { @@ -316,7 +313,6 @@ enum TristateEffect { enum SapperExplosive { SapperUnknown = 0; SapperGoblinSapper = 1; - SapperFumigator = 2; } enum Explosive { @@ -324,10 +320,7 @@ enum Explosive { ExplosiveSolidDynamite = 1; ExplosiveDenseDynamite = 2; ExplosiveThoriumGrenade = 3; - ExplosiveEzThroRadiationBomb = 4; - ExplosiveHighYieldRadiationBomb = 5; - ExplosiveGoblinLandMine = 6; - ExplosiveObsidianBomb = 7; + ExplosiveGoblinLandMine = 4; } // NextIndex: 28 @@ -374,19 +367,9 @@ enum Conjured { ConjuredDemonicRune = 2; ConjuredRogueThistleTea = 3; - ConjuredHealthstone = 7; - ConjuredGreaterHealthstone = 8; - ConjuredMajorHealthstone = 9; - - ConjuredDruidCatnip = 4 [deprecated = true]; -} - -enum EnchantedSigil { - UnknownSigil = 0; - InnovationSigil = 1; - LivingDreamsSigil = 2; - FlowingWatersSigil = 3; - WrathOfTheStormSigil = 4; + ConjuredHealthstone = 4; + ConjuredGreaterHealthstone = 5; + ConjuredMajorHealthstone = 6; } enum Flask { @@ -395,12 +378,6 @@ enum Flask { FlaskOfDistilledWisdom = 2; FlaskOfSupremePower = 3; FlaskOfChromaticResistance = 4; - FlaskOfRestlessDreams = 5; - FlaskOfEverlastingNightmares = 6; - FlaskOfMadness = 7; - FlaskOfUnyieldingSorrow = 8; - FlaskOfAncientKnowledge = 9; - FlaskOfTheOldGods = 10; } enum Alcohol { @@ -419,7 +396,6 @@ enum AgilityElixir { ElixirOfLesserAgility = 3; ScrollOfAgility = 4; ElixirOfAgility = 5; - ElixirOfTheHoneyBadger = 6; } enum ArmorElixir { @@ -429,7 +405,6 @@ enum ArmorElixir { ElixirOfDefense = 3; ElixirOfMinorDefense = 4; ScrollOfProtection = 5; - ElixirOfTheIronside = 6; } enum HealthElixir { @@ -462,7 +437,6 @@ enum SpellPowerBuff { ArcaneElixir = 1; GreaterArcaneElixir = 2; LesserArcaneElixir = 3; - ElixirOfTheMageLord = 4; } enum ShadowPowerBuff { @@ -491,26 +465,14 @@ enum ZanzaBuff { CerebralCortexCompound = 6; GizzardGum = 7; LungJuiceCocktail = 8; - AtalaiMojoOfWar = 9; - AtalaiMojoOfForbiddenMagic = 10; - AtalaiMojoOfLife = 11; -} - -enum AtalaiMojo { - AtalaiMojoUnknown = 0; - MojoOfWar = 1; - MojoOfForbiddenMagic = 2; - MojoOfLife = 3; } message MiscConsumes { bool bogling_root = 1; - bool elixir_of_coalesced_regret = 2; - bool catnip = 3; - bool juju_ember = 4; - bool juju_chill = 5; - bool juju_escape = 6; - bool juju_flurry = 7; + bool juju_ember = 2; + bool juju_chill = 3; + bool juju_escape = 4; + bool juju_flurry = 5; } message PetMiscConsumes { @@ -536,18 +498,15 @@ enum WeaponImbue { LesserWizardOil = 14; WizardOil = 20; BrilliantWizardOil = 2; - EnchantedRepellent = 30; MinorManaOil = 15; LesserManaOil = 16; BrilliantManaOil = 1; - BlackfathomManaOil = 5; // Sharpening Stones SolidSharpeningStone = 17; DenseSharpeningStone = 3; ElementalSharpeningStone = 4; - BlackfathomSharpeningStone = 6; // Weightstones SolidWeightstone = 18; @@ -558,7 +517,6 @@ enum WeaponImbue { FrostOil = 22; // Windfury Imbues - WildStrikes = 7; Windfury = 8; // Shaman imbues @@ -568,15 +526,9 @@ enum WeaponImbue { WindfuryWeapon = 12; // Rogue imbues - InstantPoison = 23; - DeadlyPoison = 24; - WoundPoison = 25; - OccultPoison = 27; - SebaciousPoison = 28; - - // Shield Oil - ConductiveShieldCoating = 26; - MagnificentTrollshine = 29; + InstantPoison = 5; + DeadlyPoison = 6; + WoundPoison = 7; } // NextIndex: 13 @@ -605,7 +557,7 @@ enum SaygesFortune { } // Buffs that affect the entire raid. -// NextIndex: 44 +// NextIndex: 36 message RaidBuffs { // +Stats TristateEffect gift_of_the_wild = 1; @@ -640,17 +592,16 @@ message RaidBuffs { // mp5 TristateEffect mana_spring_totem = 14; TristateEffect blessing_of_wisdom = 15; - int32 vampiric_touch = 41; // Resistances bool shadow_protection = 16; - bool shadow_resistance_aura = 39; + bool shadow_resistance_aura = 35; bool nature_resistance_totem = 17; bool aspect_of_the_wild = 18; bool frost_resistance_aura = 19; bool frost_resistance_totem = 20; bool fire_resistance_totem = 21; - bool fire_resistance_aura = 35; + bool fire_resistance_aura = 32; // Scroll bool scroll_of_protection = 26; @@ -660,22 +611,13 @@ message RaidBuffs { bool scroll_of_intellect = 30; bool scroll_of_spirit = 31; - // SoD Runes - int32 demonic_pact = 32; - bool horn_of_lordaeron = 33; - bool aspect_of_the_lion = 34; - bool commanding_shout = 38; - // Miscellaneous TristateEffect thorns = 22; TristateEffect devotion_aura = 23; TristateEffect stoneskin_totem = 24; TristateEffect retribution_aura = 25; - bool sanctity_aura = 36; - int32 battle_squawk = 37; - bool improved_stoneskin_windwall = 40; - bool flowing_waters_sigil = 42; - bool spirit_of_the_alpha = 43; + bool sanctity_aura = 33; + int32 battle_squawk = 34; } // Buffs that affect a single party. @@ -689,9 +631,9 @@ message PartyBuffs { } // These are usually individual actions taken by other Characters. -// NextIndex: 22 +// NextIndex: 16 message IndividualBuffs { - reserved 20; + reserved 15; reserved "dragonslayer_buff"; bool blessing_of_kings = 1; @@ -703,91 +645,72 @@ message IndividualBuffs { // World Buffs bool rallying_cry_of_the_dragonslayer = 7; - bool valor_of_azeroth = 21; SaygesFortune sayges_fortune = 8; bool spirit_of_zandalar = 9; bool songflower_serenade = 10; bool warchiefs_blessing = 11; - bool might_of_stormwind = 19; // Dire Maul Buffs bool fengus_ferocity = 12; bool moldars_moxie = 13; bool slipkiks_savvy = 14; - - // New SoD Buffs - bool boon_of_blackfathom = 15; - bool ashenvale_pvp_buff = 16; - bool spark_of_inspiration = 17; - bool fervor_of_the_temple_explorer = 18; } // NextIndex: 34 message Consumes { Flask flask = 1; Food food = 2; - AgilityElixir agility_elixir = 5; - ManaRegenElixir mana_regen_elixir = 6; - StrengthBuff strength_buff = 7; - AttackPowerBuff attack_power_buff = 8; - SpellPowerBuff spell_power_buff = 9; - ShadowPowerBuff shadow_power_buff = 10; - FirePowerBuff fire_power_buff = 11; - FrostPowerBuff frost_power_buff = 12; - SapperExplosive sapper_explosive = 34; - Explosive filler_explosive = 14; - WeaponImbue main_hand_imbue = 15; - WeaponImbue off_hand_imbue = 16; - Potions default_potion = 17; - Conjured default_conjured = 18; - EnchantedSigil enchanted_sigil = 20; - bool mildly_irradiated_rejuv_pot = 21; - int32 pet_agility_consumable = 22; - int32 pet_strength_consumable = 23; - int32 pet_attack_power_consumable = 31; - PetMiscConsumes pet_misc_consumes = 33; - bool dragon_breath_chili = 24; - MiscConsumes misc_consumes = 26; - ZanzaBuff zanza_buff = 27; - ArmorElixir armor_elixir = 28; - HealthElixir health_elixir = 29; - Alcohol alcohol = 30; - MageScroll mage_scroll = 32; - - AtalaiMojo atalai_mojo = 25 [deprecated=true]; - bool bogling_root = 19 [deprecated=true]; -} - -// NextIndex: 41 + AgilityElixir agility_elixir = 3; + ManaRegenElixir mana_regen_elixir = 4; + StrengthBuff strength_buff = 5; + AttackPowerBuff attack_power_buff = 6; + SpellPowerBuff spell_power_buff = 7; + ShadowPowerBuff shadow_power_buff = 8; + FirePowerBuff fire_power_buff = 9; + FrostPowerBuff frost_power_buff = 10; + Explosive filler_explosive = 11; + WeaponImbue main_hand_imbue = 12; + WeaponImbue off_hand_imbue = 13; + Potions default_potion = 14; + Conjured default_conjured = 15; + bool bogling_root = 16 [deprecated=true]; + int32 pet_agility_consumable = 17; + int32 pet_strength_consumable = 18; + bool dragon_breath_chili = 19; + MiscConsumes misc_consumes = 20; + ZanzaBuff zanza_buff = 21; + ArmorElixir armor_elixir = 22; + HealthElixir health_elixir = 23; + Alcohol alcohol = 24; + int32 pet_attack_power_consumable = 25; + MageScroll mage_scroll = 26; + PetMiscConsumes pet_misc_consumes = 27; + SapperExplosive sapper_explosive = 28; +} + +// NextIndex: 26 message Debuffs { bool judgement_of_wisdom = 1; bool judgement_of_light = 2; - TristateEffect judgement_of_the_crusader = 33; + TristateEffect judgement_of_the_crusader = 25; bool faerie_fire = 3; // Warlock Spell DamageCurses bool curse_of_elements = 4; bool curse_of_shadow = 5; - bool mark_of_chaos = 37; - - // Bonus Spell Damage - bool occult_poison = 38; bool winters_chill = 6; bool improved_shadow_bolt = 7; bool improved_scorch = 8; - bool shadow_weaving = 26; - bool stormstrike = 27; - bool dreamstate = 28; + bool shadow_weaving = 22; + bool stormstrike = 23; // Major armor TristateEffect expose_armor = 10; bool sunder_armor = 11; - int32 homunculi = 22; // between 0 and 100, represents average uptime percentage - TristateEffect sebacious_poison = 39; TristateEffect curse_of_weakness = 12; bool curse_of_recklessness = 13; @@ -796,32 +719,17 @@ message Debuffs { TristateEffect demoralizing_shout = 15; TristateEffect thunder_clap = 16; - bool waylay = 34; - bool thunderfury = 40; + bool thunderfury = 24; bool insect_swarm = 17; bool scorpid_sting = 18; - bool vampiric_embrace = 19; - - TristateEffect hunters_mark = 20; - // ArP items - - // Bleed - bool mangle = 25; + TristateEffect hunters_mark = 19; // Misc Debuffs bool gift_of_arthas = 9; - bool curse_of_vulnerability = 23; - bool crystal_yield = 21; - int32 ancient_corrosive_poison = 24; // between 0 and 100, represents average uptime percentage - bool mekkatorque_fist_debuff = 29; - bool serpents_striker_fist_debuff = 30; - bool improved_faerie_fire = 36; // Provided by Tier 1 Feral set bonus - bool melee_hunter_dodge_debuff = 41; // Provided by Tier 1 Melee Hunter set bonus - - TristateEffect curse_of_elements_new = 31 [deprecated=true]; - TristateEffect curse_of_shadow_new = 32 [deprecated=true]; + bool curse_of_vulnerability = 21; + bool crystal_yield = 20; } enum MobType { @@ -919,7 +827,6 @@ message ItemSpec { int32 id = 2; int32 random_suffix = 6; int32 enchant = 3; - int32 rune = 5; } message EquipmentSpec { @@ -930,11 +837,10 @@ message SimDatabase { repeated SimItem items = 1; repeated ItemRandomSuffix random_suffixes = 5; repeated SimEnchant enchants = 2; - repeated SimRune runes = 4; } // Contains only the Item info needed by the sim. -// NextIndex: 21 +// NextIndex: 20 message SimItem { int32 id = 1; int32 requires_level = 16; @@ -952,13 +858,11 @@ message SimItem { double weapon_damage_min = 11; double weapon_damage_max = 12; double weapon_speed = 13; - double bonus_physical_damage = 20; + double bonus_physical_damage = 19; string set_name = 14; int32 set_id = 18; repeated double weapon_skills = 15; - - bool timeworn = 19; } // Extra enum for describing which items are eligible for an enchant, when @@ -977,10 +881,6 @@ message SimEnchant { repeated double stats = 2; } -message SimRune { - int32 id = 1; -} - message UnitReference { enum Type { Unknown = 0; @@ -1095,23 +995,3 @@ message ItemSwap { message Duration { double ms = 1; } - -enum RingRune { - RuneRingNone = 0; - - RuneRingArcaneSpecialization = 442893; - RuneRingAxeSpecialization = 442876; - RuneRingDaggerSpecialization = 442887; - RuneRingDefenseSpecialization = 459312; - RuneRingFeralCombatSpecialization = 453622; - RuneRingFireSpecialization = 442894; - RuneRingFistWeaponSpecialization = 442890; - RuneRingFrostSpecialization = 442895; - RuneRingHolySpecialization = 442898; - RuneRingMaceSpecialization = 442881; - RuneRingNatureSpecialization = 442896; - RuneRingPoleWeaponSpecialization = 442892; - RuneRingRangedWeaponSpecialization = 442891; - RuneRingShadowSpecialization = 442897; - RuneRingSwordSpecialization = 442813; -} diff --git a/proto/ui.proto b/proto/ui.proto index f029b6bfd..89a96f262 100644 --- a/proto/ui.proto +++ b/proto/ui.proto @@ -11,14 +11,13 @@ import "paladin.proto"; // Holds all WoW data for the UI. message UIDatabase { repeated UIItem items = 1; - repeated ItemRandomSuffix random_suffixes = 11; + repeated ItemRandomSuffix random_suffixes = 10; repeated UIEnchant enchants = 2; - repeated UIRune runes = 10; repeated PresetEncounter encounters = 6; repeated UIZone zones = 8; repeated UINPC npcs = 9; - repeated UIFaction factions = 12; + repeated UIFaction factions = 11; // Entities for which we just need a name/icon. repeated IconData item_icons = 4; @@ -44,7 +43,7 @@ message UIFaction { // Contains all information about an Item needed by the UI. // Generally this will include everything needed by the sim, plus some // additional data for displaying / filtering. -// NextIndex: 32 +// NextIndex: 31 message UIItem { int32 id = 1; string name = 2; @@ -65,14 +64,13 @@ message UIItem { double weapon_damage_max = 14; double weapon_speed = 15; repeated double weapon_skills = 28; - double bonus_physical_damage = 31; + double bonus_physical_damage = 30; int32 ilvl = 16; int32 phase = 17; ItemQuality quality = 18; bool unique = 19; bool heroic = 20; - bool timeworn = 30; // Classes that are allowed to use the item. Empty indicates no special class restrictions. repeated Class class_allowlist = 21; @@ -181,18 +179,6 @@ message UIEnchant { int32 requires_level = 14; } -message UIRune { - reserved 4; - reserved "class"; - - int32 id = 1; - string name = 2; - string icon = 3; - ItemType type = 5; - int32 requires_level = 6; - repeated Class class_allowlist = 7; -} - message IconData { int32 id = 1; string name = 2; @@ -259,7 +245,7 @@ enum ExcludedZones { ZoneNaxxramas = 3456; } -// Next tag: 24 +// Next tag: 23 message DatabaseFilters { repeated ArmorType armor_types = 1; repeated WeaponType weapon_types = 2; @@ -267,8 +253,8 @@ message DatabaseFilters { repeated SourceFilterOption sources = 17; repeated RaidFilterOption raids = 18; UIItem.FactionRestriction faction_restriction = 19; - int32 min_ilvl = 22; - int32 max_ilvl = 23; + int32 min_ilvl = 21; + int32 max_ilvl = 22; double min_mh_weapon_speed = 4; double max_mh_weapon_speed = 5; @@ -284,8 +270,7 @@ message DatabaseFilters { repeated int32 favorite_items = 11; // Uniquely-identifying strings for favorited enchants. repeated string favorite_enchants = 13; - repeated int32 favorite_runes = 20; - repeated int32 favorite_random_suffixes = 21; + repeated int32 favorite_random_suffixes = 20; } message SimSettings { diff --git a/schemas/gear.schema.json b/schemas/gear.schema.json index b88058069..62bb0fd90 100644 --- a/schemas/gear.schema.json +++ b/schemas/gear.schema.json @@ -11,8 +11,7 @@ "type": "object", "properties": { "id": "number", - "enchant": "number", - "rune": "number" + "enchant": "number" } } } diff --git a/sim/common/sod/item_effects/phase_2.go b/sim/common/sod/item_effects/phase_2.go index 71624a7ed..23385c0ea 100644 --- a/sim/common/sod/item_effects/phase_2.go +++ b/sim/common/sod/item_effects/phase_2.go @@ -359,7 +359,7 @@ func init() { // Mekkatorque's Arcano-Shredder itemhelpers.CreateWeaponProcSpell(MekkatorquesArcanoShredder, "Mekkatorque", 5.0, func(character *core.Character) *core.Spell { - procAuras := character.NewEnemyAuraArray(core.MekkatorqueFistDebuffAura) + //procAuras := character.NewEnemyAuraArray(core.MekkatorqueFistDebuffAura) return character.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: 434841}, @@ -374,7 +374,7 @@ func init() { ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { if target.Level <= 45 { spell.CalcAndDealDamage(sim, target, 30, spell.OutcomeMagicHitAndCrit) - procAuras.Get(target).Activate(sim) + //procAuras.Get(target).Activate(sim) } }, }) diff --git a/sim/common/sod/item_effects/phase_3.go b/sim/common/sod/item_effects/phase_3.go index 952980dd6..ff438f6a8 100644 --- a/sim/common/sod/item_effects/phase_3.go +++ b/sim/common/sod/item_effects/phase_3.go @@ -483,7 +483,7 @@ func init() { }) serpentsStrikerEffect := func(character *core.Character) *core.Spell { - procAuras := character.NewEnemyAuraArray(core.SerpentsStrikerFistDebuffAura) + //procAuras := character.NewEnemyAuraArray(core.SerpentsStrikerFistDebuffAura) return character.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: 447894}, @@ -500,7 +500,7 @@ func init() { if target.Level <= 55 { spell.CalcAndDealDamage(sim, target, 50, spell.OutcomeMagicHitAndCrit) - procAuras.Get(target).Activate(sim) + //procAuras.Get(target).Activate(sim) } }, }) diff --git a/sim/common/sod/item_effects/phase_5.go b/sim/common/sod/item_effects/phase_5.go index 6bd9008bf..cea2000dc 100644 --- a/sim/common/sod/item_effects/phase_5.go +++ b/sim/common/sod/item_effects/phase_5.go @@ -268,7 +268,7 @@ func ClawOfChromaggusEffect(character *core.Character) { fireChance, frostChance, shadowChance = 0.50/3, 0.50/3, 0.50/3 case proto.Class_ClassMage: // The weapon's effect for mage is specialized, based off of selected runes - if character.HasRuneById(int32(proto.MageRune_RuneBeltFrostfireBolt)) { + /* if character.HasRuneById(int32(proto.MageRune_RuneBeltFrostfireBolt)) { fireChance, frostChance = 0.25, 0.25 arcaneChance, natureChance, shadowChance = 0.50/3, 0.50/3, 0.50/3 } else if character.HasRuneById(int32(proto.MageRune_RuneBeltSpellfrostBolt)) { @@ -277,7 +277,7 @@ func ClawOfChromaggusEffect(character *core.Character) { } else if character.HasRuneById(int32(proto.MageRune_RuneBeltMissileBarrage)) { arcaneChance = 0.50 fireChance, frostChance, natureChance, shadowChance = 0.125, 0.125, 0.125, 0.125 - } + } */ case proto.Class_ClassPriest: // Confirmed 50% proc chance for Shadow and the other 50% divided among the other 4 schools shadowChance = 0.50 @@ -287,11 +287,11 @@ func ClawOfChromaggusEffect(character *core.Character) { fireChance, natureChance = 0.25, 0.25 arcaneChance, frostChance, shadowChance = 0.50/3, 0.50/3, 0.50/3 case proto.Class_ClassWarlock: - if character.HasRuneById(int32(proto.WarlockRune_RuneBracerIncinerate)) { + /* if character.HasRuneById(int32(proto.WarlockRune_RuneBracerIncinerate)) { // Confirmed 50% Fire, 50% divided among the other 4 fireChance = 0.50 arcaneChance, frostChance, natureChance, shadowChance = 0.125, 0.125, 0.125, 0.125 - } else { + } else */{ // Confirmed 50% Shadow, 50% divided among the other 4 shadowChance = 0.50 arcaneChance, fireChance, frostChance, natureChance = 0.125, 0.125, 0.125, 0.125 diff --git a/sim/common/sod/item_effects/phase_6.go b/sim/common/sod/item_effects/phase_6.go index 08f1b1c18..175bacf9d 100644 --- a/sim/common/sod/item_effects/phase_6.go +++ b/sim/common/sod/item_effects/phase_6.go @@ -168,7 +168,7 @@ func init() { }) // https://www.wowhead.com/classic/item=234198/signet-ring-of-the-bronze-dragonflight - core.NewItemEffect(SignetRingBronzeConquerorR5, TimeswornStrikeAura) + /* core.NewItemEffect(SignetRingBronzeConquerorR5, TimeswornStrikeAura) core.NewItemEffect(SignetRingBronzeConquerorR4, TimeswornStrikeAura) core.NewItemEffect(SignetRingBronzeConquerorR3, TimeswornStrikeAura) core.NewItemEffect(SignetRingBronzeConquerorR2, TimeswornStrikeAura) @@ -214,7 +214,7 @@ func init() { core.NewItemEffect(SignetRingBronzeSubjugatorR4, TimewornDecayAura) core.NewItemEffect(SignetRingBronzeSubjugatorR3, TimewornDecayAura) core.NewItemEffect(SignetRingBronzeSubjugatorR2, TimewornDecayAura) - core.NewItemEffect(SignetRingBronzeSubjugatorR1, TimewornDecayAura) + core.NewItemEffect(SignetRingBronzeSubjugatorR1, TimewornDecayAura) */ /////////////////////////////////////////////////////////////////////////// // Other @@ -340,7 +340,7 @@ func ObsidianEdgedAura(itemID int32, agent core.Agent) { // https://www.wowhead.com/classic/spell=1214155/timeworn-decay // Increases the damage dealt by all of your damage over time spells by 2% per piece of Timeworn armor equipped. -func TimewornDecayAura(agent core.Agent) { +/* func TimewornDecayAura(agent core.Agent) { character := agent.GetCharacter() if character.PseudoStats.TimewornBonus == 0 { return @@ -530,3 +530,4 @@ func TimeswornStrikeAura(agent core.Agent) { }, }) } +*/ diff --git a/sim/core/agent.go b/sim/core/agent.go index 1c0778aed..92f8e5696 100644 --- a/sim/core/agent.go +++ b/sim/core/agent.go @@ -24,10 +24,9 @@ type Agent interface { // Updates the input Buffs to include party-wide buffs provided by this Agent. AddPartyBuffs(partyBuffs *proto.PartyBuffs) - // All talent and runes stats / auras should be added within this callback. This makes sure + // All talent stats / auras should be added within this callback. This makes sure // talents are applied at the right time so we can calculate groups of stats. ApplyTalents() - ApplyRunes() // Returns this Agent to its initial state. Called before each Sim iteration // and once after the final iteration. diff --git a/sim/core/apl_value.go b/sim/core/apl_value.go index c1933adf3..3c75cf6e0 100644 --- a/sim/core/apl_value.go +++ b/sim/core/apl_value.go @@ -168,10 +168,6 @@ func (rot *APLRotation) newAPLValue(config *proto.APLValue) APLValue { case *proto.APLValue_AuraShouldRefresh: return rot.newValueAuraShouldRefresh(config.GetAuraShouldRefresh()) - // Runes - case *proto.APLValue_RuneIsEquipped: - return rot.newValueRuneIsEquipped(config.GetRuneIsEquipped()) - // Dots case *proto.APLValue_DotIsActive: return rot.newValueDotIsActive(config.GetDotIsActive()) diff --git a/sim/core/apl_values_rune.go b/sim/core/apl_values_rune.go deleted file mode 100644 index 378d2a166..000000000 --- a/sim/core/apl_values_rune.go +++ /dev/null @@ -1,39 +0,0 @@ -package core - -import ( - "fmt" - "slices" - - "github.com/wowsims/classic/sim/core/proto" -) - -type APLRune struct { - id int32 - equipped bool -} - -type APLValueRuneIsEquipped struct { - DefaultAPLValueImpl - character *Character - rune APLRune -} - -func (rot *APLRotation) newValueRuneIsEquipped(config *proto.APLValueRuneIsEquipped) APLValue { - character := rot.unit.Env.Raid.GetPlayerFromUnit(rot.unit).GetCharacter() - spellId := config.GetRuneId().GetSpellId() - rune := APLRune{id: spellId, equipped: slices.Contains(character.Equipment.GetRuneIds(), spellId)} - - return &APLValueRuneIsEquipped{ - character: character, - rune: rune, - } -} -func (value *APLValueRuneIsEquipped) Type() proto.APLValueType { - return proto.APLValueType_ValueTypeBool -} -func (value *APLValueRuneIsEquipped) GetBool(sim *Simulation) bool { - return value.rune.equipped -} -func (value *APLValueRuneIsEquipped) String() string { - return fmt.Sprintf("Rune Equipped(%d)", value.rune.id) -} diff --git a/sim/core/buffs.go b/sim/core/buffs.go index abbc0e786..7968333f2 100644 --- a/sim/core/buffs.go +++ b/sim/core/buffs.go @@ -661,10 +661,6 @@ func applyBuffEffects(agent Agent, playerFaction proto.Faction, raidBuffs *proto }) } - if raidBuffs.SpiritOfTheAlpha { - SpiritOfTheAlphaAura(&character.Unit) - } - if raidBuffs.TrueshotAura { TrueshotAura(&character.Unit) } @@ -685,9 +681,6 @@ func applyBuffEffects(agent Agent, playerFaction proto.Faction, raidBuffs *proto updateStats = updateStats.Multiply(1.3).Floor() } character.AddStats(updateStats) - } else if raidBuffs.CommandingShout { - updateStats := BuffSpellByLevel[CommandingShout][level] - character.AddStats(updateStats) } if raidBuffs.ShadowResistanceAura { @@ -706,10 +699,7 @@ func applyBuffEffects(agent Agent, playerFaction proto.Faction, raidBuffs *proto character.AddStats(BuffSpellByLevel[ScrollOfSpirit][level]) } - // Heart of the Lion grants bonus Melee AP as well so give it priority over kings - if raidBuffs.AspectOfTheLion { - HeartOfTheLionAura(character) - } else if individualBuffs.BlessingOfKings && isAlliance { + if individualBuffs.BlessingOfKings && isAlliance { MakePermanent(BlessingOfKingsAura(character)) } @@ -732,11 +722,6 @@ func applyBuffEffects(agent Agent, playerFaction proto.Faction, raidBuffs *proto MakePermanent(StoneskinTotemAura(&character.Unit, GetTristateValueInt32(raidBuffs.StoneskinTotem, 0, 2))) } - if raidBuffs.ImprovedStoneskinWindwall && isHorde { - MakePermanent(ImprovedStoneskinTotemAura(&character.Unit)) - MakePermanent(ImprovedWindwallTotemAura(&character.Unit)) - } - if raidBuffs.RetributionAura != proto.TristateEffect_TristateEffectMissing && isAlliance { RetributionAura(character, GetTristateValueInt32(raidBuffs.RetributionAura, 0, 2)) } @@ -745,23 +730,10 @@ func applyBuffEffects(agent Agent, playerFaction proto.Faction, raidBuffs *proto MakePermanent(BattleShoutAura(&character.Unit, GetTristateValueInt32(raidBuffs.BattleShout, 0, 5), 0)) } - if raidBuffs.HornOfLordaeron && isAlliance { - MakePermanent(HornOfLordaeronAura(&character.Unit, level)) - } else if individualBuffs.BlessingOfMight != proto.TristateEffect_TristateEffectMissing && isAlliance { + if individualBuffs.BlessingOfMight != proto.TristateEffect_TristateEffectMissing && isAlliance { MakePermanent(BlessingOfMightAura(&character.Unit, GetTristateValueInt32(individualBuffs.BlessingOfMight, 0, 5), level)) } - if raidBuffs.DemonicPact > 0 { - power := raidBuffs.DemonicPact - dpAura := DemonicPactAura(&character.Unit, float64(power), CharacterBuildPhaseBuffs) - dpAura.ExclusiveEffects[0].Priority = float64(power) - dpAura.OnReset = func(aura *Aura, sim *Simulation) { - aura.Activate(sim) - aura.SetStacks(sim, power) - } - MakePermanent(dpAura) - } - if raidBuffs.StrengthOfEarthTotem != proto.TristateEffect_TristateEffectMissing && isHorde { multiplier := GetTristateValueFloat(raidBuffs.StrengthOfEarthTotem, 1, 1.15) MakePermanent(StrengthOfEarthTotemAura(&character.Unit, level, multiplier)) @@ -786,11 +758,6 @@ func applyBuffEffects(agent Agent, playerFaction proto.Faction, raidBuffs *proto character.AddStats(updateStats) } - if raidBuffs.VampiricTouch > 0 { - mp5 := float64(raidBuffs.VampiricTouch) - MakePermanent(VampiricTouchMP5Aura(&character.Unit, mp5)) - } - if raidBuffs.BattleSquawk > 0 { numBattleSquawks := raidBuffs.BattleSquawk BattleSquawkAura(&character.Unit, numBattleSquawks) @@ -827,23 +794,6 @@ func applyBuffEffects(agent Agent, playerFaction proto.Faction, raidBuffs *proto ApplySaygesFortunes(character, individualBuffs.SaygesFortune) } - // SoD World Buffs - if individualBuffs.FervorOfTheTempleExplorer { - ApplyFervorOfTheTempleExplorer(&character.Unit) - } - - if individualBuffs.SparkOfInspiration { - ApplySparkOfInspiration(&character.Unit) - } - - if individualBuffs.BoonOfBlackfathom { - ApplyBoonOfBlackfathom(&character.Unit) - } - - if individualBuffs.AshenvalePvpBuff { - ApplyAshenvaleRallyingCry(&character.Unit) - } - // TODO: Classic provide in APL? registerPowerInfusionCD(agent, individualBuffs.PowerInfusions) registerManaTideTotemCD(agent, partyBuffs.ManaTideTotems) @@ -876,15 +826,11 @@ func applyPetBuffEffects(petAgent PetAgent, playerFaction proto.Faction, raidBuf // Pets only receive Onyxia, Rend, and ZG buffs because they're globally applied in their respective zones // SoD versions were removed from pets though - individualBuffs.AshenvalePvpBuff = false - individualBuffs.BoonOfBlackfathom = false individualBuffs.FengusFerocity = false - individualBuffs.FervorOfTheTempleExplorer = false individualBuffs.MoldarsMoxie = false individualBuffs.SaygesFortune = proto.SaygesFortune_SaygesUnknown individualBuffs.SongflowerSerenade = false individualBuffs.SlipkiksSavvy = false - individualBuffs.SparkOfInspiration = false applyBuffEffects(petAgent, playerFaction, raidBuffs, partyBuffs, individualBuffs) } @@ -944,51 +890,6 @@ func BlessingOfKingsAura(character *Character) *Aura { })) } -func HeartOfTheLionAura(character *Character) *Aura { - modAP := float64(40 + 4*(character.Level-20)) - statDeps := []*stats.StatDependency{ - character.NewDynamicMultiplyStat(stats.Stamina, 1.10), - character.NewDynamicMultiplyStat(stats.Agility, 1.10), - character.NewDynamicMultiplyStat(stats.Strength, 1.10), - character.NewDynamicMultiplyStat(stats.Intellect, 1.10), - character.NewDynamicMultiplyStat(stats.Spirit, 1.10), - } - - return MakePermanent(character.RegisterAura(Aura{ - Label: "Heart of the Lion", - ActionID: ActionID{SpellID: 409583}, - BuildPhase: CharacterBuildPhaseBuffs, - OnGain: func(aura *Aura, sim *Simulation) { - character.AddStatDynamic(sim, stats.AttackPower, modAP) - character.AddStatDynamic(sim, stats.RangedAttackPower, modAP) - - if aura.Unit.Env.MeasuringStats && aura.Unit.Env.State != Finalized { - for _, dep := range statDeps { - aura.Unit.StatDependencyManager.EnableDynamicStatDep(dep) - } - } else { - for _, dep := range statDeps { - aura.Unit.EnableDynamicStatDep(sim, dep) - } - } - }, - OnExpire: func(aura *Aura, sim *Simulation) { - character.AddStatDynamic(sim, stats.AttackPower, -modAP) - character.AddStatDynamic(sim, stats.RangedAttackPower, -modAP) - - if aura.Unit.Env.MeasuringStats && aura.Unit.Env.State != Finalized { - for _, dep := range statDeps { - aura.Unit.StatDependencyManager.DisableDynamicStatDep(dep) - } - } else { - for _, dep := range statDeps { - aura.Unit.DisableDynamicStatDep(sim, dep) - } - } - }, - })) -} - // TODO: Classic func InspirationAura(unit *Unit, points int32) *Aura { multiplier := 1 - []float64{0, .03, .07, .10}[points] @@ -1075,36 +976,6 @@ func StoneskinTotemAura(unit *Unit, points int32) *Aura { }) } -// https://www.wowhead.com/classic/spell=457544/s03-item-t1-shaman-tank-6p-bonus -// Your Stoneskin Totem also reduces Physical damage taken by 5% and your Windwall Totem also reduces Magical damage taken by 5%. -// Restricting to level 60 only -func ImprovedStoneskinTotemAura(unit *Unit) *Aura { - return unit.GetOrRegisterAura(Aura{ - Label: "Improved Stoneskin", - ActionID: ActionID{SpellID: 457544}.WithTag(1), - Duration: time.Minute * 2, - OnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexPhysical] *= .95 - }, - OnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexPhysical] /= .95 - }, - }) -} -func ImprovedWindwallTotemAura(unit *Unit) *Aura { - return unit.GetOrRegisterAura(Aura{ - Label: "Improved Windwall", - ActionID: ActionID{SpellID: 457544}.WithTag(2), - Duration: time.Minute * 2, - OnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier.MultiplyMagicSchools(0.95) - }, - OnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier.MultiplyMagicSchools(1 / 0.95) - }, - }) -} - func RetributionAura(character *Character, points int32) *Aura { level := character.Level spellID := map[int32]int32{ @@ -1885,18 +1756,6 @@ const ReplenishmentAuraDuration = time.Second * 15 // return unit.ReplenishmentAura // } -func DemonicPactAura(unit *Unit, spellpower float64, buildPhase CharacterBuildPhase) *Aura { - aura := unit.GetOrRegisterAura(Aura{ - Label: "Demonic Pact", - ActionID: ActionID{SpellID: 425464}, - Duration: time.Second * 45, - MaxStacks: 10000, - BuildPhase: buildPhase, - }) - spellPowerBonusEffect(aura, spellpower) - return aura -} - func spellPowerBonusEffect(aura *Aura, spellPowerBonus float64) *ExclusiveEffect { return aura.NewExclusiveEffect("SpellPowerBonus", false, ExclusiveEffect{ Priority: spellPowerBonus, @@ -2000,19 +1859,6 @@ func BattleShoutAura(unit *Unit, impBattleShout int32, boomingVoicePts int32) *A }) } -func SpiritOfTheAlphaAura(unit *Unit) *Aura { - return MakePermanent(unit.GetOrRegisterAura(Aura{ - Label: "Spirit of the Alpha", - ActionID: ActionID{SpellID: int32(proto.ShamanRune_RuneFeetSpiritOfTheAlpha)}, - OnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.ThreatMultiplier *= 1.45 - }, - OnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.ThreatMultiplier /= 1.45 - }, - })) -} - func TrueshotAura(unit *Unit) *Aura { if unit.Level < 40 { return nil @@ -2072,25 +1918,6 @@ func BlessingOfMightAura(unit *Unit, impBomPts int32, level int32) *Aura { return aura } -func HornOfLordaeronAura(unit *Unit, level int32) *Aura { - updateStats := BuffSpellByLevel[HornOfLordaeron][level] - - aura := MakePermanent(unit.RegisterAura(Aura{ - Label: "Horn Of Lordaeron", - ActionID: ActionID{SpellID: 425600}, - })) - - makeExclusiveBuff(aura, BuffConfig{ - Category: "Paladin Physical Buffs", - Stats: []StatConfig{ - {stats.Agility, updateStats[stats.Agility], false}, - {stats.Strength, updateStats[stats.Strength], false}, - }, - }) - - return aura -} - // TODO: Are there exclusive AP buffs in SoD? // func attackPowerBonusEffect(aura *Aura, apBonus float64) *ExclusiveEffect { // return aura.NewExclusiveEffect("AttackPowerBonus", false, ExclusiveEffect{ @@ -2110,30 +1937,6 @@ func HornOfLordaeronAura(unit *Unit, level int32) *Aura { // }) // } -func VampiricTouchMP5Aura(unit *Unit, mp5 float64) *Aura { - actionID := ActionID{SpellID: 402779}.WithTag(1) - mps := mp5 / 5 - - manaMetrics := unit.NewManaMetrics(actionID) - aura := unit.GetOrRegisterAura(Aura{ - Label: "Vampiric Touch Replenishment", - ActionID: actionID, - Duration: NeverExpires, - BuildPhase: CharacterBuildPhaseBuffs, - OnReset: func(aura *Aura, sim *Simulation) { - StartPeriodicAction(sim, PeriodicActionOptions{ - Period: time.Second * 1, - Priority: ActionPriorityDOT, // High prio - OnAction: func(sim *Simulation) { - unit.AddMana(sim, mps, manaMetrics) - }, - }) - }, - }) - - return aura -} - func BattleSquawkAura(character *Unit, stackcount int32) *Aura { aura := character.GetOrRegisterAura(Aura{ Label: "Battle Squawk", @@ -2243,12 +2046,6 @@ func GetWildStrikesAP(aura *Aura, rank int32) float64 { return 0.2 * aura.Unit.GetStat(stats.AttackPower) } -func ApplyWildStrikes(character *Character) *Aura { - buffActionID := ActionID{SpellID: 407975} - - return CreateExtraAttackAuraCommon(character, buffActionID, "Wild Strikes", 1, GetWildStrikesAP) -} - const WindfuryRanks = 3 var ( @@ -2283,9 +2080,6 @@ func ApplyDragonslayerBuffs(unit *Unit, buffs *proto.IndividualBuffs) { if buffs.RallyingCryOfTheDragonslayer { ApplyRallyingCryOfTheDragonslayer(unit, eeCategory) } - if buffs.ValorOfAzeroth { - ApplyValorOfAzeroth(unit, eeCategory) - } } func ApplyRallyingCryOfTheDragonslayer(unit *Unit, category string) { @@ -2306,25 +2100,6 @@ func ApplyRallyingCryOfTheDragonslayer(unit *Unit, category string) { }) } -func ApplyValorOfAzeroth(unit *Unit, category string) { - bonusAP := float64(unit.Level) * 1.5 - aura := MakePermanent(unit.RegisterAura(Aura{ - Label: "Valor of Azeroth", - ActionID: ActionID{SpellID: 461475}, - })) - - makeExclusiveBuff(aura, BuffConfig{ - Category: category, - Stats: []StatConfig{ - {stats.SpellCrit, 5 * SpellCritRatingPerCritChance, false}, - {stats.MeleeCrit, 5 * CritRatingPerCritChance, false}, - // TODO: {stats.RangedCrit, 5*CritRatingPerCritChance, false}, - {stats.AttackPower, bonusAP, false}, - {stats.RangedAttackPower, bonusAP, false}, - }, - }) -} - func ApplySpiritOfZandalar(unit *Unit) { aura := MakePermanent(unit.RegisterAura(Aura{ Label: "Spirit of Zandalar", @@ -2368,12 +2143,9 @@ func ApplySongflowerSerenade(unit *Unit) { } func ApplyWarchiefsBuffs(unit *Unit, buffs *proto.IndividualBuffs, isAlliance bool, isHorde bool) { - if buffs.WarchiefsBlessing && isHorde { + if buffs.WarchiefsBlessing /* && isHorde */ { ApplyWarchiefsBlessing(unit, "WarchiefsBuff") } - if buffs.MightOfStormwind && isAlliance { - ApplyMightOfStormwind(unit, "WarchiefsBuff") - } } func ApplyWarchiefsBlessing(unit *Unit, category string) { @@ -2397,27 +2169,6 @@ func ApplyWarchiefsBlessing(unit *Unit, category string) { }) } -func ApplyMightOfStormwind(unit *Unit, category string) { - aura := MakePermanent(unit.RegisterAura(Aura{ - Label: "Might of Stormwind", - ActionID: ActionID{SpellID: 460940}, - })) - - makeExclusiveBuff(aura, BuffConfig{ - Category: category, - Stats: []StatConfig{ - {stats.Health, 300, false}, - {stats.MP5, 10, false}, - }, - ExtraOnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.MeleeSpeedMultiplier *= 1.15 - }, - ExtraOnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.MeleeSpeedMultiplier /= 1.15 - }, - }) -} - func ApplyFengusFerocity(unit *Unit) { aura := MakePermanent(unit.RegisterAura(Aura{ Label: "Fengus' Ferocity", @@ -2517,105 +2268,6 @@ func ApplySaygesFortunes(character *Character, fortune proto.SaygesFortune) { makeExclusiveBuff(aura, config) } -func ApplyFervorOfTheTempleExplorer(unit *Unit) { - if unit.Level > 59 { - return - } - - aura := MakePermanent(unit.RegisterAura(Aura{ - Label: "Fervor of the Temple Explorer", - ActionID: ActionID{SpellID: 446695}, - })) - - makeExclusiveBuff(aura, BuffConfig{ - Category: "FervorOfTheTempleExplorer", - Stats: []StatConfig{ - {stats.Agility, 1.08, true}, - {stats.Intellect, 1.08, true}, - {stats.Spirit, 1.08, true}, - {stats.Stamina, 1.08, true}, - {stats.Strength, 1.08, true}, - {stats.MeleeCrit, 5 * CritRatingPerCritChance, false}, - // TODO: {stats.RangedCrit, 5*CritRatingPerCritChance, false}, - {stats.SpellCrit, 5 * SpellCritRatingPerCritChance, false}, - {stats.SpellDamage, 65, false}, - }, - }) -} - -func ApplySparkOfInspiration(unit *Unit) { - if unit.Level > 49 { - return - } - - aura := MakePermanent(unit.RegisterAura(Aura{ - Label: "Spark of Inspiration", - ActionID: ActionID{SpellID: 438536}, - })) - - makeExclusiveBuff(aura, BuffConfig{ - Category: "SparkOfInspiration", - Stats: []StatConfig{ - {stats.SpellCrit, 4 * SpellCritRatingPerCritChance, false}, - {stats.SpellPower, 42, false}, - }, - ExtraOnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.MeleeSpeedMultiplier *= 1.1 - aura.Unit.PseudoStats.RangedSpeedMultiplier *= 1.1 - }, - ExtraOnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.MeleeSpeedMultiplier /= 1.1 - aura.Unit.PseudoStats.RangedSpeedMultiplier /= 1.1 - }, - }) -} - -func ApplyBoonOfBlackfathom(unit *Unit) { - if unit.Level > 39 { - return - } - - aura := MakePermanent(unit.RegisterAura(Aura{ - Label: "Boon of Blackfathom", - ActionID: ActionID{SpellID: 430947}, - })) - - makeExclusiveBuff(aura, BuffConfig{ - Category: "BoonOfBlackfathom", - Stats: []StatConfig{ - {stats.MeleeCrit, 2 * CritRatingPerCritChance, false}, - // TODO: {stats.RangedCrit, 2 * CritRatingPerCritChance, false}, - {stats.SpellHit, 3 * SpellHitRatingPerHitChance, false}, - {stats.AttackPower, 20, false}, - {stats.RangedAttackPower, 20, false}, - {stats.SpellPower, 25, false}, - }, - }) -} - -func ApplyAshenvaleRallyingCry(unit *Unit) { - if unit.Level > 39 { - return - } - - aura := MakePermanent(unit.RegisterAura(Aura{ - Label: "Ashenvale Rallying Cry", - ActionID: ActionID{SpellID: 430352}, - })) - - makeExclusiveBuff(aura, BuffConfig{ - Category: "AshenvaleRallyingCry", - ExtraOnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.DamageDealtMultiplier *= 1.05 - aura.Unit.PseudoStats.HealingDealtMultiplier *= 1.05 - }, - ExtraOnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.DamageDealtMultiplier /= 1.05 - aura.Unit.PseudoStats.HealingDealtMultiplier /= 1.05 - }, - }) -} - /////////////////////////////////////////////////////////////////////////// // Misc Other Buffs /////////////////////////////////////////////////////////////////////////// diff --git a/sim/core/character.go b/sim/core/character.go index 6d5f373e7..5bc365cb8 100644 --- a/sim/core/character.go +++ b/sim/core/character.go @@ -70,7 +70,6 @@ type Character struct { professions [2]proto.Profession - runesMap map[int32]bool PrimaryTalentTree uint8 // Provides major cooldown management behavior. @@ -139,13 +138,6 @@ func NewCharacter(party *Party, partyIndex int, player *proto.Player) Character character.Label = fmt.Sprintf("%s (#%d)", character.Name, character.Index+1) - character.runesMap = map[int32]bool{} - for _, v := range character.Equipment { - if v.Rune != 0 { - character.runesMap[v.Rune] = true - } - } - character.PrimaryTalentTree = GetPrimaryTalentTreeIndex(player.TalentsString) character.Consumes = &proto.Consumes{} @@ -190,7 +182,6 @@ func NewCharacter(party *Party, partyIndex int, player *proto.Player) Character character.PseudoStats.CrossbowsSkill += ps[proto.PseudoStat_PseudoStatCrossbowsSkill] character.PseudoStats.GunsSkill += ps[proto.PseudoStat_PseudoStatGunsSkill] character.PseudoStats.BonusPhysicalDamage += ps[proto.PseudoStat_BonusPhysicalDamage] - character.PseudoStats.TimewornBonus += int32(ps[proto.PseudoStat_TimewornBonus]) } } @@ -253,10 +244,6 @@ func (character *Character) BaseEquipStats() stats.Stats { return bonusEquipStats.DotProduct(character.itemStatMultipliers) } -func (character *Character) HasRuneById(id int32) bool { - return character.runesMap[id] -} - func (character *Character) applyEquipment() { if character.equipStatsApplied { panic("Equipment stats already applied to character!") @@ -265,10 +252,6 @@ func (character *Character) applyEquipment() { character.equipStatsApplied = true for _, item := range character.Equipment { - if item.Timeworn { - character.PseudoStats.TimewornBonus += 1 - } - character.PseudoStats.BonusPhysicalDamage += item.BonusPhysicalDamage } @@ -324,14 +307,12 @@ func (character *Character) applyAllEffects(agent Agent, raidBuffs *proto.RaidBu character.applyEquipment() character.applyWeaponSkills() - character.ApplyRingRunes() character.applyItemEffects(agent) character.applyItemSetBonusEffects(agent) character.applyBuildPhaseAuras(CharacterBuildPhaseGear) playerStats.GearStats = measureStats() agent.ApplyTalents() - agent.ApplyRunes() character.applyBuildPhaseAuras(CharacterBuildPhaseTalents) playerStats.TalentsStats = measureStats() @@ -641,7 +622,6 @@ func (character *Character) GetPseudoStatsProto() []float64 { proto.PseudoStat_PseudoStatRangedSpeedMultiplier: float64(character.PseudoStats.RangedSpeedMultiplier), proto.PseudoStat_PseudoStatBlockValuePerStrength: float64(character.PseudoStats.BlockValuePerStrength), - proto.PseudoStat_TimewornBonus: float64(character.PseudoStats.TimewornBonus), proto.PseudoStat_BonusPhysicalDamage: float64(character.PseudoStats.BonusPhysicalDamage), } } @@ -693,82 +673,6 @@ func (character *Character) SetShapeshift(aura *Aura) { character.ActiveShapeShift = aura } -func (c *Character) ApplyRingRunes() { - // Spell School Specializations - if c.HasRuneById(int32(proto.RingRune_RuneRingArcaneSpecialization)) { - c.PseudoStats.SchoolBonusHitChance[stats.SchoolIndexArcane] += 6 - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingFireSpecialization)) { - c.PseudoStats.SchoolBonusHitChance[stats.SchoolIndexFire] += 6 - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingFrostSpecialization)) { - c.PseudoStats.SchoolBonusHitChance[stats.SchoolIndexFrost] += 6 - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingHolySpecialization)) { - c.PseudoStats.SchoolBonusHitChance[stats.SchoolIndexHoly] += 6 - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingNatureSpecialization)) { - c.PseudoStats.SchoolBonusHitChance[stats.SchoolIndexNature] += 6 - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingShadowSpecialization)) { - c.PseudoStats.SchoolBonusHitChance[stats.SchoolIndexShadow] += 6 - } - - // Weapon Skill Specializations - if c.HasRuneById(int32(proto.RingRune_RuneRingAxeSpecialization)) { - c.AxeSpecializationAura() - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingDaggerSpecialization)) { - c.DaggerSpecializationAura() - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingFistWeaponSpecialization)) { - c.FistWeaponSpecializationAura() - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingMaceSpecialization)) { - c.MaceSpecializationAura() - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingPoleWeaponSpecialization)) { - c.PoleWeaponSpecializationAura() - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingRangedWeaponSpecialization)) { - c.GunSpecializationAura() - c.BowSpecializationAura() - c.CrossbowSpecializationAura() - c.ThrownSpecializationAura() - - // Also increases chance for Beast pets to hit by 2% - for _, pet := range c.Pets { - if !pet.IsGuardian() && pet.Unit.MobType == proto.MobType_MobTypeBeast { - pet.AddStat(stats.MeleeHit, 2*MeleeHitRatingPerHitChance) - pet.AddStat(stats.SpellHit, 2*SpellHitRatingPerHitChance) - } - } - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingSwordSpecialization)) { - c.SwordSpecializationAura() - } - - if c.HasRuneById(int32(proto.RingRune_RuneRingFeralCombatSpecialization)) { - c.FeralCombatSpecializationAura() - } - - // Other Specializations - if c.HasRuneById(int32(proto.RingRune_RuneRingDefenseSpecialization)) { - c.AddStat(stats.Defense, 25) - } -} - // Returns the talent tree (0, 1, or 2) of the tree with the most points. // // talentStr is expected to be a wowhead-formatted talent string, e.g. diff --git a/sim/core/consumes.go b/sim/core/consumes.go index 842d7dc25..0193d9153 100644 --- a/sim/core/consumes.go +++ b/sim/core/consumes.go @@ -25,11 +25,9 @@ func applyConsumeEffects(agent Agent) { applySpellBuffConsumes(character, consumes) applyZanzaBuffConsumes(character, consumes) applyMiscConsumes(character, consumes.MiscConsumes) - applyEnchantingConsumes(character, consumes) registerPotionCD(agent, consumes) registerConjuredCD(agent, consumes) - registerMildlyIrradiatedRejuvCD(agent, consumes) registerExplosivesCD(agent, consumes) } @@ -53,21 +51,6 @@ func applyFlaskConsumes(character *Character, consumes *proto.Consumes) { character.AddStats(stats.Stats{ stats.Mana: 2000, }) - case proto.Flask_FlaskOfUnyieldingSorrow: - character.AddStats(stats.Stats{ - stats.SpellDamage: 27, - stats.HealingPower: 80, - stats.MP5: 12, - }) - case proto.Flask_FlaskOfAncientKnowledge: - character.AddStats(stats.Stats{ - stats.SpellPower: 180, - }) - case proto.Flask_FlaskOfTheOldGods: - character.AddStats(stats.Stats{ - stats.Stamina: 100, - stats.Defense: 10, - }) case proto.Flask_FlaskOfSupremePower: character.AddStats(stats.Stats{ stats.SpellPower: 150, @@ -78,23 +61,6 @@ func applyFlaskConsumes(character *Character, consumes *proto.Consumes) { }) case proto.Flask_FlaskOfChromaticResistance: character.AddResistances(25) - case proto.Flask_FlaskOfRestlessDreams: - character.AddStats(stats.Stats{ - // +30 Spell Damage, +45 Healing Power, +12 MP5 - stats.SpellDamage: 30, - stats.HealingPower: 15, - stats.MP5: 12, - }) - case proto.Flask_FlaskOfEverlastingNightmares: - character.AddStats(stats.Stats{ - stats.AttackPower: 45, - stats.RangedAttackPower: 45, - }) - case proto.Flask_FlaskOfMadness: - character.AddStats(stats.Stats{ - stats.AttackPower: 50, - stats.RangedAttackPower: 50, - }) } } @@ -138,11 +104,6 @@ func addImbueStats(character *Character, imbue proto.WeaponImbue, isMh bool, sha stats.SpellPower: 36, stats.SpellCrit: 1 * SpellCritRatingPerCritChance, }) - case proto.WeaponImbue_EnchantedRepellent: - character.AddStats(stats.Stats{ - stats.SpellPower: 45, - stats.SpellCrit: 1 * SpellCritRatingPerCritChance, - }) // Mana Oils case proto.WeaponImbue_MinorManaOil: @@ -158,20 +119,6 @@ func addImbueStats(character *Character, imbue proto.WeaponImbue, isMh bool, sha stats.MP5: 12, stats.HealingPower: 25, }) - case proto.WeaponImbue_BlackfathomManaOil: - character.AddStats(stats.Stats{ - stats.MP5: 12, - stats.SpellHit: 2 * SpellHitRatingPerHitChance, - }) - - // Shield Oil - case proto.WeaponImbue_ConductiveShieldCoating: - character.AddStat(stats.SpellPower, 24) - case proto.WeaponImbue_MagnificentTrollshine: - character.AddStats(stats.Stats{ - stats.SpellPower: 36, - stats.SpellCrit: 1 * CritRatingPerCritChance, - }) // Sharpening Stones case proto.WeaponImbue_SolidSharpeningStone: @@ -192,10 +139,6 @@ func addImbueStats(character *Character, imbue proto.WeaponImbue, isMh bool, sha character.AddStats(stats.Stats{ stats.MeleeCrit: 2 * CritRatingPerCritChance, }) - case proto.WeaponImbue_BlackfathomSharpeningStone: - character.AddStats(stats.Stats{ - stats.MeleeHit: 2 * MeleeHitRatingPerHitChance, - }) // Weightstones case proto.WeaponImbue_SolidWeightstone: @@ -214,11 +157,6 @@ func addImbueStats(character *Character, imbue proto.WeaponImbue, isMh bool, sha weapon.BaseDamageMax += 8 // Windfury - case proto.WeaponImbue_WildStrikes: - //protect against double application if wild strikes is selected by a feral in sim settings - if !character.HasRuneById(int32(proto.DruidRune_RuneChestWildStrikes)) { - ApplyWildStrikes(character) - } case proto.WeaponImbue_Windfury: ApplyWindfury(character) case proto.WeaponImbue_ShadowOil: @@ -461,12 +399,6 @@ func DragonBreathChiliAura(character *Character) *Aura { func applyDefensiveBuffConsumes(character *Character, consumes *proto.Consumes) { if consumes.ArmorElixir != proto.ArmorElixir_ArmorElixirUnknown { switch consumes.ArmorElixir { - case proto.ArmorElixir_ElixirOfTheIronside: - character.AddStats(stats.Stats{ - stats.BonusArmor: 350, - stats.Defense: 5, - stats.NatureResistance: 15, - }) case proto.ArmorElixir_ElixirOfSuperiorDefense: character.AddStats(stats.Stats{ stats.BonusArmor: 450, @@ -523,12 +455,6 @@ func applyPhysicalBuffConsumes(character *Character, consumes *proto.Consumes) { if consumes.AgilityElixir != proto.AgilityElixir_AgilityElixirUnknown { switch consumes.AgilityElixir { - case proto.AgilityElixir_ElixirOfTheHoneyBadger: - character.AddStats(stats.Stats{ - stats.Agility: 30, - stats.MeleeCrit: 2 * CritRatingPerCritChance, - stats.NatureResistance: 15, - }) case proto.AgilityElixir_ElixirOfTheMongoose: character.AddStats(stats.Stats{ stats.Agility: 25, @@ -590,11 +516,6 @@ func applySpellBuffConsumes(character *Character, consumes *proto.Consumes) { character.AddStats(stats.Stats{ stats.SpellDamage: 35, }) - case proto.SpellPowerBuff_ElixirOfTheMageLord: - character.AddStats(stats.Stats{ - stats.SpellDamage: 40, - stats.NatureResistance: 15, - }) } } @@ -674,96 +595,6 @@ func applyZanzaBuffConsumes(character *Character, consumes *proto.Consumes) { character.AddStats(stats.Stats{ stats.Stamina: 25, }) - case proto.ZanzaBuff_AtalaiMojoOfWar: - if character.Level == 50 { - character.AddStats(stats.Stats{ - stats.AttackPower: 48, - stats.RangedAttackPower: 48, - }) - ApplyAtalAiProc(character, consumes.ZanzaBuff) - } - case proto.ZanzaBuff_AtalaiMojoOfForbiddenMagic: - if character.Level == 50 { - character.AddStats(stats.Stats{ - stats.SpellPower: 40, - }) - ApplyAtalAiProc(character, consumes.ZanzaBuff) - } - case proto.ZanzaBuff_AtalaiMojoOfLife: - if character.Level == 50 { - character.AddStats(stats.Stats{ - stats.HealingPower: 45, - stats.MP5: 11, - }) - ApplyAtalAiProc(character, consumes.ZanzaBuff) - } - } -} - -func ApplyAtalAiProc(character *Character, atalaiBuff proto.ZanzaBuff) { - icd := Cooldown{ - Timer: character.NewTimer(), - Duration: time.Second * 40, - } - - switch atalaiBuff { - case proto.ZanzaBuff_AtalaiMojoOfWar: - procAuraStr := character.NewTemporaryStatsAura("Voodoo Frenzy Str Proc", ActionID{SpellID: 446335}, stats.Stats{stats.Strength: 35}, time.Second*10) - procAuraAgi := character.NewTemporaryStatsAura("Voodoo Frenzy Agi Proc", ActionID{SpellID: 449409}, stats.Stats{stats.Agility: 35}, time.Second*10) - procAuraStr.Icd = &icd - procAuraAgi.Icd = &icd - - MakePermanent(character.RegisterAura(Aura{ - Label: "Voodoo Frenzy", - OnSpellHitDealt: func(aura *Aura, sim *Simulation, spell *Spell, result *SpellResult) { - if !result.Landed() || !spell.ProcMask.Matches(ProcMaskMeleeOrRanged) || !icd.IsReady(sim) { - return - } - - if sim.Proc(0.15, "Voodoo Frenzy") { - icd.Use(sim) - - if aura.Unit.GetStat(stats.Strength) > aura.Unit.GetStat(stats.Agility) { - procAuraStr.Activate(sim) - } else { - procAuraAgi.Activate(sim) - } - } - }, - })) - case proto.ZanzaBuff_AtalaiMojoOfForbiddenMagic: - procSpell := character.RegisterSpell(SpellConfig{ - ActionID: ActionID{SpellID: 446258}, - SpellSchool: SpellSchoolShadow, - ProcMask: ProcMaskEmpty, - DefenseType: DefenseTypeMagic, - - DamageMultiplier: 1, - ThreatMultiplier: 1, - BonusCoefficient: 0.56, - - ApplyEffects: func(sim *Simulation, target *Unit, spell *Spell) { - dmg := sim.Roll(204, 236) - spell.CalcAndDealDamage(sim, target, dmg, spell.OutcomeMagicCrit) // TODO: Verify if it rolls miss? Most procs dont so we have it like this - }, - }) - - MakePermanent(character.RegisterAura(Aura{ - Label: "Forbidden Magic", - OnSpellHitDealt: func(aura *Aura, sim *Simulation, spell *Spell, result *SpellResult) { - if !result.Landed() || !spell.ProcMask.Matches(ProcMaskSpellDamage) || !icd.IsReady(sim) { - return - } - - if sim.Proc(0.25, "Forbidden Magic") { - icd.Use(sim) - procSpell.Cast(sim, character.CurrentTarget) - } - }, - })) - case proto.ZanzaBuff_AtalaiMojoOfLife: - // TODO: Your heals have a chance to restore 8 Energy, 1% Mana, or 4 Rage - // This is also shared with the Darkmoon Card: Overgrowth trinket but unsure if they stack or not } } @@ -780,16 +611,6 @@ func applyMiscConsumes(character *Character, miscConsumes *proto.MiscConsumes) { character.PseudoStats.BonusPhysicalDamage += 1 } - if miscConsumes.ElixirOfCoalescedRegret { - character.AddStats(stats.Stats{ - stats.Stamina: 1, - stats.Agility: 1, - stats.Strength: 1, - stats.Intellect: 1, - stats.Spirit: 1, - }) - } - if miscConsumes.JujuEmber { character.AddStat(stats.FireResistance, 15) } @@ -874,56 +695,15 @@ func applyMiscConsumes(character *Character, miscConsumes *proto.MiscConsumes) { } } -/////////////////////////////////////////////////////////////////////////// -// Enchanting Consumes -/////////////////////////////////////////////////////////////////////////// - -func applyEnchantingConsumes(character *Character, consumes *proto.Consumes) { - switch consumes.EnchantedSigil { - case proto.EnchantedSigil_InnovationSigil: - character.AddStats(stats.Stats{ - stats.AttackPower: 20, - stats.RangedAttackPower: 20, - stats.SpellPower: 20, - }) - case proto.EnchantedSigil_LivingDreamsSigil: - character.AddStats(stats.Stats{ - stats.AttackPower: 30, - stats.RangedAttackPower: 30, - stats.SpellPower: 30, - }) - case proto.EnchantedSigil_FlowingWatersSigil: - for _, player := range character.Env.Raid.AllPlayerUnits { - player.AddStats(stats.Stats{ - stats.AttackPower: 30, - stats.RangedAttackPower: 30, - stats.SpellPower: 30, - }) - } - case proto.EnchantedSigil_WrathOfTheStormSigil: - for _, player := range character.Env.Raid.AllPlayerUnits { - player.AddStats(stats.Stats{ - stats.AttackPower: 40, - stats.RangedAttackPower: 40, - stats.SpellPower: 40, - }) - } - } -} - /////////////////////////////////////////////////////////////////////////// // Engineering Explosives /////////////////////////////////////////////////////////////////////////// var SapperActionID = ActionID{ItemID: 10646} -var FumigatorActionID = ActionID{ItemID: 233985} var SolidDynamiteActionID = ActionID{ItemID: 10507} var DenseDynamiteActionID = ActionID{ItemID: 18641} var ThoriumGrenadeActionID = ActionID{ItemID: 15993} -var EzThroRadiationBombActionID = ActionID{ItemID: 215168} -var HighYieldRadiationBombActionID = ActionID{ItemID: 215127} var GoblinLandMineActionID = ActionID{ItemID: 4395} -var ObsidianBombActionID = ActionID{ItemID: 233986} func registerExplosivesCD(agent Agent, consumes *proto.Consumes) { character := agent.GetCharacter() @@ -936,15 +716,13 @@ func registerExplosivesCD(agent Agent, consumes *proto.Consumes) { sharedTimer := character.NewTimer() if hasSapper { - if consumes.SapperExplosive != proto.SapperExplosive_SapperFumigator && !character.HasProfession(proto.Profession_Engineering) { + if !character.HasProfession(proto.Profession_Engineering) { return } var filler *Spell switch consumes.SapperExplosive { case proto.SapperExplosive_SapperGoblinSapper: filler = character.newSapperSpell(sharedTimer) - case proto.SapperExplosive_SapperFumigator: - filler = character.newFumigatorSpell(sharedTimer) } character.AddMajorCooldown(MajorCooldown{ Spell: filler, @@ -957,24 +735,18 @@ func registerExplosivesCD(agent Agent, consumes *proto.Consumes) { } if hasFiller { - if consumes.FillerExplosive != proto.Explosive_ExplosiveEzThroRadiationBomb && !character.HasProfession(proto.Profession_Engineering) { + if !character.HasProfession(proto.Profession_Engineering) { return } var filler *Spell switch consumes.FillerExplosive { - case proto.Explosive_ExplosiveObsidianBomb: - filler = character.newObisidianBombSpell(sharedTimer) case proto.Explosive_ExplosiveSolidDynamite: filler = character.newSolidDynamiteSpell(sharedTimer) case proto.Explosive_ExplosiveDenseDynamite: filler = character.newDenseDynamiteSpell(sharedTimer) case proto.Explosive_ExplosiveThoriumGrenade: filler = character.newThoriumGrenadeSpell(sharedTimer) - case proto.Explosive_ExplosiveEzThroRadiationBomb: - filler = character.newEzThroRadiationBombSpell(sharedTimer) - case proto.Explosive_ExplosiveHighYieldRadiationBomb: - filler = character.newHighYieldRadiationBombSpell(sharedTimer) case proto.Explosive_ExplosiveGoblinLandMine: filler = character.newGoblinLandMineSpell(sharedTimer) } @@ -993,7 +765,7 @@ func registerExplosivesCD(agent Agent, consumes *proto.Consumes) { // Creates a spell object for the common explosive case. // TODO: create 10s delay on Goblin Landmine cast to damage func (character *Character) newBasicExplosiveSpellConfig(sharedTimer *Timer, actionID ActionID, school SpellSchool, minDamage float64, maxDamage float64, cooldown Cooldown, selfMinDamage float64, selfMaxDamage float64) SpellConfig { - isSapper := actionID.SameAction(SapperActionID) || actionID.SameAction(FumigatorActionID) + isSapper := actionID.SameAction(SapperActionID) var defaultCast Cast if !isSapper { @@ -1045,13 +817,6 @@ func (character *Character) newSapperSpell(sharedTimer *Timer) *Spell { return character.GetOrRegisterSpell(character.newBasicExplosiveSpellConfig(sharedTimer, SapperActionID, SpellSchoolFire, 450, 750, Cooldown{Timer: character.NewTimer(), Duration: time.Minute * 5}, 375, 625)) } -// Needs testing for Silithid interaction if in raid -func (character *Character) newFumigatorSpell(sharedTimer *Timer) *Spell { - return character.GetOrRegisterSpell(character.newBasicExplosiveSpellConfig(sharedTimer, FumigatorActionID, SpellSchoolFire, 650, 950, Cooldown{Timer: character.NewTimer(), Duration: time.Minute * 5}, 475, 725)) -} -func (character *Character) newObisidianBombSpell(sharedTimer *Timer) *Spell { - return character.GetOrRegisterSpell(character.newBasicExplosiveSpellConfig(sharedTimer, ObsidianBombActionID, SpellSchoolFire, 530, 670, Cooldown{}, 0, 0)) -} func (character *Character) newSolidDynamiteSpell(sharedTimer *Timer) *Spell { return character.GetOrRegisterSpell(character.newBasicExplosiveSpellConfig(sharedTimer, SolidDynamiteActionID, SpellSchoolFire, 213, 287, Cooldown{}, 0, 0)) } @@ -1139,12 +904,6 @@ func (character *Character) newRadiationBombSpellConfig(sharedTimer *Timer, acti }, } } -func (character *Character) newEzThroRadiationBombSpell(sharedTimer *Timer) *Spell { - return character.GetOrRegisterSpell(character.newRadiationBombSpellConfig(sharedTimer, EzThroRadiationBombActionID, 112, 188, 10, Cooldown{})) -} -func (character *Character) newHighYieldRadiationBombSpell(sharedTimer *Timer) *Spell { - return character.GetOrRegisterSpell(character.newRadiationBombSpellConfig(sharedTimer, HighYieldRadiationBombActionID, 150, 250, 25, Cooldown{})) -} /////////////////////////////////////////////////////////////////////////// // Potions @@ -1497,36 +1256,3 @@ func registerConjuredCD(agent Agent, consumes *proto.Consumes) { character.AddMajorCooldown(mcd) } - -func registerMildlyIrradiatedRejuvCD(agent Agent, consumes *proto.Consumes) { - character := agent.GetCharacter() - - if consumes.MildlyIrradiatedRejuvPot { - actionID := ActionID{ItemID: 215162} - healthMetrics := character.NewHealthMetrics(actionID) - manaMetrics := character.NewManaMetrics(actionID) - aura := character.NewTemporaryStatsAura("Mildly Irradiated Rejuvenation Potion", actionID, stats.Stats{stats.AttackPower: 40, stats.SpellDamage: 35}, time.Second*20) - character.AddMajorCooldown(MajorCooldown{ - Type: CooldownTypeDPS, - Spell: character.GetOrRegisterSpell(SpellConfig{ - ActionID: actionID, - Flags: SpellFlagNoOnCastComplete, - Cast: CastConfig{ - CD: Cooldown{ - Timer: character.NewTimer(), - Duration: time.Minute * 2, - }, - }, - ApplyEffects: func(sim *Simulation, _ *Unit, _ *Spell) { - healthGain := sim.RollWithLabel(340, 460, "Mildly Irradiated Rejuvenation Potion") - manaGain := sim.RollWithLabel(262, 438, "Mildly Irradiated Rejuvenation Potion") - - character.GainHealth(sim, healthGain*character.PseudoStats.HealingTakenMultiplier, healthMetrics) - character.AddMana(sim, manaGain, manaMetrics) - - aura.Activate(sim) - }, - }), - }) - } -} diff --git a/sim/core/database.go b/sim/core/database.go index 4523af527..6cf27b8fb 100644 --- a/sim/core/database.go +++ b/sim/core/database.go @@ -66,12 +66,9 @@ type Item struct { SetID int32 // 0 if not part of a set. WeaponSkills stats.WeaponSkills - Timeworn bool - // Modified for each instance of the item. RandomSuffix RandomSuffix Enchant Enchant - Rune int32 //Internal use TempEnchant int32 @@ -96,7 +93,6 @@ func ItemFromProto(pData *proto.SimItem) Item { SetName: pData.SetName, SetID: pData.SetId, WeaponSkills: stats.WeaponSkillsFloatArray(pData.WeaponSkills), - Timeworn: pData.Timeworn, } } @@ -109,8 +105,6 @@ func (item *Item) ToItemSpecProto() *proto.ItemSpec { Id: item.ID, RandomSuffix: item.RandomSuffix.ID, Enchant: item.Enchant.EffectID, - - Rune: item.Rune, } } @@ -140,21 +134,10 @@ func EnchantFromProto(pData *proto.SimEnchant) Enchant { } } -type Rune struct { - ID int32 -} - -func RuneFromProto(pData *proto.SimRune) Rune { - return Rune{ - ID: pData.Id, - } -} - type ItemSpec struct { ID int32 RandomSuffix int32 Enchant int32 - Rune int32 } type Equipment [proto.ItemSlot_ItemSlotRanged + 1]Item @@ -249,7 +232,6 @@ func ProtoToEquipmentSpec(es *proto.EquipmentSpec) EquipmentSpec { ID: item.Id, RandomSuffix: item.RandomSuffix, Enchant: item.Enchant, - Rune: item.Rune, } } return coreEquip @@ -280,13 +262,6 @@ func NewItem(itemSpec ItemSpec) Item { // } } - if itemSpec.Rune != 0 { - item.Rune = itemSpec.Rune - // if rune, ok := RuneBySpellID[itemSpec.Rune]; ok { - // item.Rune = rune.ID - // } - } - return item } @@ -339,16 +314,6 @@ func (equipment *Equipment) BaseStats() stats.Stats { return equipStats } -func (equipment *Equipment) GetRuneIds() []int32 { - out := make([]int32, len(equipment)) - for _, v := range equipment { - if v.Rune != 0 { - out = append(out, v.Rune) - } - } - return out -} - func ItemTypeToSlot(it proto.ItemType) proto.ItemSlot { switch it { case proto.ItemType_ItemTypeHead: diff --git a/sim/core/database_load.go b/sim/core/database_load.go index 06a8b2c45..a2943360b 100644 --- a/sim/core/database_load.go +++ b/sim/core/database_load.go @@ -38,7 +38,6 @@ func init() { SetName: item.SetName, SetId: item.SetId, WeaponSkills: item.WeaponSkills, - Timeworn: item.Timeworn, } } diff --git a/sim/core/debuffs.go b/sim/core/debuffs.go index f21d0aeeb..13135db1f 100644 --- a/sim/core/debuffs.go +++ b/sim/core/debuffs.go @@ -62,40 +62,12 @@ func applyDebuffEffects(target *Unit, targetIdx int, debuffs *proto.Debuffs, rai }, raid) } - if debuffs.OccultPoison { - aura := OccultPoisonDebuffAura(target, level) - SchedulePeriodicDebuffApplication(aura, PeriodicActionOptions{ - Period: time.Millisecond * 1500, - NumTicks: 5, - TickImmediately: true, - Priority: ActionPriorityDOT, // High prio - OnAction: func(sim *Simulation) { - aura.Activate(sim) - if aura.IsActive() { - aura.AddStack(sim) - } - }, - }, raid) + if debuffs.CurseOfElements { + MakePermanent(CurseOfElementsAura(target, level)) } - if debuffs.MekkatorqueFistDebuff { - MakePermanent(MekkatorqueFistDebuffAura(target, level)) - } - - if debuffs.SerpentsStrikerFistDebuff { - MakePermanent(SerpentsStrikerFistDebuffAura(target, level)) - } - - if debuffs.MarkOfChaos { - MakePermanent(MarkOfChaosDebuffAura(target)) - } else { - if debuffs.CurseOfElements { - MakePermanent(CurseOfElementsAura(target, level)) - } - - if debuffs.CurseOfShadow { - MakePermanent(CurseOfShadowAura(target, level)) - } + if debuffs.CurseOfShadow { + MakePermanent(CurseOfShadowAura(target, level)) } if debuffs.ImprovedScorch && targetIdx == 0 { @@ -132,8 +104,6 @@ func applyDebuffEffects(target *Unit, targetIdx int, debuffs *proto.Debuffs, rai if debuffs.Stormstrike { MakePermanent(StormstrikeAura(target)) - } else if debuffs.Dreamstate { - MakePermanent(DreamstateAura(target)) } if debuffs.GiftOfArthas { @@ -144,18 +114,14 @@ func applyDebuffEffects(target *Unit, targetIdx int, debuffs *proto.Debuffs, rai MakePermanent(CurseOfVulnerabilityAura(target)) } - if debuffs.Mangle { + /* if debuffs.Mangle { MakePermanent(MangleAura(target, level)) - } + } */ if debuffs.CrystalYield { MakePermanent(CrystalYieldAura(target)) } - if debuffs.AncientCorrosivePoison > 0 { - ApplyFixedUptimeAura(AncientCorrosivePoisonAura(target), float64(debuffs.AncientCorrosivePoison)/100.0, GCDDefault, 1) - } - // Major Armor Debuffs if targetIdx == 0 { if debuffs.ExposeArmor != proto.TristateEffect_TristateEffectMissing { @@ -169,17 +135,6 @@ func applyDebuffEffects(target *Unit, targetIdx int, debuffs *proto.Debuffs, rai }, raid) } - if debuffs.SebaciousPoison != proto.TristateEffect_TristateEffectMissing { - aura := SebaciousPoisonAura(target, TernaryInt32(debuffs.SebaciousPoison == proto.TristateEffect_TristateEffectRegular, 0, 2), level) - SchedulePeriodicDebuffApplication(aura, PeriodicActionOptions{ - Period: time.Second * 3, - NumTicks: 1, - OnAction: func(sim *Simulation) { - aura.Activate(sim) - }, - }, raid) - } - if debuffs.SunderArmor { // Sunder Armor aura := SunderArmorAura(target, level) @@ -196,33 +151,16 @@ func applyDebuffEffects(target *Unit, targetIdx int, debuffs *proto.Debuffs, rai }, }, raid) } - - if debuffs.Homunculi > 0 { - // Calculate desired downtime based on selected uptimeCount (1 count = 10% uptime, 0%-100%) - totalDuration := time.Second * 15 - uptimePercent := float64(debuffs.Homunculi) / 100.0 - ApplyFixedUptimeAura(HomunculiArmorAura(target, level), uptimePercent, totalDuration, 1) - ApplyFixedUptimeAura(HomunculiAttackSpeedAura(target, level), uptimePercent, totalDuration, 1) - ApplyFixedUptimeAura(HomunculiAttackPowerAura(target, level), uptimePercent, totalDuration, 1) - } } if debuffs.CurseOfRecklessness { MakePermanent(CurseOfRecklessnessAura(target, level)) } - if debuffs.FaerieFire || debuffs.ImprovedFaerieFire { + if debuffs.FaerieFire { MakePermanent(FaerieFireAura(target, level)) } - if debuffs.ImprovedFaerieFire { - MakePermanent(ImprovedFaerieFireAura(target)) - } - - if debuffs.MeleeHunterDodgeDebuff { - MakePermanent(MeleeHunterDodgeReductionAura(target, level)) - } - if debuffs.CurseOfWeakness != proto.TristateEffect_TristateEffectMissing { MakePermanent(CurseOfWeaknessAura(target, GetTristateValueInt32(debuffs.CurseOfWeakness, 0, 3), level)) } @@ -241,9 +179,6 @@ func applyDebuffEffects(target *Unit, targetIdx int, debuffs *proto.Debuffs, rai if debuffs.ThunderClap != proto.TristateEffect_TristateEffectMissing { MakePermanent(ThunderClapAura(target, 8205, time.Second*22, GetTristateValueInt32(debuffs.ThunderClap, 10, 16))) } - if debuffs.Waylay { - MakePermanent(WaylayAura(target)) - } if debuffs.Thunderfury { MakePermanent(ThunderfuryASAura(target, level)) } @@ -297,7 +232,7 @@ func exclusiveNatureDamageTakenAura(unit *Unit, label string, actionID ActionID) func ExternalIsbCaster(_ *proto.Debuffs, target *Unit) { isbConfig := target.Env.Raid.Parties[0].Players[0].GetCharacter().IsbConfig - baseStacks := TernaryInt32(isbConfig.hasShadowflameRune, ISBNumStacksShadowflame, ISBNumStacksBase) + baseStacks := int32(ISBNumStacksBase) isbAura := ImprovedShadowBoltAura(target, 5, baseStacks) isbCrit := isbConfig.casterCrit / 100.0 var pa *PendingAction @@ -326,7 +261,6 @@ func ExternalIsbCaster(_ *proto.Debuffs, target *Unit) { } type IsbConfig struct { - hasShadowflameRune bool shadowBoltFrequency float64 casterCrit float64 isbWarlocks int32 @@ -335,7 +269,6 @@ type IsbConfig struct { func (character *Character) createIsbConfig(player *proto.Player) { character.IsbConfig = IsbConfig{ - hasShadowflameRune: player.IsbUsingShadowflame, shadowBoltFrequency: player.IsbSbFrequency, casterCrit: player.IsbCrit, isbWarlocks: player.IsbWarlocks, @@ -354,8 +287,7 @@ func (character *Character) createIsbConfig(player *proto.Player) { } const ( - ISBNumStacksBase = 4 - ISBNumStacksShadowflame = 30 + ISBNumStacksBase = 4 ) func ImprovedShadowBoltAura(unit *Unit, rank int32, stackCount int32) *Aura { @@ -557,93 +489,6 @@ func JudgementOfTheCrusaderAura(caster *Unit, target *Unit, level int32, mult fl }) } -func OccultPoisonDebuffAura(target *Unit, playerLevel int32) *Aura { - if playerLevel < 54 { - panic("Occult Poison requires level 54+") - } - - aura := target.GetOrRegisterAura(Aura{ - Label: "Occult Poison I", - ActionID: ActionID{SpellID: 462286}, - Duration: time.Second * 12, - MaxStacks: 5, - OnStacksChange: func(aura *Aura, sim *Simulation, oldStacks int32, newStacks int32) { - multiplier := (1 + .04*float64(newStacks)) / (1 + .04*float64(oldStacks)) - - // Applies too all except Holy - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexArcane] *= multiplier - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexFire] *= multiplier - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexFrost] *= multiplier - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexNature] *= multiplier - aura.Unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexShadow] *= multiplier - }, - }) - - return aura -} - -func MekkatorqueFistDebuffAura(target *Unit, playerLevel int32) *Aura { - if playerLevel < 40 { - panic("Mekkatorque's Arcano-Shredder requires level 40+") - } - - spellID := 434841 - resistance := 45.0 - dmgMod := 1.06 - - aura := target.GetOrRegisterAura(Aura{ - Label: "Mekkatorque Debuff", - ActionID: ActionID{SpellID: int32(spellID)}, - Duration: time.Second * 20, - }) - - // 0.01 priority as this overwrites the other spells of this category and does not allow them to be recast - spellSchoolDamageEffect(aura, stats.SchoolIndexArcane, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexFire, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexFrost, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexHoly, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexNature, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexShadow, dmgMod, 0.01, true) - - spellSchoolResistanceEffect(aura, stats.SchoolIndexArcane, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexFire, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexFrost, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexHoly, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexNature, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexShadow, resistance, 0.01, true) - - return aura -} - -// Mark of Chaos does not stack with Curse of Shadows and Elements -func MarkOfChaosDebuffAura(target *Unit) *Aura { - // That's right, 10.01%. Sneaky enough to override lock curses without being much stronger - dmgMod := 1.1001 - resistance := 75.01 - - aura := target.GetOrRegisterAura(Aura{ - Label: "Mark of Chaos", - ActionID: ActionID{SpellID: 461615}, - Duration: time.Second, // Duration is set by the applying curse - }) - - // Applies too all except Holy - // 0.01 priority as this overwrites the other spells of this category and does not allow them to be recast - spellSchoolDamageEffect(aura, stats.SchoolIndexArcane, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexFire, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexFrost, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexNature, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexShadow, dmgMod, 0.01, true) - - spellSchoolResistanceEffect(aura, stats.SchoolIndexArcane, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexFire, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexFrost, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexNature, resistance, 0.01, true) - spellSchoolResistanceEffect(aura, stats.SchoolIndexShadow, resistance, 0.01, true) - - return aura -} - func CurseOfElementsAura(target *Unit, playerLevel int32) *Aura { if playerLevel < 40 { return nil @@ -953,89 +798,6 @@ func ExposeArmorAura(target *Unit, improvedEA int32, playerLevel int32) *Aura { return aura } -func SebaciousPoisonAura(target *Unit, improvedEA int32, playerLevel int32) *Aura { - if playerLevel < 60 { - return nil - } - - spellID := map[int32]int32{ - 60: 439462, - }[playerLevel] - - arpen := map[int32]float64{ - 60: 1700, - }[playerLevel] - - arpen *= []float64{1, 1.25, 1.5}[improvedEA] - - aura := target.GetOrRegisterAura(Aura{ - Label: "Sebacious Poison", - ActionID: ActionID{SpellID: spellID}, - Duration: time.Second * 15, - }) - - aura.NewExclusiveEffect(majorArmorReductionEffectCategory, true, ExclusiveEffect{ - Priority: arpen, - OnGain: func(ee *ExclusiveEffect, sim *Simulation) { - aura.Unit.AddStatDynamic(sim, stats.Armor, -ee.Priority) - }, - OnExpire: func(ee *ExclusiveEffect, sim *Simulation) { - aura.Unit.AddStatDynamic(sim, stats.Armor, ee.Priority) - }, - }) - - return aura -} - -func HomunculiAttackSpeedAura(target *Unit, _ int32) *Aura { - multiplier := 1.1 - - aura := target.GetOrRegisterAura(Aura{ - Label: "Cripple (Homunculus)", - ActionID: ActionID{SpellID: 402808}, - Duration: time.Second * 15, - }) - - AtkSpeedReductionEffect(aura, multiplier) - return aura -} - -func HomunculiArmorAura(target *Unit, playerLevel int32) *Aura { - arpen := float64(185 + 35*(playerLevel-1)) - - aura := target.GetOrRegisterAura(Aura{ - Label: "Degrade (Homunculus)", - ActionID: ActionID{SpellID: 402818}, - Duration: time.Second * 15, - }) - - aura.NewExclusiveEffect(majorArmorReductionEffectCategory, true, ExclusiveEffect{ - Priority: arpen, - OnGain: func(ee *ExclusiveEffect, sim *Simulation) { - aura.Unit.AddStatDynamic(sim, stats.Armor, -ee.Priority) - }, - OnExpire: func(ee *ExclusiveEffect, sim *Simulation) { - aura.Unit.AddStatDynamic(sim, stats.Armor, ee.Priority) - }, - }) - - return aura -} - -func HomunculiAttackPowerAura(target *Unit, playerLevel int32) *Aura { - ap := float64(190 + 3*(playerLevel-1)) - - aura := target.GetOrRegisterAura(Aura{ - Label: "Demoralize (Homunculus)", - ActionID: ActionID{SpellID: 402811}, - Duration: time.Second * 15, - }) - - apReductionEffect(aura, ap) - - return aura -} - func CurseOfRecklessnessAura(target *Unit, playerLevel int32) *Aura { spellID := map[int32]int32{ 25: 704, @@ -1124,36 +886,6 @@ func faerieFireAuraInternal(target *Unit, label string, spellID int32, playerLev return aura } -func ImprovedFaerieFireAura(target *Unit) *Aura { - return target.GetOrRegisterAura(Aura{ - Label: "S03 - Item - T1 - Druid - Feral 2P Bonus", - ActionID: ActionID{SpellID: 455864}, - Duration: time.Second * 40, - OnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.BonusMeleeHitRatingTaken += 1 * MeleeHitRatingPerHitChance - aura.Unit.PseudoStats.BonusSpellHitRatingTaken += 1 * SpellHitRatingPerHitChance - }, - OnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.BonusMeleeHitRatingTaken -= 1 * MeleeHitRatingPerHitChance - aura.Unit.PseudoStats.BonusSpellHitRatingTaken -= 1 * SpellHitRatingPerHitChance - }, - }) -} - -func MeleeHunterDodgeReductionAura(target *Unit, _ int32) *Aura { - return target.GetOrRegisterAura(Aura{ - Label: "Stalked", - ActionID: ActionID{SpellID: 456393}, - Duration: time.Second * 30, - OnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.DodgeReduction += 0.01 - }, - OnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.PseudoStats.DodgeReduction -= 0.01 - }, - }) -} - func CurseOfWeaknessAura(target *Unit, points int32, playerLevel int32) *Aura { spellID := map[int32]int32{ 25: 6205, @@ -1300,16 +1032,6 @@ func ThunderClapAura(target *Unit, spellID int32, duration time.Duration, atkSpe return aura } -func WaylayAura(target *Unit) *Aura { - aura := target.GetOrRegisterAura(Aura{ - Label: "Waylay", - ActionID: ActionID{SpellID: 408699}, - Duration: time.Second * 8, - }) - AtkSpeedReductionEffect(aura, 1.1) - return aura -} - func ThunderfuryASAura(target *Unit, _ int32) *Aura { aura := target.GetOrRegisterAura(Aura{ Label: "Thunderfury", @@ -1376,48 +1098,3 @@ func CrystalYieldAura(target *Unit) *Aura { }, }) } - -func AncientCorrosivePoisonAura(target *Unit) *Aura { - return target.GetOrRegisterAura(Aura{ - Label: "Ancient Corrosive Poison", - ActionID: ActionID{SpellID: 422996}, - Duration: 15 * time.Second, - OnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.stats[stats.Armor] -= 150 - }, - OnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.stats[stats.Armor] += 150 - }, - }) -} - -func SerpentsStrikerFistDebuffAura(target *Unit, playerLevel int32) *Aura { - if playerLevel < 50 { - panic("Serpent's Striker requires level 50+") - } - - spellID := 447894 - resistance := 60.0 - dmgMod := 1.08 - - aura := target.GetOrRegisterAura(Aura{ - Label: "Serpents Striker Debuff", - ActionID: ActionID{SpellID: int32(spellID)}, - Duration: time.Second * 20, - OnGain: func(aura *Aura, sim *Simulation) { - aura.Unit.AddStatsDynamic(sim, stats.Stats{ - stats.NatureResistance: -resistance, - }) - }, - OnExpire: func(aura *Aura, sim *Simulation) { - aura.Unit.AddStatsDynamic(sim, stats.Stats{ - stats.NatureResistance: resistance, - }) - }, - }) - - // 0.01 priority as this overwrites the other spells of this category and does not allow them to be recast - spellSchoolDamageEffect(aura, stats.SchoolIndexNature, dmgMod, 0.01, true) - spellSchoolDamageEffect(aura, stats.SchoolIndexHoly, dmgMod, 0.01, true) - return aura -} diff --git a/sim/core/dot_test.go b/sim/core/dot_test.go index 4dbce05a6..5aec18ccc 100644 --- a/sim/core/dot_test.go +++ b/sim/core/dot_test.go @@ -42,7 +42,6 @@ func (fa *FakeAgent) Initialize() { } func (fa *FakeAgent) ApplyTalents() {} -func (fa *FakeAgent) ApplyRunes() {} func (fa *FakeAgent) Reset(_ *Simulation) {} func (fa *FakeAgent) OnGCDReady(_ *Simulation) {} diff --git a/sim/core/item_swaps.go b/sim/core/item_swaps.go index b0e52df31..78db51a83 100644 --- a/sim/core/item_swaps.go +++ b/sim/core/item_swaps.go @@ -264,6 +264,5 @@ func toItem(itemSpec *proto.ItemSpec) Item { ID: itemSpec.Id, Enchant: itemSpec.Enchant, - Rune: itemSpec.Rune, }) } diff --git a/sim/core/pet.go b/sim/core/pet.go index 2994bfe0e..c967253a5 100644 --- a/sim/core/pet.go +++ b/sim/core/pet.go @@ -275,5 +275,4 @@ func (pet *Pet) GetCharacter() *Character { func (pet *Pet) AddRaidBuffs(_ *proto.RaidBuffs) {} func (pet *Pet) AddPartyBuffs(_ *proto.PartyBuffs) {} func (pet *Pet) ApplyTalents() {} -func (pet *Pet) ApplyRunes() {} func (pet *Pet) OnGCDReady(_ *Simulation) {} diff --git a/sim/core/simsignals/api_test.go b/sim/core/simsignals/api_test.go index 1407547b9..8d87da8fe 100644 --- a/sim/core/simsignals/api_test.go +++ b/sim/core/simsignals/api_test.go @@ -34,7 +34,7 @@ func TestAbort(t *testing.T) { } rsr := &proto.RaidSimRequest{ - Raid: core.SinglePlayerRaidProto(player, core.FullPartyBuffs, core.FullRaidBuffsPhase4, core.FullDebuffsPhase4), + Raid: core.SinglePlayerRaidProto(player, core.FullPartyBuffs, core.FullRaidBuffs, core.FullDebuffs), Encounter: &proto.Encounter{ Duration: 300, Targets: []*proto.Target{ @@ -134,9 +134,9 @@ func TestAbort(t *testing.T) { t.Run("StatWeightsAsync", func(t *testing.T) { swr := &proto.StatWeightsRequest{ Player: player, - RaidBuffs: core.FullRaidBuffsPhase4, + RaidBuffs: core.FullRaidBuffs, PartyBuffs: core.FullPartyBuffs, - Debuffs: core.FullDebuffsPhase4, + Debuffs: core.FullDebuffs, Encounter: core.MakeSingleTargetEncounter(60, 0), SimOptions: core.StatWeightsDefaultSimTestOptions, Tanks: make([]*proto.UnitReference, 0), diff --git a/sim/core/stats/stats.go b/sim/core/stats/stats.go index 8484bb54e..5bce8902c 100644 --- a/sim/core/stats/stats.go +++ b/sim/core/stats/stats.go @@ -468,9 +468,6 @@ type PseudoStats struct { FeralCombatEnabled bool FeralCombatSkill float64 - // Tracks the number of Timeworn items equipped for Bronze Signet bonuses - TimewornBonus int32 - /////////////////////////////////////////////////// // Effects that apply when this unit is the target. /////////////////////////////////////////////////// diff --git a/sim/core/target_ai.go b/sim/core/target_ai.go index be01c85ef..2f6c1313b 100644 --- a/sim/core/target_ai.go +++ b/sim/core/target_ai.go @@ -53,7 +53,6 @@ func (target *Target) initialize(config *proto.Target) { func (target *Target) AddRaidBuffs(_ *proto.RaidBuffs) {} func (target *Target) AddPartyBuffs(_ *proto.PartyBuffs) {} func (target *Target) ApplyTalents() {} -func (target *Target) ApplyRunes() {} func (target *Target) GetCharacter() *Character { return nil } func (target *Target) Initialize() {} diff --git a/sim/core/target_dummy.go b/sim/core/target_dummy.go index 455a66b9c..e34147709 100644 --- a/sim/core/target_dummy.go +++ b/sim/core/target_dummy.go @@ -46,7 +46,6 @@ func (td *TargetDummy) GetCharacter() *Character { func (td *TargetDummy) AddRaidBuffs(raidBuffs *proto.RaidBuffs) {} func (td *TargetDummy) AddPartyBuffs(partyBuffs *proto.PartyBuffs) {} func (td *TargetDummy) ApplyTalents() {} -func (td *TargetDummy) ApplyRunes() {} func (td *TargetDummy) Initialize() {} func (td *TargetDummy) Reset(sim *Simulation) {} func (td *TargetDummy) ExecuteCustomRotation(sim *Simulation) {} diff --git a/sim/core/test_utils.go b/sim/core/test_utils.go index 311a5d956..c42d12790 100644 --- a/sim/core/test_utils.go +++ b/sim/core/test_utils.go @@ -93,47 +93,8 @@ var DefaultTargetProtoLvl60 = &proto.Target{ // Raid Buffs /////////////////////////////////////////////////////////////////////////// -var FullRaidBuffsPhase1 = &proto.RaidBuffs{ - ArcaneBrilliance: true, - AspectOfTheLion: true, - BattleShout: proto.TristateEffect_TristateEffectImproved, - BloodPact: proto.TristateEffect_TristateEffectImproved, - DevotionAura: proto.TristateEffect_TristateEffectImproved, - GiftOfTheWild: proto.TristateEffect_TristateEffectImproved, - PowerWordFortitude: proto.TristateEffect_TristateEffectImproved, - RetributionAura: proto.TristateEffect_TristateEffectImproved, - StrengthOfEarthTotem: proto.TristateEffect_TristateEffectImproved, - Thorns: proto.TristateEffect_TristateEffectImproved, -} - -var FullRaidBuffsPhase2 = &proto.RaidBuffs{ +var FullRaidBuffs = &proto.RaidBuffs{ ArcaneBrilliance: true, - AspectOfTheLion: true, - BattleShout: proto.TristateEffect_TristateEffectImproved, - BloodPact: proto.TristateEffect_TristateEffectImproved, - DevotionAura: proto.TristateEffect_TristateEffectImproved, - DivineSpirit: true, - FireResistanceAura: true, - FireResistanceTotem: true, - FrostResistanceAura: true, - FrostResistanceTotem: true, - GiftOfTheWild: proto.TristateEffect_TristateEffectImproved, - LeaderOfThePack: true, - ManaSpringTotem: proto.TristateEffect_TristateEffectImproved, - MoonkinAura: true, - NatureResistanceTotem: true, - PowerWordFortitude: proto.TristateEffect_TristateEffectImproved, - RetributionAura: proto.TristateEffect_TristateEffectImproved, - ShadowProtection: true, - StrengthOfEarthTotem: proto.TristateEffect_TristateEffectImproved, - Thorns: proto.TristateEffect_TristateEffectImproved, - TrueshotAura: true, - SanctityAura: true, -} - -var FullRaidBuffsPhase3 = &proto.RaidBuffs{ - ArcaneBrilliance: true, - AspectOfTheLion: true, BattleShout: proto.TristateEffect_TristateEffectImproved, BloodPact: proto.TristateEffect_TristateEffectImproved, DevotionAura: proto.TristateEffect_TristateEffectImproved, @@ -157,59 +118,6 @@ var FullRaidBuffsPhase3 = &proto.RaidBuffs{ SanctityAura: true, } -var FullRaidBuffsPhase4 = &proto.RaidBuffs{ - ArcaneBrilliance: true, - AspectOfTheLion: true, - BattleShout: proto.TristateEffect_TristateEffectImproved, - BloodPact: proto.TristateEffect_TristateEffectImproved, - DevotionAura: proto.TristateEffect_TristateEffectImproved, - DivineSpirit: true, - FireResistanceAura: true, - FireResistanceTotem: true, - FrostResistanceAura: true, - FrostResistanceTotem: true, - GiftOfTheWild: proto.TristateEffect_TristateEffectImproved, - GraceOfAirTotem: proto.TristateEffect_TristateEffectImproved, - LeaderOfThePack: true, - ManaSpringTotem: proto.TristateEffect_TristateEffectImproved, - MoonkinAura: true, - NatureResistanceTotem: true, - PowerWordFortitude: proto.TristateEffect_TristateEffectImproved, - RetributionAura: proto.TristateEffect_TristateEffectImproved, - ShadowProtection: true, - StrengthOfEarthTotem: proto.TristateEffect_TristateEffectImproved, - Thorns: proto.TristateEffect_TristateEffectImproved, - TrueshotAura: true, - SanctityAura: true, -} - -var FullRaidBuffsPhase5 = &proto.RaidBuffs{ - ArcaneBrilliance: true, - AspectOfTheLion: true, - BattleShout: proto.TristateEffect_TristateEffectImproved, - BloodPact: proto.TristateEffect_TristateEffectImproved, - DevotionAura: proto.TristateEffect_TristateEffectImproved, - DivineSpirit: true, - FireResistanceAura: true, - FireResistanceTotem: true, - FrostResistanceAura: true, - FrostResistanceTotem: true, - GiftOfTheWild: proto.TristateEffect_TristateEffectImproved, - GraceOfAirTotem: proto.TristateEffect_TristateEffectImproved, - HornOfLordaeron: true, - LeaderOfThePack: true, - ManaSpringTotem: proto.TristateEffect_TristateEffectImproved, - MoonkinAura: true, - NatureResistanceTotem: true, - PowerWordFortitude: proto.TristateEffect_TristateEffectImproved, - RetributionAura: proto.TristateEffect_TristateEffectImproved, - ShadowProtection: true, - StrengthOfEarthTotem: proto.TristateEffect_TristateEffectImproved, - Thorns: proto.TristateEffect_TristateEffectImproved, - TrueshotAura: true, - SanctityAura: true, -} - /////////////////////////////////////////////////////////////////////////// // Party Buffs /////////////////////////////////////////////////////////////////////////// @@ -220,64 +128,18 @@ var FullPartyBuffs = &proto.PartyBuffs{} // Individual Buffs /////////////////////////////////////////////////////////////////////////// -var FullIndividualBuffsPhase1 = &proto.IndividualBuffs{ - AshenvalePvpBuff: true, - BlessingOfKings: true, - BlessingOfMight: proto.TristateEffect_TristateEffectImproved, - BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved, - BoonOfBlackfathom: true, - SaygesFortune: proto.SaygesFortune_SaygesDamage, -} - -var FullIndividualBuffsPhase2 = &proto.IndividualBuffs{ - BlessingOfKings: true, - BlessingOfMight: proto.TristateEffect_TristateEffectImproved, - BlessingOfSanctuary: true, - BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved, - SaygesFortune: proto.SaygesFortune_SaygesDamage, - SparkOfInspiration: true, -} - -var FullIndividualBuffsPhase3 = &proto.IndividualBuffs{ - BlessingOfKings: true, - BlessingOfMight: proto.TristateEffect_TristateEffectImproved, - BlessingOfSanctuary: true, - BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved, - FervorOfTheTempleExplorer: true, - SaygesFortune: proto.SaygesFortune_SaygesDamage, - SongflowerSerenade: true, -} - -var FullIndividualBuffsPhase4 = &proto.IndividualBuffs{ - BlessingOfKings: true, - BlessingOfMight: proto.TristateEffect_TristateEffectImproved, - BlessingOfSanctuary: true, - BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved, - FengusFerocity: true, - MightOfStormwind: true, - MoldarsMoxie: true, - RallyingCryOfTheDragonslayer: true, - SaygesFortune: proto.SaygesFortune_SaygesDamage, - SlipkiksSavvy: true, - SongflowerSerenade: true, - ValorOfAzeroth: true, - WarchiefsBlessing: true, -} - -var FullIndividualBuffsPhase5 = &proto.IndividualBuffs{ +var FullIndividualBuffs = &proto.IndividualBuffs{ BlessingOfKings: true, BlessingOfMight: proto.TristateEffect_TristateEffectImproved, BlessingOfSanctuary: true, BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved, FengusFerocity: true, - MightOfStormwind: true, MoldarsMoxie: true, RallyingCryOfTheDragonslayer: true, SaygesFortune: proto.SaygesFortune_SaygesDamage, SlipkiksSavvy: true, SongflowerSerenade: true, SpiritOfZandalar: true, - ValorOfAzeroth: true, WarchiefsBlessing: true, } @@ -285,48 +147,7 @@ var FullIndividualBuffsPhase5 = &proto.IndividualBuffs{ // Debuffs /////////////////////////////////////////////////////////////////////////// -var FullDebuffsPhase1 = &proto.Debuffs{ - CurseOfElementsNew: proto.TristateEffect_TristateEffectRegular, - CurseOfRecklessness: true, - CurseOfVulnerability: true, - CurseOfWeakness: proto.TristateEffect_TristateEffectImproved, - DemoralizingRoar: proto.TristateEffect_TristateEffectImproved, - DemoralizingShout: proto.TristateEffect_TristateEffectImproved, - Dreamstate: true, - ExposeArmor: proto.TristateEffect_TristateEffectImproved, - FaerieFire: true, - InsectSwarm: true, - ImprovedShadowBolt: true, - ScorpidSting: true, - SunderArmor: true, - ThunderClap: proto.TristateEffect_TristateEffectImproved, -} - -var FullDebuffsPhase2 = &proto.Debuffs{ - CurseOfElementsNew: proto.TristateEffect_TristateEffectRegular, - CurseOfRecklessness: true, - CurseOfVulnerability: true, - CurseOfWeakness: proto.TristateEffect_TristateEffectImproved, - DemoralizingRoar: proto.TristateEffect_TristateEffectImproved, - DemoralizingShout: proto.TristateEffect_TristateEffectImproved, - Dreamstate: true, - ExposeArmor: proto.TristateEffect_TristateEffectImproved, - FaerieFire: true, - InsectSwarm: true, - ImprovedScorch: true, - ImprovedShadowBolt: true, - JudgementOfLight: true, - JudgementOfWisdom: true, - JudgementOfTheCrusader: proto.TristateEffect_TristateEffectImproved, - ScorpidSting: true, - ShadowWeaving: true, - Stormstrike: true, - SunderArmor: true, - ThunderClap: proto.TristateEffect_TristateEffectImproved, - WintersChill: true, -} - -var FullDebuffsPhase3 = &proto.Debuffs{ +var FullDebuffs = &proto.Debuffs{ CurseOfElements: true, CurseOfShadow: true, CurseOfRecklessness: true, @@ -334,43 +155,14 @@ var FullDebuffsPhase3 = &proto.Debuffs{ CurseOfWeakness: proto.TristateEffect_TristateEffectImproved, DemoralizingRoar: proto.TristateEffect_TristateEffectImproved, DemoralizingShout: proto.TristateEffect_TristateEffectImproved, - Dreamstate: true, ExposeArmor: proto.TristateEffect_TristateEffectImproved, FaerieFire: true, - InsectSwarm: true, - ImprovedScorch: true, - ImprovedShadowBolt: true, - JudgementOfLight: true, - JudgementOfWisdom: true, - JudgementOfTheCrusader: proto.TristateEffect_TristateEffectImproved, - ScorpidSting: true, - ShadowWeaving: true, - Stormstrike: true, - SunderArmor: true, - ThunderClap: proto.TristateEffect_TristateEffectImproved, - WintersChill: true, -} - -var FullDebuffsPhase4 = &proto.Debuffs{ - CurseOfElements: true, - CurseOfShadow: true, - CurseOfRecklessness: true, - CurseOfVulnerability: true, - CurseOfWeakness: proto.TristateEffect_TristateEffectImproved, - DemoralizingRoar: proto.TristateEffect_TristateEffectImproved, - DemoralizingShout: proto.TristateEffect_TristateEffectImproved, - Dreamstate: true, - ExposeArmor: proto.TristateEffect_TristateEffectImproved, - FaerieFire: true, - ImprovedFaerieFire: true, ImprovedScorch: true, ImprovedShadowBolt: true, InsectSwarm: true, JudgementOfLight: true, JudgementOfWisdom: true, JudgementOfTheCrusader: proto.TristateEffect_TristateEffectImproved, - OccultPoison: true, - MarkOfChaos: true, ScorpidSting: true, ShadowWeaving: true, Stormstrike: true, @@ -383,49 +175,13 @@ var FullDebuffsPhase4 = &proto.Debuffs{ // Full Buffs /////////////////////////////////////////////////////////////////////////// -var FullBuffsPhase1 = BuffsCombo{ - Label: "Phase 1 Buffs", - - Debuffs: FullDebuffsPhase1, - Party: FullPartyBuffs, - Player: FullIndividualBuffsPhase1, - Raid: FullRaidBuffsPhase1, -} - -var FullBuffsPhase2 = BuffsCombo{ - Label: "Phase 2 Buffs", - - Debuffs: FullDebuffsPhase2, - Party: FullPartyBuffs, - Player: FullIndividualBuffsPhase2, - Raid: FullRaidBuffsPhase2, -} - -var FullBuffsPhase3 = BuffsCombo{ - Label: "Phase 3 Buffs", - - Debuffs: FullDebuffsPhase3, - Party: FullPartyBuffs, - Player: FullIndividualBuffsPhase3, - Raid: FullRaidBuffsPhase3, -} - -var FullBuffsPhase4 = BuffsCombo{ - Label: "Phase 4 Buffs", - - Debuffs: FullDebuffsPhase4, - Party: FullPartyBuffs, - Player: FullIndividualBuffsPhase4, - Raid: FullRaidBuffsPhase4, -} - -var FullBuffsPhase5 = BuffsCombo{ +var FullBuffs = BuffsCombo{ Label: "Phase 5 Buffs", - Debuffs: FullDebuffsPhase4, + Debuffs: FullDebuffs, Party: FullPartyBuffs, - Player: FullIndividualBuffsPhase5, - Raid: FullRaidBuffsPhase5, + Player: FullIndividualBuffs, + Raid: FullRaidBuffs, } func NewDefaultTarget(playerLevel int32) *proto.Target { diff --git a/sim/druid/balance/TestBalance.results b/sim/druid/balance/TestBalance.results index 19c12e13a..5843f41bb 100644 --- a/sim/druid/balance/TestBalance.results +++ b/sim/druid/balance/TestBalance.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestBalance-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 239.085 - final_stats: 220.11 - final_stats: 330.22825 - final_stats: 198.605 - final_stats: 231.495 + final_stats: 217.35 + final_stats: 200.1 + final_stats: 300.2075 + final_stats: 180.55 + final_stats: 210.45 final_stats: 150 final_stats: 0 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 49.25 final_stats: 0 - final_stats: 26.1167 + final_stats: 25.81519 final_stats: 0 final_stats: 0 - final_stats: 1288.17 + final_stats: 1044.7 final_stats: 0 - final_stats: 24.9055 + final_stats: 23.905 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 3943.075 + final_stats: 3672.25 final_stats: 0 final_stats: 0 - final_stats: 824.22 - final_stats: 740 + final_stats: 784.2 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 11.9055 + final_stats: 10.905 final_stats: 5 final_stats: 0 - final_stats: 5150.54663 + final_stats: 4835.32875 final_stats: 27 final_stats: 60 final_stats: 60 @@ -53,9 +53,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.37782 + weights: 0.41993 weights: 0 - weights: 0.62387 + weights: 0.49198 weights: 0 weights: 0 weights: 0 @@ -63,8 +63,8 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 5.31839 - weights: 3.89922 + weights: 4.11318 + weights: 3.16483 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestBalance-Phase5-Lvl60-Average-Default" value: { - dps: 627.91657 - tps: 648.91937 + dps: 502.03576 + tps: 523.22217 } } dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 637.43732 - tps: 876.00415 + dps: 520.28089 + tps: 758.25771 } } dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 500.50216 - tps: 513.48758 + dps: 409.77009 + tps: 422.72601 } } dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 646.78239 - tps: 667.57115 + dps: 536.40526 + tps: 557.19402 } } dps_results: { @@ -148,22 +148,22 @@ dps_results: { dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-Tauren-blank-Default-phase_5-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 634.031 - tps: 870.63116 + dps: 495.0913 + tps: 730.51146 } } dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-Tauren-blank-Default-phase_5-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 494.51054 - tps: 507.41238 + dps: 393.46144 + tps: 406.23053 } } dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-Tauren-blank-Default-phase_5-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 646.78239 - tps: 667.57115 + dps: 534.12213 + tps: 554.86172 } } dps_results: { @@ -190,7 +190,7 @@ dps_results: { dps_results: { key: "TestBalance-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 614.87792 - tps: 636.01809 + dps: 494.86012 + tps: 516.25597 } } diff --git a/sim/druid/balance/balance_test.go b/sim/druid/balance/balance_test.go index 1715c64a0..6e4e7d126 100644 --- a/sim/druid/balance/balance_test.go +++ b/sim/druid/balance/balance_test.go @@ -24,7 +24,7 @@ func TestBalance(t *testing.T) { Talents: Phase4Talents, GearSet: core.GetGearSet("../../../ui/balance_druid/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/balance_druid/apls", "phase_5"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Default", SpecOptions: PlayerOptionsAdaptive}, @@ -40,47 +40,6 @@ var Phase2Talents = "5000500302541051" var Phase3Talents = "5000550012551351--3" var Phase4Talents = "5000550012551251--5005031" -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_ManaPotion, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_BlackfathomManaOil, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_GreaterManaPotion, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - DefaultConjured: proto.Conjured_ConjuredDruidCatnip, - DefaultPotion: proto.Potions_MajorManaPotion, - Food: proto.Food_FoodNightfinSoup, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_ArcaneElixir, - }, -} - -var Phase4Consumes = core.ConsumesCombo{ - Label: "P4-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_MajorManaPotion, - Flask: proto.Flask_FlaskOfSupremePower, - Food: proto.Food_FoodNightfinSoup, - MainHandImbue: proto.WeaponImbue_WizardOil, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - }, -} - var Phase5Consumes = core.ConsumesCombo{ Label: "P5-Consumes", Consumes: &proto.Consumes{ diff --git a/sim/druid/druid.go b/sim/druid/druid.go index ef344d0c7..e9a65cba5 100644 --- a/sim/druid/druid.go +++ b/sim/druid/druid.go @@ -302,7 +302,7 @@ func (ds *DruidSpell) IsEqual(s *core.Spell) bool { } func (druid *Druid) HasRune(rune proto.DruidRune) bool { - return druid.HasRuneById(int32(rune)) + return false // druid.HasRuneById(int32(rune)) } func (druid *Druid) baseRuneAbilityDamage() float64 { diff --git a/sim/druid/feral/TestFeral.results b/sim/druid/feral/TestFeral.results index d5467bec2..288b814f9 100644 --- a/sim/druid/feral/TestFeral.results +++ b/sim/druid/feral/TestFeral.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestFeral-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 362.802 - final_stats: 251.735 - final_stats: 330.22825 - final_stats: 238.326 - final_stats: 231.495 + final_stats: 329.82 + final_stats: 228.85 + final_stats: 300.2075 + final_stats: 216.66 + final_stats: 210.45 final_stats: 0 final_stats: 0 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 41.25 final_stats: 0 - final_stats: 26.78004 + final_stats: 26.41822 final_stats: 0 final_stats: 0 - final_stats: 2037.339 + final_stats: 1748.49 final_stats: 0 - final_stats: 34.48675 + final_stats: 33.3425 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 6538.89 + final_stats: 6213.9 final_stats: 0 final_stats: 0 - final_stats: 887.47 - final_stats: 780 + final_stats: 841.7 + final_stats: 580 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 17.48675 + final_stats: 16.3425 final_stats: 5 final_stats: 0 - final_stats: 5150.54663 + final_stats: 4835.32875 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,8 +50,8 @@ character_stats_results: { stat_weights_results: { key: "TestFeral-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.75026 - weights: 0.72272 + weights: 0.67462 + weights: 0.53884 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.24721 - weights: 2.10282 - weights: 5.90116 + weights: 0.24451 + weights: 0 + weights: 5.48958 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Average-Default" value: { - dps: 790.00436 - tps: 585.35839 + dps: 709.44416 + tps: 528.09487 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-NoBleed-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 469.50516 - tps: 566.57795 + dps: 405.3226 + tps: 520.99922 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-NoBleed-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 444.08535 - tps: 327.02998 + dps: 384.24199 + tps: 284.53209 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-NoBleed-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 523.39685 - tps: 383.77484 + dps: 452.29707 + tps: 333.294 } } dps_results: { @@ -148,22 +148,22 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 469.50516 - tps: 566.57795 + dps: 405.3226 + tps: 520.99922 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 444.08535 - tps: 327.02998 + dps: 384.24199 + tps: 284.53209 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 523.39685 - tps: 383.77484 + dps: 452.29707 + tps: 333.294 } } dps_results: { @@ -190,22 +190,22 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Flower-Aoe-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 469.50516 - tps: 566.57795 + dps: 405.3226 + tps: 520.99922 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Flower-Aoe-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 444.08535 - tps: 327.02998 + dps: 384.24199 + tps: 284.53209 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Flower-Aoe-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 523.39685 - tps: 383.77484 + dps: 452.29707 + tps: 333.294 } } dps_results: { @@ -232,22 +232,22 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Default-NoBleed-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 468.71049 - tps: 565.71674 + dps: 420.29532 + tps: 530.84234 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Default-NoBleed-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 442.99381 - tps: 326.22329 + dps: 399.68342 + tps: 295.50391 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Default-NoBleed-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 522.97467 - tps: 384.13266 + dps: 472.61736 + tps: 351.86128 } } dps_results: { @@ -274,22 +274,22 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Default-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 468.71049 - tps: 565.71674 + dps: 420.29532 + tps: 530.84234 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Default-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 442.99381 - tps: 326.22329 + dps: 399.68342 + tps: 295.50391 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Default-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 522.97467 - tps: 384.13266 + dps: 472.61736 + tps: 351.86128 } } dps_results: { @@ -316,22 +316,22 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Flower-Aoe-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 468.71049 - tps: 565.71674 + dps: 420.29532 + tps: 530.84234 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Flower-Aoe-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 442.99381 - tps: 326.22329 + dps: 399.68342 + tps: 295.50391 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-Tauren-blank-Flower-Aoe-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 522.97467 - tps: 384.13266 + dps: 472.61736 + tps: 351.86128 } } dps_results: { @@ -358,7 +358,7 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 419.10818 - tps: 297.5668 + dps: 376.62744 + tps: 267.40548 } } diff --git a/sim/druid/feral/feral_test.go b/sim/druid/feral/feral_test.go index f4ace1766..cf6f43572 100644 --- a/sim/druid/feral/feral_test.go +++ b/sim/druid/feral/feral_test.go @@ -24,7 +24,7 @@ func TestFeral(t *testing.T) { Talents: Phase4Talents, GearSet: core.GetGearSet("../../../ui/feral_druid/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/feral_druid/apls", "phase_5"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Default", SpecOptions: PlayerOptionsMonoCat}, OtherSpecOptions: []core.SpecOptionsCombo{ @@ -74,45 +74,6 @@ var PlayerOptionsFlowerCatAoe = &proto.Player_FeralDruid{ }, } -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfLesserAgility, - DefaultConjured: proto.Conjured_ConjuredMinorRecombobulator, - DefaultPotion: proto.Potions_ManaPotion, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_WildStrikes, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - DefaultPotion: proto.Potions_GreaterManaPotion, - DragonBreathChili: true, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WildStrikes, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfTheMongoose, - DefaultPotion: proto.Potions_MajorManaPotion, - DragonBreathChili: true, - Food: proto.Food_FoodSmokedDesertDumpling, - MainHandImbue: proto.WeaponImbue_WildStrikes, - MiscConsumes: &proto.MiscConsumes{ - Catnip: true, - }, - StrengthBuff: proto.StrengthBuff_ElixirOfGiants, - }, -} - var Phase4Consumes = core.ConsumesCombo{ Label: "P4-Consumes", Consumes: &proto.Consumes{ @@ -124,10 +85,8 @@ var Phase4Consumes = core.ConsumesCombo{ Flask: proto.Flask_FlaskOfDistilledWisdom, Food: proto.Food_FoodSmokedDesertDumpling, MainHandImbue: proto.WeaponImbue_ElementalSharpeningStone, - MiscConsumes: &proto.MiscConsumes{ - Catnip: true, - }, - StrengthBuff: proto.StrengthBuff_JujuPower, + MiscConsumes: &proto.MiscConsumes{}, + StrengthBuff: proto.StrengthBuff_JujuPower, }, } diff --git a/sim/druid/runes.go b/sim/druid/runes.go index 8bb05f6db..4b016fa09 100644 --- a/sim/druid/runes.go +++ b/sim/druid/runes.go @@ -279,7 +279,7 @@ func (druid *Druid) applyWildStrikes() { return } - druid.WildStrikesBuffAura = core.ApplyWildStrikes(druid.GetCharacter()) + //druid.WildStrikesBuffAura = core.ApplyWildStrikes(druid.GetCharacter()) } func (druid *Druid) applyKingOfTheJungle() { diff --git a/sim/hunter/TestBM.results b/sim/hunter/TestBM.results index db0d582fa..36900a9d3 100644 --- a/sim/hunter/TestBM.results +++ b/sim/hunter/TestBM.results @@ -1,41 +1,41 @@ character_stats_results: { key: "TestBM-Phase2-Lvl40-CharacterStats-Default" value: { - final_stats: 157.3 - final_stats: 287.98 - final_stats: 280.72 - final_stats: 137.94 - final_stats: 164.56 - final_stats: 54 + final_stats: 211.255 + final_stats: 332.695 + final_stats: 359.32325 + final_stats: 163.185 + final_stats: 191.015 + final_stats: 162 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 24.75 + final_stats: 34.75 final_stats: 0 - final_stats: 13.92435 + final_stats: 28.53276 final_stats: 0 final_stats: 0 - final_stats: 769.28 + final_stats: 1127.95 final_stats: 0 - final_stats: 14.72579 + final_stats: 30.08066 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 2894.1 + final_stats: 3272.775 final_stats: 0 final_stats: 0 - final_stats: 2413.96 - final_stats: 931.96 + final_stats: 2503.39 + final_stats: 1281.39 final_stats: 0 final_stats: 5 final_stats: 0 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 3294.2 + final_stats: 4380.2325 final_stats: 13 final_stats: 56 final_stats: 30 @@ -43,7 +43,7 @@ character_stats_results: { final_stats: 30 final_stats: 263 final_stats: 0 - final_stats: 14 + final_stats: 35 final_stats: 0 } } @@ -51,7 +51,7 @@ stat_weights_results: { key: "TestBM-Phase2-Lvl40-StatWeights-Default" value: { weights: 0 - weights: 0.58766 + weights: 0.50664 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.19191 - weights: 3.61319 - weights: 5.09173 + weights: 0.13996 + weights: 4.3644 + weights: 3.36833 weights: 0 weights: 0 weights: 0 @@ -77,7 +77,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.06835 + weights: 0.07897 weights: 0 weights: 0 weights: 0 @@ -99,182 +99,182 @@ stat_weights_results: { dps_results: { key: "TestBM-Phase2-Lvl40-Average-Default" value: { - dps: 577.36541 - tps: 212.43802 + dps: 653.95169 + tps: 298.34077 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 702.67128 - tps: 650.71626 + dps: 938.88875 + tps: 912.66402 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 584.86098 - tps: 218.51977 + dps: 667.23482 + tps: 313.89596 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 616.41092 - tps: 216.45058 + dps: 701.09983 + tps: 319.47299 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-NoBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 360.51189 - tps: 452.28923 + dps: 389.83157 + tps: 609.23817 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-NoBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 296.74737 - tps: 113.47152 + dps: 199.49201 + tps: 112.68143 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-NoBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 321.48935 - tps: 107.44892 + dps: 214.83784 + tps: 106.45497 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 560.10245 - tps: 645.58564 + dps: 787.77778 + tps: 681.30603 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 493.68414 - tps: 255.44216 + dps: 698.66246 + tps: 339.611 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 529.10625 - tps: 262.11263 + dps: 734.58089 + tps: 336.78729 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-NoBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 313.26914 - tps: 550.40814 + dps: 295.57734 + tps: 561.83868 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-NoBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 267.26398 - tps: 153.82492 + dps: 251.93539 + tps: 167.86977 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-NoBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 286.67815 - tps: 152.21472 + dps: 273.04179 + tps: 168.58356 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-FullBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 693.34958 - tps: 645.01731 + dps: 920.3286 + tps: 894.1469 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-FullBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 576.3945 - tps: 212.41222 + dps: 652.573 + tps: 298.23343 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-FullBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 607.65554 - tps: 216.18587 + dps: 685.67111 + tps: 300.57623 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-NoBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 366.02844 - tps: 444.77435 + dps: 394.08419 + tps: 603.97612 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-NoBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 302.17989 - tps: 113.88646 + dps: 204.56596 + tps: 113.66426 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-NoBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_melee-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 325.17094 - tps: 106.82092 + dps: 222.20253 + tps: 107.48562 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-FullBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 563.82711 - tps: 641.00958 + dps: 764.88278 + tps: 717.87402 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-FullBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 497.06986 - tps: 250.94563 + dps: 682.45237 + tps: 326.12824 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-FullBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 533.14302 - tps: 257.87923 + dps: 718.89282 + tps: 322.33991 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-NoBuffs-P2-Consumes-LongMultiTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 314.56779 - tps: 545.19151 + dps: 296.4647 + tps: 559.91976 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-NoBuffs-P2-Consumes-LongSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 270.06529 - tps: 150.8604 + dps: 253.84926 + tps: 166.05371 } } dps_results: { - key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-NoBuffs-P2-Consumes-ShortSingleTarget" + key: "TestBM-Phase2-Lvl40-Settings-Orc-placeholder-Basic-p2_ranged_bm-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 290.17077 - tps: 150.84949 + dps: 274.46254 + tps: 167.6218 } } dps_results: { key: "TestBM-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 552.69608 - tps: 194.90041 + dps: 632.37975 + tps: 278.24115 } } diff --git a/sim/hunter/TestMM.results b/sim/hunter/TestMM.results index 041708109..54e9f0763 100644 --- a/sim/hunter/TestMM.results +++ b/sim/hunter/TestMM.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestMM-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 284.35 - final_stats: 485.21 - final_stats: 453.629 - final_stats: 205.7 - final_stats: 235.95 + final_stats: 297.275 + final_stats: 507.265 + final_stats: 474.2485 + final_stats: 215.05 + final_stats: 246.675 final_stats: 162 final_stats: 0 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 47.25 final_stats: 3 - final_stats: 27.99405 + final_stats: 28.14833 final_stats: 0 final_stats: 0 - final_stats: 1767.56 + final_stats: 1602.54 final_stats: 3 - final_stats: 34.17047 + final_stats: 34.58731 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4525.5 + final_stats: 4665.75 final_stats: 0 final_stats: 0 - final_stats: 2808.42 - final_stats: 2026.42 + final_stats: 2852.53 + final_stats: 1870.53 final_stats: 0 final_stats: 5 final_stats: 0 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 6490.6874 + final_stats: 6709.2541 final_stats: 27 final_stats: 86 final_stats: 60 @@ -51,7 +51,7 @@ stat_weights_results: { key: "TestMM-Phase4-Lvl60-StatWeights-Default" value: { weights: 0 - weights: 0.23296 + weights: 0.15354 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.12617 - weights: 5.53908 - weights: 2.03505 + weights: 0.12138 + weights: 7.19003 + weights: 0 weights: 0 weights: 0 weights: 0 @@ -99,112 +99,112 @@ stat_weights_results: { dps_results: { key: "TestMM-Phase4-Lvl60-AllItems-DevilsaurEye-19991" value: { - dps: 385.45292 - tps: 397.92424 + dps: 343.41085 + tps: 355.72397 } } dps_results: { key: "TestMM-Phase4-Lvl60-AllItems-DevilsaurTooth-19992" value: { - dps: 379.50916 - tps: 391.98672 + dps: 338.0538 + tps: 350.37503 } } dps_results: { key: "TestMM-Phase4-Lvl60-Average-Default" value: { - dps: 377.76606 - tps: 390.19957 + dps: 337.33348 + tps: 349.70703 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 432.4596 - tps: 594.49712 + dps: 419.37663 + tps: 579.42693 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 283.51518 - tps: 291.60722 + dps: 274.78179 + tps: 282.80397 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 278.1341 - tps: 288.02347 + dps: 266.84113 + tps: 276.55328 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 205.33253 - tps: 422.96515 + dps: 174.1017 + tps: 414.45707 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 132.98515 - tps: 143.86679 + dps: 112.97901 + tps: 124.99678 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 130.93154 - tps: 135.29141 + dps: 111.38138 + tps: 115.74126 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 477.90082 - tps: 639.68157 + dps: 449.68521 + tps: 610.1654 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 318.40933 - tps: 326.51804 + dps: 296.74888 + tps: 304.78254 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 324.82767 - tps: 334.67743 + dps: 301.1019 + tps: 310.94522 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_ranged-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 206.35769 - tps: 439.80957 + dps: 173.0927 + tps: 413.95607 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_ranged-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 134.92853 - tps: 146.60113 + dps: 113.4107 + tps: 125.45386 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_ranged-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 136.21434 - tps: 140.57421 + dps: 116.07029 + tps: 120.43017 } } dps_results: { key: "TestMM-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 258.31819 - tps: 270.70581 + dps: 224.48153 + tps: 236.67331 } } diff --git a/sim/hunter/TestSV.results b/sim/hunter/TestSV.results index 3a4dbe411..a77972337 100644 --- a/sim/hunter/TestSV.results +++ b/sim/hunter/TestSV.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestSV-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 284.35 - final_stats: 557.9915 - final_stats: 453.629 - final_stats: 205.7 - final_stats: 235.95 + final_stats: 297.275 + final_stats: 583.35475 + final_stats: 474.2485 + final_stats: 215.05 + final_stats: 246.675 final_stats: 162 final_stats: 0 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 47.25 final_stats: 3 - final_stats: 27.99405 + final_stats: 28.14833 final_stats: 0 final_stats: 0 - final_stats: 1840.3415 + final_stats: 1678.62975 final_stats: 3 - final_stats: 38.54604 + final_stats: 39.0254 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4525.5 + final_stats: 4665.75 final_stats: 0 final_stats: 0 - final_stats: 2953.983 - final_stats: 2071.983 + final_stats: 3004.7095 + final_stats: 1922.7095 final_stats: 0 final_stats: 5 final_stats: 0 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 6368.2216 + final_stats: 6582.6644 final_stats: 27 final_stats: 86 final_stats: 60 @@ -51,7 +51,7 @@ stat_weights_results: { key: "TestSV-Phase4-Lvl60-StatWeights-Default" value: { weights: 0 - weights: 0.19405 + weights: 0.23711 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.1326 - weights: 8.48818 - weights: 0.33843 + weights: 0.13693 + weights: 7.55342 + weights: 1.10189 weights: 0 weights: 0 weights: 0 @@ -99,112 +99,112 @@ stat_weights_results: { dps_results: { key: "TestSV-Phase4-Lvl60-AllItems-DevilsaurEye-19991" value: { - dps: 448.97614 - tps: 481.26078 + dps: 466.59017 + tps: 404.77075 } } dps_results: { key: "TestSV-Phase4-Lvl60-AllItems-DevilsaurTooth-19992" value: { - dps: 440.88422 - tps: 473.1475 + dps: 462.52818 + tps: 399.46188 } } dps_results: { key: "TestSV-Phase4-Lvl60-Average-Default" value: { - dps: 439.81411 - tps: 472.10359 + dps: 460.30515 + tps: 398.87454 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 1470.73024 - tps: 2111.53099 + dps: 1324.90663 + tps: 1909.48506 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 433.72896 - tps: 465.73911 + dps: 459.93206 + tps: 397.14761 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 425.87165 - tps: 456.4752 + dps: 460.26913 + tps: 394.30809 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 787.43264 - tps: 1376.78002 + dps: 758.08202 + tps: 1425.79955 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 165.08097 - tps: 194.89199 + dps: 178.18299 + tps: 169.04959 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 161.72304 - tps: 166.08292 + dps: 180.93972 + tps: 162.40202 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 1472.77201 - tps: 2116.43199 + dps: 1325.62601 + tps: 1934.85365 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 439.9932 - tps: 472.12516 + dps: 455.40794 + tps: 396.73842 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 427.89813 - tps: 458.4693 + dps: 456.19204 + tps: 391.57823 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_weave-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 788.38504 - tps: 1373.75761 + dps: 754.54603 + tps: 1415.54554 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_weave-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 164.50575 - tps: 193.60437 + dps: 176.9543 + tps: 167.04892 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Orc-placeholder-Weave-p4_weave-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 163.63804 - tps: 167.99792 + dps: 183.63139 + tps: 160.99185 } } dps_results: { key: "TestSV-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 302.568 - tps: 333.99325 + dps: 323.67628 + tps: 281.33173 } } diff --git a/sim/hunter/hunter.go b/sim/hunter/hunter.go index b64a2aa01..5853eebb0 100644 --- a/sim/hunter/hunter.go +++ b/sim/hunter/hunter.go @@ -92,7 +92,7 @@ type Hunter struct { NormalizedAmmoDamageBonus float64 // Miscellaneous set bonuses that require extra logic inside of spells - SerpentStingAPCoeff float64 + SerpentStingAPCoeff float64 curQueueAura *core.Aura curQueuedAutoSpell *core.Spell @@ -164,7 +164,6 @@ func (hunter *Hunter) AddRaidBuffs(raidBuffs *proto.RaidBuffs) { }[hunter.Level]) } - raidBuffs.AspectOfTheLion = true // Hunter gains an additional 10% stats from Aspect of the Lion statMultiply := 1.1 hunter.MultiplyStat(stats.Strength, statMultiply) @@ -356,7 +355,7 @@ func NewHunter(character *core.Character, options *proto.Player) *Hunter { } func (hunter *Hunter) HasRune(rune proto.HunterRune) bool { - return hunter.HasRuneById(int32(rune)) + return false // hunter.HasRuneById(int32(rune)) } func (hunter *Hunter) baseRuneAbilityDamage() float64 { diff --git a/sim/hunter/hunter_test.go b/sim/hunter/hunter_test.go index 9daf7aa89..188920b0f 100644 --- a/sim/hunter/hunter_test.go +++ b/sim/hunter/hunter_test.go @@ -23,8 +23,8 @@ func TestBM(t *testing.T) { Talents: Phase2BMTalents, GearSet: core.GetGearSet("../../ui/hunter/gear_sets", "placeholder"), Rotation: core.GetAplRotation("../../ui/hunter/apls", "p2_melee"), - Buffs: core.FullBuffsPhase2, - Consumes: Phase2Consumes, + Buffs: core.FullBuffs, + Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Basic", SpecOptions: Phase2PlayerOptions}, OtherRotations: []core.RotationCombo{core.GetAplRotation("../../ui/hunter/apls", "p2_ranged_bm")}, @@ -48,7 +48,7 @@ func TestMM(t *testing.T) { Talents: Phase4RangedMMTalents, GearSet: core.GetGearSet("../../ui/hunter/gear_sets", "placeholder"), Rotation: core.GetAplRotation("../../ui/hunter/apls", "p4_ranged"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Weave", SpecOptions: Phase4PlayerOptions}, @@ -71,7 +71,7 @@ func TestSV(t *testing.T) { Talents: Phase4WeaveTalents, GearSet: core.GetGearSet("../../ui/hunter/gear_sets", "placeholder"), Rotation: core.GetAplRotation("../../ui/hunter/apls", "p4_weave"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Weave", SpecOptions: Phase4PlayerOptions}, @@ -94,32 +94,6 @@ var Phase4WeaveTalents = "-055500005-3305202202303051" var Phase4RangedMMTalents = "-05451002503051-33400023023" var Phase4RangedSVTalents = "1-054510005-334000250230305" -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfLesserAgility, - DefaultPotion: proto.Potions_ManaPotion, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_BlackfathomSharpeningStone, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - DefaultPotion: proto.Potions_ManaPotion, - DragonBreathChili: true, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_SolidWeightstone, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - var Phase4Consumes = core.ConsumesCombo{ Label: "P4-Consumes", Consumes: &proto.Consumes{ @@ -129,7 +103,7 @@ var Phase4Consumes = core.ConsumesCombo{ DragonBreathChili: true, Flask: proto.Flask_FlaskOfSupremePower, Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WildStrikes, + MainHandImbue: proto.WeaponImbue_Windfury, OffHandImbue: proto.WeaponImbue_ElementalSharpeningStone, SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, StrengthBuff: proto.StrengthBuff_JujuPower, diff --git a/sim/mage/TestArcane.results b/sim/mage/TestArcane.results index 2d75ad3b3..017e8f275 100644 --- a/sim/mage/TestArcane.results +++ b/sim/mage/TestArcane.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestArcane-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 189.75 - final_stats: 197.34 - final_stats: 292.40475 - final_stats: 244.145 - final_stats: 242.88 + final_stats: 172.5 + final_stats: 179.4 + final_stats: 265.8225 + final_stats: 221.95 + final_stats: 220.8 final_stats: 150 final_stats: 0 final_stats: 40 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 41.25 final_stats: 0 - final_stats: 25.30164 + final_stats: 24.92876 final_stats: 0 final_stats: 0 - final_stats: 1009.75 + final_stats: 792.5 final_stats: 0 final_stats: 16.2 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 5054.6925 + final_stats: 4688.475 final_stats: 0 final_stats: 0 - final_stats: 394.68 - final_stats: 740 + final_stats: 358.8 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 final_stats: 3.2 final_stats: 5 final_stats: 0 - final_stats: 4414.0475 + final_stats: 4148.225 final_stats: 52 final_stats: 85 final_stats: 85 @@ -53,18 +53,18 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.14047 + weights: 0.28967 weights: 0 - weights: 0.55155 + weights: 0.43631 weights: 0 + weights: 0.05906 + weights: 0.37724 weights: 0 - weights: 0.55155 weights: 0 weights: 0 weights: 0 - weights: 0 - weights: 5.21299 - weights: 3.05963 + weights: 4.93705 + weights: 2.55452 weights: 0 weights: 0 weights: 0 @@ -99,98 +99,98 @@ stat_weights_results: { dps_results: { key: "TestArcane-Phase5-Lvl60-Average-Default" value: { - dps: 423.59907 - tps: 436.26143 + dps: 372.01945 + tps: 386.74766 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 419.54165 - tps: 642.32182 + dps: 371.0616 + tps: 648.00894 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 419.54165 - tps: 430.68066 + dps: 371.0616 + tps: 384.90897 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 426.46434 - tps: 437.93292 + dps: 388.44813 + tps: 404.27494 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 203.18659 - tps: 426.03873 + dps: 197.61902 + tps: 439.20185 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 203.18659 - tps: 214.3292 + dps: 197.61902 + tps: 209.69816 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 228.65746 - tps: 241.87026 + dps: 250.03264 + tps: 265.51076 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Troll-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 423.05088 - tps: 658.58871 + dps: 369.74627 + tps: 635.6476 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Troll-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 423.05088 - tps: 434.82777 + dps: 369.74627 + tps: 383.04134 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Troll-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 443.94384 - tps: 457.79252 + dps: 399.77203 + tps: 416.03702 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Troll-blank-Arcane-p5_spellfrost-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 200.62813 - tps: 424.2142 + dps: 198.01526 + tps: 437.80854 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Troll-blank-Arcane-p5_spellfrost-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 200.62813 - tps: 211.80744 + dps: 198.01526 + tps: 210.00492 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Troll-blank-Arcane-p5_spellfrost-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 237.18443 - tps: 250.39723 + dps: 253.36293 + tps: 268.84104 } } dps_results: { key: "TestArcane-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 423.04928 - tps: 434.91161 + dps: 369.60437 + tps: 383.11611 } } diff --git a/sim/mage/TestFire.results b/sim/mage/TestFire.results index acd437572..1899b21a0 100644 --- a/sim/mage/TestFire.results +++ b/sim/mage/TestFire.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestFire-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 189.75 - final_stats: 197.34 - final_stats: 292.40475 - final_stats: 244.145 - final_stats: 242.88 + final_stats: 172.5 + final_stats: 179.4 + final_stats: 265.8225 + final_stats: 221.95 + final_stats: 220.8 final_stats: 150 final_stats: 0 final_stats: 40 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 41.25 final_stats: 0 - final_stats: 25.30164 + final_stats: 24.92876 final_stats: 0 final_stats: 0 - final_stats: 1009.75 + final_stats: 792.5 final_stats: 0 final_stats: 16.2 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4595.175 + final_stats: 4262.25 final_stats: 0 final_stats: 0 - final_stats: 394.68 - final_stats: 740 + final_stats: 358.8 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 final_stats: 3.2 final_stats: 5 final_stats: 0 - final_stats: 4414.0475 + final_stats: 4148.225 final_stats: 27 final_stats: 60 final_stats: 60 @@ -53,18 +53,18 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.69843 + weights: 0.61344 weights: 0 - weights: 0.53538 + weights: 0.30638 weights: 0 - weights: 0.53538 + weights: 0.30638 weights: 0 weights: 0 weights: 0 weights: 0 weights: 0 - weights: 6.24672 - weights: 5.42721 + weights: 4.0745 + weights: 3.00611 weights: 0 weights: 0 weights: 0 @@ -99,98 +99,98 @@ stat_weights_results: { dps_results: { key: "TestFire-Phase5-Lvl60-Average-Default" value: { - dps: 447.09766 - tps: 336.89339 + dps: 315.27056 + tps: 237.16454 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 469.38612 - tps: 817.07023 + dps: 336.04823 + tps: 563.87387 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 469.38612 - tps: 352.99528 + dps: 336.04823 + tps: 251.66577 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 534.93262 - tps: 406.79961 + dps: 414.69838 + tps: 302.05805 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 153.53092 - tps: 386.88161 + dps: 138.88639 + tps: 316.15109 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 153.53092 - tps: 121.44214 + dps: 138.88639 + tps: 108.167 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 271.60025 - tps: 210.66001 + dps: 252.45459 + tps: 182.18519 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Troll-blank-Fire-p5_fire-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 449.68048 - tps: 795.79882 + dps: 306.44466 + tps: 540.41754 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Troll-blank-Fire-p5_fire-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 449.68048 - tps: 338.82746 + dps: 306.44466 + tps: 230.80658 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Troll-blank-Fire-p5_fire-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 531.34039 - tps: 404.22955 + dps: 402.4679 + tps: 293.46973 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Troll-blank-Fire-p5_fire-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 149.51397 - tps: 383.70706 + dps: 134.49457 + tps: 313.10452 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Troll-blank-Fire-p5_fire-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 149.51397 - tps: 118.61214 + dps: 134.49457 + tps: 105.09412 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Troll-blank-Fire-p5_fire-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 259.6432 - tps: 202.15974 + dps: 257.27987 + tps: 185.73789 } } dps_results: { key: "TestFire-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 449.68048 - tps: 338.82746 + dps: 306.69984 + tps: 230.9943 } } diff --git a/sim/mage/TestFrost.results b/sim/mage/TestFrost.results index 98063484b..fbbdfca19 100644 --- a/sim/mage/TestFrost.results +++ b/sim/mage/TestFrost.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestFrost-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 189.75 - final_stats: 197.34 - final_stats: 292.40475 - final_stats: 244.145 - final_stats: 242.88 + final_stats: 172.5 + final_stats: 179.4 + final_stats: 265.8225 + final_stats: 221.95 + final_stats: 220.8 final_stats: 150 final_stats: 0 final_stats: 40 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 41.25 final_stats: 0 - final_stats: 25.30164 + final_stats: 24.92876 final_stats: 0 final_stats: 0 - final_stats: 1009.75 + final_stats: 792.5 final_stats: 0 final_stats: 16.2 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4595.175 + final_stats: 4262.25 final_stats: 0 final_stats: 0 - final_stats: 394.68 - final_stats: 740 + final_stats: 358.8 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 final_stats: 3.2 final_stats: 5 final_stats: 0 - final_stats: 4414.0475 + final_stats: 4148.225 final_stats: 31 final_stats: 64 final_stats: 64 @@ -53,18 +53,18 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.17139 + weights: 0.10653 weights: 0 - weights: 0.60621 + weights: 0.46322 weights: 0 + weights: 0.06157 + weights: 0.40165 weights: 0 - weights: 0.60621 weights: 0 weights: 0 weights: 0 - weights: 0 - weights: 5.73089 - weights: 3.26892 + weights: 5.49189 + weights: 2.56205 weights: 0 weights: 0 weights: 0 @@ -99,98 +99,98 @@ stat_weights_results: { dps_results: { key: "TestFrost-Phase5-Lvl60-Average-Default" value: { - dps: 466.41494 - tps: 339.62146 + dps: 392.75219 + tps: 315.3999 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 459.84004 - tps: 554.39982 + dps: 399.58783 + tps: 587.87827 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 459.84004 - tps: 333.51361 + dps: 399.58783 + tps: 318.94962 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 453.80537 - tps: 329.72212 + dps: 400.34254 + tps: 322.31659 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 241.91386 - tps: 380.75106 + dps: 225.11332 + tps: 404.6202 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 241.91386 - tps: 179.91027 + dps: 225.11332 + tps: 183.3459 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 259.24829 - tps: 195.5056 + dps: 268.33572 + tps: 220.57852 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Troll-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 460.19999 - tps: 557.8486 + dps: 390.98053 + tps: 580.85367 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Troll-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 460.19999 - tps: 333.92543 + dps: 390.98053 + tps: 313.15673 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Troll-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 468.8742 - tps: 340.5635 + dps: 396.72646 + tps: 322.21705 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Troll-blank-Frost-p5_spellfrost-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 241.26078 - tps: 387.21741 + dps: 224.67699 + tps: 406.5577 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Troll-blank-Frost-p5_spellfrost-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 241.26078 - tps: 179.79929 + dps: 224.67699 + tps: 182.93016 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Troll-blank-Frost-p5_spellfrost-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 266.34851 - tps: 200.47575 + dps: 267.36261 + tps: 219.59609 } } dps_results: { key: "TestFrost-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 460.51737 - tps: 334.19823 + dps: 389.92099 + tps: 313.27487 } } diff --git a/sim/mage/mage.go b/sim/mage/mage.go index 324e3a53e..9d75ffe68 100644 --- a/sim/mage/mage.go +++ b/sim/mage/mage.go @@ -212,7 +212,7 @@ func NewMage(character *core.Character, options *proto.Player) *Mage { } func (mage *Mage) HasRune(rune proto.MageRune) bool { - return mage.HasRuneById(int32(rune)) + return false // mage.HasRuneById(int32(rune)) } func (mage *Mage) baseRuneAbilityDamage() float64 { diff --git a/sim/mage/mage_test.go b/sim/mage/mage_test.go index fd68e4903..47b9863fd 100644 --- a/sim/mage/mage_test.go +++ b/sim/mage/mage_test.go @@ -24,7 +24,7 @@ func TestArcane(t *testing.T) { Talents: Phase5TalentsArcane, GearSet: core.GetGearSet("../../ui/mage/gear_sets", "blank"), Rotation: core.GetAplRotation("../../ui/mage/apls", "p5_spellfrost"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Arcane", SpecOptions: PlayerOptionsArcane}, @@ -47,7 +47,7 @@ func TestFire(t *testing.T) { Talents: Phase5TalentsFire, GearSet: core.GetGearSet("../../ui/mage/gear_sets", "blank"), Rotation: core.GetAplRotation("../../ui/mage/apls", "p5_fire"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Fire", SpecOptions: PlayerOptionsFire}, @@ -70,7 +70,7 @@ func TestFrost(t *testing.T) { Talents: phase5talentsfrost, GearSet: core.GetGearSet("../../ui/mage/gear_sets", "blank"), Rotation: core.GetAplRotation("../../ui/mage/apls", "p5_spellfrost"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Frost", SpecOptions: PlayerOptionsFrost}, @@ -123,53 +123,6 @@ var PlayerOptionsFrost = &proto.Player_Mage{ }, } -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_ManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_BlackfathomManaOil, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_GreaterManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - FrostPowerBuff: proto.FrostPowerBuff_ElixirOfFrostPower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_MajorManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower, - FrostPowerBuff: proto.FrostPowerBuff_ElixirOfFrostPower, - Food: proto.Food_FoodNightfinSoup, - MainHandImbue: proto.WeaponImbue_WizardOil, - SpellPowerBuff: proto.SpellPowerBuff_ArcaneElixir, - }, -} - -var Phase4Consumes = core.ConsumesCombo{ - Label: "P4-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_MajorManaPotion, - Flask: proto.Flask_FlaskOfSupremePower, - FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower, - FrostPowerBuff: proto.FrostPowerBuff_ElixirOfFrostPower, - Food: proto.Food_FoodRunnTumTuberSurprise, - MainHandImbue: proto.WeaponImbue_WizardOil, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - }, -} - var Phase5Consumes = core.ConsumesCombo{ Label: "P5-Consumes", Consumes: &proto.Consumes{ diff --git a/sim/paladin/paladin.go b/sim/paladin/paladin.go index 399253df7..cd8fd1c72 100644 --- a/sim/paladin/paladin.go +++ b/sim/paladin/paladin.go @@ -193,7 +193,7 @@ func NewPaladin(character *core.Character, options *proto.Player, paladinOptions } func (paladin *Paladin) hasRune(rune proto.PaladinRune) bool { - return paladin.HasRuneById(int32(rune)) + return false // paladin.HasRuneById(int32(rune)) } func (paladin *Paladin) has2hEquipped() bool { diff --git a/sim/paladin/protection/TestProtection.results b/sim/paladin/protection/TestProtection.results index 50d7ce9e8..6e68cc2c7 100644 --- a/sim/paladin/protection/TestProtection.results +++ b/sim/paladin/protection/TestProtection.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestProtection-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 204.6 - final_stats: 133.1 - final_stats: 322.575 - final_stats: 145.2 - final_stats: 168.63 - final_stats: 174 + final_stats: 235.29 + final_stats: 153.065 + final_stats: 370.96125 + final_stats: 166.98 + final_stats: 193.9245 + final_stats: 150 final_stats: 0 final_stats: 0 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 49.6 final_stats: 0 - final_stats: 26.92484 + final_stats: 27.28857 final_stats: 0 final_stats: 0 - final_stats: 1661.2 + final_stats: 1522.58 final_stats: 3 - final_stats: 27.43486 + final_stats: 28.44509 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 3410 + final_stats: 3736.7 final_stats: 0 final_stats: 0 - final_stats: 650.2 - final_stats: 780 + final_stats: 690.13 + final_stats: 580 final_stats: 10 final_stats: 5.4 final_stats: 0 - final_stats: 7.83486 + final_stats: 8.84509 final_stats: 10.4 final_stats: 0 - final_stats: 4726.75 + final_stats: 5210.6125 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,27 +50,27 @@ character_stats_results: { stat_weights_results: { key: "TestProtection-Phase4-Lvl60-StatWeights-Default" value: { - weights: 0.36704 - weights: 0.15161 + weights: 0.42023 + weights: 0.15825 weights: 0 weights: 0 weights: 0 - weights: 0.12327 + weights: 0.10858 weights: 0 weights: 0 weights: 0 - weights: 0.04771 + weights: 0.04691 weights: 0 weights: 0 weights: 0 - weights: 1.31118 - weights: 0.10337 + weights: 1.30854 + weights: 0.07653 weights: 0 weights: 0 - weights: 0.16683 - weights: 4.02803 - weights: 2.58215 - weights: 3.01164 + weights: 0.1661 + weights: 3.47278 + weights: 2.46567 + weights: 2.57716 weights: 0 weights: 0 weights: 0 @@ -78,7 +78,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.24653 + weights: 0.21716 weights: 0 weights: 0 weights: 0 @@ -99,105 +99,105 @@ stat_weights_results: { dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 374.99981 - tps: 564.50695 + dps: 344.87219 + tps: 523.27171 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Average-Default" value: { - dps: 376.83423 - tps: 565.34083 + dps: 345.01187 + tps: 522.72475 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 59.36548 - tps: 118.35105 + dps: 52.63206 + tps: 112.15163 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 34.03927 - tps: 64.69938 + dps: 33.74085 + tps: 64.59191 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 112.13566 - tps: 213.4513 + dps: 108.93207 + tps: 207.77944 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 22.30737 - tps: 30.35962 + dps: 21.03145 + tps: 28.98919 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 9.5994 - tps: 17.64761 + dps: 9.43678 + tps: 17.39048 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 36.70836 - tps: 68.60544 + dps: 36.07527 + tps: 67.49975 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 60.9097 - tps: 120.65148 + dps: 54.15443 + tps: 113.64298 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 34.60885 - tps: 65.69439 + dps: 33.98391 + tps: 64.97911 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 112.08841 - tps: 213.36153 + dps: 108.87738 + tps: 207.67553 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 22.40271 - tps: 30.4429 + dps: 21.1268 + tps: 29.07247 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 9.59269 - tps: 17.62888 + dps: 9.43007 + tps: 17.37174 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 37.36273 - tps: 69.81873 + dps: 36.72963 + tps: 68.71305 } } dps_results: { key: "TestProtection-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 323.54588 - tps: 488.30051 + dps: 296.79219 + tps: 452.21141 } } diff --git a/sim/paladin/protection/protection_test.go b/sim/paladin/protection/protection_test.go index cddc75f6b..5ffccfc4f 100644 --- a/sim/paladin/protection/protection_test.go +++ b/sim/paladin/protection/protection_test.go @@ -23,7 +23,7 @@ func TestProtection(t *testing.T) { Talents: Phase4ProtTalents, GearSet: core.GetGearSet("../../../ui/protection_paladin/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/protection_paladin/apls", "p4prot"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "P4 Prot", SpecOptions: PlayerOptionsSealofMartyrdom}, @@ -46,9 +46,9 @@ var Phase4Consumes = core.ConsumesCombo{ SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, DragonBreathChili: true, Food: proto.Food_FoodSmokedDesertDumpling, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_ConductiveShieldCoating, - StrengthBuff: proto.StrengthBuff_JujuPower, + //MainHandImbue: proto.WeaponImbue_WildStrikes, + //OffHandImbue: proto.WeaponImbue_ConductiveShieldCoating, + StrengthBuff: proto.StrengthBuff_JujuPower, }, } diff --git a/sim/paladin/retribution/TestExodin.results b/sim/paladin/retribution/TestExodin.results index 6c7c7fc8d..e124ae319 100644 --- a/sim/paladin/retribution/TestExodin.results +++ b/sim/paladin/retribution/TestExodin.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestExodin-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 382.6625 - final_stats: 265.65 + final_stats: 258.819 + final_stats: 153.065 final_stats: 370.96125 final_stats: 166.98 final_stats: 193.9245 - final_stats: 216 + final_stats: 150 final_stats: 0 final_stats: 10 final_stats: 0 @@ -15,24 +15,24 @@ character_stats_results: { final_stats: 0 final_stats: 49.6 final_stats: 0 - final_stats: 28.28857 + final_stats: 27.28857 final_stats: 0 final_stats: 0 - final_stats: 1825.325 + final_stats: 1569.638 final_stats: 3 - final_stats: 34.14189 + final_stats: 28.44509 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 3736.7 final_stats: 0 final_stats: 0 - final_stats: 915.3 - final_stats: 810 + final_stats: 690.13 + final_stats: 580 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 14.14189 + final_stats: 8.44509 final_stats: 5 final_stats: 0 final_stats: 5210.6125 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestExodin-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.48158 - weights: 0.23677 + weights: 0.45025 + weights: 0.17414 weights: 0 weights: 0 weights: 0 - weights: 0.30579 + weights: 0.27825 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.33937 - weights: 0.13953 + weights: 0.21247 + weights: 0.09393 weights: 0 weights: 0 - weights: 0.17304 - weights: 5.10241 - weights: 3.67606 + weights: 0.16179 + weights: 4.15191 + weights: 3.18399 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestExodin-Phase5-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 434.80422 - tps: 471.79262 + dps: 345.99852 + tps: 382.73754 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Average-Default" value: { - dps: 434.83832 - tps: 471.85994 + dps: 343.74315 + tps: 380.52419 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 33.76824 - tps: 228.4784 + dps: 23.84256 + tps: 218.55272 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 12.17537 - tps: 21.91088 + dps: 9.77675 + tps: 19.51226 } } dps_results: { @@ -133,36 +133,36 @@ dps_results: { dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 17.29442 - tps: 138.1484 + dps: 14.04078 + tps: 134.89475 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 3.20235 - tps: 9.24505 + dps: 2.9307 + tps: 8.9734 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 2.71827 - tps: 2.71827 + dps: 2.49444 + tps: 2.49444 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 34.86921 - tps: 228.98937 + dps: 24.49557 + tps: 218.61572 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 11.95106 - tps: 21.65707 + dps: 9.52886 + tps: 19.23487 } } dps_results: { @@ -174,28 +174,28 @@ dps_results: { dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 16.16378 - tps: 196.91061 + dps: 13.08502 + tps: 193.83184 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 2.7663 - tps: 11.80364 + dps: 2.52678 + tps: 11.56412 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 1.27796 - tps: 16.46172 + dps: 1.12892 + tps: 16.31268 } } dps_results: { key: "TestExodin-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 359.95305 - tps: 394.99937 + dps: 282.33836 + tps: 316.6778 } } diff --git a/sim/paladin/retribution/TestRetribution.results b/sim/paladin/retribution/TestRetribution.results index a1de0bf99..5e5930d0a 100644 --- a/sim/paladin/retribution/TestRetribution.results +++ b/sim/paladin/retribution/TestRetribution.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestRetribution-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 382.6625 - final_stats: 265.65 + final_stats: 258.819 + final_stats: 153.065 final_stats: 370.96125 final_stats: 166.98 final_stats: 193.9245 - final_stats: 216 + final_stats: 150 final_stats: 0 final_stats: 10 final_stats: 0 @@ -15,24 +15,24 @@ character_stats_results: { final_stats: 0 final_stats: 49.6 final_stats: 0 - final_stats: 28.28857 + final_stats: 27.28857 final_stats: 0 final_stats: 0 - final_stats: 1825.325 + final_stats: 1569.638 final_stats: 3 - final_stats: 34.14189 + final_stats: 28.44509 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 3736.7 final_stats: 0 final_stats: 0 - final_stats: 915.3 - final_stats: 810 + final_stats: 690.13 + final_stats: 580 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 14.14189 + final_stats: 8.44509 final_stats: 5 final_stats: 0 final_stats: 5210.6125 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestRetribution-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.49621 - weights: 0.25075 + weights: 0.47964 + weights: 0.19354 weights: 0 weights: 0 weights: 0 - weights: 0.15957 + weights: 0.14806 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.79635 - weights: 0.11957 + weights: 0.94395 + weights: 0.09534 weights: 0 weights: 0 - weights: 0.1783 - weights: 4.20294 - weights: 3.61558 + weights: 0.17157 + weights: 3.67644 + weights: 3.24639 weights: 0 weights: 0 weights: 0 @@ -99,177 +99,189 @@ stat_weights_results: { dps_results: { key: "TestRetribution-Phase5-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 415.82717 - tps: 452.28725 + dps: 353.12213 + tps: 391.8802 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Average-Default" value: { - dps: 411.03302 - tps: 447.44782 + dps: 351.08433 + tps: 389.51809 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 46.72259 - tps: 249.88942 + dps: 51.42291 + tps: 259.99807 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 25.04347 - tps: 35.23623 + dps: 31.82402 + tps: 42.28228 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 31.03628 - tps: 47.71962 + dps: 39.32693 + tps: 56.20694 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 17.00278 - tps: 148.46724 + dps: 19.00745 + tps: 189.40369 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 4.22273 - tps: 10.79595 + dps: 7.75378 + tps: 16.2736 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 9.52005 - tps: 24.7038 + dps: 8.72718 + tps: 23.91094 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-FullBuffs-P5-Consumes-LongMultiTarget" value: { - tps: 180.74683 + dps: 17.2822 + tps: 203.14236 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-FullBuffs-P5-Consumes-LongSingleTarget" value: { - tps: 9.03734 + dps: 15.32613 + tps: 24.61914 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - tps: 15.18376 + dps: 16.76289 + tps: 32.26623 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-NoBuffs-P5-Consumes-LongMultiTarget" value: { - tps: 161.49484 + dps: 2.04578 + tps: 138.76393 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-NoBuffs-P5-Consumes-LongSingleTarget" value: { - tps: 8.07474 + dps: 1.28285 + tps: 8.11876 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - tps: 15.18376 + dps: 0.48958 + tps: 15.67334 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 46.71268 - tps: 249.87951 + dps: 47.90962 + tps: 256.48477 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 22.30078 - tps: 32.47387 + dps: 28.96899 + tps: 39.4125 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 31.09763 - tps: 47.78097 + dps: 39.24434 + tps: 56.12435 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 17.04798 - tps: 163.54506 + dps: 20.6283 + tps: 201.37513 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 4.30057 - tps: 11.62543 + dps: 9.41273 + tps: 18.45007 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.5-3.6-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 9.22059 - tps: 24.40435 + dps: 8.48162 + tps: 23.66537 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-FullBuffs-P5-Consumes-LongMultiTarget" value: { - tps: 180.74683 + dps: 17.38803 + tps: 203.24819 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-FullBuffs-P5-Consumes-LongSingleTarget" value: { - tps: 9.03734 + dps: 15.43201 + tps: 24.72502 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - tps: 15.18376 + dps: 16.75391 + tps: 32.25725 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-NoBuffs-P5-Consumes-LongMultiTarget" value: { - tps: 180.74683 + dps: 3.70922 + tps: 170.88796 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-NoBuffs-P5-Consumes-LongSingleTarget" value: { - tps: 9.03734 + dps: 2.94632 + tps: 11.30525 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-twist-4DR-3.7-4.0-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - tps: 15.18376 + dps: 0.48958 + tps: 15.67334 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 346.11786 - tps: 380.70208 + dps: 294.7041 + tps: 329.75827 } } diff --git a/sim/paladin/retribution/TestShockadin.results b/sim/paladin/retribution/TestShockadin.results index ea9b305fc..6d3f3e0fe 100644 --- a/sim/paladin/retribution/TestShockadin.results +++ b/sim/paladin/retribution/TestShockadin.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestShockadin-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 382.6625 - final_stats: 265.65 + final_stats: 258.819 + final_stats: 153.065 final_stats: 370.96125 final_stats: 183.678 final_stats: 193.9245 - final_stats: 216 + final_stats: 150 final_stats: 0 final_stats: 10 final_stats: 0 @@ -15,24 +15,24 @@ character_stats_results: { final_stats: 0 final_stats: 49.6 final_stats: 0 - final_stats: 28.56742 + final_stats: 27.56742 final_stats: 0 final_stats: 0 - final_stats: 1825.325 + final_stats: 1569.638 final_stats: 0 - final_stats: 34.14189 + final_stats: 28.44509 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 3987.17 final_stats: 0 final_stats: 0 - final_stats: 915.3 - final_stats: 810 + final_stats: 690.13 + final_stats: 580 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 14.14189 + final_stats: 8.44509 final_stats: 5 final_stats: 0 final_stats: 5210.6125 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestShockadin-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.29868 - weights: 0.19354 + weights: 0.28168 + weights: 0.1433 weights: 0 weights: 0 weights: 0 - weights: 0.51161 + weights: 0.48361 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.00016 - weights: 0.44883 + weights: 2.0315 + weights: 0.38404 weights: 0 weights: 0 - weights: 0.10732 - weights: 2.14741 - weights: 2.99483 + weights: 0.10121 + weights: 0 + weights: 2.47585 weights: 0 weights: 0 weights: 0 @@ -99,105 +99,105 @@ stat_weights_results: { dps_results: { key: "TestShockadin-Phase5-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 525.49474 - tps: 567.44917 + dps: 445.35192 + tps: 487.33093 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Average-Default" value: { - dps: 525.42593 - tps: 567.45423 + dps: 444.12122 + tps: 486.11029 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 309.27347 - tps: 526.3053 + dps: 289.83657 + tps: 506.18006 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 96.24543 - tps: 107.0331 + dps: 88.83583 + tps: 99.61367 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 197.03366 - tps: 214.52825 + dps: 182.76437 + tps: 200.25897 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 125.29427 - tps: 306.04109 + dps: 118.24052 + tps: 298.98735 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 45.14838 - tps: 54.18572 + dps: 41.8665 + tps: 50.90384 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 101.54221 - tps: 116.72597 + dps: 94.349 + tps: 109.53276 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 309.89343 - tps: 527.51526 + dps: 289.57719 + tps: 506.90401 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 96.35163 - tps: 107.13931 + dps: 89.04673 + tps: 99.82949 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 197.5688 - tps: 215.08797 + dps: 183.28967 + tps: 200.80884 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 127.21285 - tps: 307.95967 + dps: 120.05059 + tps: 300.79741 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 45.52463 - tps: 54.56197 + dps: 42.23114 + tps: 51.26848 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 102.1587 - tps: 117.34245 + dps: 94.96835 + tps: 110.1521 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 467.06201 - tps: 506.5581 + dps: 399.54508 + tps: 439.01167 } } diff --git a/sim/paladin/retribution/retribution_test.go b/sim/paladin/retribution/retribution_test.go index 8220a91d9..a8a3e1829 100644 --- a/sim/paladin/retribution/retribution_test.go +++ b/sim/paladin/retribution/retribution_test.go @@ -24,7 +24,7 @@ func TestRetribution(t *testing.T) { GearSet: core.GetGearSet("../../../ui/retribution_paladin/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/retribution_paladin/apls", "p5ret-twist-4DR-3.5-3.6"), OtherRotations: []core.RotationCombo{core.GetAplRotation("../../../ui/retribution_paladin/apls", "p5ret-twist-4DR-3.7-4.0")}, - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "P5 Seal of Martyrdom Ret", SpecOptions: PlayerOptionsSealofMartyrdom}, @@ -47,7 +47,7 @@ func TestExodin(t *testing.T) { Talents: Phase45RetTalents, GearSet: core.GetGearSet("../../../ui/retribution_paladin/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/retribution_paladin/apls", "p5ret-exodin-6CF2DR"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "P5 Seal of Martyrdom Ret", SpecOptions: PlayerOptionsSealofMartyrdom}, @@ -70,7 +70,7 @@ func TestShockadin(t *testing.T) { Talents: Phase45ShockadinTalents, GearSet: core.GetGearSet("../../../ui/retribution_paladin/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/retribution_paladin/apls", "p5Shockadin"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "P5 Seal of Righteousness Shockadin", SpecOptions: PlayerOptionsSealofRighteousness}, @@ -94,8 +94,8 @@ var Phase1Consumes = core.ConsumesCombo{ AgilityElixir: proto.AgilityElixir_ElixirOfLesserAgility, DefaultPotion: proto.Potions_ManaPotion, FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - MainHandImbue: proto.WeaponImbue_WildStrikes, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, + //MainHandImbue: proto.WeaponImbue_WildStrikes, + StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, }, } @@ -113,41 +113,6 @@ var Phase2Consumes = core.ConsumesCombo{ }, } -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfTheMongoose, - DefaultPotion: proto.Potions_MajorManaPotion, - DefaultConjured: proto.Conjured_ConjuredDemonicRune, - DragonBreathChili: true, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodBlessSunfruit, - MainHandImbue: proto.WeaponImbue_WindfuryWeapon, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - StrengthBuff: proto.StrengthBuff_ElixirOfGiants, - EnchantedSigil: proto.EnchantedSigil_LivingDreamsSigil, - AttackPowerBuff: proto.AttackPowerBuff_WinterfallFirewater, - ZanzaBuff: proto.ZanzaBuff_AtalaiMojoOfWar, - }, -} -var Phase4Consumes = core.ConsumesCombo{ - Label: "P4-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_MajorManaPotion, - AgilityElixir: proto.AgilityElixir_ElixirOfTheMongoose, - AttackPowerBuff: proto.AttackPowerBuff_JujuMight, - Flask: proto.Flask_FlaskOfSupremePower, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - DragonBreathChili: true, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSmokedDesertDumpling, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_ConductiveShieldCoating, - StrengthBuff: proto.StrengthBuff_JujuPower, - EnchantedSigil: proto.EnchantedSigil_FlowingWatersSigil, - }, -} - var Phase5Consumes = core.ConsumesCombo{ Label: "P5-Consumes", Consumes: &proto.Consumes{ @@ -155,14 +120,13 @@ var Phase5Consumes = core.ConsumesCombo{ AttackPowerBuff: proto.AttackPowerBuff_JujuMight, DefaultPotion: proto.Potions_MajorManaPotion, DragonBreathChili: true, - EnchantedSigil: proto.EnchantedSigil_FlowingWatersSigil, Flask: proto.Flask_FlaskOfSupremePower, FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, Food: proto.Food_FoodSmokedDesertDumpling, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_MagnificentTrollshine, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - StrengthBuff: proto.StrengthBuff_JujuPower, + //MainHandImbue: proto.WeaponImbue_WildStrikes, + //OffHandImbue: proto.WeaponImbue_MagnificentTrollshine, + SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, + StrengthBuff: proto.StrengthBuff_JujuPower, }, } diff --git a/sim/priest/homunculi.go b/sim/priest/homunculi.go index 753f15d31..e86a337ed 100644 --- a/sim/priest/homunculi.go +++ b/sim/priest/homunculi.go @@ -133,7 +133,7 @@ func (priest *Priest) homunculusStatInheritance() core.PetStatInheritance { } } -func (homunculus *Homunculus) newHomunculusCrippleSpell() core.SpellConfig { +/* func (homunculus *Homunculus) newHomunculusCrippleSpell() core.SpellConfig { attackSpeedAuras := homunculus.NewEnemyAuraArray(core.HomunculiAttackSpeedAura) return core.SpellConfig{ @@ -195,17 +195,17 @@ func (homunculus *Homunculus) newHomunculusDemoralizeSpell() core.SpellConfig { attackPowerAuras.Get(target).Activate(sim) }, } -} +} */ func (homunculus *Homunculus) Initialize() { - switch homunculus.npcID { + /* switch homunculus.npcID { case 202390: homunculus.PrimarySpell = homunculus.GetOrRegisterSpell(homunculus.newHomunculusCrippleSpell()) case 202392: homunculus.PrimarySpell = homunculus.GetOrRegisterSpell(homunculus.newHomunculusDegradeSpell()) case 202391: homunculus.PrimarySpell = homunculus.GetOrRegisterSpell(homunculus.newHomunculusDemoralizeSpell()) - } + } */ } func (homunculus *Homunculus) ExecuteCustomRotation(sim *core.Simulation) { diff --git a/sim/priest/priest.go b/sim/priest/priest.go index c3a239ae8..9f7d6dba2 100644 --- a/sim/priest/priest.go +++ b/sim/priest/priest.go @@ -169,7 +169,7 @@ func New(character *core.Character, talents string) *Priest { } func (priest *Priest) HasRune(rune proto.PriestRune) bool { - return priest.HasRuneById(int32(rune)) + return false // priest.HasRuneById(int32(rune)) } func (priest *Priest) baseRuneAbilityDamage() float64 { diff --git a/sim/priest/shadow/TestShadow.results b/sim/priest/shadow/TestShadow.results index d1caa3a7c..b3478b8bf 100644 --- a/sim/priest/shadow/TestShadow.results +++ b/sim/priest/shadow/TestShadow.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestShadow-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 196.075 - final_stats: 203.665 - final_stats: 389.58205 - final_stats: 237.82 - final_stats: 249.205 + final_stats: 178.25 + final_stats: 185.15 + final_stats: 354.1655 + final_stats: 216.2 + final_stats: 226.55 final_stats: 150 final_stats: 0 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 40 final_stats: 41.25 final_stats: 0 - final_stats: 25.79538 + final_stats: 25.43216 final_stats: 0 final_stats: 0 - final_stats: 1016.075 + final_stats: 798.25 final_stats: 0 final_stats: 16 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4663.3 + final_stats: 4339 final_stats: 0 final_stats: 0 - final_stats: 407.33 - final_stats: 740 + final_stats: 370.3 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 final_stats: 3 final_stats: 5 final_stats: 0 - final_stats: 5412.8205 + final_stats: 5058.655 final_stats: 27 final_stats: 60 final_stats: 60 @@ -53,18 +53,18 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.02449 weights: 0 - weights: 0.28478 weights: 0 + weights: 0.21637 weights: 0 weights: 0 weights: 0 weights: 0 - weights: 0.28478 weights: 0 - weights: 2.29964 - weights: 1.03979 + weights: 0.21637 + weights: 0 + weights: 1.87704 + weights: 0.77573 weights: 0 weights: 0 weights: 0 @@ -99,98 +99,98 @@ stat_weights_results: { dps_results: { key: "TestShadow-Phase5-Lvl60-Average-Default" value: { - dps: 366.05398 - tps: 333.90373 + dps: 286.06733 + tps: 276.95122 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-NightElf-blank-Basic-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 850.70643 - tps: 1046.56122 + dps: 644.32784 + tps: 810.64669 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-NightElf-blank-Basic-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 361.36994 - tps: 326.91127 + dps: 280.56029 + tps: 271.6082 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-NightElf-blank-Basic-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 456.96536 - tps: 332.97219 + dps: 286.68517 + tps: 277.38896 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-NightElf-blank-Basic-phase_5-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 327.74159 - tps: 482.77496 + dps: 286.20154 + tps: 448.27043 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-NightElf-blank-Basic-phase_5-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 204.62535 - tps: 188.61664 + dps: 192.23402 + tps: 188.87547 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-NightElf-blank-Basic-phase_5-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 258.60161 - tps: 194.83899 + dps: 196.52876 + tps: 188.66761 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-Troll-blank-Basic-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 847.43525 - tps: 1070.71069 + dps: 590.44037 + tps: 781.1205 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-Troll-blank-Basic-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 365.47664 - tps: 331.22931 + dps: 284.04091 + tps: 275.05313 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-Troll-blank-Basic-phase_5-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 450.40569 - tps: 329.14729 + dps: 280.26214 + tps: 271.34086 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-Troll-blank-Basic-phase_5-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 324.12485 - tps: 484.28596 + dps: 294.10019 + tps: 455.85314 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-Troll-blank-Basic-phase_5-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 207.49383 - tps: 193.07266 + dps: 194.36975 + tps: 192.39595 } } dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-Troll-blank-Basic-phase_5-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 253.13845 - tps: 192.77275 + dps: 191.14629 + tps: 183.50044 } } dps_results: { key: "TestShadow-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 365.47664 - tps: 331.22931 + dps: 284.04091 + tps: 275.05313 } } diff --git a/sim/priest/shadow/shadow_priest_test.go b/sim/priest/shadow/shadow_priest_test.go index b1df1faf5..9e11bf810 100644 --- a/sim/priest/shadow/shadow_priest_test.go +++ b/sim/priest/shadow/shadow_priest_test.go @@ -24,7 +24,7 @@ func TestShadow(t *testing.T) { Talents: Phase4Talents, GearSet: core.GetGearSet("../../../ui/shadow_priest/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/shadow_priest/apls", "phase_5"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Basic", SpecOptions: PlayerOptionsBasic}, @@ -40,36 +40,6 @@ var Phase2Talents = "--5022204002501251" var Phase3Talents = "-0055-5022204002501251" var Phase4Talents = "0512301302--5002504103501251" -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_ManaPotion, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_BlackfathomManaOil, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_GreaterManaPotion, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_GreaterManaPotion, - Food: proto.Food_FoodNightfinSoup, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_ArcaneElixir, - ShadowPowerBuff: proto.ShadowPowerBuff_ElixirOfShadowPower, - }, -} - var Phase4Consumes = core.ConsumesCombo{ Label: "P4-Consumes", Consumes: &proto.Consumes{ diff --git a/sim/rogue/dps_rogue/TestAssassination.results b/sim/rogue/dps_rogue/TestAssassination.results index a61fc5ce9..20e0b4a76 100644 --- a/sim/rogue/dps_rogue/TestAssassination.results +++ b/sim/rogue/dps_rogue/TestAssassination.results @@ -1,41 +1,41 @@ character_stats_results: { key: "TestAssassination-Phase2-Lvl40-CharacterStats-Default" value: { - final_stats: 80.3 - final_stats: 119.9 - final_stats: 156.2 - final_stats: 59.4 - final_stats: 80.85 - final_stats: 42 + final_stats: 111.32 + final_stats: 156.86 + final_stats: 228.39575 + final_stats: 87.285 + final_stats: 112.90125 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 24 final_stats: 0 - final_stats: 7 + final_stats: 34 final_stats: 0 + final_stats: 21 final_stats: 0 - final_stats: 598.2 final_stats: 0 - final_stats: 14.66644 + final_stats: 886.18 final_stats: 0 + final_stats: 26.72142 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 502.8 - final_stats: 339.9 + final_stats: 0 + final_stats: 576.72 + final_stats: 596.86 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 13.33288 + final_stats: 17.44283 final_stats: 5 final_stats: 0 - final_stats: 2085 + final_stats: 3106.9575 final_stats: 13 final_stats: 30 final_stats: 30 @@ -50,8 +50,8 @@ character_stats_results: { stat_weights_results: { key: "TestAssassination-Phase2-Lvl40-StatWeights-Default" value: { - weights: 0.09138 - weights: 0.1235 + weights: 0.12364 + weights: 0.18085 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.08308 - weights: 0.28223 - weights: 0.50977 + weights: 0.09774 + weights: 0.41048 + weights: 0.82634 weights: 0 weights: 0 weights: 0 @@ -99,8 +99,8 @@ stat_weights_results: { dps_results: { key: "TestAssassination-Phase2-Lvl40-Average-Default" value: { - dps: 51.89712 - tps: 36.84696 + dps: 89.26122 + tps: 63.37547 } } dps_results: { @@ -154,7 +154,7 @@ dps_results: { dps_results: { key: "TestAssassination-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 48.35335 - tps: 34.33088 + dps: 83.64203 + tps: 59.38584 } } diff --git a/sim/rogue/dps_rogue/TestCombat.results b/sim/rogue/dps_rogue/TestCombat.results index 23479d785..4766a6389 100644 --- a/sim/rogue/dps_rogue/TestCombat.results +++ b/sim/rogue/dps_rogue/TestCombat.results @@ -1,41 +1,41 @@ character_stats_results: { key: "TestCombat-Phase2-Lvl40-CharacterStats-Default" value: { - final_stats: 80.3 - final_stats: 119.9 - final_stats: 156.2 - final_stats: 59.4 - final_stats: 80.85 - final_stats: 42 + final_stats: 111.32 + final_stats: 156.86 + final_stats: 228.39575 + final_stats: 87.285 + final_stats: 112.90125 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 24 final_stats: 0 - final_stats: 7 + final_stats: 34 final_stats: 0 + final_stats: 21 final_stats: 0 - final_stats: 598.2 + final_stats: 0 + final_stats: 886.18 final_stats: 5 - final_stats: 9.66644 + final_stats: 21.72142 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 502.8 - final_stats: 339.9 + final_stats: 576.72 + final_stats: 596.86 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 18.33288 + final_stats: 22.44283 final_stats: 5 final_stats: 0 - final_stats: 2085 + final_stats: 3106.9575 final_stats: 13 final_stats: 30 final_stats: 30 @@ -50,8 +50,8 @@ character_stats_results: { stat_weights_results: { key: "TestCombat-Phase2-Lvl40-StatWeights-Default" value: { - weights: 0.09344 - weights: 0.12666 + weights: 0.1259 + weights: 0.18396 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.08495 - weights: 0.57082 - weights: 0.54939 + weights: 0.09953 + weights: 0.8715 + weights: 0.8414 weights: 0 weights: 0 weights: 0 @@ -99,8 +99,8 @@ stat_weights_results: { dps_results: { key: "TestCombat-Phase2-Lvl40-Average-Default" value: { - dps: 52.93561 - tps: 37.58429 + dps: 91.03793 + tps: 64.63693 } } dps_results: { @@ -154,7 +154,7 @@ dps_results: { dps_results: { key: "TestCombat-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 49.69395 - tps: 35.28271 + dps: 85.51688 + tps: 60.71699 } } diff --git a/sim/rogue/dps_rogue/dps_rogue_test.go b/sim/rogue/dps_rogue/dps_rogue_test.go index dff395faf..c1ce952ff 100644 --- a/sim/rogue/dps_rogue/dps_rogue_test.go +++ b/sim/rogue/dps_rogue/dps_rogue_test.go @@ -22,7 +22,7 @@ func TestCombat(t *testing.T) { Talents: CombatDagger40Talents, GearSet: core.GetGearSet("../../../ui/rogue/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/rogue/apls", "mutilate"), - Buffs: core.FullBuffsPhase2, + Buffs: core.FullBuffs, Consumes: Phase2Consumes, SpecOptions: core.SpecOptionsCombo{Label: "No Poisons", SpecOptions: DefaultCombatRogue}, @@ -44,7 +44,7 @@ func TestAssassination(t *testing.T) { Talents: Assassination40Talents, GearSet: core.GetGearSet("../../../ui/rogue/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/rogue/apls", "mutilate"), - Buffs: core.FullBuffsPhase2, + Buffs: core.FullBuffs, Consumes: Phase2Consumes, SpecOptions: core.SpecOptionsCombo{Label: "No Poisons", SpecOptions: DefaultAssassinationRogue}, @@ -97,21 +97,11 @@ var DefaultCombatRogue = &proto.Player_Rogue{ var DefaultDeadlyBrewOptions = &proto.RogueOptions{} -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfLesserAgility, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_BlackfathomSharpeningStone, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - var Phase2Consumes = core.ConsumesCombo{ Label: "P2-Consumes", Consumes: &proto.Consumes{ AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - MainHandImbue: proto.WeaponImbue_WildStrikes, + MainHandImbue: proto.WeaponImbue_Windfury, OffHandImbue: proto.WeaponImbue_SolidSharpeningStone, StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, }, diff --git a/sim/rogue/rogue.go b/sim/rogue/rogue.go index 79cea68ae..dbf936712 100644 --- a/sim/rogue/rogue.go +++ b/sim/rogue/rogue.go @@ -94,7 +94,7 @@ type Rogue struct { ExposeArmor *core.Spell Rupture *core.Spell SliceAndDice *core.Spell - Finishers []*core.Spell + Finishers []*core.Spell Evasion *core.Spell BladeDance *core.Spell @@ -251,7 +251,7 @@ type RogueAgent interface { } func (rogue *Rogue) HasRune(rune proto.RogueRune) bool { - return rogue.HasRuneById(int32(rune)) + return false // rogue.HasRuneById(int32(rune)) } func (rogue *Rogue) baseRuneAbilityDamage() float64 { diff --git a/sim/rogue/waylay.go b/sim/rogue/waylay.go index 8bc22a0cb..f7d719296 100644 --- a/sim/rogue/waylay.go +++ b/sim/rogue/waylay.go @@ -1,7 +1,6 @@ package rogue import ( - "github.com/wowsims/classic/sim/core" "github.com/wowsims/classic/sim/core/proto" ) @@ -10,7 +9,7 @@ func (rogue *Rogue) registerWaylayAura() { return } - rogue.WaylayAuras = rogue.NewEnemyAuraArray(func(target *core.Unit, level int32) *core.Aura { - return core.WaylayAura(target) - }) + // rogue.WaylayAuras = rogue.NewEnemyAuraArray(func(target *core.Unit, level int32) *core.Aura { + // return core.WaylayAura(target) + // }) } diff --git a/sim/shaman/elemental/TestElemental.results b/sim/shaman/elemental/TestElemental.results index 989a99b84..200c0efb1 100644 --- a/sim/shaman/elemental/TestElemental.results +++ b/sim/shaman/elemental/TestElemental.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestElemental-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 259.325 - final_stats: 222.64 - final_stats: 365.14225 - final_stats: 199.87 - final_stats: 217.58 - final_stats: 186 + final_stats: 235.75 + final_stats: 202.4 + final_stats: 331.9475 + final_stats: 181.7 + final_stats: 197.8 + final_stats: 150 final_stats: 0 final_stats: 40 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 41.25 final_stats: 3 - final_stats: 27.6778 + final_stats: 26.37073 final_stats: 0 final_stats: 0 - final_stats: 1448.65 + final_stats: 1201.5 final_stats: 3 - final_stats: 26.01011 + final_stats: 24.98192 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4238.05 + final_stats: 3965.5 final_stats: 0 final_stats: 0 - final_stats: 829.28 - final_stats: 740 + final_stats: 788.8 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 13.01011 + final_stats: 11.98192 final_stats: 5 final_stats: 0 - final_stats: 5194.4225 + final_stats: 4862.475 final_stats: 27 final_stats: 60 final_stats: 60 @@ -53,18 +53,18 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 1.09248 + weights: 0.86107 weights: 0 - weights: 0.80904 + weights: 0.59438 weights: 0 - weights: 0.11555 + weights: 0.09364 weights: 0 weights: 0 - weights: 0.69349 + weights: 0.50074 weights: 0 weights: 0 - weights: 6.9332 - weights: 4.39118 + weights: 5.94787 + weights: 3.04633 weights: 0 weights: 0 weights: 0 @@ -99,98 +99,98 @@ stat_weights_results: { dps_results: { key: "TestElemental-Phase5-Lvl60-Average-Default" value: { - dps: 672.95578 - tps: 677.91111 + dps: 480.31666 + tps: 492.31878 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Orc-blank-Adaptive-phase_5-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 1341.60726 - tps: 1291.62489 + dps: 984.80073 + tps: 1112.17934 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Orc-blank-Adaptive-phase_5-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 626.5589 - tps: 628.08134 + dps: 440.22006 + tps: 448.51497 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Orc-blank-Adaptive-phase_5-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 716.89938 - tps: 725.56093 + dps: 525.39144 + tps: 541.24744 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Orc-blank-Adaptive-phase_5-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 453.56239 - tps: 678.48833 + dps: 439.78229 + tps: 670.41777 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Orc-blank-Adaptive-phase_5-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 204.00015 - tps: 208.96293 + dps: 193.28771 + tps: 199.2521 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Orc-blank-Adaptive-phase_5-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 307.53315 - tps: 319.6936 + dps: 290.74843 + tps: 303.82981 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Troll-blank-Adaptive-phase_5-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 1320.91048 - tps: 1297.77723 + dps: 976.53039 + tps: 1111.55347 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Troll-blank-Adaptive-phase_5-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 624.42618 - tps: 626.23169 + dps: 435.25247 + tps: 444.01548 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Troll-blank-Adaptive-phase_5-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 739.66558 - tps: 749.90851 + dps: 540.48595 + tps: 557.37134 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Troll-blank-Adaptive-phase_5-NoBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 420.30746 - tps: 676.11031 + dps: 407.40739 + tps: 668.29302 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Troll-blank-Adaptive-phase_5-NoBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 205.14144 - tps: 210.4885 + dps: 194.00563 + tps: 200.3651 } } dps_results: { key: "TestElemental-Phase5-Lvl60-Settings-Troll-blank-Adaptive-phase_5-NoBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 302.12587 - tps: 314.5904 + dps: 285.69204 + tps: 299.14104 } } dps_results: { key: "TestElemental-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 672.25324 - tps: 677.51161 + dps: 481.00463 + tps: 493.33076 } } diff --git a/sim/shaman/elemental/elemental_test.go b/sim/shaman/elemental/elemental_test.go index 100fc5150..36a69ce56 100644 --- a/sim/shaman/elemental/elemental_test.go +++ b/sim/shaman/elemental/elemental_test.go @@ -24,7 +24,7 @@ func TestElemental(t *testing.T) { Talents: Phase4Talents, GearSet: core.GetGearSet("../../../ui/elemental_shaman/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/elemental_shaman/apls", "phase_5"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase5Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Adaptive", SpecOptions: PlayerOptionsAdaptive}, @@ -46,63 +46,15 @@ var PlayerOptionsAdaptive = &proto.Player_ElementalShaman{ }, } -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_ManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_BlackfathomManaOil, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_GreaterManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - OffHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_GreaterManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower, - Food: proto.Food_FoodNightfinSoup, - MainHandImbue: proto.WeaponImbue_FlametongueWeapon, - OffHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_ArcaneElixir, - StrengthBuff: proto.StrengthBuff_ElixirOfGiants, - }, -} - -var Phase4Consumes = core.ConsumesCombo{ - Label: "P4-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_MajorManaPotion, - Flask: proto.Flask_FlaskOfSupremePower, - FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower, - Food: proto.Food_FoodRunnTumTuberSurprise, - MainHandImbue: proto.WeaponImbue_FlametongueWeapon, - OffHandImbue: proto.WeaponImbue_ConductiveShieldCoating, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - }, -} - var Phase5Consumes = core.ConsumesCombo{ Label: "P5-Consumes", Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_MajorManaPotion, - Flask: proto.Flask_FlaskOfSupremePower, - FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower, - Food: proto.Food_FoodRunnTumTuberSurprise, - MainHandImbue: proto.WeaponImbue_FlametongueWeapon, - OffHandImbue: proto.WeaponImbue_MagnificentTrollshine, + DefaultPotion: proto.Potions_MajorManaPotion, + Flask: proto.Flask_FlaskOfSupremePower, + FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower, + Food: proto.Food_FoodRunnTumTuberSurprise, + MainHandImbue: proto.WeaponImbue_FlametongueWeapon, + //OffHandImbue: proto.WeaponImbue_MagnificentTrollshine, SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, }, } diff --git a/sim/shaman/enhancement/TestEnhancement.results b/sim/shaman/enhancement/TestEnhancement.results index ca13e9b2e..8713fbfc0 100644 --- a/sim/shaman/enhancement/TestEnhancement.results +++ b/sim/shaman/enhancement/TestEnhancement.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestEnhancement-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 309.925 - final_stats: 254.265 - final_stats: 365.14225 - final_stats: 187.22 - final_stats: 217.58 + final_stats: 281.75 + final_stats: 231.15 + final_stats: 331.9475 + final_stats: 170.2 + final_stats: 197.8 final_stats: 150 final_stats: 0 final_stats: 40 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 41.25 final_stats: 0 - final_stats: 26.46402 + final_stats: 26.17638 final_stats: 0 final_stats: 0 - final_stats: 1589.85 + final_stats: 1333.5 final_stats: 0 - final_stats: 34.61666 + final_stats: 33.44242 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4250.715 + final_stats: 3982.65 final_stats: 0 final_stats: 0 - final_stats: 892.53 - final_stats: 780 + final_stats: 846.3 + final_stats: 580 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 14.61666 + final_stats: 13.44242 final_stats: 5 final_stats: 0 - final_stats: 5194.4225 + final_stats: 4862.475 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestEnhancement-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.35917 - weights: 0.25331 + weights: 0.32131 + weights: 0.19853 weights: 0 weights: 0 weights: 0 - weights: 0.24094 + weights: 0.19354 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.14196 - weights: 1.09562 - weights: 2.91414 + weights: 0.1397 + weights: 0 + weights: 2.66043 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestEnhancement-Phase5-Lvl60-Average-Default" value: { - dps: 464.11124 - tps: 536.93181 + dps: 377.21667 + tps: 437.35171 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Orc-blank-Sync Auto-phase_5-FullBuffs-P4-Consumes WF/WF-LongMultiTarget" value: { - dps: 444.9234 - tps: 1223.36454 + dps: 332.77234 + tps: 1069.28374 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Orc-blank-Sync Auto-phase_5-FullBuffs-P4-Consumes WF/WF-LongSingleTarget" value: { - dps: 243.60587 - tps: 314.39053 + dps: 195.32497 + tps: 252.95362 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Orc-blank-Sync Auto-phase_5-FullBuffs-P4-Consumes WF/WF-ShortSingleTarget" value: { - dps: 242.69644 - tps: 314.55301 + dps: 195.60525 + tps: 254.75339 } } dps_results: { @@ -148,22 +148,22 @@ dps_results: { dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Orc-blank-Sync Delay OH-phase_5-FullBuffs-P4-Consumes WF/WF-LongMultiTarget" value: { - dps: 444.9234 - tps: 1223.36454 + dps: 332.77234 + tps: 1069.28374 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Orc-blank-Sync Delay OH-phase_5-FullBuffs-P4-Consumes WF/WF-LongSingleTarget" value: { - dps: 243.60587 - tps: 314.39053 + dps: 195.32497 + tps: 252.95362 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Orc-blank-Sync Delay OH-phase_5-FullBuffs-P4-Consumes WF/WF-ShortSingleTarget" value: { - dps: 242.69644 - tps: 314.55301 + dps: 195.60525 + tps: 254.75339 } } dps_results: { @@ -190,22 +190,22 @@ dps_results: { dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Troll-blank-Sync Auto-phase_5-FullBuffs-P4-Consumes WF/WF-LongMultiTarget" value: { - dps: 442.78265 - tps: 1220.6077 + dps: 332.82745 + tps: 1073.47774 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Troll-blank-Sync Auto-phase_5-FullBuffs-P4-Consumes WF/WF-LongSingleTarget" value: { - dps: 248.42012 - tps: 322.69053 + dps: 197.94019 + tps: 257.11544 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Troll-blank-Sync Auto-phase_5-FullBuffs-P4-Consumes WF/WF-ShortSingleTarget" value: { - dps: 242.60023 - tps: 315.25556 + dps: 195.51878 + tps: 252.48662 } } dps_results: { @@ -232,22 +232,22 @@ dps_results: { dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Troll-blank-Sync Delay OH-phase_5-FullBuffs-P4-Consumes WF/WF-LongMultiTarget" value: { - dps: 442.78265 - tps: 1220.6077 + dps: 332.82745 + tps: 1073.47774 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Troll-blank-Sync Delay OH-phase_5-FullBuffs-P4-Consumes WF/WF-LongSingleTarget" value: { - dps: 248.42012 - tps: 322.69053 + dps: 197.94019 + tps: 257.11544 } } dps_results: { key: "TestEnhancement-Phase5-Lvl60-Settings-Troll-blank-Sync Delay OH-phase_5-FullBuffs-P4-Consumes WF/WF-ShortSingleTarget" value: { - dps: 242.60023 - tps: 315.25556 + dps: 195.51878 + tps: 252.48662 } } dps_results: { @@ -274,7 +274,7 @@ dps_results: { dps_results: { key: "TestEnhancement-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 411.0518 - tps: 481.64665 + dps: 337.06084 + tps: 396.17458 } } diff --git a/sim/shaman/enhancement/enhancement_test.go b/sim/shaman/enhancement/enhancement_test.go index 2c33109e7..1542f0724 100644 --- a/sim/shaman/enhancement/enhancement_test.go +++ b/sim/shaman/enhancement/enhancement_test.go @@ -27,7 +27,7 @@ func TestEnhancement(t *testing.T) { // core.GetGearSet("../../../ui/enhancement_shaman/gear_sets", "phase_5_2h"), // }, Rotation: core.GetAplRotation("../../../ui/enhancement_shaman/apls", "phase_5"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase4ConsumesWFWF, SpecOptions: core.SpecOptionsCombo{Label: "Sync Auto", SpecOptions: PlayerOptionsSyncAuto}, OtherSpecOptions: []core.SpecOptionsCombo{ @@ -66,78 +66,6 @@ var optionsSyncAuto = &proto.EnhancementShaman_Options{ SyncType: proto.ShamanSyncType_Auto, } -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfLesserAgility, - DefaultPotion: proto.Potions_ManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - MainHandImbue: proto.WeaponImbue_RockbiterWeapon, - OffHandImbue: proto.WeaponImbue_RockbiterWeapon, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase2ConsumesWFWF = core.ConsumesCombo{ - Label: "P2-Consumes WF/WF", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - DefaultPotion: proto.Potions_ManaPotion, - DragonBreathChili: true, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WindfuryWeapon, - OffHandImbue: proto.WeaponImbue_WindfuryWeapon, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase2ConsumesWFFT = core.ConsumesCombo{ - Label: "P2-Consumes WF/FT", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - DefaultPotion: proto.Potions_ManaPotion, - DragonBreathChili: true, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WindfuryWeapon, - OffHandImbue: proto.WeaponImbue_FlametongueWeapon, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - StrengthBuff: proto.StrengthBuff_ScrollOfStrength, - }, -} - -var Phase3ConsumesWFWF = core.ConsumesCombo{ - Label: "P3-Consumes WF/WF", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - DefaultPotion: proto.Potions_ManaPotion, - DragonBreathChili: true, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WindfuryWeapon, - OffHandImbue: proto.WeaponImbue_WindfuryWeapon, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase3ConsumesWFFT = core.ConsumesCombo{ - Label: "P3-Consumes WF/FT", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - DefaultPotion: proto.Potions_ManaPotion, - DragonBreathChili: true, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WindfuryWeapon, - OffHandImbue: proto.WeaponImbue_FlametongueWeapon, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - StrengthBuff: proto.StrengthBuff_ScrollOfStrength, - }, -} - var Phase4ConsumesWFWF = core.ConsumesCombo{ Label: "P4-Consumes WF/WF", Consumes: &proto.Consumes{ @@ -155,23 +83,6 @@ var Phase4ConsumesWFWF = core.ConsumesCombo{ }, } -var Phase4ConsumesWFFT = core.ConsumesCombo{ - Label: "P4-Consumes WF/FT", - Consumes: &proto.Consumes{ - AttackPowerBuff: proto.AttackPowerBuff_JujuMight, - AgilityElixir: proto.AgilityElixir_ElixirOfTheMongoose, - DefaultPotion: proto.Potions_MajorManaPotion, - DragonBreathChili: true, - FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower, - Flask: proto.Flask_FlaskOfSupremePower, - Food: proto.Food_FoodBlessSunfruit, - MainHandImbue: proto.WeaponImbue_WindfuryWeapon, - OffHandImbue: proto.WeaponImbue_FlametongueWeapon, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - StrengthBuff: proto.StrengthBuff_JujuPower, - }, -} - var ItemFilters = core.ItemFilter{ WeaponTypes: []proto.WeaponType{ proto.WeaponType_WeaponTypeAxe, diff --git a/sim/shaman/runes.go b/sim/shaman/runes.go index a0c449b3d..ac8d7f28f 100644 --- a/sim/shaman/runes.go +++ b/sim/shaman/runes.go @@ -454,7 +454,7 @@ func (shaman *Shaman) applySpiritOfTheAlpha() { return } - shaman.SpiritOfTheAlphaAura = core.SpiritOfTheAlphaAura(&shaman.Unit) + /* shaman.SpiritOfTheAlphaAura = core.SpiritOfTheAlphaAura(&shaman.Unit) shaman.LoyalBetaAura = shaman.RegisterAura(core.Aura{ Label: "Loyal Beta", Duration: core.NeverExpires, @@ -474,5 +474,5 @@ func (shaman *Shaman) applySpiritOfTheAlpha() { shaman.LoyalBetaAura.OnReset = func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) } - } + } */ } diff --git a/sim/shaman/shaman.go b/sim/shaman/shaman.go index 4f2ea6a39..01bd96634 100644 --- a/sim/shaman/shaman.go +++ b/sim/shaman/shaman.go @@ -239,7 +239,7 @@ func (shaman *Shaman) RegisterHealingSpells() { } func (shaman *Shaman) HasRune(rune proto.ShamanRune) bool { - return shaman.HasRuneById(int32(rune)) + return false // shaman.HasRuneById(int32(rune)) } func (shaman *Shaman) baseRuneAbilityDamage() float64 { diff --git a/sim/shaman/warden/TestWardenShaman.results b/sim/shaman/warden/TestWardenShaman.results index ed2f24cf3..d4a0e27a3 100644 --- a/sim/shaman/warden/TestWardenShaman.results +++ b/sim/shaman/warden/TestWardenShaman.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestWardenShaman-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 269.5 - final_stats: 221.1 - final_stats: 317.515 - final_stats: 162.8 - final_stats: 189.2 - final_stats: 24 + final_stats: 281.75 + final_stats: 231.15 + final_stats: 331.9475 + final_stats: 170.2 + final_stats: 197.8 + final_stats: 0 final_stats: 0 final_stats: 40 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 41.25 final_stats: 0 - final_stats: 26.05132 + final_stats: 26.17638 final_stats: 0 final_stats: 0 - final_stats: 1509 + final_stats: 1333.5 final_stats: 0 - final_stats: 32.93188 + final_stats: 33.44242 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 3682 + final_stats: 3793 final_stats: 0 final_stats: 0 - final_stats: 826.2 - final_stats: 780 + final_stats: 846.3 + final_stats: 580 final_stats: 0 final_stats: 10 final_stats: 0 - final_stats: 13.93188 + final_stats: 14.44242 final_stats: 5 final_stats: 0 - final_stats: 5918.15 + final_stats: 6062.475 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestWardenShaman-Phase4-Lvl60-StatWeights-Default" value: { - weights: 0.30619 + weights: 0.17423 weights: 0 weights: 0 weights: 0 weights: 0 - weights: 0.24441 + weights: 0.31539 weights: 0 weights: 0 weights: 0 @@ -67,7 +67,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.13918 + weights: 0.07575 weights: 0 weights: 0 weights: 0 @@ -99,98 +99,98 @@ stat_weights_results: { dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Average-Default" value: { - dps: 422.97807 - tps: 499.09774 + dps: 327.98438 + tps: 404.21491 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-blank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 999.57947 - tps: 962.47178 + dps: 671.0095 + tps: 953.09317 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-blank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 221.44878 - tps: 292.88457 + dps: 215.9138 + tps: 271.66805 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-blank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 231.27534 - tps: 313.09316 + dps: 265.358 + tps: 333.7229 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-blank-Default-phase_4_enh_tank-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 338.93776 - tps: 592.039 + dps: 261.69901 + tps: 596.83617 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-blank-Default-phase_4_enh_tank-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 83.80546 - tps: 122.00432 + dps: 97.72531 + tps: 124.94224 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-blank-Default-phase_4_enh_tank-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 122.43003 - tps: 181.33723 + dps: 160.86839 + tps: 206.39957 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-blank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 1014.57069 - tps: 954.5221 + dps: 662.21242 + tps: 940.98577 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-blank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 220.81782 - tps: 291.59742 + dps: 209.47357 + tps: 267.86044 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-blank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 232.36226 - tps: 318.68043 + dps: 280.11475 + tps: 358.28878 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-blank-Default-phase_4_enh_tank-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 328.07216 - tps: 589.79097 + dps: 249.44591 + tps: 594.67489 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-blank-Default-phase_4_enh_tank-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 81.51148 - tps: 118.83441 + dps: 95.9338 + tps: 120.83474 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-blank-Default-phase_4_enh_tank-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 116.52384 - tps: 172.11843 + dps: 151.80274 + tps: 197.09888 } } dps_results: { key: "TestWardenShaman-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 381.4182 - tps: 457.92841 + dps: 305.08563 + tps: 378.70308 } } diff --git a/sim/shaman/warden/warden_test.go b/sim/shaman/warden/warden_test.go index 55ce30508..176bfc36f 100644 --- a/sim/shaman/warden/warden_test.go +++ b/sim/shaman/warden/warden_test.go @@ -23,7 +23,7 @@ func TestWardenShaman(t *testing.T) { Talents: Phase4Talents, GearSet: core.GetGearSet("../../../ui/warden_shaman/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/warden_shaman/apls", "phase_4_enh_tank"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Default", SpecOptions: PlayerOptionsBasic}, @@ -53,9 +53,9 @@ var Phase4Consumes = core.ConsumesCombo{ Flask: proto.Flask_FlaskOfTheTitans, Food: proto.Food_FoodBlessSunfruit, MainHandImbue: proto.WeaponImbue_WindfuryWeapon, - OffHandImbue: proto.WeaponImbue_ConductiveShieldCoating, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - StrengthBuff: proto.StrengthBuff_JujuPower, + //OffHandImbue: proto.WeaponImbue_ConductiveShieldCoating, + SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, + StrengthBuff: proto.StrengthBuff_JujuPower, }, } diff --git a/sim/warlock/dps/TestAffliction.results b/sim/warlock/dps/TestAffliction.results index 6fd7d5beb..0bfa0c765 100644 --- a/sim/warlock/dps/TestAffliction.results +++ b/sim/warlock/dps/TestAffliction.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestAffliction-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 185.9 - final_stats: 194.7 - final_stats: 418.715 - final_stats: 247.5 - final_stats: 228.8 - final_stats: 559.4 + final_stats: 194.35 + final_stats: 203.55 + final_stats: 437.7475 + final_stats: 258.75 + final_stats: 239.2 + final_stats: 564.6 final_stats: 0 final_stats: 40 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 159 final_stats: 45.25 final_stats: 5 - final_stats: 28.78375 + final_stats: 28.96938 final_stats: 0 final_stats: 0 - final_stats: 1005.9 + final_stats: 814.35 final_stats: 0 - final_stats: 24.735 + final_stats: 25.1775 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4805.5 + final_stats: 4974.25 final_stats: 0 final_stats: 0 - final_stats: 1335.4 - final_stats: 740 + final_stats: 1353.1 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 11.735 + final_stats: 12.1775 final_stats: 5 final_stats: 0 - final_stats: 5721.15 + final_stats: 5911.475 final_stats: 27 final_stats: 76 final_stats: 60 @@ -53,9 +53,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.09356 + weights: 0.02841 weights: 0 - weights: 0.36868 + weights: 0.28413 weights: 0 weights: 0 weights: 0 @@ -63,8 +63,8 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 4.22644 - weights: 0.91006 + weights: 3.47155 + weights: 0.74065 weights: 0 weights: 0 weights: 0 @@ -99,33 +99,33 @@ stat_weights_results: { dps_results: { key: "TestAffliction-Phase4-Lvl60-Average-Default" value: { - dps: 603.11442 - tps: 419.26858 - hps: 248.4336 + dps: 503.11693 + tps: 355.02362 + hps: 207.21698 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-placeholder-Affliction Warlock-affliction-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 600.10222 - tps: 883.76633 - hps: 248.67172 + dps: 500.4467 + tps: 822.12009 + hps: 206.57229 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-placeholder-Affliction Warlock-affliction-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 600.10222 - tps: 416.35718 - hps: 248.67172 + dps: 500.4467 + tps: 352.10643 + hps: 206.57229 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-placeholder-Affliction Warlock-affliction-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 632.46626 - tps: 450.38919 - hps: 232.61922 + dps: 523.21588 + tps: 376.7872 + hps: 196.21055 } } dps_results: { @@ -155,8 +155,8 @@ dps_results: { dps_results: { key: "TestAffliction-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 600.10222 - tps: 416.35718 - hps: 248.67172 + dps: 500.4467 + tps: 352.10643 + hps: 206.57229 } } diff --git a/sim/warlock/dps/TestDemonology.results b/sim/warlock/dps/TestDemonology.results index ca48e60ad..7574a8037 100644 --- a/sim/warlock/dps/TestDemonology.results +++ b/sim/warlock/dps/TestDemonology.results @@ -1,41 +1,41 @@ character_stats_results: { key: "TestDemonology-Phase2-Lvl40-CharacterStats-Default" value: { - final_stats: 99 - final_stats: 60.5 - final_stats: 297.275 - final_stats: 165 - final_stats: 123.31 - final_stats: 390.655 + final_stats: 120.75 + final_stats: 80.5 + final_stats: 398.46925 + final_stats: 189.75 + final_stats: 158.4125 + final_stats: 524.20625 final_stats: 0 - final_stats: 10 + final_stats: 40 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 119 - final_stats: 28.75 + final_stats: 159 + final_stats: 32.75 final_stats: 5 - final_stats: 15.023 + final_stats: 29.67145 final_stats: 0 final_stats: 0 - final_stats: 325 + final_stats: 566.75 final_stats: 0 - final_stats: 9.2229 + final_stats: 20.6189 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 3118 + final_stats: 3489.25 final_stats: 0 final_stats: 0 - final_stats: 946 - final_stats: 220 + final_stats: 986 + final_stats: 440 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 6.2229 + final_stats: 7.6189 final_stats: 5 final_stats: 0 - final_stats: 3426.75 + final_stats: 4738.6925 final_stats: 13 final_stats: 46 final_stats: 30 @@ -43,7 +43,7 @@ character_stats_results: { final_stats: 30 final_stats: 263 final_stats: 0 - final_stats: 14 + final_stats: 35 final_stats: 0 } } @@ -53,9 +53,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.00163 + weights: 0.004 weights: 0 - weights: 0.06564 + weights: 0.0709 weights: 0 weights: 0 weights: 0 @@ -64,7 +64,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.1072 + weights: 0.13387 weights: 0 weights: 0 weights: 0 @@ -99,56 +99,56 @@ stat_weights_results: { dps_results: { key: "TestDemonology-Phase2-Lvl40-Average-Default" value: { - dps: 58.07694 - tps: 61.02938 + dps: 76.1651 + tps: 80.20343 } } dps_results: { - key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-FullBuffs-P2-Consumes-LongMultiTarget" + key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 57.78387 - tps: 70.56708 + dps: 75.78854 + tps: 89.68818 } } dps_results: { - key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-FullBuffs-P2-Consumes-LongSingleTarget" + key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 57.78387 - tps: 60.69183 + dps: 75.78854 + tps: 79.81293 } } dps_results: { - key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-FullBuffs-P2-Consumes-ShortSingleTarget" + key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 61.01446 - tps: 74.47527 + dps: 81.78573 + tps: 100.98705 } } dps_results: { - key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-NoBuffs-P2-Consumes-LongMultiTarget" + key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 41.79227 - tps: 43.38676 + dps: 52.79904 + tps: 54.97303 } } dps_results: { - key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-NoBuffs-P2-Consumes-LongSingleTarget" + key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 41.79227 - tps: 43.38676 + dps: 52.79904 + tps: 54.97303 } } dps_results: { - key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-NoBuffs-P2-Consumes-ShortSingleTarget" + key: "TestDemonology-Phase2-Lvl40-Settings-Orc-placeholder-Demonology Warlock-demonology-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 43.72992 - tps: 52.0126 + dps: 55.93888 + tps: 67.23421 } } dps_results: { key: "TestDemonology-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 57.78387 - tps: 60.69183 + dps: 75.78854 + tps: 79.81293 } } diff --git a/sim/warlock/dps/TestDestruction.results b/sim/warlock/dps/TestDestruction.results index 03c314f09..877530544 100644 --- a/sim/warlock/dps/TestDestruction.results +++ b/sim/warlock/dps/TestDestruction.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestDestruction-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 185.9 - final_stats: 194.7 - final_stats: 481.52225 - final_stats: 247.5 - final_stats: 217.36 - final_stats: 553.68 + final_stats: 194.35 + final_stats: 203.55 + final_stats: 503.40962 + final_stats: 258.75 + final_stats: 227.24 + final_stats: 558.62 final_stats: 0 final_stats: 40 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 159 final_stats: 45.25 final_stats: 5 - final_stats: 28.78375 + final_stats: 28.96938 final_stats: 0 final_stats: 0 - final_stats: 1005.9 + final_stats: 814.35 final_stats: 0 - final_stats: 24.735 + final_stats: 25.1775 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4805.5 + final_stats: 4974.25 final_stats: 0 final_stats: 0 - final_stats: 1335.4 - final_stats: 740 + final_stats: 1353.1 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 11.735 + final_stats: 12.1775 final_stats: 5 final_stats: 0 - final_stats: 6349.2225 + final_stats: 6568.09625 final_stats: 27 final_stats: 76 final_stats: 60 @@ -53,9 +53,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.20519 + weights: 0.23734 weights: 0 - weights: 0.59749 + weights: 0.35633 weights: 0 weights: 0 weights: 0 @@ -63,8 +63,8 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 4.58894 - weights: 1.53785 + weights: 5.08727 + weights: 2.46119 weights: 0 weights: 0 weights: 0 @@ -99,56 +99,56 @@ stat_weights_results: { dps_results: { key: "TestDestruction-Phase4-Lvl60-Average-Default" value: { - dps: 565.43322 - tps: 337.55073 + dps: 662.52898 + tps: 495.4123 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-placeholder-Destruction Warlock-destruction-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 566.82962 - tps: 575.20121 + dps: 664.84066 + tps: 1093.96523 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-placeholder-Destruction Warlock-destruction-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 566.82962 - tps: 339.39457 + dps: 664.84066 + tps: 498.74818 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-placeholder-Destruction Warlock-destruction-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 593.95251 - tps: 388.94832 + dps: 728.86416 + tps: 587.44758 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-placeholder-Destruction Warlock-destruction-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 298.65744 - tps: 564.22982 + dps: 124.33411 + tps: 892.43736 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-placeholder-Destruction Warlock-destruction-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 298.65744 - tps: 187.49258 + dps: 124.33411 + tps: 49.90734 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-placeholder-Destruction Warlock-destruction-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 318.17263 - tps: 215.59291 + dps: 108.5207 + tps: 34.05603 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 566.82962 - tps: 339.39457 + dps: 664.58069 + tps: 498.37335 } } diff --git a/sim/warlock/dps/dps_warlock_test.go b/sim/warlock/dps/dps_warlock_test.go index c58363ce2..8500de2d5 100644 --- a/sim/warlock/dps/dps_warlock_test.go +++ b/sim/warlock/dps/dps_warlock_test.go @@ -23,7 +23,7 @@ func TestAffliction(t *testing.T) { Talents: Phase4AffTalents, GearSet: core.GetGearSet("../../../ui/warlock/gear_sets", "placeholder"), Rotation: core.GetAplRotation("../../../ui/warlock/apls/p4", "affliction"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Affliction Warlock", SpecOptions: DefaultAfflictionWarlock}, @@ -44,8 +44,8 @@ func TestDemonology(t *testing.T) { Talents: Phase2DemonologyTalents, GearSet: core.GetGearSet("../../../ui/warlock/gear_sets", "placeholder"), Rotation: core.GetAplRotation("../../../ui/warlock/apls/p2", "demonology"), - Buffs: core.FullBuffsPhase2, - Consumes: Phase2Consumes, + Buffs: core.FullBuffs, + Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Demonology Warlock", SpecOptions: DefaultDemonologyWarlock}, ItemFilter: ItemFilters, @@ -66,7 +66,7 @@ func TestDestruction(t *testing.T) { Talents: Phase4DestroTalents, GearSet: core.GetGearSet("../../../ui/warlock/gear_sets", "placeholder"), Rotation: core.GetAplRotation("../../../ui/warlock/apls/p4", "destruction"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Destruction Warlock", SpecOptions: DefaultDestroWarlock}, @@ -119,39 +119,6 @@ var DefaultDemonologyWarlock = &proto.Player_Warlock{ }, } -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_ManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_BlackfathomManaOil, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_ManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_SuperiorManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - ShadowPowerBuff: proto.ShadowPowerBuff_ElixirOfShadowPower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - }, -} - var Phase4Consumes = core.ConsumesCombo{ Label: "P4-Consumes", Consumes: &proto.Consumes{ diff --git a/sim/warlock/runes.go b/sim/warlock/runes.go index 5aac044bc..5414e36ae 100644 --- a/sim/warlock/runes.go +++ b/sim/warlock/runes.go @@ -2,7 +2,6 @@ package warlock import ( "fmt" - "math" "slices" "time" @@ -162,9 +161,9 @@ func (warlock *Warlock) applyMarkOfChaos() { return } - warlock.MarkOfChaosAuras = warlock.NewEnemyAuraArray(func(target *core.Unit, _ int32) *core.Aura { - return core.MarkOfChaosDebuffAura(target) - }) + // warlock.MarkOfChaosAuras = warlock.NewEnemyAuraArray(func(target *core.Unit, _ int32) *core.Aura { + // return core.MarkOfChaosDebuffAura(target) + // }) } func (warlock *Warlock) applyMarkOfChaosDebuff(sim *core.Simulation, target *core.Unit, duration time.Duration) { @@ -465,7 +464,7 @@ func (warlock *Warlock) applyDemonicPact() { return } - icd := core.Cooldown{ + /* icd := core.Cooldown{ Timer: warlock.NewTimer(), Duration: 1 * time.Second, } @@ -515,5 +514,5 @@ func (warlock *Warlock) applyDemonicPact() { for _, pet := range warlock.BasePets { pet.RegisterAura(dpTriggerConfig) - } + } */ } diff --git a/sim/warlock/talents.go b/sim/warlock/talents.go index a18e57547..3a3ba14d8 100644 --- a/sim/warlock/talents.go +++ b/sim/warlock/talents.go @@ -545,9 +545,7 @@ func (warlock *Warlock) applyImprovedShadowBolt() { return } - hasShadowflameRune := warlock.HasRune(proto.WarlockRune_RuneBootsShadowflame) - - stackCount := core.TernaryInt32(hasShadowflameRune, core.ISBNumStacksShadowflame, core.ISBNumStacksBase) + stackCount := int32(core.ISBNumStacksBase) warlock.ImprovedShadowBoltAuras = warlock.NewEnemyAuraArray(func(unit *core.Unit, level int32) *core.Aura { return core.ImprovedShadowBoltAura(unit, warlock.Talents.ImprovedShadowBolt, stackCount) }) diff --git a/sim/warlock/tank/TestAffliction.results b/sim/warlock/tank/TestAffliction.results index 0ff32251a..6402954b9 100644 --- a/sim/warlock/tank/TestAffliction.results +++ b/sim/warlock/tank/TestAffliction.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestAffliction-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 183.7 - final_stats: 182.6 - final_stats: 296.01 - final_stats: 185.9 - final_stats: 221.1 - final_stats: 320.55 + final_stats: 192.05 + final_stats: 190.9 + final_stats: 309.465 + final_stats: 194.35 + final_stats: 231.15 + final_stats: 325.575 final_stats: 0 final_stats: 40 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 40 final_stats: 41.25 final_stats: 0 - final_stats: 25.76735 + final_stats: 25.90678 final_stats: 0 final_stats: 0 - final_stats: 1003.7 + final_stats: 812.05 final_stats: 0 - final_stats: 24.13 + final_stats: 24.545 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 3881.5 + final_stats: 4008.25 final_stats: 0 final_stats: 0 - final_stats: 749.2 - final_stats: 740 + final_stats: 765.8 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 11.13 + final_stats: 11.545 final_stats: 5 final_stats: 0 - final_stats: 4494.1 + final_stats: 4628.65 final_stats: 27 final_stats: 60 final_stats: 60 @@ -53,9 +53,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: -0.09672 + weights: -0.24219 weights: 0 - weights: 0.59324 + weights: 0.07296 weights: 0 weights: 0 weights: 0 @@ -63,8 +63,8 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 9.16777 - weights: 3.27353 + weights: 3.66598 + weights: 1.00627 weights: 0 weights: 0 weights: 0 @@ -99,56 +99,64 @@ stat_weights_results: { dps_results: { key: "TestAffliction-Phase4-Lvl60-Average-Default" value: { - dps: 876.99009 - tps: 945.07448 + dps: 395.84375 + tps: 281.87701 + hps: 143.33867 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-blank-Affliction Warlock-p4_destro_aff_tank-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 855.98589 - tps: 1998.94104 + dps: 395.57517 + tps: 703.08928 + hps: 142.8239 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-blank-Affliction Warlock-p4_destro_aff_tank-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 855.98589 - tps: 913.26973 + dps: 395.57517 + tps: 283.01063 + hps: 142.8239 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-blank-Affliction Warlock-p4_destro_aff_tank-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 877.21082 - tps: 961.58852 + dps: 452.30043 + tps: 318.40647 + hps: 145.6732 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-blank-Affliction Warlock-p4_destro_aff_tank-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 415.44139 - tps: 1594.67898 + dps: 223.03096 + tps: 698.11297 + hps: 82.49614 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-blank-Affliction Warlock-p4_destro_aff_tank-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 415.44139 - tps: 453.9737 + dps: 223.03096 + tps: 179.23118 + hps: 82.49614 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-Settings-Orc-blank-Affliction Warlock-p4_destro_aff_tank-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 427.57823 - tps: 471.95315 + dps: 245.33588 + tps: 198.82781 + hps: 87.92117 } } dps_results: { key: "TestAffliction-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 866.40495 - tps: 928.42446 + dps: 390.74659 + tps: 276.99213 + hps: 143.19304 } } diff --git a/sim/warlock/tank/TestDemonology.results b/sim/warlock/tank/TestDemonology.results index f509b6aa9..726842093 100644 --- a/sim/warlock/tank/TestDemonology.results +++ b/sim/warlock/tank/TestDemonology.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestDemonology-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 183.7 - final_stats: 182.6 - final_stats: 340.4115 - final_stats: 185.9 - final_stats: 210.045 - final_stats: 315.0225 + final_stats: 192.05 + final_stats: 190.9 + final_stats: 355.88475 + final_stats: 194.35 + final_stats: 219.5925 + final_stats: 319.79625 final_stats: 0 final_stats: 61 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 40 final_stats: 41.25 final_stats: 0 - final_stats: 25.76735 + final_stats: 25.90678 final_stats: 0 final_stats: 0 - final_stats: 1003.7 + final_stats: 812.05 final_stats: 0 - final_stats: 24.13 + final_stats: 24.545 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 3881.5 + final_stats: 4008.25 final_stats: 0 final_stats: 0 - final_stats: 749.2 - final_stats: 740 + final_stats: 765.8 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 11.13 + final_stats: 11.545 final_stats: 5 final_stats: 0 - final_stats: 4938.115 + final_stats: 5092.8475 final_stats: 27 final_stats: 60 final_stats: 60 @@ -55,7 +55,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.03574 + weights: 0.02972 weights: 0 weights: 0 weights: 0 @@ -63,8 +63,8 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.63672 - weights: 0.32625 + weights: 0.51017 + weights: 0.29947 weights: 0 weights: 0 weights: 0 @@ -99,33 +99,33 @@ stat_weights_results: { dps_results: { key: "TestDemonology-Phase4-Lvl60-Average-Default" value: { - dps: 57.03346 - tps: 65.29883 - hps: 3.23594 + dps: 47.54011 + tps: 54.8855 + hps: 2.70296 } } dps_results: { key: "TestDemonology-Phase4-Lvl60-Settings-Orc-blank-Demonology Warlock-p4_demo_tank-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 42.35086 - tps: 105.86104 - hps: 3.17281 + dps: 35.20133 + tps: 97.83623 + hps: 2.65522 } } dps_results: { key: "TestDemonology-Phase4-Lvl60-Settings-Orc-blank-Demonology Warlock-p4_demo_tank-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 42.35086 - tps: 50.67079 - hps: 3.17281 + dps: 35.20133 + tps: 42.64598 + hps: 2.65522 } } dps_results: { key: "TestDemonology-Phase4-Lvl60-Settings-Orc-blank-Demonology Warlock-p4_demo_tank-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 64.87184 - tps: 91.41221 - hps: 16.47716 + dps: 57.07716 + tps: 79.38914 + hps: 13.78919 } } dps_results: { @@ -155,8 +155,8 @@ dps_results: { dps_results: { key: "TestDemonology-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 50.73099 - tps: 59.07058 - hps: 3.17281 + dps: 41.88046 + tps: 49.34478 + hps: 2.65522 } } diff --git a/sim/warlock/tank/TestDestruction.results b/sim/warlock/tank/TestDestruction.results index b368231c4..e8ddeebe6 100644 --- a/sim/warlock/tank/TestDestruction.results +++ b/sim/warlock/tank/TestDestruction.results @@ -1,12 +1,12 @@ character_stats_results: { key: "TestDestruction-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 183.7 - final_stats: 182.6 - final_stats: 296.01 - final_stats: 185.9 - final_stats: 221.1 - final_stats: 320.55 + final_stats: 192.05 + final_stats: 190.9 + final_stats: 309.465 + final_stats: 194.35 + final_stats: 231.15 + final_stats: 325.575 final_stats: 0 final_stats: 40 final_stats: 0 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 40 final_stats: 41.25 final_stats: 0 - final_stats: 25.76735 + final_stats: 25.90678 final_stats: 0 final_stats: 0 - final_stats: 1003.7 + final_stats: 812.05 final_stats: 0 - final_stats: 24.13 + final_stats: 24.545 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 3881.5 + final_stats: 4008.25 final_stats: 0 final_stats: 0 - final_stats: 749.2 - final_stats: 740 + final_stats: 765.8 + final_stats: 540 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 11.13 + final_stats: 11.545 final_stats: 5 final_stats: 0 - final_stats: 4494.1 + final_stats: 4628.65 final_stats: 27 final_stats: 60 final_stats: 60 @@ -53,9 +53,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.24263 + weights: 0.91009 weights: 0 - weights: 1.86432 + weights: 0.11006 weights: 0 weights: 0 weights: 0 @@ -63,8 +63,8 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 9.00586 - weights: 3.74242 + weights: 3.92216 + weights: 1.09794 weights: 0 weights: 0 weights: 0 @@ -99,56 +99,64 @@ stat_weights_results: { dps_results: { key: "TestDestruction-Phase4-Lvl60-Average-Default" value: { - dps: 892.39546 - tps: 1012.82501 + dps: 389.2209 + tps: 277.26564 + hps: 136.1828 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-blank-Destruction Warlock-p4_destro_aff_tank-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 879.32915 - tps: 2021.09328 + dps: 388.3852 + tps: 702.12766 + hps: 133.92194 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-blank-Destruction Warlock-p4_destro_aff_tank-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 879.32915 - tps: 990.96138 + dps: 388.3852 + tps: 276.76072 + hps: 133.92194 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-blank-Destruction Warlock-p4_destro_aff_tank-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 914.78567 - tps: 1068.64745 + dps: 437.42061 + tps: 307.31494 + hps: 140.78957 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-blank-Destruction Warlock-p4_destro_aff_tank-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 421.16044 - tps: 1558.22274 + dps: 217.59792 + tps: 687.37145 + hps: 79.34399 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-blank-Destruction Warlock-p4_destro_aff_tank-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 421.16044 - tps: 476.10434 + dps: 217.59792 + tps: 175.07065 + hps: 79.34399 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-Settings-Orc-blank-Destruction Warlock-p4_destro_aff_tank-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 435.02186 - tps: 491.31887 + dps: 238.92422 + tps: 192.95731 + hps: 84.6674 } } dps_results: { key: "TestDestruction-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 884.66326 - tps: 1002.37498 + dps: 387.76787 + tps: 277.39069 + hps: 136.72322 } } diff --git a/sim/warlock/tank/tank_warlock_test.go b/sim/warlock/tank/tank_warlock_test.go index 916e255f1..e3fff1248 100644 --- a/sim/warlock/tank/tank_warlock_test.go +++ b/sim/warlock/tank/tank_warlock_test.go @@ -23,7 +23,7 @@ func TestAffliction(t *testing.T) { Talents: Phase4AffTalents, GearSet: core.GetGearSet("../../../ui/tank_warlock/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/tank_warlock/apls", "p4_destro_aff_tank"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Affliction Warlock", SpecOptions: DefaultAfflictionWarlock}, @@ -45,7 +45,7 @@ func TestDemonology(t *testing.T) { Talents: Phase4DemoTalents, GearSet: core.GetGearSet("../../../ui/tank_warlock/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/tank_warlock/apls", "p4_demo_tank"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Demonology Warlock", SpecOptions: DefaultDemonologyWarlock}, @@ -67,7 +67,7 @@ func TestDestruction(t *testing.T) { Talents: Phase4DestroTalents, GearSet: core.GetGearSet("../../../ui/tank_warlock/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/tank_warlock/apls", "p4_destro_aff_tank"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Destruction Warlock", SpecOptions: DefaultDestroWarlock}, @@ -120,41 +120,6 @@ var DefaultDemonologyWarlock = &proto.Player_TankWarlock{ }, } -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfLesserAgility, - DefaultPotion: proto.Potions_ManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSmokedSagefish, - MainHandImbue: proto.WeaponImbue_BlackfathomManaOil, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_ManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_LesserArcaneElixir, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - DefaultPotion: proto.Potions_SuperiorManaPotion, - FirePowerBuff: proto.FirePowerBuff_ElixirOfFirepower, - ShadowPowerBuff: proto.ShadowPowerBuff_ElixirOfShadowPower, - Food: proto.Food_FoodTenderWolfSteak, - MainHandImbue: proto.WeaponImbue_LesserWizardOil, - SpellPowerBuff: proto.SpellPowerBuff_GreaterArcaneElixir, - }, -} - var Phase4Consumes = core.ConsumesCombo{ Label: "P4-Consumes", Consumes: &proto.Consumes{ diff --git a/sim/warlock/warlock.go b/sim/warlock/warlock.go index 0e7dbd0f4..23eac536c 100644 --- a/sim/warlock/warlock.go +++ b/sim/warlock/warlock.go @@ -230,7 +230,7 @@ func NewWarlock(character *core.Character, options *proto.Player, warlockOptions } func (warlock *Warlock) HasRune(rune proto.WarlockRune) bool { - return warlock.HasRuneById(int32(rune)) + return false // warlock.HasRuneById(int32(rune)) } func (warlock *Warlock) baseRuneAbilityDamage() float64 { diff --git a/sim/warrior/dps_warrior/TestDualWieldWarrior.results b/sim/warrior/dps_warrior/TestDualWieldWarrior.results index 7e256966d..f27893149 100644 --- a/sim/warrior/dps_warrior/TestDualWieldWarrior.results +++ b/sim/warrior/dps_warrior/TestDualWieldWarrior.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 369.38 - final_stats: 279.565 - final_stats: 388.41825 - final_stats: 112.585 - final_stats: 150.535 + final_stats: 335.8 + final_stats: 254.15 + final_stats: 353.1075 + final_stats: 102.35 + final_stats: 136.85 final_stats: 0 final_stats: 0 final_stats: 0 @@ -18,24 +18,24 @@ character_stats_results: { final_stats: 21 final_stats: 0 final_stats: 0 - final_stats: 1768.76 + final_stats: 1501.6 final_stats: 0 - final_stats: 35.97825 + final_stats: 34.7075 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 943.13 - final_stats: 780 + final_stats: 892.3 + final_stats: 580 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 13.97825 + final_stats: 12.7075 final_stats: 5 final_stats: 0 - final_stats: 5693.1825 + final_stats: 5340.075 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,8 +50,8 @@ character_stats_results: { stat_weights_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-StatWeights-Default" value: { - weights: 1.245 - weights: 0.5701 + weights: 0.35864 + weights: 0.23892 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.92361 - weights: 2.32883 - weights: 6.43994 + weights: 0.50531 + weights: 0 + weights: 5.4546 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-Average-Default" value: { - dps: 419.18478 - tps: 433.2523 + dps: 351.60983 + tps: 371.33883 } } dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-Settings-Human-blank-Fury-phase_5_dw-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 86.32195 - tps: 176.11699 + dps: 73.59183 + tps: 164.40572 } } dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-Settings-Human-blank-Fury-phase_5_dw-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 26.25766 - tps: 31.7459 + dps: 22.25467 + tps: 28.43386 } } dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-Settings-Human-blank-Fury-phase_5_dw-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 66.47472 - tps: 70.75896 + dps: 57.2151 + tps: 63.08635 } } dps_results: { @@ -148,22 +148,22 @@ dps_results: { dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-Settings-Orc-blank-Fury-phase_5_dw-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 96.36696 - tps: 185.49523 + dps: 82.41451 + tps: 172.51242 } } dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-Settings-Orc-blank-Fury-phase_5_dw-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 28.76528 - tps: 33.46086 + dps: 25.16708 + tps: 30.4855 } } dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-Settings-Orc-blank-Fury-phase_5_dw-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 74.4003 - tps: 77.3003 + dps: 64.89538 + tps: 69.42322 } } dps_results: { @@ -190,7 +190,7 @@ dps_results: { dps_results: { key: "TestDualWieldWarrior-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 331.758 - tps: 349.74796 + dps: 282.45039 + tps: 304.20473 } } diff --git a/sim/warrior/dps_warrior/TestTwoHandedWarrior.results b/sim/warrior/dps_warrior/TestTwoHandedWarrior.results index 50d281e4e..d6a75a762 100644 --- a/sim/warrior/dps_warrior/TestTwoHandedWarrior.results +++ b/sim/warrior/dps_warrior/TestTwoHandedWarrior.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-CharacterStats-Default" value: { - final_stats: 369.38 - final_stats: 279.565 - final_stats: 388.41825 - final_stats: 112.585 - final_stats: 150.535 + final_stats: 335.8 + final_stats: 254.15 + final_stats: 353.1075 + final_stats: 102.35 + final_stats: 136.85 final_stats: 0 final_stats: 0 final_stats: 0 @@ -18,24 +18,24 @@ character_stats_results: { final_stats: 21 final_stats: 0 final_stats: 0 - final_stats: 1768.76 + final_stats: 1501.6 final_stats: 0 - final_stats: 35.97825 + final_stats: 34.7075 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 943.13 - final_stats: 780 + final_stats: 892.3 + final_stats: 580 final_stats: 0 final_stats: 5 final_stats: 0 - final_stats: 13.97825 + final_stats: 12.7075 final_stats: 5 final_stats: 0 - final_stats: 5693.1825 + final_stats: 5340.075 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,8 +50,8 @@ character_stats_results: { stat_weights_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.74166 - weights: 0.41613 + weights: 0.67704 + weights: 0.39964 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 1.18726 - weights: 2.80362 - weights: 7.74962 + weights: 0.1674 + weights: 0 + weights: 6.56079 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-Average-Default" value: { - dps: 466.40921 - tps: 440.79546 + dps: 394.23246 + tps: 376.69386 } } dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-Settings-Human-blank-Arms-phase_5_2h-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 47.26332 - tps: 129.6756 + dps: 41.3878 + tps: 124.97518 } } dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-Settings-Human-blank-Arms-phase_5_2h-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 45.49215 - tps: 42.32472 + dps: 39.89707 + tps: 37.84865 } } dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-Settings-Human-blank-Arms-phase_5_2h-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 106.18413 - tps: 90.78064 + dps: 89.3577 + tps: 77.31949 } } dps_results: { @@ -148,22 +148,22 @@ dps_results: { dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-Settings-Orc-blank-Arms-phase_5_2h-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 50.69348 - tps: 132.41972 + dps: 44.31191 + tps: 127.31447 } } dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-Settings-Orc-blank-Arms-phase_5_2h-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 48.91337 - tps: 45.06169 + dps: 42.82118 + tps: 40.18794 } } dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-Settings-Orc-blank-Arms-phase_5_2h-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 119.79812 - tps: 101.67183 + dps: 103.18006 + tps: 88.37738 } } dps_results: { @@ -190,7 +190,7 @@ dps_results: { dps_results: { key: "TestTwoHandedWarrior-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 373.30127 - tps: 356.09118 + dps: 320.69725 + tps: 309.60084 } } diff --git a/sim/warrior/dps_warrior/dps_warrior_test.go b/sim/warrior/dps_warrior/dps_warrior_test.go index 23bedefa4..5ddd43481 100644 --- a/sim/warrior/dps_warrior/dps_warrior_test.go +++ b/sim/warrior/dps_warrior/dps_warrior_test.go @@ -24,7 +24,7 @@ func TestDualWieldWarrior(t *testing.T) { Talents: P4FuryTalents, GearSet: core.GetGearSet("../../../ui/warrior/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/warrior/apls", "phase_5_dw"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Fury", SpecOptions: PlayerOptionsFury}, @@ -47,7 +47,7 @@ func TestTwoHandedWarrior(t *testing.T) { Talents: P4FuryTalents, GearSet: core.GetGearSet("../../../ui/warrior/gear_sets", "blank"), Rotation: core.GetAplRotation("../../../ui/warrior/apls", "phase_5_2h"), - Buffs: core.FullBuffsPhase5, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Arms", SpecOptions: PlayerOptionsArms}, @@ -63,41 +63,6 @@ var P2FuryTalents = "-05050005405010051" var P3ArmsTalents = "303050213520105001-0505" var P4FuryTalents = "20305020302-05050005525010051" -var Phase1Consumes = core.ConsumesCombo{ - Label: "P1-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfLesserAgility, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_BlackfathomSharpeningStone, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase2Consumes = core.ConsumesCombo{ - Label: "P2-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfAgility, - DragonBreathChili: true, - Food: proto.Food_FoodSagefishDelight, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_SolidSharpeningStone, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - }, -} - -var Phase3Consumes = core.ConsumesCombo{ - Label: "P3-Consumes", - Consumes: &proto.Consumes{ - AgilityElixir: proto.AgilityElixir_ElixirOfTheMongoose, - DragonBreathChili: true, - Food: proto.Food_FoodGrilledSquid, - MainHandImbue: proto.WeaponImbue_WildStrikes, - OffHandImbue: proto.WeaponImbue_SolidSharpeningStone, - StrengthBuff: proto.StrengthBuff_ElixirOfOgresStrength, - DefaultPotion: proto.Potions_MightyRagePotion, - }, -} - var Phase4Consumes = core.ConsumesCombo{ Label: "P4-Consumes", Consumes: &proto.Consumes{ @@ -106,7 +71,7 @@ var Phase4Consumes = core.ConsumesCombo{ DefaultPotion: proto.Potions_MightyRagePotion, DragonBreathChili: true, Food: proto.Food_FoodSmokedDesertDumpling, - MainHandImbue: proto.WeaponImbue_WildStrikes, + MainHandImbue: proto.WeaponImbue_Windfury, OffHandImbue: proto.WeaponImbue_ElementalSharpeningStone, StrengthBuff: proto.StrengthBuff_JujuPower, }, diff --git a/sim/warrior/tank_warrior/TestTankWarrior.results b/sim/warrior/tank_warrior/TestTankWarrior.results index c4b9359bc..3aef3786b 100644 --- a/sim/warrior/tank_warrior/TestTankWarrior.results +++ b/sim/warrior/tank_warrior/TestTankWarrior.results @@ -1,11 +1,11 @@ character_stats_results: { key: "TestTankWarrior-Phase4-Lvl60-CharacterStats-Default" value: { - final_stats: 346.5 - final_stats: 378.4 - final_stats: 441.485 - final_stats: 148.5 - final_stats: 203.5 + final_stats: 362.25 + final_stats: 395.6 + final_stats: 461.5525 + final_stats: 155.25 + final_stats: 212.75 final_stats: 12 final_stats: 0 final_stats: 0 @@ -18,24 +18,24 @@ character_stats_results: { final_stats: 21 final_stats: 0 final_stats: 0 - final_stats: 1751 + final_stats: 1582.5 final_stats: 0 - final_stats: 39.92 + final_stats: 40.78 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 4924.8 - final_stats: 856 + final_stats: 4959.2 + final_stats: 656 final_stats: 10 final_stats: 10.4 final_stats: 37 - final_stats: 19.32 + final_stats: 20.18 final_stats: 5.4 final_stats: 0 - final_stats: 7423.85 + final_stats: 7624.525 final_stats: 27 final_stats: 86 final_stats: 60 @@ -50,7 +50,6 @@ character_stats_results: { stat_weights_results: { key: "TestTankWarrior-Phase4-Lvl60-StatWeights-Default" value: { - weights: 0.3417 weights: 0 weights: 0 weights: 0 @@ -67,7 +66,6 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.05737 weights: 0 weights: 0 weights: 0 @@ -78,9 +76,11 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.90168 weights: 0 - weights: 0.44848 + weights: 0 + weights: 0 + weights: 0 + weights: 0 weights: 0 weights: 0 weights: 0 @@ -99,98 +99,96 @@ stat_weights_results: { dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Average-Default" value: { - dps: 590.73761 - tps: 1325.88118 + tps: 1.66725 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Human-placeholder-Arms-phase_4-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 63.5008 - tps: 324.09056 + dps: 38.17656 + tps: 163.66426 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Human-placeholder-Arms-phase_4-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 59.0615 - tps: 215.56889 + dps: 34.08403 + tps: 60.34989 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Human-placeholder-Arms-phase_4-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 91.35066 - tps: 332.67215 + dps: 48.44242 + tps: 85.53926 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Human-placeholder-Arms-phase_4-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 30.5266 - tps: 231.45092 + dps: 18.15275 + tps: 134.37898 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Human-placeholder-Arms-phase_4-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 27.80014 - tps: 125.48994 + dps: 15.15602 + tps: 32.70284 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Human-placeholder-Arms-phase_4-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 42.11579 - tps: 189.78435 + dps: 20.63205 + tps: 44.93825 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Orc-placeholder-Arms-phase_4-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 65.66424 - tps: 330.25827 + dps: 38.49954 + tps: 164.1471 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Orc-placeholder-Arms-phase_4-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 61.22495 - tps: 221.7366 + dps: 34.407 + tps: 60.83273 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Orc-placeholder-Arms-phase_4-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 93.06704 - tps: 337.63858 + dps: 48.8201 + tps: 86.10389 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Orc-placeholder-Arms-phase_4-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 30.58814 - tps: 231.63073 + dps: 18.18881 + tps: 134.4329 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Orc-placeholder-Arms-phase_4-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 27.86168 - tps: 125.66975 + dps: 15.19208 + tps: 32.75676 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-Settings-Orc-placeholder-Arms-phase_4-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 42.20866 - tps: 190.05631 + dps: 20.68324 + tps: 45.01478 } } dps_results: { key: "TestTankWarrior-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 482.13058 - tps: 1097.99877 + tps: 1.66667 } } diff --git a/sim/warrior/tank_warrior/tank_warrior_test.go b/sim/warrior/tank_warrior/tank_warrior_test.go index 6d8cc3d78..8d41b9aa1 100644 --- a/sim/warrior/tank_warrior/tank_warrior_test.go +++ b/sim/warrior/tank_warrior/tank_warrior_test.go @@ -24,7 +24,7 @@ func TestTankWarrior(t *testing.T) { Talents: P4Talents, GearSet: core.GetGearSet("../../../ui/tank_warrior/gear_sets", "placeholder"), Rotation: core.GetAplRotation("../../../ui/tank_warrior/apls", "phase_4"), - Buffs: core.FullBuffsPhase4, + Buffs: core.FullBuffs, Consumes: Phase4Consumes, SpecOptions: core.SpecOptionsCombo{Label: "Arms", SpecOptions: PlayerOptionsBasic}, @@ -57,7 +57,7 @@ var Phase4Consumes = core.ConsumesCombo{ DragonBreathChili: true, Flask: proto.Flask_FlaskOfTheTitans, Food: proto.Food_FoodSmokedDesertDumpling, - MainHandImbue: proto.WeaponImbue_WildStrikes, + MainHandImbue: proto.WeaponImbue_Windfury, StrengthBuff: proto.StrengthBuff_JujuPower, }, } diff --git a/sim/warrior/warrior.go b/sim/warrior/warrior.go index f2b89efc2..1dc318297 100644 --- a/sim/warrior/warrior.go +++ b/sim/warrior/warrior.go @@ -327,7 +327,7 @@ type WarriorAgent interface { } func (warrior *Warrior) HasRune(rune proto.WarriorRune) bool { - return warrior.HasRuneById(int32(rune)) + return false // warrior.HasRuneById(int32(rune)) } func (warrior *Warrior) IsEnraged() bool { diff --git a/tools/database/wowhead_tooltips.go b/tools/database/wowhead_tooltips.go index 6a3325410..b152bf365 100644 --- a/tools/database/wowhead_tooltips.go +++ b/tools/database/wowhead_tooltips.go @@ -702,7 +702,6 @@ func (item WowheadItemResponse) ToItemProto() *proto.UIItem { Quality: proto.ItemQuality(item.GetQuality()), Unique: item.GetUnique(), Heroic: item.IsHeroic(), - Timeworn: item.IsTimeworn(), RequiredProfession: item.GetRequiredProfession(), SetName: item.GetItemSetName(), @@ -757,12 +756,6 @@ func (item WowheadItemResponse) IsHeroic() bool { return strings.Contains(item.Tooltip, "Heroic") } -var timewornRegexp = regexp.MustCompile(`Timeworn<\/span>`) - -func (item WowheadItemResponse) IsTimeworn() bool { - return timewornRegexp.MatchString(item.Tooltip) -} - func (item WowheadItemResponse) GetRequiredProfession() proto.Profession { if alchemyRegex.MatchString(item.Tooltip) { return proto.Profession_Alchemy diff --git a/ui/balance_druid/presets.ts b/ui/balance_druid/presets.ts index 1e110acec..22a249e1c 100644 --- a/ui/balance_druid/presets.ts +++ b/ui/balance_druid/presets.ts @@ -3,7 +3,6 @@ import * as PresetUtils from '../core/preset_utils.js'; import { Consumes, Debuffs, - EnchantedSigil, Flask, Food, IndividualBuffs, @@ -104,21 +103,17 @@ export const DefaultOptions = BalanceDruidOptions.create({ export const DefaultConsumes = Consumes.create({ defaultPotion: Potions.MajorManaPotion, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfSupremePower, food: Food.FoodRunnTumTuberSurprise, mainHandImbue: WeaponImbue.BrilliantWizardOil, manaRegenElixir: ManaRegenElixir.MagebloodPotion, - mildlyIrradiatedRejuvPot: true, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, zanzaBuff: ZanzaBuff.CerebralCortexCompound, }); export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, - demonicPact: 110, divineSpirit: true, fireResistanceAura: true, fireResistanceTotem: true, @@ -126,19 +121,16 @@ export const DefaultRaidBuffs = RaidBuffs.create({ manaSpringTotem: TristateEffect.TristateEffectRegular, moonkinAura: true, powerWordFortitude: TristateEffect.TristateEffectImproved, - vampiricTouch: 300, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfKings: true, blessingOfWisdom: TristateEffect.TristateEffectImproved, - mightOfStormwind: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -146,10 +138,7 @@ export const DefaultPartyBuffs = PartyBuffs.create({}); export const DefaultDebuffs = Debuffs.create({ faerieFire: true, - improvedFaerieFire: true, judgementOfWisdom: true, - occultPoison: true, - markOfChaos: true, stormstrike: true, }); diff --git a/ui/core/components/character_stats.tsx b/ui/core/components/character_stats.tsx index 8c15d5218..570375904 100644 --- a/ui/core/components/character_stats.tsx +++ b/ui/core/components/character_stats.tsx @@ -84,9 +84,7 @@ const statGroups = new Map>([ ], [ 'Misc', - [ - UnitStat.fromPseudoStat(PseudoStat.TimewornBonus), - ] + [] ], ]) diff --git a/ui/core/components/gear_picker/gear_picker.tsx b/ui/core/components/gear_picker/gear_picker.tsx index c1b71b710..2d4fa9e2e 100644 --- a/ui/core/components/gear_picker/gear_picker.tsx +++ b/ui/core/components/gear_picker/gear_picker.tsx @@ -15,8 +15,6 @@ import { GearData } from './item_list'; import SelectorModal, { SelectorModalTabs } from './selector_modal'; import { getEmptySlotIconUrl } from './utils'; -const emptyRuneImageURL = 'https://wow.zamimg.com/images/wow/icons/medium/inventoryslot_empty.jpg'; - export default class GearPicker extends Component { // ItemSlot is used as the index readonly itemPickers: Array; @@ -66,45 +64,35 @@ export class ItemRenderer extends Component { private readonly player: Player; readonly iconElem: HTMLAnchorElement; - readonly runeIconElem: HTMLImageElement; readonly nameElem: HTMLAnchorElement; readonly ilvlElem: HTMLSpanElement; readonly enchantElem: HTMLAnchorElement; - readonly runeElem: HTMLAnchorElement; constructor(parent: HTMLElement, root: HTMLElement, player: Player) { super(parent, 'item-picker-root', root); this.player = player; const iconElem = ref(); - const runeIconElem = ref(); const nameElem = ref(); const ilvlElem = ref(); const enchantElem = ref(); - const runeElem = ref(); this.rootElem.appendChild( <>
-
- -
-
, ); this.iconElem = iconElem.value!; - this.runeIconElem = runeIconElem.value!; this.nameElem = nameElem.value!; this.ilvlElem = ilvlElem.value!; this.enchantElem = enchantElem.value!; - this.runeElem = runeElem.value!; } clear() { @@ -115,17 +103,12 @@ export class ItemRenderer extends Component { this.enchantElem.removeAttribute('data-wowhead'); this.enchantElem.removeAttribute('href'); this.enchantElem.classList.add('hide'); - this.runeElem.removeAttribute('data-wowhead'); - this.runeElem.removeAttribute('href'); - this.runeElem.classList.add('hide'); this.iconElem.style.backgroundImage = ''; - this.runeIconElem.src = emptyRuneImageURL; this.nameElem.innerText = ''; this.ilvlElem.innerText = ''; this.enchantElem.innerText = ''; - this.runeElem.innerText = ''; } update(newItem: EquippedItem) { @@ -169,24 +152,6 @@ export class ItemRenderer extends Component { } else { this.enchantElem.classList.add('hide'); } - - const isRuneSlot = itemTypeToSlotsMap[newItem._item.type]?.some(slot => this.player.sim.db.hasRuneBySlot(slot, this.player.getClass())); - if (isRuneSlot) { - this.runeIconElem.classList.remove('hide'); - - if (newItem.rune) { - ActionId.fromSpellId(newItem.rune.id) - .fill() - .then(filledId => (this.runeIconElem.src = filledId.iconUrl)); - this.runeElem.classList.remove('hide'); - this.runeElem.textContent = newItem.rune.name; - this.runeElem.href = ActionId.makeSpellUrl(newItem.rune.id); - this.runeElem.dataset.wowhead = `domain=classic&spell=${newItem.rune.id}`; - this.runeElem.dataset.whtticon = 'false'; - } else { - this.runeIconElem.src = emptyRuneImageURL; - } - } } } @@ -224,15 +189,10 @@ export class ItemPicker extends Component { event.preventDefault(); this.openSelectorModal(SelectorModalTabs.Enchants); }; - const openRuneSelector = (event: Event) => { - event.preventDefault(); - this.openSelectorModal(SelectorModalTabs.Runes); - }; this.itemElem.iconElem.addEventListener('click', openGearSelector); this.itemElem.nameElem.addEventListener('click', openGearSelector); this.itemElem.enchantElem.addEventListener('click', openEnchantSelector); - this.itemElem.runeElem.addEventListener('click', openRuneSelector); }); player.gearChangeEmitter.on(() => { diff --git a/ui/core/components/gear_picker/item_list.tsx b/ui/core/components/gear_picker/item_list.tsx index 2bfa0bb01..c089d2801 100644 --- a/ui/core/components/gear_picker/item_list.tsx +++ b/ui/core/components/gear_picker/item_list.tsx @@ -8,7 +8,7 @@ import { setItemQualityCssClass } from '../../css_utils'; import { IndividualSimUI } from '../../individual_sim_ui'; import { Player } from '../../player'; import { Class, ItemQuality, ItemRandomSuffix, ItemSlot, ItemSpec } from '../../proto/common'; -import { DatabaseFilters, RepSource, UIEnchant, UIFaction, UIItem, UIItem_FactionRestriction, UIRune } from '../../proto/ui'; +import { DatabaseFilters, RepSource, UIEnchant, UIFaction, UIItem, UIItem_FactionRestriction } from '../../proto/ui'; import { ActionId } from '../../proto_utils/action_id'; import { getUniqueEnchantString } from '../../proto_utils/enchants'; import { EquippedItem } from '../../proto_utils/equipped_item'; @@ -47,7 +47,7 @@ export interface GearData { changeEvent: TypedEvent; } -export type ItemListType = UIItem | UIEnchant | UIRune | ItemRandomSuffix; +export type ItemListType = UIItem | UIEnchant | ItemRandomSuffix; enum ItemListSortBy { EP, ILVL, @@ -190,9 +190,7 @@ export default class ItemList { //makePhaseSelector(this.tabContent.getElementsByClassName('selector-modal-phase-selector')[0] as HTMLElement, player.sim); - if (this.label !== SelectorModalTabs.Runes) { - makeShowEPValuesSelector(showEpValuesRef.value!, player.sim); - } + makeShowEPValuesSelector(showEpValuesRef.value!, player.sim); if (label === SelectorModalTabs.Items) { const filtersMenu = new FiltersMenu(parent, player, currentSlot); @@ -240,9 +238,6 @@ export default class ItemList { case SelectorModalTabs.Enchants: removeButton.textContent = 'Remove Enchant'; break; - case SelectorModalTabs.Runes: - removeButton.textContent = 'Remove Rune'; - break; } } @@ -268,7 +263,6 @@ export default class ItemList { return (item as UIEnchant).effectId; case SelectorModalTabs.Items: case SelectorModalTabs.RandomSuffixes: - case SelectorModalTabs.Runes: return (item as UIItem | ItemRandomSuffix).id; default: return null; @@ -402,7 +396,7 @@ export default class ItemList { public hideOrShowEPValues() { const labels = this.tabContent.getElementsByClassName('ep-label'); const container = this.tabContent.getElementsByClassName('selector-modal-list'); - const show = this.label != SelectorModalTabs.Runes && this.player.sim.getShowEPValues(); + const show = this.player.sim.getShowEPValues(); const display = show ? '' : 'none'; for (const label of labels) { @@ -487,10 +481,6 @@ export default class ItemList { favMethodName = 'favoriteEnchants'; favId = getUniqueEnchantString(itemData.item as unknown as UIEnchant); break; - case SelectorModalTabs.Runes: - favMethodName = 'favoriteRunes'; - favId = itemData.id; - break; case SelectorModalTabs.RandomSuffixes: favMethodName = 'favoriteRandomSuffixes'; favId = itemData.id; @@ -587,8 +577,6 @@ export default class ItemList { return this.currentFilters.favoriteItems.includes(itemData.id); } else if (this.label === SelectorModalTabs.Enchants) { return this.currentFilters.favoriteEnchants.includes(getUniqueEnchantString(itemData.item as unknown as UIEnchant)); - } else if (this.label === SelectorModalTabs.Runes) { - return this.currentFilters.favoriteRunes.includes(itemData.id); } else if (this.label === SelectorModalTabs.RandomSuffixes) { return this.currentFilters.favoriteRandomSuffixes.includes(itemData.id); } diff --git a/ui/core/components/gear_picker/selector_modal.tsx b/ui/core/components/gear_picker/selector_modal.tsx index 0a5efdf1c..70e47e778 100644 --- a/ui/core/components/gear_picker/selector_modal.tsx +++ b/ui/core/components/gear_picker/selector_modal.tsx @@ -3,8 +3,8 @@ import tippy from 'tippy.js'; import { ref } from 'tsx-vanilla'; import { Player } from '../../player'; -import { ItemQuality, ItemRandomSuffix, ItemSlot } from '../../proto/common'; -import { UIEnchant, UIItem, UIRune } from '../../proto/ui'; +import { ItemRandomSuffix, ItemSlot } from '../../proto/common'; +import { UIEnchant, UIItem } from '../../proto/ui'; import { ActionId } from '../../proto_utils/action_id'; import { EquippedItem } from '../../proto_utils/equipped_item'; import { slotNames } from '../../proto_utils/names'; @@ -21,7 +21,6 @@ export enum SelectorModalTabs { Enchants = 'Enchant', Items = 'Item', RandomSuffixes = 'Random Suffix', - Runes = 'Rune', } export interface SelectorModalConfig { @@ -30,7 +29,6 @@ export interface SelectorModalConfig { equippedItem: EquippedItem | null; eligibleItems: Array; eligibleEnchants: Array; - eligibleRunes: Array; gearData: GearData; } @@ -126,10 +124,8 @@ export default class SelectorModal extends BaseModal { const eligibleItems = this.player.getItems(selectedSlot); const eligibleEnchants = this.player.getEnchants(selectedSlot); - const eligibleRunes = this.player.getRunes(selectedSlot); // If the enchant tab is selected but the item has no eligible enchants, default to items - // If the rune tab is selected but the item has no eligible runes, default to items - if ((selectedTab === SelectorModalTabs.Enchants && !eligibleEnchants.length) || (selectedTab === SelectorModalTabs.Runes && !eligibleRunes.length)) { + if (selectedTab === SelectorModalTabs.Enchants && !eligibleEnchants.length) { selectedTab = SelectorModalTabs.Items; } @@ -206,41 +202,6 @@ export default class SelectorModal extends BaseModal { }); } - const hasRuneTab = !this.disabledTabs?.includes(SelectorModalTabs.Runes); - if (hasRuneTab) { - this.addTab({ - id: sanitizeId(`${this.options.id}-${SelectorModalTabs.Runes}`), - label: SelectorModalTabs.Runes, - gearData, - itemData: eligibleRunes.map(rune => { - return { - item: rune, - id: rune.id, - actionId: ActionId.fromSpellId(rune.id), - name: rune.name, - quality: ItemQuality.ItemQualityCommon, - phase: 1, - baseEP: 1, - ignoreEPFilter: true, - onEquip: (eventID, rune: UIRune) => { - const equippedItem = gearData.getEquippedItem(); - if (equippedItem) { - gearData.equipItem(eventID, equippedItem.withRune(rune)); - } - }, - }; - }), - computeEP: () => 1, - equippedToItemFn: (equippedItem: EquippedItem | null) => equippedItem?.rune, - onRemove: (eventID: number) => { - const equippedItem = gearData.getEquippedItem(); - if (equippedItem) { - gearData.equipItem(eventID, equippedItem.withRune(null)); - } - }, - }); - } - const hasRandomSuffixTab = !this.disabledTabs?.includes(SelectorModalTabs.RandomSuffixes); if (hasRandomSuffixTab) { this.addRandomSuffixTab(equippedItem, gearData); @@ -485,8 +446,8 @@ export default class SelectorModal extends BaseModal { } private removeTabs(labelSubstring: string) { - const tabElems = [...this.tabsElem.querySelectorAll('.selector-modal-item-tab')].filter(tab => - tab.dataset?.label?.includes(labelSubstring), + const tabElems = [...this.tabsElem.querySelectorAll('.selector-modal-item-tab')].filter( + tab => tab.dataset?.label?.includes(labelSubstring), ); const contentElems = tabElems.map(tabElem => document.querySelector(tabElem.dataset.bsTarget!)).filter(tabElem => Boolean(tabElem)); diff --git a/ui/core/components/individual_sim_ui/apl_helpers.tsx b/ui/core/components/individual_sim_ui/apl_helpers.tsx index 8c37e0cb8..f66ff911d 100644 --- a/ui/core/components/individual_sim_ui/apl_helpers.tsx +++ b/ui/core/components/individual_sim_ui/apl_helpers.tsx @@ -2,7 +2,6 @@ import { ref } from 'tsx-vanilla'; import { Player, UnitMetadata } from '../../player'; import { ActionID, ItemSlot, OtherAction, UnitReference, UnitReference_Type as UnitType } from '../../proto/common'; -import { UIRune as Rune } from '../../proto/ui'; import { ActionId, defaultTargetIcon, getPetIconFromName } from '../../proto_utils/action_id'; import { itemTypeNames } from '../../proto_utils/names'; import { EventID } from '../../typed_event'; @@ -303,31 +302,33 @@ export class APLActionIDPicker extends DropdownPicker, ActionID, Act } } +// TODO: remove once APLs for classes are updated export interface APLRunePickerConfig - extends Omit, 'defaultLabel' | 'equals' | 'setOptionContent' | 'values' | 'getValue' | 'setValue'> { + extends Omit, 'defaultLabel' | 'equals' | 'setOptionContent' | 'values' | 'getValue' | 'setValue'> { getValue: (obj: ModObject) => ActionID; setValue: (eventID: EventID, obj: ModObject, newValue: ActionID) => void; } -export class APLRunePicker extends DropdownPicker, ActionID, Rune> { +// TODO: remove once APLs for classes are updated +export class APLRunePicker extends DropdownPicker, ActionID, null> { constructor(parent: HTMLElement, player: Player, config: APLRunePickerConfig>) { super(parent, player, { ...config, sourceToValue: (src: ActionID) => { - return src?.rawId.oneofKind == 'spellId' ? player.sim.db.getRuneById(src.rawId.spellId) : Rune.create(); + return null; }, - valueToSource: (val: Rune) => { + valueToSource: (val: null) => { return ActionID.create({ rawId: { oneofKind: 'spellId', - spellId: val.id, + spellId: 0, }, }); }, defaultLabel: 'Runes', equals: (a, b) => a == b, setOptionContent: (button, valueConfig) => { - const actionId = ActionId.fromSpellId(valueConfig.value.id); + const actionId = ActionId.fromSpellId(0); const iconElem = document.createElement('a'); iconElem.classList.add('apl-actionid-item-icon'); iconElem.dataset.whtticon = 'false'; @@ -335,24 +336,14 @@ export class APLRunePicker extends DropdownPicker, ActionID, Rune> { actionId.fillAndSet(iconElem, true, true); button.appendChild(iconElem); - const textElem = document.createTextNode(valueConfig.value.name); + const textElem = document.createTextNode(""); button.appendChild(textElem); }, values: [], }); const updateValues = async () => { - const values = Object.values(ItemSlot) - .filter(v => typeof v != 'string') - .map(slot => player.getRunes(slot as ItemSlot)) - .flat() - .map(rune => { - return { - value: rune, - submenu: [itemTypeNames.get(rune.type) ?? ''], - }; - }); - this.setOptions(values); + this.setOptions([]); }; updateValues(); player.rotationChangeEmitter.on(() => this.update); @@ -633,6 +624,7 @@ export function actionIdFieldConfig( }; } +// TODO: remove once APLs for classes are updated export function runeFieldConfig(field: string): APLPickerBuilderFieldConfig { return { field: field, diff --git a/ui/core/components/individual_sim_ui/apl_values.ts b/ui/core/components/individual_sim_ui/apl_values.ts index e6cdc9446..77f7e4b6d 100644 --- a/ui/core/components/individual_sim_ui/apl_values.ts +++ b/ui/core/components/individual_sim_ui/apl_values.ts @@ -876,7 +876,7 @@ const valueKindFactories: { [f in NonNullable]: ValueKindConfig this.updateRow(row, pickers)); @@ -285,30 +283,6 @@ export class ConsumesPicker extends Component { this.updateRow(row, pickers); } - private buildEnchPicker() { - const fragment = document.createElement('fragment'); - fragment.innerHTML = ` -
- -
-
-
- `; - - const row = this.rootElem.appendChild(fragment.children[0] as HTMLElement); - const enchConsumesElem = this.rootElem.querySelector('.consumes-ench') as HTMLElement; - - const enchantedSigilOptions = ConsumablesInputs.makeEncanthedSigilInput( - relevantStatOptions(ConsumablesInputs.ENCHANTED_SIGIL_CONFIG, this.simUI), - 'Enchanted Sigils', - ); - - const pickers = [buildIconInput(enchConsumesElem, this.simUI.player, enchantedSigilOptions)]; - - TypedEvent.onAny([this.simUI.player.levelChangeEmitter, this.simUI.player.professionChangeEmitter]).on(() => this.updateRow(row, pickers)); - this.updateRow(row, pickers); - } - private buildPetPicker() { if (!this.simUI.individualConfig.petConsumeInputs?.length) return; diff --git a/ui/core/components/inputs/buffs_debuffs.ts b/ui/core/components/inputs/buffs_debuffs.ts index e372507a8..0544bfa15 100644 --- a/ui/core/components/inputs/buffs_debuffs.ts +++ b/ui/core/components/inputs/buffs_debuffs.ts @@ -48,10 +48,6 @@ export const AllStatsPercentBuff = InputHelpers.makeMultiIconInput({ fieldName: 'blessingOfKings', showWhen: player => player.getFaction() === Faction.Alliance, }), - makeBooleanRaidBuffInput({ - actionId: () => ActionId.fromSpellId(409580), - fieldName: 'aspectOfTheLion', - }), ], label: 'Stats %', }); @@ -237,21 +233,12 @@ export const BloodPactBuff = InputHelpers.makeMultiIconInput({ impId: ActionId.fromSpellId(18696), fieldName: 'bloodPact', }), - makeBooleanRaidBuffInput({ - actionId: () => ActionId.fromSpellId(403215), - fieldName: 'commandingShout', - }), ], label: 'Blood Pact', }); export const PaladinPhysicalBuff = InputHelpers.makeMultiIconInput({ values: [ - makeBooleanRaidBuffInput({ - actionId: () => ActionId.fromSpellId(425600), - fieldName: 'hornOfLordaeron', - showWhen: player => player.getFaction() == Faction.Alliance, - }), makeTristateIndividualBuffInput({ actionId: player => player.getMatchingSpellActionId([ @@ -419,40 +406,18 @@ export const ManaSpringTotem = withLabel( }), 'Mana Spring Totem', ); -export const VampiricTouchReplenishment = withLabel( - makeMultistateRaidBuffInput({ actionId: () => ActionId.fromSpellId(402668), numStates: 21, fieldName: 'vampiricTouch', multiplier: 20 }), - 'Vampiric Touch MP5', -); export const MeleeCritBuff = withLabel( makeBooleanRaidBuffInput({ actionId: player => player.getMatchingSpellActionId([{ id: 24932, minLevel: 40 }]), fieldName: 'leaderOfThePack' }), 'Leader of the Pack', ); -export const HordeThreatBuff = withLabel( - makeBooleanRaidBuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 408696, minLevel: 40 }]), - fieldName: 'spiritOfTheAlpha', - showWhen: player => player.getFaction() === Faction.Horde, - }), - 'Spirit of The Alpha', -); - export const SpellCritBuff = withLabel( makeBooleanRaidBuffInput({ actionId: player => player.getMatchingSpellActionId([{ id: 24907, minLevel: 40 }]), fieldName: 'moonkinAura' }), 'Moonkin Aura', ); -export const SpellIncreaseBuff = withLabel( - makeMultistateRaidBuffInput({ actionId: () => ActionId.fromSpellId(425464), numStates: 21, fieldName: 'demonicPact', multiplier: 10 }), - 'Demonic Pact', -); - // Misc Buffs -export const ImprovedStoneskinWindwall = makeBooleanRaidBuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 457544, minLevel: 60 }]), - fieldName: 'improvedStoneskinWindwall', -}); export const RetributionAura = makeTristateRaidBuffInput({ actionId: player => player.getMatchingSpellActionId([ @@ -513,11 +478,7 @@ export const RallyingCryOfTheDragonslayer = makeBooleanIndividualBuffInput({ actionId: () => ActionId.fromSpellId(22888), fieldName: 'rallyingCryOfTheDragonslayer', }); -export const ValorOfAzeroth = makeBooleanIndividualBuffInput({ - actionId: () => ActionId.fromSpellId(461475), - fieldName: 'valorOfAzeroth', -}); -export const DragonslayerBuffInput = InputHelpers.makeMultiIconInput({ values: [RallyingCryOfTheDragonslayer, ValorOfAzeroth], label: 'Dragonslayer Buff' }); +export const DragonslayerBuffInput = InputHelpers.makeMultiIconInput({ values: [RallyingCryOfTheDragonslayer], label: 'Dragonslayer Buff' }); export const SpiritOfZandalar = withLabel( makeBooleanIndividualBuffInput({ @@ -537,18 +498,10 @@ export const WarchiefsBlessing = withLabel( makeBooleanIndividualBuffInput({ actionId: () => ActionId.fromSpellId(16609), fieldName: 'warchiefsBlessing', - showWhen: player => player.getFaction() === Faction.Horde, + // showWhen: player => player.getFaction() === Faction.Horde, }), `Warchief's Blessing`, ); -export const MightOfStormwind = withLabel( - makeBooleanIndividualBuffInput({ - actionId: () => ActionId.fromSpellId(460940), - fieldName: 'mightOfStormwind', - showWhen: player => player.getFaction() === Faction.Alliance, - }), - `Might Of Stormwind`, -); export const SaygesDarkFortune = (inputs: ItemStatOption[]) => makeEnumIndividualBuffInput({ @@ -589,39 +542,6 @@ export const SlipKiksSavvy = withLabel( `Slip'kik's Savvy`, ); -// SoD World Buffs -export const BoonOfBlackfathom = withLabel( - makeBooleanIndividualBuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 430947, maxLevel: 39 }]), - fieldName: 'boonOfBlackfathom', - }), - 'Boon of Blackfathom', -); - -export const AshenvalePvpBuff = withLabel( - makeBooleanIndividualBuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 430352, maxLevel: 39 }]), - fieldName: 'ashenvalePvpBuff', - }), - 'Ashenvale PvP Buff', -); - -export const SparkOfInspiration = withLabel( - makeBooleanIndividualBuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 438536, maxLevel: 49 }]), - fieldName: 'sparkOfInspiration', - }), - 'Spark of Inspiration', -); - -export const FervorOfTheTempleExplorer = withLabel( - makeBooleanIndividualBuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 446695, maxLevel: 59 }]), - fieldName: 'fervorOfTheTempleExplorer', - }), - 'Fervor Of The Temple Explorer', -); - /////////////////////////////////////////////////////////////////////////// // DEBUFFS /////////////////////////////////////////////////////////////////////////// @@ -651,18 +571,6 @@ export const MajorArmorDebuff = InputHelpers.makeMultiIconInput({ impId: ActionId.fromSpellId(14169), fieldName: 'exposeArmor', }), - makeTristateDebuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 439500, minLevel: 60 }]), - impId: ActionId.fromSpellId(14169), - fieldName: 'sebaciousPoison', - }), - makeMultistateMultiplierDebuffInput({ - actionId: () => ActionId.fromSpellId(402818), - numStates: 11, - multiplier: 10, - reverse: true, - fieldName: 'homunculi', - }), ], label: 'Major Armor Penetration', }); @@ -738,19 +646,12 @@ export const AttackPowerDebuff = InputHelpers.makeMultiIconInput({ impId: ActionId.fromSpellId(16862), fieldName: 'demoralizingRoar', }), - makeMultistateMultiplierDebuffInput({ - actionId: () => ActionId.fromSpellId(402811), - numStates: 11, - multiplier: 10, - reverse: true, - fieldName: 'homunculi', - }), ], label: 'Attack Power', }); // TODO: SoD Mangle -export const BleedDebuff = withLabel(makeBooleanDebuffInput({ actionId: () => ActionId.fromSpellId(409828), fieldName: 'mangle' }), 'Bleed'); +//export const BleedDebuff = withLabel(makeBooleanDebuffInput({ actionId: () => ActionId.fromSpellId(409828), fieldName: 'mangle' }), 'Bleed'); export const MeleeAttackSpeedDebuff = InputHelpers.makeMultiIconInput({ values: [ @@ -759,17 +660,6 @@ export const MeleeAttackSpeedDebuff = InputHelpers.makeMultiIconInput({ impId: ActionId.fromSpellId(12666), fieldName: 'thunderClap', }), - makeMultistateMultiplierDebuffInput({ - actionId: () => ActionId.fromSpellId(402808), - numStates: 11, - multiplier: 10, - reverse: true, - fieldName: 'homunculi', - }), - makeBooleanDebuffInput({ - actionId: () => ActionId.fromSpellId(408699), - fieldName: 'waylay', - }), makeBooleanDebuffInput({ actionId: () => ActionId.fromSpellId(21992), fieldName: 'thunderfury', @@ -823,10 +713,6 @@ export const NatureSpellDamageDebuff = InputHelpers.makeMultiIconInput({ actionId: player => player.getMatchingSpellActionId([{ id: 17364, minLevel: 40 }]), fieldName: 'stormstrike', }), - makeBooleanDebuffInput({ - actionId: () => ActionId.fromSpellId(408258), - fieldName: 'dreamstate', - }), ], label: 'Nature Damage', }); @@ -839,11 +725,6 @@ export const SpellShadowWeavingDebuff = withLabel( 'Shadow Weaving', ); -export const MarkOfChaos = makeBooleanDebuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 461615 }]), - fieldName: 'markOfChaos', -}); - export const CurseOfElements = makeBooleanDebuffInput({ actionId: player => player.getMatchingSpellActionId([ @@ -863,15 +744,7 @@ export const CurseOfShadow = makeBooleanDebuffInput({ fieldName: 'curseOfShadow', }); -export const WarlockCursesConfig = InputHelpers.makeMultiIconInput({ values: [MarkOfChaos, CurseOfElements, CurseOfShadow], label: 'Warlock Curses' }); - -export const OccultPoison = withLabel( - makeBooleanDebuffInput({ - actionId: player => player.getMatchingItemActionId([{ id: 226374, minLevel: 54 }]), - fieldName: 'occultPoison', - }), - 'Occult Poison', -); +export const WarlockCursesConfig = InputHelpers.makeMultiIconInput({ values: [CurseOfElements, CurseOfShadow], label: 'Warlock Curses' }); export const HuntersMark = withLabel( makeTristateDebuffInput({ @@ -916,22 +789,6 @@ export const JudgementOfTheCrusader = withLabel( ); // Misc Debuffs -export const ImprovedFaerieFire = makeBooleanDebuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 455864, minLevel: 60 }]), - fieldName: 'improvedFaerieFire', -}); -export const MeleeHunter2pcT1Bonus = makeBooleanDebuffInput({ - actionId: player => player.getMatchingSpellActionId([{ id: 456393, minLevel: 60 }]), - fieldName: 'meleeHunterDodgeDebuff', -}); -export const MekkatorqueFistDebuff = makeBooleanDebuffInput({ - actionId: player => player.getMatchingItemActionId([{ id: 213409, minLevel: 40, maxLevel: 45 }]), - fieldName: 'mekkatorqueFistDebuff', -}); -export const SerpentsStrikerFistDebuff = makeBooleanDebuffInput({ - actionId: player => player.getMatchingItemActionId([{ id: 220589, minLevel: 50, maxLevel: 55 }]), - fieldName: 'serpentsStrikerFistDebuff', -}); export const JudgementOfLight = makeBooleanDebuffInput({ actionId: player => player.getMatchingSpellActionId([ @@ -959,13 +816,6 @@ export const CrystalYield = makeBooleanDebuffInput({ actionId: player => player.getMatchingSpellActionId([{ id: 15235, minLevel: 47 }]), fieldName: 'crystalYield', }); -export const AncientCorrosivePoison = makeMultistateMultiplierDebuffInput({ - actionId: () => ActionId.fromItemId(209562), - numStates: 11, - multiplier: 10, - reverse: true, - fieldName: 'ancientCorrosivePoison', -}); /////////////////////////////////////////////////////////////////////////// // CONFIGS @@ -1058,17 +908,8 @@ export const RAID_BUFFS_CONFIG = [ stats: [Stat.StatMeleeCrit], }, // Threat Buffs - { - config: HordeThreatBuff, - picker: IconPicker, - stats: [Stat.StatArmor], - }, + // Spell Damage Buffs - { - config: SpellIncreaseBuff, - picker: IconPicker, - stats: [Stat.StatSpellPower], - }, { config: SpellCritBuff, picker: IconPicker, @@ -1084,19 +925,9 @@ export const RAID_BUFFS_CONFIG = [ picker: IconPicker, stats: [Stat.StatMP5], }, - { - config: VampiricTouchReplenishment, - picker: IconPicker, - stats: [Stat.StatMP5], - }, ] as PickerStatOptions[]; export const MISC_BUFFS_CONFIG = [ - { - config: ImprovedStoneskinWindwall, - picker: IconPicker, - stats: [Stat.StatArmor], - }, { config: Thorns, picker: IconPicker, @@ -1160,36 +991,6 @@ export const WORLD_BUFFS_CONFIG = [ picker: IconPicker, stats: [], }, - { - config: MightOfStormwind, - picker: IconPicker, - stats: [], - }, - { - config: FervorOfTheTempleExplorer, - picker: IconPicker, - stats: [], - }, - { - config: SparkOfInspiration, - picker: IconPicker, - stats: [], - }, - { - config: BoonOfBlackfathom, - picker: IconPicker, - stats: [ - Stat.StatMeleeCrit, - // TODO: Stat.StatRangedCrit, - Stat.StatSpellCrit, - Stat.StatAttackPower, - ], - }, - { - config: AshenvalePvpBuff, - picker: IconPicker, - stats: [Stat.StatAttackPower, Stat.StatSpellPower], - }, { config: FengusFerocity, picker: IconPicker, @@ -1247,11 +1048,11 @@ export const DEBUFFS_CONFIG = [ picker: IconPicker, stats: [Stat.StatAttackPower], }, - { + /* { config: BleedDebuff, picker: IconPicker, stats: [Stat.StatAttackPower, Stat.StatRangedAttackPower], - }, + }, */ // Magic { @@ -1289,11 +1090,6 @@ export const DEBUFFS_CONFIG = [ picker: MultiIconPicker, stats: [Stat.StatSpellPower], }, - { - config: OccultPoison, - picker: IconPicker, - stats: [Stat.StatSpellPower], - }, // Defensive { @@ -1332,26 +1128,6 @@ export const DEBUFFS_CONFIG = [ export const MISC_DEBUFFS_CONFIG = [ // Misc Debuffs - { - config: ImprovedFaerieFire, - picker: IconPicker, - stats: [], - }, - { - config: MeleeHunter2pcT1Bonus, - picker: IconPicker, - stats: [Stat.StatMeleeHit], - }, - { - config: MekkatorqueFistDebuff, - picker: IconPicker, - stats: [Stat.StatSpellPower], - }, - { - config: SerpentsStrikerFistDebuff, - picker: IconPicker, - stats: [Stat.StatNaturePower, Stat.StatHolyPower], - }, { config: CurseOfVulnerability, picker: IconPicker, @@ -1367,11 +1143,6 @@ export const MISC_DEBUFFS_CONFIG = [ picker: IconPicker, stats: [Stat.StatAttackPower, Stat.StatRangedAttackPower], }, - { - config: AncientCorrosivePoison, - picker: IconPicker, - stats: [Stat.StatAttackPower, Stat.StatRangedAttackPower], - }, { config: JudgementOfLight, picker: IconPicker, diff --git a/ui/core/components/inputs/consumables.ts b/ui/core/components/inputs/consumables.ts index d35b2d86a..8c8ca49b1 100644 --- a/ui/core/components/inputs/consumables.ts +++ b/ui/core/components/inputs/consumables.ts @@ -8,7 +8,6 @@ import { Class, Conjured, Consumes, - EnchantedSigil, Explosive, FirePowerBuff, Flask, @@ -158,38 +157,6 @@ export const CONJURED_CONFIG: ConsumableStatOption[] = [ export const makeConjuredInput = makeConsumeInputFactory({ consumesFieldName: 'defaultConjured' }); -/////////////////////////////////////////////////////////////////////////// -// ENCHANTING SIGIL -/////////////////////////////////////////////////////////////////////////// - -export const EnchantedSigilInnovation: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 217308, minLevel: 40 }]), - value: EnchantedSigil.InnovationSigil, - showWhen: player => player.hasProfession(Profession.Enchanting), -}; -export const EnchantedSigilLivingDreams: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 221028, minLevel: 50 }]), - value: EnchantedSigil.LivingDreamsSigil, - showWhen: player => player.hasProfession(Profession.Enchanting), -}; -export const EnchantedSigilFlowingWaters: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 228978, minLevel: 50 }]), - value: EnchantedSigil.FlowingWatersSigil, -}; -export const EnchantedSigilWrathOfTheStorm: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233995, minLevel: 50 }]), - value: EnchantedSigil.WrathOfTheStormSigil, -}; - -export const ENCHANTED_SIGIL_CONFIG: ConsumableStatOption[] = [ - { config: EnchantedSigilWrathOfTheStorm, stats: [] }, - { config: EnchantedSigilFlowingWaters, stats: [] }, - { config: EnchantedSigilLivingDreams, stats: [] }, - { config: EnchantedSigilInnovation, stats: [] }, -]; - -export const makeEncanthedSigilInput = makeConsumeInputFactory({ consumesFieldName: 'enchantedSigil' }); - /////////////////////////////////////////////////////////////////////////// // EXPLOSIVES /////////////////////////////////////////////////////////////////////////// @@ -200,16 +167,6 @@ export const SapperGoblinSapper: ConsumableInputConfig = { value: SapperExplosive.SapperGoblinSapper, }; -export const SapperFumigator: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233985, minLevel: 60 }]), - value: SapperExplosive.SapperFumigator, -}; - -export const ExplosiveObsidianBomb: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233986, minLevel: 60 }]), - value: Explosive.ExplosiveObsidianBomb, -}; - export const ExplosiveSolidDynamite: ConsumableInputConfig = { actionId: (player: Player) => player.getMatchingItemActionId([{ id: 10507, minLevel: 40 }]), showWhen: player => player.hasProfession(Profession.Engineering), @@ -234,21 +191,7 @@ export const ExplosiveThoriumGrenade: ConsumableInputConfig = { value: Explosive.ExplosiveThoriumGrenade, }; -export const ExplosiveEzThroRadiationBomb: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 215168, minLevel: 40 }]), - value: Explosive.ExplosiveEzThroRadiationBomb, -}; - -export const ExplosiveHighYieldRadiationBomb: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 215127, minLevel: 40 }]), - showWhen: player => player.hasProfession(Profession.Engineering), - value: Explosive.ExplosiveHighYieldRadiationBomb, -}; - export const EXPLOSIVES_CONFIG: ConsumableStatOption[] = [ - { config: ExplosiveObsidianBomb, stats: [] }, - { config: ExplosiveEzThroRadiationBomb, stats: [] }, - { config: ExplosiveHighYieldRadiationBomb, stats: [] }, { config: ExplosiveSolidDynamite, stats: [] }, { config: ExplosiveDenseDynamite, stats: [] }, { config: ExplosiveThoriumGrenade, stats: [] }, @@ -256,7 +199,6 @@ export const EXPLOSIVES_CONFIG: ConsumableStatOption[] = [ ]; export const SAPPER_CONFIG: ConsumableStatOption[] = [ - { config: SapperFumigator, stats: [] }, { config: SapperGoblinSapper, stats: [] }, ]; @@ -278,27 +220,11 @@ export const FlaskOfTheTitans: ConsumableInputConfig = { actionId: (player: Player) => player.getMatchingItemActionId([{ id: 13510, minLevel: 51 }]), value: Flask.FlaskOfTheTitans, }; -export const FlaskOfTheOldGods: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233965, minLevel: 60 }]), - value: Flask.FlaskOfTheOldGods, -}; -export const FlaskOfUnyieldingSorrow: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233966, minLevel: 60 }]), - value: Flask.FlaskOfUnyieldingSorrow, -}; -export const FlaskOfAncientKnowledge: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233964, minLevel: 60 }]), - value: Flask.FlaskOfAncientKnowledge, -}; // Original lvl 50 not obtainable in Phase 3 export const FlaskOfDistilledWisdom: ConsumableInputConfig = { actionId: (player: Player) => player.getMatchingItemActionId([{ id: 13511, minLevel: 51 }]), value: Flask.FlaskOfDistilledWisdom, }; -export const FlaskOfMadness: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233962, minLevel: 60 }]), - value: Flask.FlaskOfMadness, -}; // Original lvl 50 not obtainable in Phase 3 export const FlaskOfSupremePower: ConsumableInputConfig = { actionId: (player: Player) => player.getMatchingItemActionId([{ id: 13512, minLevel: 51 }]), @@ -309,28 +235,12 @@ export const FlaskOfChromaticResistance: ConsumableInputConfig = { actionId: (player: Player) => player.getMatchingItemActionId([{ id: 13513, minLevel: 51 }]), value: Flask.FlaskOfChromaticResistance, }; -export const FlaskOfRestlessDreams: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 222952, minLevel: 50, maxLevel: 59 }]), - value: Flask.FlaskOfRestlessDreams, - showWhen: player => player.hasProfession(Profession.Alchemy), -}; -export const FlaskOfEverlastingNightmares: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 221024, minLevel: 50, maxLevel: 59 }]), - value: Flask.FlaskOfEverlastingNightmares, - showWhen: player => player.hasProfession(Profession.Alchemy), -}; export const FLASKS_CONFIG: ConsumableStatOption[] = [ { config: FlaskOfTheTitans, stats: [Stat.StatStamina] }, - { config: FlaskOfTheOldGods, stats: [Stat.StatStamina] }, - { config: FlaskOfMadness, stats: [Stat.StatAttackPower] }, { config: FlaskOfDistilledWisdom, stats: [Stat.StatIntellect] }, - { config: FlaskOfUnyieldingSorrow, stats: [Stat.StatIntellect] }, { config: FlaskOfSupremePower, stats: [Stat.StatMP5, Stat.StatSpellPower] }, - { config: FlaskOfAncientKnowledge, stats: [Stat.StatMP5, Stat.StatSpellPower] }, { config: FlaskOfChromaticResistance, stats: [] }, - { config: FlaskOfRestlessDreams, stats: [Stat.StatSpellPower] }, - { config: FlaskOfEverlastingNightmares, stats: [Stat.StatAttackPower] }, ]; export const makeFlasksInput = makeConsumeInputFactory({ consumesFieldName: 'flask' }); @@ -444,10 +354,6 @@ export const makeAlcoholInput = makeConsumeInputFactory({ consumesFieldName: 'al /////////////////////////////////////////////////////////////////////////// // Armor -export const ElixirOfTheIronside: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233969, minLevel: 60 }]), - value: ArmorElixir.ElixirOfTheIronside, -}; export const ElixirOfSuperiorDefense: ConsumableInputConfig = { actionId: (player: Player) => player.getMatchingItemActionId([{ id: 13445, minLevel: 43 }]), value: ArmorElixir.ElixirOfSuperiorDefense, @@ -475,7 +381,6 @@ export const ScrollOfProtection: ConsumableInputConfig = { value: ArmorElixir.ScrollOfProtection, }; export const ARMOR_CONSUMES_CONFIG: ConsumableStatOption[] = [ - { config: ElixirOfTheIronside, stats: [Stat.StatArmor] }, { config: ElixirOfSuperiorDefense, stats: [Stat.StatArmor] }, { config: ElixirOfGreaterDefense, stats: [Stat.StatArmor] }, { config: ElixirOfDefense, stats: [Stat.StatArmor] }, @@ -523,10 +428,6 @@ export const ATTACK_POWER_CONSUMES_CONFIG: ConsumableStatOption export const makeAttackPowerConsumeInput = makeConsumeInputFactory({ consumesFieldName: 'attackPowerBuff' }); // Agility -export const ElixirOfTheHoneyBadger: ConsumableInputConfig = { - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 233967, minLevel: 60 }]), - value: AgilityElixir.ElixirOfTheHoneyBadger, -}; export const ElixirOfTheMongoose: ConsumableInputConfig = { actionId: (player: Player) => player.getMatchingItemActionId([{ id: 13452, minLevel: 46 }]), value: AgilityElixir.ElixirOfTheMongoose, @@ -555,7 +456,6 @@ export const ScrollOfAgility: ConsumableInputConfig = { }; export const AGILITY_CONSUMES_CONFIG: ConsumableStatOption[] = [ - { config: ElixirOfTheHoneyBadger, stats: [Stat.StatAgility, Stat.StatMeleeCrit] }, { config: ElixirOfTheMongoose, stats: [Stat.StatAgility, Stat.StatMeleeCrit] }, { config: ElixirOfGreaterAgility, stats: [Stat.StatAgility] }, { config: ElixirOfAgility, stats: [Stat.StatAgility] }, @@ -630,25 +530,6 @@ export const SpiritOfZanza: ConsumableInputConfig = { value: ZanzaBuff.SpiritOfZanza, }; -// Atal'ai Potions -export const AtalAiMojoOfWar: ConsumableInputConfig = { - actionId: () => ActionId.fromItemId(221196), - value: ZanzaBuff.AtalaiMojoOfWar, - showWhen: (player: Player) => player.getLevel() == 50, -}; - -export const AtalAiMojoOfForbiddenMagic: ConsumableInputConfig = { - actionId: () => ActionId.fromItemId(221030), - value: ZanzaBuff.AtalaiMojoOfForbiddenMagic, - showWhen: (player: Player) => player.getLevel() == 50, -}; - -export const AtalAiMojoOfLife: ConsumableInputConfig = { - actionId: () => ActionId.fromItemId(221311), - value: ZanzaBuff.AtalaiMojoOfLife, - showWhen: (player: Player) => player.getLevel() == 50, -}; - export const ZANZA_BUFF_CONSUMES_CONFIG: ConsumableStatOption[] = [ { config: SpiritOfZanza, stats: [Stat.StatStamina, Stat.StatSpirit] }, { config: ROIDS, stats: [Stat.StatStrength] }, @@ -656,29 +537,18 @@ export const ZANZA_BUFF_CONSUMES_CONFIG: ConsumableStatOption[] = [ { config: LungJuiceCocktail, stats: [Stat.StatStamina] }, { config: CerebralCortexCompound, stats: [Stat.StatIntellect] }, { config: GizzardGum, stats: [Stat.StatSpirit] }, - { config: AtalAiMojoOfWar, stats: [Stat.StatAttackPower] }, - { config: AtalAiMojoOfForbiddenMagic, stats: [Stat.StatSpellPower] }, - { config: AtalAiMojoOfLife, stats: [Stat.StatHealingPower] }, ]; export const makeZanzaBuffConsumesInput = makeConsumeInputFactory({ consumesFieldName: 'zanzaBuff' }); -export const Catnip = makeBooleanMiscConsumeInput({ - actionId: (player: Player) => player.getMatchingItemActionId([{ id: 213407, minLevel: 20 }]), - fieldName: 'catnip', - showWhen: player => player.getClass() === Class.ClassDruid, -}); export const JujuFlurry = makeBooleanMiscConsumeInput({ actionId: () => ActionId.fromItemId(12450), fieldName: 'jujuFlurry', showWhen: player => player.getLevel() >= 55, }); -export const elixirOfCoalescedRegret = makeBooleanMiscConsumeInput({ actionId: () => ActionId.fromItemId(210708), fieldName: 'elixirOfCoalescedRegret' }); export const BoglingRoot = makeBooleanMiscConsumeInput({ actionId: () => ActionId.fromItemId(5206), fieldName: 'boglingRoot' }); export const MISC_OFFENSIVE_CONSUMES_CONFIG: PickerStatOptions[] = [ - { config: Catnip, picker: IconPicker, stats: [] }, { config: JujuFlurry, picker: IconPicker, stats: [Stat.StatAttackPower] }, - { config: elixirOfCoalescedRegret, picker: IconPicker, stats: [] }, { config: BoglingRoot, picker: IconPicker, stats: [Stat.StatAttackPower] }, ]; @@ -910,21 +780,11 @@ export const POTIONS_CONFIG: ConsumableStatOption[] = [ export const makePotionsInput = makeConsumeInputFactory({ consumesFieldName: 'defaultPotion' }); -export const MildlyIrradiatedRejuvPotion = makeBooleanConsumeInput({ - actionId: player => player.getMatchingItemActionId([{ id: 215162, minLevel: 35 }]), - fieldName: 'mildlyIrradiatedRejuvPot', - showWhen: player => player.hasProfession(Profession.Alchemy), -}); - /////////////////////////////////////////////////////////////////////////// // SPELL DAMAGE CONSUMES /////////////////////////////////////////////////////////////////////////// // Arcane -export const ElixirOfTheMageLord: ConsumableInputConfig = { - actionId: player => player.getMatchingItemActionId([{ id: 233968, minLevel: 60 }]), - value: SpellPowerBuff.ElixirOfTheMageLord, -}; export const GreaterArcaneElixir: ConsumableInputConfig = { actionId: player => player.getMatchingItemActionId([{ id: 13454, minLevel: 46 }]), value: SpellPowerBuff.GreaterArcaneElixir, @@ -939,7 +799,6 @@ export const LesserArcaneElixir: ConsumableInputConfig = { }; export const SPELL_POWER_CONFIG: ConsumableStatOption[] = [ - { config: ElixirOfTheMageLord, stats: [Stat.StatSpellPower] }, { config: GreaterArcaneElixir, stats: [Stat.StatSpellPower] }, { config: ArcaneElixir, stats: [Stat.StatSpellPower] }, { config: LesserArcaneElixir, stats: [Stat.StatSpellPower] }, @@ -1010,25 +869,9 @@ export const Windfury: ConsumableInputConfig = { value: WeaponImbue.Windfury, }; -// Wild Strikes -export const WildStrikes: ConsumableInputConfig = { - actionId: () => ActionId.fromSpellId(407975), - value: WeaponImbue.WildStrikes, -}; - // Other Imbues // Wizard Oils -export const EnchantedRepellent = (slot: ItemSlot): ConsumableInputConfig => { - return { - actionId: player => player.getMatchingItemActionId([{ id: 233996, minLevel: 60 }]), - value: WeaponImbue.EnchantedRepellent, - showWhen: player => { - const weapon = player.getEquippedItem(slot); - return !weapon || weapon.item.weaponType != WeaponType.WeaponTypeOffHand; - }, - }; -}; export const BrilliantWizardOil = (slot: ItemSlot): ConsumableInputConfig => { return { actionId: player => player.getMatchingItemActionId([{ id: 20749, minLevel: 45 }]), @@ -1102,16 +945,6 @@ export const MinorManaOil = (slot: ItemSlot): ConsumableInputConfig }, }; }; -export const BlackfathomManaOil = (slot: ItemSlot): ConsumableInputConfig => { - return { - actionId: player => player.getMatchingItemActionId([{ id: 211848, minLevel: 25 }]), - value: WeaponImbue.BlackfathomManaOil, - showWhen: player => { - const weapon = player.getEquippedItem(slot); - return !weapon || isWeapon(weapon.item.weaponType); - }, - }; -}; // Sharpening Stones export const ElementalSharpeningStone = (slot: ItemSlot): ConsumableInputConfig => { @@ -1144,16 +977,6 @@ export const SolidSharpeningStone = (slot: ItemSlot): ConsumableInputConfig => { - return { - actionId: () => ActionId.fromItemId(211845), - value: WeaponImbue.BlackfathomSharpeningStone, - showWhen: player => { - const weapon = player.getEquippedItem(slot); - return !weapon || isSharpWeaponType(weapon.item.weaponType); - }, - }; -}; // Weightstones export const DenseWeightstone = (slot: ItemSlot): ConsumableInputConfig => { @@ -1199,23 +1022,6 @@ export const FrostOil = (slot: ItemSlot): ConsumableInputConfig => }; }; -export const ConductiveShieldCoating = (slot: ItemSlot): ConsumableInputConfig => { - return { - actionId: player => player.getMatchingItemActionId([{ id: 228980, minLevel: 40 }]), - value: WeaponImbue.ConductiveShieldCoating, - showWhen: player => - slot === ItemSlot.ItemSlotOffHand && player.getEquippedItem(ItemSlot.ItemSlotOffHand)?.item?.weaponType === WeaponType.WeaponTypeShield, - }; -}; -export const MagnificentTrollshine = (slot: ItemSlot): ConsumableInputConfig => { - return { - actionId: player => player.getMatchingItemActionId([{ id: 232611, minLevel: 45 }]), - value: WeaponImbue.MagnificentTrollshine, - showWhen: player => - slot === ItemSlot.ItemSlotOffHand && player.getEquippedItem(ItemSlot.ItemSlotOffHand)?.item?.weaponType === WeaponType.WeaponTypeShield, - }; -}; - const SHAMAN_IMBUES = (slot: ItemSlot): ConsumableStatOption[] => [ { config: RockbiterWeaponImbue(slot), stats: [] }, { config: FlametongueWeaponImbue(slot), stats: [] }, @@ -1233,9 +1039,6 @@ const ROGUE_IMBUES: ConsumableStatOption[] = [ ]; const CONSUMABLES_IMBUES = (slot: ItemSlot): ConsumableStatOption[] => [ - { config: EnchantedRepellent(slot), stats: [Stat.StatSpellPower] }, - { config: MagnificentTrollshine(slot), stats: [Stat.StatSpellPower] }, - { config: ConductiveShieldCoating(slot), stats: [Stat.StatSpellPower] }, { config: BrilliantWizardOil(slot), stats: [Stat.StatSpellPower] }, { config: WizardOil(slot), stats: [Stat.StatSpellPower] }, { config: LesserWizardOil(slot), stats: [Stat.StatSpellPower] }, @@ -1244,12 +1047,10 @@ const CONSUMABLES_IMBUES = (slot: ItemSlot): ConsumableStatOption[] { config: BrilliantManaOil(slot), stats: [Stat.StatHealingPower, Stat.StatSpellPower] }, { config: LesserManaOil(slot), stats: [Stat.StatHealingPower, Stat.StatSpellPower] }, { config: MinorManaOil(slot), stats: [Stat.StatHealingPower, Stat.StatSpellPower] }, - { config: BlackfathomManaOil(slot), stats: [Stat.StatSpellPower, Stat.StatMP5] }, { config: ElementalSharpeningStone(slot), stats: [Stat.StatAttackPower] }, { config: DenseSharpeningStone(slot), stats: [Stat.StatAttackPower] }, { config: SolidSharpeningStone(slot), stats: [Stat.StatAttackPower] }, - { config: BlackfathomSharpeningStone(slot), stats: [Stat.StatMeleeHit] }, { config: DenseWeightstone(slot), stats: [Stat.StatAttackPower] }, { config: SolidWeightstone(slot), stats: [Stat.StatAttackPower] }, @@ -1268,7 +1069,6 @@ export const WEAPON_IMBUES_MH_CONFIG: ConsumableStatOption[] = [ ...ROGUE_IMBUES, ...SHAMAN_IMBUES(ItemSlot.ItemSlotMainHand), { config: Windfury, stats: [Stat.StatMeleeHit] }, - { config: WildStrikes, stats: [Stat.StatMeleeHit] }, ...CONSUMABLES_IMBUES(ItemSlot.ItemSlotMainHand), ]; diff --git a/ui/core/components/inputs/rogue_imbues.ts b/ui/core/components/inputs/rogue_imbues.ts index cfbdc060c..d39be5775 100644 --- a/ui/core/components/inputs/rogue_imbues.ts +++ b/ui/core/components/inputs/rogue_imbues.ts @@ -40,15 +40,3 @@ export const WoundPoisonWeaponImbue: ConsumableInputConfig = { value: WeaponImbue.WoundPoison, showWhen: player => player.getClass() == Class.ClassRogue, }; - -export const OccultPoisonWeaponImbue: ConsumableInputConfig = { - actionId: player => player.getMatchingItemActionId([{ id: 226374, minLevel: 56 }]), - value: WeaponImbue.OccultPoison, - showWhen: player => player.getClass() == Class.ClassRogue, -}; - -export const SebaciousPoisonWeaponImbue: ConsumableInputConfig = { - actionId: player => player.getMatchingItemActionId([{ id: 217345, minLevel: 60 }]), - value: WeaponImbue.SebaciousPoison, - showWhen: player => player.getClass() == Class.ClassRogue, -}; diff --git a/ui/core/components/inputs/warlock_inputs.ts b/ui/core/components/inputs/warlock_inputs.ts index 22d61c335..dd2e7d5a8 100644 --- a/ui/core/components/inputs/warlock_inputs.ts +++ b/ui/core/components/inputs/warlock_inputs.ts @@ -71,11 +71,6 @@ export const PetInput = () => { actionId: () => ActionId.fromSpellId(697), value: Summon.Voidwalker }, { actionId: () => ActionId.fromSpellId(712), value: Summon.Succubus }, { actionId: () => ActionId.fromSpellId(691), value: Summon.Felhunter }, - { - actionId: () => ActionId.fromSpellId(427733), - value: Summon.Felguard, - showWhen: player => player.getEquippedItem(ItemSlot.ItemSlotWrist)?.rune?.id == WarlockRune.RuneBracerSummonFelguard, - }, ], changeEmitter: (player: Player) => player.changeEmitter, }); diff --git a/ui/core/components/inputs/warrior_inputs.ts b/ui/core/components/inputs/warrior_inputs.ts index f4cf29b8e..33c87080d 100644 --- a/ui/core/components/inputs/warrior_inputs.ts +++ b/ui/core/components/inputs/warrior_inputs.ts @@ -34,11 +34,6 @@ export const StancePicker = () => { value: WarriorStance.WarriorStanceBattle, actionId: () => ActionId.fromSpellId(2457) }, { value: WarriorStance.WarriorStanceDefensive, actionId: () => ActionId.fromSpellId(71) }, { value: WarriorStance.WarriorStanceBerserker, actionId: player => player.getMatchingSpellActionId([{ id: 2458, minLevel: 30 }]) }, - { - value: WarriorStance.WarriorStanceGladiator, - actionId: player => player.getMatchingSpellActionId([{ id: 412513, minLevel: 45 }]), - showWhen: player => player.hasRune(ItemSlot.ItemSlotFeet, WarriorRune.RuneGladiatorStance), - }, ], changeEmitter: player => TypedEvent.onAny([player.specOptionsChangeEmitter, player.gearChangeEmitter]), tooltip: 'Starting Stance
If blank, automatically chooses a stance based on your talents and runes.', diff --git a/ui/core/constants/other.ts b/ui/core/constants/other.ts index dbbab941f..353e52b11 100644 --- a/ui/core/constants/other.ts +++ b/ui/core/constants/other.ts @@ -36,7 +36,7 @@ export const GLOBAL_DISPLAY_STATS = [ ]; export const GLOBAL_DISPLAY_PSEUDO_STATS = [ - PseudoStat.TimewornBonus, + ]; export const GLOBAL_EP_STATS = [ diff --git a/ui/core/player.ts b/ui/core/player.ts index b0da94a9f..73a544817 100644 --- a/ui/core/player.ts +++ b/ui/core/player.ts @@ -41,7 +41,6 @@ import { UIEnchant as Enchant, UIItem as Item, UIItem_FactionRestriction, - UIRune as Rune, } from './proto/ui.js'; import { ActionId, ActionIdConfig } from './proto_utils/action_id.js'; import { Database } from './proto_utils/database.js'; @@ -428,14 +427,6 @@ export class Player { return this.sim.db.getEnchants(slot).filter(enchant => canEquipEnchant(enchant, this)); } - getRunes(slot: ItemSlot): Array { - return this.sim.db.getRunes(slot, this.getClass()); - } - - hasRune(slot: ItemSlot, runeId: number): boolean { - return this.getEquippedItem(slot)?.rune?.id === runeId; - } - getEpWeights(): Stats { return this.epWeights; } @@ -1348,7 +1339,6 @@ export class Player { inFrontOfTarget: this.getInFrontOfTarget(), distanceFromTarget: this.getDistanceFromTarget(), healingModel: this.getHealingModel(), - isbUsingShadowflame: this.getIsbUsingShadowflame(), isbSbFrequency: this.getIsbSbFrequency(), isbCrit: this.getIsbCrit(), isbWarlocks: this.getIsbWarlocks(), diff --git a/ui/core/proto_utils/database.ts b/ui/core/proto_utils/database.ts index c1f1a6f20..c1cefca36 100644 --- a/ui/core/proto_utils/database.ts +++ b/ui/core/proto_utils/database.ts @@ -1,6 +1,6 @@ import { MAX_CHARACTER_LEVEL } from '../constants/mechanics.js'; import { Class, EquipmentSpec, ItemRandomSuffix, ItemSlot, ItemSpec, ItemSwap, PresetEncounter, PresetTarget, SimDatabase } from '../proto/common.js'; -import { IconData, UIDatabase, UIEnchant as Enchant, UIFaction as Faction, UIItem as Item, UINPC as Npc, UIRune as Rune, UIZone as Zone } from '../proto/ui.js'; +import { IconData, UIDatabase, UIEnchant as Enchant, UIFaction as Faction, UIItem as Item, UINPC as Npc, UIZone as Zone } from '../proto/ui.js'; import { distinct } from '../utils.js'; import { EquippedItem } from './equipped_item.js'; import { Gear, ItemSwapGear } from './gear.js'; @@ -64,8 +64,6 @@ export class Database { private readonly items = new Map(); private readonly randomSuffixes = new Map(); private readonly enchantsBySlot: Partial> = {}; - private readonly runesBySlotByClass: Partial>>> = {}; - private readonly runesById: Record = {}; private readonly zones = new Map(); private readonly npcs = new Map(); private readonly factions = new Map(); @@ -92,22 +90,6 @@ export class Database { this.enchantsBySlot[slot]!.push(enchant); }); }); - db.runes.forEach(rune => { - this.runesById[rune.id] = rune; - - const slots = itemTypeToSlotsMap[rune.type]; - slots?.forEach(slot => { - if (!this.runesBySlotByClass[slot]) { - this.runesBySlotByClass[slot] = {}; - } - rune.classAllowlist.forEach(klass => { - if (!this.runesBySlotByClass[slot]![klass]) { - this.runesBySlotByClass[slot]![klass] = []; - } - this.runesBySlotByClass[slot]![klass]!.push(rune); - }); - }); - }); db.npcs.forEach(npc => this.npcs.set(npc.id, npc)); db.zones.forEach(zone => this.zones.set(zone.id, zone)); @@ -153,20 +135,6 @@ export class Database { return this.enchantsBySlot[slot] || []; } - getRunes(slot: ItemSlot, klass: Class): Array { - if (!this.runesBySlotByClass[slot]) return []; - - return this.runesBySlotByClass[slot]![klass] || []; - } - - getRuneById(runeID: number): Rune { - return this.runesById[runeID]; - } - - hasRuneBySlot(slot: ItemSlot, klass: Class): boolean { - return !!(this.runesBySlotByClass[slot] && this.runesBySlotByClass[slot]![klass]); - } - getNpc(npcId: number): Npc | null { return this.npcs.get(npcId) || null; } @@ -194,17 +162,12 @@ export class Database { } } - let rune: Rune | null = null; - if (itemSpec.rune && !!this.runesById[itemSpec.rune]) { - rune = this.runesById[itemSpec.rune]; - } - let randomSuffix: ItemRandomSuffix | null = null; if (itemSpec.randomSuffix && !!this.getRandomSuffixById(itemSpec.randomSuffix)) { randomSuffix = this.getRandomSuffixById(itemSpec.randomSuffix)!; } - return new EquippedItem({ item, enchant, rune, randomSuffix }); + return new EquippedItem({ item, enchant, randomSuffix }); } lookupEquipmentSpec(equipSpec: EquipmentSpec): Gear { diff --git a/ui/core/proto_utils/equipped_item.ts b/ui/core/proto_utils/equipped_item.ts index 32d39d2d7..7c99cc613 100644 --- a/ui/core/proto_utils/equipped_item.ts +++ b/ui/core/proto_utils/equipped_item.ts @@ -1,5 +1,5 @@ import { ItemRandomSuffix, ItemSpec, Profession } from '../proto/common.js'; -import { UIEnchant as Enchant, UIItem as Item, UIRune as Rune } from '../proto/ui.js'; +import { UIEnchant as Enchant, UIItem as Item } from '../proto/ui.js'; import { distinct } from '../utils.js'; import { ActionId } from './action_id.js'; import { enchantAppliesToItem } from './utils.js'; @@ -11,7 +11,6 @@ export function getWeaponDPS(item: Item): number { interface EquippedItemConfig { item: Item; enchant?: Enchant | null; - rune?: Rune | null; randomSuffix?: ItemRandomSuffix | null; } @@ -24,13 +23,11 @@ export class EquippedItem { readonly _item: Item; readonly _randomSuffix: ItemRandomSuffix | null; readonly _enchant: Enchant | null; - readonly _rune: Rune | null; constructor(config: EquippedItemConfig) { this._item = config.item; this._randomSuffix = config.randomSuffix || null; this._enchant = config.enchant || null; - this._rune = config.rune || null; } get item(): Item { @@ -51,11 +48,6 @@ export class EquippedItem { return this._enchant ? Enchant.clone(this._enchant) : null; } - get rune(): Rune | null { - // Make a defensive copy - return this._rune ? Rune.clone(this._rune) : null; - } - equals(other: EquippedItem) { if (!Item.equals(this._item, other.item)) return false; @@ -67,10 +59,6 @@ export class EquippedItem { if (this._enchant && other.enchant && !Enchant.equals(this._enchant, other.enchant)) return false; - if ((this._rune == null) != (other.rune == null)) return false; - - if (this._rune && other.rune && !Rune.equals(this._rune, other.rune)) return false; - return true; } @@ -81,22 +69,18 @@ export class EquippedItem { let newEnchant; if (this._enchant && enchantAppliesToItem(this._enchant, item)) newEnchant = this._enchant; - return new EquippedItem({ item, enchant: newEnchant, rune: this.rune }); + return new EquippedItem({ item, enchant: newEnchant }); } /** * Returns a new EquippedItem with the given enchant applied. */ withEnchant(enchant: Enchant | null): EquippedItem { - return new EquippedItem({ item: this._item, enchant, rune: this._rune, randomSuffix: this._randomSuffix }); - } - - withRune(rune: Rune | null): EquippedItem { - return new EquippedItem({ item: this._item, enchant: this.enchant, rune, randomSuffix: this._randomSuffix }); + return new EquippedItem({ item: this._item, enchant, randomSuffix: this._randomSuffix }); } withRandomSuffix(randomSuffix: ItemRandomSuffix | null): EquippedItem { - return new EquippedItem({ item: this._item, enchant: this.enchant, rune: this._rune, randomSuffix }); + return new EquippedItem({ item: this._item, enchant: this.enchant, randomSuffix }); } asActionId(): ActionId { @@ -110,7 +94,6 @@ export class EquippedItem { id: this._item.id, randomSuffix: this._randomSuffix?.id, enchant: this._enchant?.effectId, - rune: this._rune?.id, }); } diff --git a/ui/core/proto_utils/names.ts b/ui/core/proto_utils/names.ts index 1f5e5fd31..1c5b4429f 100644 --- a/ui/core/proto_utils/names.ts +++ b/ui/core/proto_utils/names.ts @@ -207,7 +207,6 @@ export const pseudoStatNames: Map = new Map([ [PseudoStat.PseudoStatOffHandDps, 'Off Hand DPS'], [PseudoStat.PseudoStatRangedDps, 'Ranged DPS'], [PseudoStat.PseudoStatBlockValueMultiplier, 'Block Value Multiplier'], - [PseudoStat.TimewornBonus, 'Timeworn Pieces'], [PseudoStat.BonusPhysicalDamage, 'Bonus Weapon Damage'], ]); diff --git a/ui/core/raid.ts b/ui/core/raid.ts index 6abb9a9a0..ea279b9f5 100644 --- a/ui/core/raid.ts +++ b/ui/core/raid.ts @@ -205,16 +205,6 @@ export class Raid { } fromProto(eventID: EventID, proto: RaidProto) { - // Backwards compatbility with old curses inputs - if (proto.debuffs?.curseOfElements && proto.debuffs.curseOfElementsNew == TristateEffect.TristateEffectMissing) { - proto.debuffs.curseOfElementsNew = TristateEffect.TristateEffectRegular; - proto.debuffs.curseOfElements = false; - } - if (proto.debuffs?.curseOfShadow && proto.debuffs.curseOfShadowNew == TristateEffect.TristateEffectMissing) { - proto.debuffs.curseOfShadowNew = TristateEffect.TristateEffectRegular; - proto.debuffs.curseOfShadow = false; - } - TypedEvent.freezeAllAndDo(() => { this.setBuffs(eventID, proto.buffs || RaidBuffs.create()); this.setDebuffs(eventID, proto.debuffs || Debuffs.create()); diff --git a/ui/elemental_shaman/presets.ts b/ui/elemental_shaman/presets.ts index 61f044221..b96900100 100644 --- a/ui/elemental_shaman/presets.ts +++ b/ui/elemental_shaman/presets.ts @@ -4,7 +4,6 @@ import { AttackPowerBuff, Consumes, Debuffs, - EnchantedSigil, FirePowerBuff, Flask, Food, @@ -96,14 +95,12 @@ export const DefaultOptions = ElementalShamanOptions.create({}); export const DefaultConsumes = Consumes.create({ attackPowerBuff: AttackPowerBuff.JujuMight, defaultPotion: Potions.MajorManaPotion, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, flask: Flask.FlaskOfSupremePower, food: Food.FoodRunnTumTuberSurprise, mainHandImbue: WeaponImbue.FlametongueWeapon, manaRegenElixir: ManaRegenElixir.MagebloodPotion, - mildlyIrradiatedRejuvPot: true, - offHandImbue: WeaponImbue.MagnificentTrollshine, + //offHandImbue: WeaponImbue.MagnificentTrollshine, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, strengthBuff: StrengthBuff.JujuPower, zanzaBuff: ZanzaBuff.CerebralCortexCompound, @@ -111,36 +108,27 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, - demonicPact: 110, divineSpirit: true, giftOfTheWild: TristateEffect.TristateEffectImproved, manaSpringTotem: TristateEffect.TristateEffectRegular, moonkinAura: true, strengthOfEarthTotem: TristateEffect.TristateEffectImproved, - vampiricTouch: 300, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ fengusFerocity: true, - mightOfStormwind: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, faerieFire: true, - homunculi: 70, // 70% average uptime default - improvedFaerieFire: true, improvedScorch: true, - markOfChaos: true, - occultPoison: true, stormstrike: true, sunderArmor: true, }); diff --git a/ui/elemental_shaman/sim.ts b/ui/elemental_shaman/sim.ts index 7ae240709..db530b4c3 100644 --- a/ui/elemental_shaman/sim.ts +++ b/ui/elemental_shaman/sim.ts @@ -3,7 +3,7 @@ import * as OtherInputs from '../core/components/other_inputs'; import { Phase } from '../core/constants/other'; import { IndividualSimUI, registerSpecConfig } from '../core/individual_sim_ui'; import { Player } from '../core/player'; -import { Class, Faction, ItemSlot, PartyBuffs, PseudoStat, Race, Spec, Stat } from '../core/proto/common'; +import { Class, Faction, ItemSlot, PartyBuffs, Race, Spec, Stat } from '../core/proto/common'; import { Stats } from '../core/proto_utils/stats'; import { getSpecIcon, specNames } from '../core/proto_utils/utils'; import * as Presets from './presets'; @@ -31,7 +31,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecElementalShaman, { Stat.StatMP5, ], epPseudoStats: [ - PseudoStat.TimewornBonus, + ], // Reference stat against which to calculate EP. I think all classes use either spell power or attack power. epReferenceStat: Stat.StatSpellPower, @@ -90,7 +90,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecElementalShaman, { playerIconInputs: [], // Buff and Debuff inputs to include/exclude, overriding the EP-based defaults. includeBuffDebuffInputs: [], - excludeBuffDebuffInputs: [BuffDebuffInputs.BleedDebuff], + excludeBuffDebuffInputs: [], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { inputs: [OtherInputs.DistanceFromTarget], diff --git a/ui/enhancement_shaman/presets.ts b/ui/enhancement_shaman/presets.ts index a5b495313..f77f36da0 100644 --- a/ui/enhancement_shaman/presets.ts +++ b/ui/enhancement_shaman/presets.ts @@ -5,7 +5,6 @@ import { AttackPowerBuff, Consumes, Debuffs, - EnchantedSigil, FirePowerBuff, Flask, Food, @@ -108,13 +107,11 @@ export const DefaultConsumes = Consumes.create({ attackPowerBuff: AttackPowerBuff.JujuMight, defaultPotion: Potions.MajorManaPotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, flask: Flask.FlaskOfSupremePower, food: Food.FoodBlessSunfruit, mainHandImbue: WeaponImbue.WindfuryWeapon, manaRegenElixir: ManaRegenElixir.MagebloodPotion, - mildlyIrradiatedRejuvPot: true, offHandImbue: WeaponImbue.WindfuryWeapon, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, strengthBuff: StrengthBuff.JujuPower, @@ -123,9 +120,7 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, - demonicPact: 110, divineSpirit: true, fireResistanceAura: true, fireResistanceTotem: true, @@ -134,7 +129,6 @@ export const DefaultRaidBuffs = RaidBuffs.create({ leaderOfThePack: true, manaSpringTotem: TristateEffect.TristateEffectRegular, strengthOfEarthTotem: TristateEffect.TristateEffectImproved, - vampiricTouch: 300, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ @@ -144,7 +138,6 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -152,11 +145,7 @@ export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, exposeArmor: TristateEffect.TristateEffectImproved, faerieFire: true, - homunculi: 70, // 70% average uptime default - improvedFaerieFire: true, improvedScorch: true, - markOfChaos: true, - occultPoison: true, stormstrike: true, sunderArmor: true, }); diff --git a/ui/enhancement_shaman/sim.ts b/ui/enhancement_shaman/sim.ts index a9e665c75..bbad7a53f 100644 --- a/ui/enhancement_shaman/sim.ts +++ b/ui/enhancement_shaman/sim.ts @@ -115,7 +115,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecEnhancementShaman, { playerIconInputs: [], // Buff and Debuff inputs to include/exclude, overriding the EP-based defaults. includeBuffDebuffInputs: [BuffDebuffInputs.BlessingOfWisdom, BuffDebuffInputs.ManaSpringTotem, BuffDebuffInputs.SpiritBuff], - excludeBuffDebuffInputs: [BuffDebuffInputs.BleedDebuff], + excludeBuffDebuffInputs: [], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { inputs: [ShamanInputs.SyncTypeInput, OtherInputs.TankAssignment, OtherInputs.InFrontOfTarget], diff --git a/ui/feral_druid/presets.ts b/ui/feral_druid/presets.ts index 6de5e1216..f927fb4c2 100644 --- a/ui/feral_druid/presets.ts +++ b/ui/feral_druid/presets.ts @@ -6,7 +6,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, Flask, Food, IndividualBuffs, @@ -126,14 +125,11 @@ export const DefaultConsumes = Consumes.create({ defaultConjured: Conjured.ConjuredDemonicRune, defaultPotion: Potions.MajorManaPotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfDistilledWisdom, food: Food.FoodSmokedDesertDumpling, mainHandImbue: WeaponImbue.ElementalSharpeningStone, manaRegenElixir: ManaRegenElixir.MagebloodPotion, - mildlyIrradiatedRejuvPot: true, miscConsumes: { - catnip: true, jujuEmber: true, }, strengthBuff: StrengthBuff.JujuPower, @@ -142,7 +138,6 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, divineSpirit: true, giftOfTheWild: TristateEffect.TristateEffectImproved, @@ -157,12 +152,10 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfMight: TristateEffect.TristateEffectImproved, blessingOfWisdom: TristateEffect.TristateEffectImproved, fengusFerocity: true, - mightOfStormwind: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -170,7 +163,6 @@ export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, exposeArmor: TristateEffect.TristateEffectImproved, faerieFire: true, - homunculi: 70, // 70% average uptime default sunderArmor: true, }); diff --git a/ui/feral_druid/sim.ts b/ui/feral_druid/sim.ts index b3554d6e2..e236eb8d5 100644 --- a/ui/feral_druid/sim.ts +++ b/ui/feral_druid/sim.ts @@ -114,7 +114,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecFeralDruid, { BuffDebuffInputs.ManaSpringTotem, BuffDebuffInputs.JudgementOfWisdom, ], - excludeBuffDebuffInputs: [WeaponImbue.ElementalSharpeningStone, WeaponImbue.DenseSharpeningStone, WeaponImbue.WildStrikes], + excludeBuffDebuffInputs: [WeaponImbue.ElementalSharpeningStone, WeaponImbue.DenseSharpeningStone], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { inputs: [ diff --git a/ui/hunter/gear_sets/placeholder.gear.json b/ui/hunter/gear_sets/placeholder.gear.json index 97627a58b..022a9d11b 100644 --- a/ui/hunter/gear_sets/placeholder.gear.json +++ b/ui/hunter/gear_sets/placeholder.gear.json @@ -6,8 +6,8 @@ {"id":14811,"enchant":866}, {"id":18458}, {"id":15063,"enchant":904}, - {"id":18393,"rune":415352}, - {"id":8309,"rune":415320}, + {"id":18393}, + {"id":8309}, {"id":6423,"enchant":849}, {"id":2951}, {"id":9533}, diff --git a/ui/hunter/inputs.ts b/ui/hunter/inputs.ts index eac936800..3e20b0baa 100644 --- a/ui/hunter/inputs.ts +++ b/ui/hunter/inputs.ts @@ -61,23 +61,6 @@ export const PetUptime = InputHelpers.makeSpecOptionsNumberInput({ - fieldName: 'newRaptorStrike', - label: 'New Raptor Strike', - labelTooltip: 'New Raptor Strike with removed same weapon type 30% damage bonus.', - showWhen: player => player.getEquippedItem(ItemSlot.ItemSlotFeet)?.rune?.id == HunterRune.RuneBootsDualWieldSpecialization, - changeEmitter: (player: Player) => TypedEvent.onAny([player.gearChangeEmitter, player.specOptionsChangeEmitter]), -}); - -export const SniperTrainingUptime = InputHelpers.makeSpecOptionsNumberInput({ - fieldName: 'sniperTrainingUptime', - label: 'Sniper Training Uptime (%)', - labelTooltip: 'Percent of the fight duration for which you will have the buff.', - percent: true, - showWhen: player => player.getEquippedItem(ItemSlot.ItemSlotLegs)?.rune?.id == HunterRune.RuneLegsSniperTraining, - changeEmitter: (player: Player) => TypedEvent.onAny([player.gearChangeEmitter, player.specOptionsChangeEmitter]), -}); - export const PetAttackSpeedInput = InputHelpers.makeSpecOptionsEnumInput({ fieldName: 'petAttackSpeed', label: 'Pet Attack Speed', diff --git a/ui/hunter/presets.ts b/ui/hunter/presets.ts index 191e10ed9..e518d1af9 100644 --- a/ui/hunter/presets.ts +++ b/ui/hunter/presets.ts @@ -7,7 +7,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, Flask, Food, HealthElixir, @@ -221,11 +220,10 @@ export const DefaultConsumes = Consumes.create({ defaultConjured: Conjured.ConjuredDemonicRune, defaultPotion: Potions.MajorManaPotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfSupremePower, food: Food.FoodSmokedDesertDumpling, healthElixir: HealthElixir.ElixirOfFortitude, - mainHandImbue: WeaponImbue.WildStrikes, + mainHandImbue: WeaponImbue.Windfury, manaRegenElixir: ManaRegenElixir.MagebloodPotion, offHandImbue: WeaponImbue.ElementalSharpeningStone, petAttackPowerConsumable: 1, @@ -239,10 +237,7 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, - commandingShout: true, - demonicPact: 110, divineSpirit: true, fireResistanceAura: true, fireResistanceTotem: true, @@ -259,31 +254,22 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfMight: TristateEffect.TristateEffectRegular, blessingOfWisdom: TristateEffect.TristateEffectImproved, fengusFerocity: true, - fervorOfTheTempleExplorer: true, - mightOfStormwind: true, moldarsMoxie: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, - dreamstate: true, exposeArmor: TristateEffect.TristateEffectImproved, faerieFire: true, - homunculi: 70, // 70% average uptime default huntersMark: TristateEffect.TristateEffectImproved, improvedScorch: true, - improvedFaerieFire: true, judgementOfWisdom: true, - mangle: true, - markOfChaos: true, - occultPoison: true, stormstrike: true, sunderArmor: true, }); diff --git a/ui/hunter/sim.ts b/ui/hunter/sim.ts index fc127cede..cafd44b27 100644 --- a/ui/hunter/sim.ts +++ b/ui/hunter/sim.ts @@ -1,7 +1,6 @@ import * as BuffDebuffInputs from '../core/components/inputs/buffs_debuffs'; import * as ConsumablesInputs from '../core/components/inputs/consumables.js'; import * as OtherInputs from '../core/components/other_inputs.js'; -import * as Mechanics from '../core/constants/mechanics.js'; import { Phase } from '../core/constants/other.js'; import { IndividualSimUI, registerSpecConfig } from '../core/individual_sim_ui.js'; import { Player } from '../core/player.js'; @@ -129,7 +128,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecHunter, { //HunterInputs.NewRaptorStrike, HunterInputs.PetAttackSpeedInput, HunterInputs.PetUptime, - HunterInputs.SniperTrainingUptime, OtherInputs.DistanceFromTarget, OtherInputs.TankAssignment, OtherInputs.InFrontOfTarget, @@ -166,10 +164,10 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecHunter, { autoRotation: player => { const level = player.getLevel(); - const isMelee = - player.hasRune(ItemSlot.ItemSlotWaist, HunterRune.RuneBeltMeleeSpecialist) || - player.hasRune(ItemSlot.ItemSlotFeet, HunterRune.RuneBootsDualWieldSpecialization) || - player.hasRune(ItemSlot.ItemSlotFeet, HunterRune.RuneBootsWyvernStrike); + const isMelee = false; + //player.hasRune(ItemSlot.ItemSlotWaist, HunterRune.RuneBeltMeleeSpecialist) || + //player.hasRune(ItemSlot.ItemSlotFeet, HunterRune.RuneBootsDualWieldSpecialization) || + //player.hasRune(ItemSlot.ItemSlotFeet, HunterRune.RuneBootsWyvernStrike); if (isMelee) { switch (level) { diff --git a/ui/mage/inputs.ts b/ui/mage/inputs.ts index 25884ca67..3c4fb63c4 100644 --- a/ui/mage/inputs.ts +++ b/ui/mage/inputs.ts @@ -11,11 +11,6 @@ export const Armor = InputHelpers.makeSpecOptionsEnumIconInput ActionId.fromSpellId(428741), - value: ArmorType.MoltenArmor, - showWhen: player => player.hasRune(ItemSlot.ItemSlotWrist, MageRune.RuneBracersMoltenArmor), - }, { actionId: player => player.getMatchingSpellActionId([ diff --git a/ui/mage/presets.ts b/ui/mage/presets.ts index 7bf39c31f..1861ae391 100644 --- a/ui/mage/presets.ts +++ b/ui/mage/presets.ts @@ -4,7 +4,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, FirePowerBuff, Flask, Food, @@ -206,7 +205,6 @@ export const DefaultOptions = MageOptions.create({ export const DefaultConsumes = Consumes.create({ defaultConjured: Conjured.ConjuredDemonicRune, defaultPotion: Potions.MajorManaPotion, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, flask: Flask.FlaskOfSupremePower, food: Food.FoodRunnTumTuberSurprise, @@ -215,41 +213,31 @@ export const DefaultConsumes = Consumes.create({ mainHandImbue: WeaponImbue.BrilliantWizardOil, manaRegenElixir: ManaRegenElixir.MagebloodPotion, - mildlyIrradiatedRejuvPot: true, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, zanzaBuff: ZanzaBuff.CerebralCortexCompound, }); export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, - demonicPact: 110, divineSpirit: true, giftOfTheWild: TristateEffect.TristateEffectImproved, manaSpringTotem: TristateEffect.TristateEffectRegular, moonkinAura: true, - vampiricTouch: 300, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfWisdom: TristateEffect.TristateEffectImproved, - mightOfStormwind: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); export const DefaultDebuffs = Debuffs.create({ - dreamstate: true, - improvedFaerieFire: true, improvedScorch: true, judgementOfWisdom: true, - markOfChaos: true, - occultPoison: true, wintersChill: true, }); diff --git a/ui/protection_paladin/inputs.ts b/ui/protection_paladin/inputs.ts index 266ab88c2..329001f0f 100644 --- a/ui/protection_paladin/inputs.ts +++ b/ui/protection_paladin/inputs.ts @@ -1,7 +1,7 @@ import * as InputHelpers from '../core/components/input_helpers.js'; import { Player } from '../core/player.js'; import { ItemSlot, Spec } from '../core/proto/common.js'; -import { PaladinRune, PaladinSeal, PaladinAura, Blessings } from '../core/proto/paladin.js'; +import { Blessings,PaladinAura, PaladinRune, PaladinSeal } from '../core/proto/paladin.js'; import { ActionId } from '../core/proto_utils/action_id.js'; import { TypedEvent } from '../core/typed_event.js'; // Configuration for spec-specific UI elements on the settings tab. @@ -41,8 +41,7 @@ export const BlessingSelection = InputHelpers.makeSpecOptionsEnumIconInput({ fieldName: 'righteousFury', - actionId: (player: Player) => - player.hasRune(ItemSlot.ItemSlotHands, PaladinRune.RuneHandsHandOfReckoning) ? ActionId.fromSpellId(407627) : ActionId.fromSpellId(25780), + actionId: (_player: Player) => ActionId.fromSpellId(25780), changeEmitter: (player: Player) => TypedEvent.onAny([player.gearChangeEmitter, player.specOptionsChangeEmitter]), }); diff --git a/ui/protection_paladin/presets.ts b/ui/protection_paladin/presets.ts index 7ac4eca11..8ed9c0776 100644 --- a/ui/protection_paladin/presets.ts +++ b/ui/protection_paladin/presets.ts @@ -8,7 +8,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, Explosive, FirePowerBuff, Flask, @@ -116,8 +115,8 @@ export const DefaultConsumes = Consumes.create({ flask: Flask.FlaskOfTheTitans, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, fillerExplosive: Explosive.ExplosiveDenseDynamite, - mainHandImbue: WeaponImbue.WildStrikes, - offHandImbue: WeaponImbue.MagnificentTrollshine, + //mainHandImbue: WeaponImbue.WildStrikes, + //offHandImbue: WeaponImbue.MagnificentTrollshine, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, strengthBuff: StrengthBuff.JujuPower, @@ -136,36 +135,25 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, - mightOfStormwind: true, }); export const DefaultRaidBuffs = RaidBuffs.create({ - hornOfLordaeron: true, powerWordFortitude: TristateEffect.TristateEffectImproved, arcaneBrilliance: true, battleShout: TristateEffect.TristateEffectImproved, divineSpirit: true, giftOfTheWild: TristateEffect.TristateEffectImproved, sanctityAura: true, - demonicPact: 110, - aspectOfTheLion: true, - vampiricTouch: 300, }); export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, - homunculi: 70, // 70% average uptime default faerieFire: true, giftOfArthas: true, exposeArmor: TristateEffect.TristateEffectImproved, judgementOfWisdom: true, judgementOfTheCrusader: TristateEffect.TristateEffectImproved, - improvedFaerieFire: true, improvedScorch: true, - markOfChaos: true, - occultPoison: true, - mangle: true, }); export const OtherDefaults = { diff --git a/ui/restoration_shaman/sim.ts b/ui/restoration_shaman/sim.ts index b8f1bb433..999265d8c 100644 --- a/ui/restoration_shaman/sim.ts +++ b/ui/restoration_shaman/sim.ts @@ -66,7 +66,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecRestorationShaman, { debuffs: Debuffs.create({ faerieFire: true, judgementOfWisdom: true, - curseOfElementsNew: TristateEffect.TristateEffectRegular, }), }, // IconInputs to include in the 'Player' section on the settings tab. diff --git a/ui/retribution_paladin/presets.ts b/ui/retribution_paladin/presets.ts index 7acac886c..e9cb1e477 100644 --- a/ui/retribution_paladin/presets.ts +++ b/ui/retribution_paladin/presets.ts @@ -6,7 +6,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, Explosive, FirePowerBuff, Flask, @@ -161,13 +160,12 @@ export const DefaultConsumes = Consumes.create({ defaultConjured: Conjured.ConjuredDemonicRune, defaultPotion: Potions.MajorManaPotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, fillerExplosive: Explosive.ExplosiveUnknown, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, food: Food.FoodBlessSunfruit, flask: Flask.FlaskOfSupremePower, - mainHandImbue: WeaponImbue.WildStrikes, - offHandImbue: WeaponImbue.MagnificentTrollshine, + //mainHandImbue: WeaponImbue.WildStrikes, + //offHandImbue: WeaponImbue.MagnificentTrollshine, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, strengthBuff: StrengthBuff.JujuPower, zanzaBuff: ZanzaBuff.ROIDS, @@ -178,14 +176,12 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfKings: true, blessingOfWisdom: TristateEffect.TristateEffectImproved, fengusFerocity: true, - mightOfStormwind: true, moldarsMoxie: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -198,25 +194,17 @@ export const DefaultRaidBuffs = RaidBuffs.create({ giftOfTheWild: TristateEffect.TristateEffectImproved, sanctityAura: true, leaderOfThePack: true, - demonicPact: 110, - aspectOfTheLion: true, moonkinAura: true, - vampiricTouch: 300, }); export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, - homunculi: 70, // 70% average uptime default faerieFire: true, giftOfArthas: true, sunderArmor: true, judgementOfWisdom: true, judgementOfTheCrusader: TristateEffect.TristateEffectImproved, - improvedFaerieFire: true, improvedScorch: true, - markOfChaos: true, - occultPoison: true, - mangle: true, }); export const OtherDefaults = { diff --git a/ui/retribution_paladin/sim.ts b/ui/retribution_paladin/sim.ts index 8fbd73580..8d80bc6ba 100644 --- a/ui/retribution_paladin/sim.ts +++ b/ui/retribution_paladin/sim.ts @@ -56,7 +56,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecRetributionPaladin, { epPseudoStats: [ PseudoStat.PseudoStatMainHandDps, PseudoStat.PseudoStatMeleeSpeedMultiplier, - PseudoStat.TimewornBonus ], // Reference stat against which to calculate EP. I think all classes use either spell power or attack power. epReferenceStat: Stat.StatAttackPower, diff --git a/ui/rogue/presets.ts b/ui/rogue/presets.ts index 4ae4cbfaa..76770842e 100644 --- a/ui/rogue/presets.ts +++ b/ui/rogue/presets.ts @@ -6,7 +6,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, Flask, Food, IndividualBuffs, @@ -337,15 +336,15 @@ export const P1Consumes = Consumes.create({ agilityElixir: AgilityElixir.ElixirOfLesserAgility, dragonBreathChili: false, strengthBuff: StrengthBuff.ElixirOfOgresStrength, - mainHandImbue: WeaponImbue.WildStrikes, - offHandImbue: WeaponImbue.BlackfathomSharpeningStone, + mainHandImbue: WeaponImbue.Windfury, + //offHandImbue: WeaponImbue.BlackfathomSharpeningStone, }); export const P2Consumes = Consumes.create({ agilityElixir: AgilityElixir.ElixirOfAgility, dragonBreathChili: false, strengthBuff: StrengthBuff.ElixirOfOgresStrength, - mainHandImbue: WeaponImbue.WildStrikes, + mainHandImbue: WeaponImbue.Windfury, offHandImbue: WeaponImbue.ShadowOil, }); @@ -353,7 +352,7 @@ export const P3Consumes = Consumes.create({ agilityElixir: AgilityElixir.ElixirOfGreaterAgility, dragonBreathChili: false, strengthBuff: StrengthBuff.ElixirOfOgresStrength, - mainHandImbue: WeaponImbue.WildStrikes, + mainHandImbue: WeaponImbue.Windfury, offHandImbue: WeaponImbue.ShadowOil, }); @@ -362,10 +361,9 @@ export const P4Consumes = Consumes.create({ attackPowerBuff: AttackPowerBuff.JujuMight, defaultConjured: Conjured.ConjuredRogueThistleTea, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfSupremePower, food: Food.FoodGrilledSquid, - mainHandImbue: WeaponImbue.WildStrikes, + mainHandImbue: WeaponImbue.Windfury, miscConsumes: { jujuEmber: true, }, @@ -380,10 +378,9 @@ export const P5Consumes = Consumes.create({ attackPowerBuff: AttackPowerBuff.JujuMight, defaultConjured: Conjured.ConjuredRogueThistleTea, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfSupremePower, food: Food.FoodGrilledSquid, - mainHandImbue: WeaponImbue.WildStrikes, + mainHandImbue: WeaponImbue.Windfury, offHandImbue: WeaponImbue.ElementalSharpeningStone, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, strengthBuff: StrengthBuff.JujuPower, @@ -399,9 +396,7 @@ export const DefaultConsumes = { }; export const DefaultRaidBuffs = RaidBuffs.create({ - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, - demonicPact: 110, fireResistanceAura: true, fireResistanceTotem: true, giftOfTheWild: TristateEffect.TristateEffectImproved, @@ -414,25 +409,18 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfKings: true, blessingOfMight: TristateEffect.TristateEffectImproved, fengusFerocity: true, - mightOfStormwind: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, - dreamstate: true, faerieFire: true, - homunculi: 100, - improvedFaerieFire: true, improvedScorch: true, - mangle: true, - markOfChaos: true, sunderArmor: true, }); diff --git a/ui/rogue/sim.ts b/ui/rogue/sim.ts index 6642bf51f..acf153246 100644 --- a/ui/rogue/sim.ts +++ b/ui/rogue/sim.ts @@ -136,7 +136,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecRogue, { BuffDebuffInputs.SpellCritBuff, BuffDebuffInputs.SpellShadowWeavingDebuff, BuffDebuffInputs.NatureSpellDamageDebuff, - BuffDebuffInputs.MekkatorqueFistDebuff, BuffDebuffInputs.SpellScorchDebuff, BuffDebuffInputs.PowerInfusion, ], @@ -183,7 +182,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecRogue, { autoRotation: player => { // Try to find a rotation by hand rune - const handRuneID = player.getEquippedItem(ItemSlot.ItemSlotHands)?._rune?.id ?? 0; + const handRuneID = 0; const preset = Presets.DefaultAPLs[player.getLevel()][handRuneID]; if (preset) return preset.rotation.rotation!; diff --git a/ui/scss/core/components/gear_picker/_gear_picker.scss b/ui/scss/core/components/gear_picker/_gear_picker.scss index 64e6ec225..622f9d2c5 100644 --- a/ui/scss/core/components/gear_picker/_gear_picker.scss +++ b/ui/scss/core/components/gear_picker/_gear_picker.scss @@ -65,16 +65,6 @@ .item-picker-name, .item-picker-enchant, - .item-picker-rune { - letter-spacing: normal; - - .gear-picker-right & { - text-align: right; - @include media-breakpoint-down(md) { - text-align: left; - } - } - } .item-picker-name { color: var(--bs-white); @@ -84,23 +74,6 @@ color: var(--bs-uncommon); font-size: var(--content-font-size); } - .item-picker-rune { - color: var(--bs-brand); - font-size: var(--content-font-size); - } - } - - .item-picker-rune-container { - @include vertical-top; - @include horizontal-right; - display: flex; - justify-content: center; - pointer-events: none; - - .item-picker-rune-icon { - width: 1.75rem; - height: 1.75rem; - } } } diff --git a/ui/shadow_priest/presets.ts b/ui/shadow_priest/presets.ts index 05718eae2..51f390a3a 100644 --- a/ui/shadow_priest/presets.ts +++ b/ui/shadow_priest/presets.ts @@ -4,7 +4,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, Flask, Food, IndividualBuffs, @@ -107,12 +106,10 @@ export const DefaultOptions = Options.create({}); export const DefaultConsumes = Consumes.create({ defaultConjured: Conjured.ConjuredDemonicRune, defaultPotion: Potions.MajorManaPotion, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfSupremePower, food: Food.FoodRunnTumTuberSurprise, mainHandImbue: WeaponImbue.BrilliantWizardOil, manaRegenElixir: ManaRegenElixir.MagebloodPotion, - mildlyIrradiatedRejuvPot: true, shadowPowerBuff: ShadowPowerBuff.ElixirOfShadowPower, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, @@ -121,8 +118,6 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, - demonicPact: 110, divineSpirit: true, fireResistanceAura: true, fireResistanceTotem: true, @@ -134,22 +129,17 @@ export const DefaultRaidBuffs = RaidBuffs.create({ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfWisdom: TristateEffect.TristateEffectImproved, - mightOfStormwind: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); export const DefaultDebuffs = Debuffs.create({ - improvedFaerieFire: true, improvedShadowBolt: true, judgementOfWisdom: true, - occultPoison: true, - markOfChaos: true, wintersChill: true, }); diff --git a/ui/tank_rogue/presets.ts b/ui/tank_rogue/presets.ts index 0390f884d..4d73f30cd 100644 --- a/ui/tank_rogue/presets.ts +++ b/ui/tank_rogue/presets.ts @@ -1,20 +1,17 @@ import { Phase } from '../core/constants/other.js'; import * as PresetUtils from '../core/preset_utils.js'; -import { Player } from '../core/proto/api'; import { AgilityElixir, AttackPowerBuff, Conjured, Consumes, Debuffs, - EnchantedSigil, Flask, Food, IndividualBuffs, Profession, RaidBuffs, SaygesFortune, - SpellPowerBuff, StrengthBuff, TristateEffect, WeaponImbue, @@ -22,7 +19,6 @@ import { } from '../core/proto/common.js'; import { RogueOptions } from '../core/proto/rogue.js'; import { SavedTalents } from '../core/proto/ui.js'; -import { playerPresets } from '../raid/presets'; import MutilateApl from './apls/mutilate.apl.json'; import P3MutilateApl from './apls/Mutilate_DPS_50.apl.json'; import MutilateIEAApl from './apls/mutilate_IEA.apl.json'; @@ -198,19 +194,16 @@ export const DefaultConsumes = Consumes.create({ agilityElixir: AgilityElixir.ElixirOfTheMongoose, attackPowerBuff: AttackPowerBuff.JujuMight, defaultConjured: Conjured.ConjuredRogueThistleTea, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfTheTitans, food: Food.FoodGrilledSquid, - mainHandImbue: WeaponImbue.WildStrikes, + mainHandImbue: WeaponImbue.Windfury, offHandImbue: WeaponImbue.DeadlyPoison, strengthBuff: StrengthBuff.JujuPower, zanzaBuff: ZanzaBuff.GroundScorpokAssay, }); export const DefaultRaidBuffs = RaidBuffs.create({ - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, - demonicPact: 80, fireResistanceAura: true, fireResistanceTotem: true, giftOfTheWild: TristateEffect.TristateEffectImproved, @@ -223,25 +216,18 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfKings: true, blessingOfMight: TristateEffect.TristateEffectImproved, fengusFerocity: true, - mightOfStormwind: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, - valorOfAzeroth: true, warchiefsBlessing: true, spiritOfZandalar: true, }); export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, - dreamstate: true, faerieFire: true, - homunculi: 100, - improvedFaerieFire: true, improvedScorch: true, - mangle: true, - markOfChaos: true, sunderArmor: true, }); diff --git a/ui/tank_rogue/sim.ts b/ui/tank_rogue/sim.ts index 1f392a2e5..725809169 100644 --- a/ui/tank_rogue/sim.ts +++ b/ui/tank_rogue/sim.ts @@ -115,7 +115,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecTankRogue, { BuffDebuffInputs.SpellCritBuff, BuffDebuffInputs.SpellShadowWeavingDebuff, BuffDebuffInputs.NatureSpellDamageDebuff, - BuffDebuffInputs.MekkatorqueFistDebuff, BuffDebuffInputs.SpellScorchDebuff, BuffDebuffInputs.PowerInfusion, ], diff --git a/ui/tank_warlock/presets.ts b/ui/tank_warlock/presets.ts index 0af1b8225..79cb3d605 100644 --- a/ui/tank_warlock/presets.ts +++ b/ui/tank_warlock/presets.ts @@ -8,7 +8,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, Explosive, FirePowerBuff, Flask, @@ -186,7 +185,6 @@ export const DefaultConsumes = Consumes.create({ defaultConjured: Conjured.ConjuredDemonicRune, defaultPotion: Potions.MajorManaPotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, fillerExplosive: Explosive.ExplosiveDenseDynamite, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, flask: Flask.FlaskOfSupremePower, @@ -202,10 +200,8 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, bloodPact: TristateEffect.TristateEffectImproved, - demonicPact: 110, devotionAura: TristateEffect.TristateEffectImproved, divineSpirit: true, fireResistanceAura: true, @@ -218,7 +214,6 @@ export const DefaultRaidBuffs = RaidBuffs.create({ shadowProtection: true, strengthOfEarthTotem: TristateEffect.TristateEffectRegular, thorns: TristateEffect.TristateEffectImproved, - vampiricTouch: 300, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ @@ -227,14 +222,12 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfSanctuary: true, blessingOfWisdom: TristateEffect.TristateEffectImproved, fengusFerocity: true, - mightOfStormwind: true, moldarsMoxie: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -244,12 +237,8 @@ export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, demoralizingShout: TristateEffect.TristateEffectImproved, faerieFire: true, - homunculi: 100, - improvedFaerieFire: true, improvedScorch: true, judgementOfWisdom: true, - markOfChaos: true, - occultPoison: true, shadowWeaving: true, }); diff --git a/ui/tank_warlock/sim.ts b/ui/tank_warlock/sim.ts index 517213022..39e3db014 100644 --- a/ui/tank_warlock/sim.ts +++ b/ui/tank_warlock/sim.ts @@ -125,7 +125,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecTankWarlock, { // Buff and Debuff inputs to include/exclude, overriding the EP-based defaults. includeBuffDebuffInputs: [BuffDebuffInputs.ResistanceBuff], - excludeBuffDebuffInputs: [BuffDebuffInputs.BleedDebuff, BuffDebuffInputs.SpellWintersChillDebuff, ...ConsumablesInputs.FROST_POWER_CONFIG], + excludeBuffDebuffInputs: [BuffDebuffInputs.SpellWintersChillDebuff, ...ConsumablesInputs.FROST_POWER_CONFIG], petConsumeInputs: [ConsumablesInputs.PetAttackPowerConsumable, ConsumablesInputs.PetAgilityConsumable, ConsumablesInputs.PetStrengthConsumable], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { @@ -180,8 +180,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecTankWarlock, { // Pre-60 had fewer options so it basically came down to master channeler vs no master channeler if (level < 60) { - const hasMasterChanneler = player.getEquippedItem(ItemSlot.ItemSlotChest)?.rune?.id == WarlockRune.RuneChestMasterChanneler; - specNumber = hasMasterChanneler ? 0 : 1; + specNumber = 1; return Presets.DefaultAPLs[level][specNumber].rotation.rotation!; } diff --git a/ui/tank_warrior/gear_sets/placeholder.gear.json b/ui/tank_warrior/gear_sets/placeholder.gear.json index 361dc6dac..601acc7dc 100644 --- a/ui/tank_warrior/gear_sets/placeholder.gear.json +++ b/ui/tank_warrior/gear_sets/placeholder.gear.json @@ -6,8 +6,8 @@ {"id":14811,"enchant":866}, {"id":18458}, {"id":15063,"enchant":904}, - {"id":18393,"rune":415352}, - {"id":8309,"rune":415320}, + {"id":18393}, + {"id":8309}, {"id":6423,"enchant":849}, {"id":2951}, {"id":9533}, diff --git a/ui/tank_warrior/presets.ts b/ui/tank_warrior/presets.ts index 67ee324b7..7d9ae4f60 100644 --- a/ui/tank_warrior/presets.ts +++ b/ui/tank_warrior/presets.ts @@ -7,7 +7,6 @@ import { AttackPowerBuff, Consumes, Debuffs, - EnchantedSigil, Flask, Food, HealthElixir, @@ -103,20 +102,17 @@ export const DefaultConsumes = Consumes.create({ attackPowerBuff: AttackPowerBuff.JujuMight, defaultPotion: Potions.MightyRagePotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, food: Food.FoodSmokedDesertDumpling, flask: Flask.FlaskOfTheTitans, healthElixir: HealthElixir.ElixirOfFortitude, - mainHandImbue: WeaponImbue.WildStrikes, + mainHandImbue: WeaponImbue.Windfury, offHandImbue: WeaponImbue.ElementalSharpeningStone, strengthBuff: StrengthBuff.JujuPower, zanzaBuff: ZanzaBuff.ROIDS, }); export const DefaultRaidBuffs = RaidBuffs.create({ - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, - commandingShout: true, devotionAura: TristateEffect.TristateEffectRegular, fireResistanceAura: true, fireResistanceTotem: true, @@ -132,13 +128,11 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfKings: true, blessingOfMight: TristateEffect.TristateEffectImproved, fengusFerocity: true, - mightOfStormwind: true, moldarsMoxie: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -147,11 +141,8 @@ export const DefaultDebuffs = Debuffs.create({ exposeArmor: TristateEffect.TristateEffectImproved, faerieFire: true, giftOfArthas: true, - homunculi: 70, // 70% average uptime default - improvedFaerieFire: true, improvedScorch: true, insectSwarm: true, - mangle: true, sunderArmor: true, }); diff --git a/ui/warden_shaman/presets.ts b/ui/warden_shaman/presets.ts index 9eadab5d8..8816aa22c 100644 --- a/ui/warden_shaman/presets.ts +++ b/ui/warden_shaman/presets.ts @@ -7,7 +7,6 @@ import { AttackPowerBuff, Consumes, Debuffs, - EnchantedSigil, FirePowerBuff, Flask, Food, @@ -99,15 +98,12 @@ export const DefaultConsumes = Consumes.create({ attackPowerBuff: AttackPowerBuff.JujuMight, defaultPotion: Potions.MajorManaPotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, flask: Flask.FlaskOfTheTitans, food: Food.FoodBlessSunfruit, healthElixir: HealthElixir.ElixirOfFortitude, mainHandImbue: WeaponImbue.RockbiterWeapon, manaRegenElixir: ManaRegenElixir.MagebloodPotion, - mildlyIrradiatedRejuvPot: true, - offHandImbue: WeaponImbue.ConductiveShieldCoating, spellPowerBuff: SpellPowerBuff.GreaterArcaneElixir, strengthBuff: StrengthBuff.JujuPower, zanzaBuff: ZanzaBuff.ROIDS, @@ -115,10 +111,7 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, - commandingShout: true, - demonicPact: 110, divineSpirit: true, fireResistanceAura: true, fireResistanceTotem: true, @@ -128,7 +121,6 @@ export const DefaultRaidBuffs = RaidBuffs.create({ manaSpringTotem: TristateEffect.TristateEffectRegular, powerWordFortitude: TristateEffect.TristateEffectImproved, strengthOfEarthTotem: TristateEffect.TristateEffectImproved, - vampiricTouch: 300, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ @@ -139,7 +131,6 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -147,12 +138,8 @@ export const DefaultDebuffs = Debuffs.create({ curseOfRecklessness: true, exposeArmor: TristateEffect.TristateEffectImproved, faerieFire: true, - homunculi: 70, // 70% average uptime default - improvedFaerieFire: true, improvedScorch: true, insectSwarm: true, - markOfChaos: true, - occultPoison: true, stormstrike: true, sunderArmor: true, }); diff --git a/ui/warden_shaman/sim.ts b/ui/warden_shaman/sim.ts index 8be5dc58f..098f1e28f 100644 --- a/ui/warden_shaman/sim.ts +++ b/ui/warden_shaman/sim.ts @@ -143,7 +143,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWardenShaman, { playerIconInputs: [], // Buff and Debuff inputs to include/exclude, overriding the EP-based defaults. includeBuffDebuffInputs: [BuffDebuffInputs.BlessingOfWisdom, BuffDebuffInputs.ManaSpringTotem, BuffDebuffInputs.SpiritBuff], - excludeBuffDebuffInputs: [BuffDebuffInputs.BleedDebuff], + excludeBuffDebuffInputs: [], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { inputs: [ diff --git a/ui/warlock/presets.ts b/ui/warlock/presets.ts index efa6330f4..fd9d766a5 100644 --- a/ui/warlock/presets.ts +++ b/ui/warlock/presets.ts @@ -6,7 +6,6 @@ import { Conjured, Consumes, Debuffs, - EnchantedSigil, FirePowerBuff, Flask, Food, @@ -208,7 +207,6 @@ export const DefaultConsumes = Consumes.create({ alcohol: Alcohol.AlcoholKreegsStoutBeatdown, defaultPotion: Potions.MajorManaPotion, defaultConjured: Conjured.ConjuredDemonicRune, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, flask: Flask.FlaskOfSupremePower, firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower, food: Food.FoodTenderWolfSteak, @@ -222,8 +220,6 @@ export const DefaultConsumes = Consumes.create({ export const DefaultRaidBuffs = RaidBuffs.create({ arcaneBrilliance: true, - aspectOfTheLion: true, - demonicPact: 110, divineSpirit: true, fireResistanceAura: true, fireResistanceTotem: true, @@ -231,31 +227,24 @@ export const DefaultRaidBuffs = RaidBuffs.create({ manaSpringTotem: TristateEffect.TristateEffectRegular, moonkinAura: true, powerWordFortitude: TristateEffect.TristateEffectImproved, - vampiricTouch: 300, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfKings: true, blessingOfWisdom: TristateEffect.TristateEffectImproved, - mightOfStormwind: true, moldarsMoxie: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, slipkiksSavvy: true, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); export const DefaultDebuffs = Debuffs.create({ faerieFire: true, - homunculi: 100, - improvedFaerieFire: true, improvedScorch: true, judgementOfWisdom: true, - markOfChaos: true, - occultPoison: true, shadowWeaving: true, }); diff --git a/ui/warlock/sim.ts b/ui/warlock/sim.ts index 923390c2a..66046e2f3 100644 --- a/ui/warlock/sim.ts +++ b/ui/warlock/sim.ts @@ -174,9 +174,8 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWarlock, { BuffDebuffInputs.CurseOfVulnerability, BuffDebuffInputs.GiftOfArthas, BuffDebuffInputs.CrystalYield, - BuffDebuffInputs.AncientCorrosivePoison, ], - excludeBuffDebuffInputs: [BuffDebuffInputs.BleedDebuff, BuffDebuffInputs.SpellWintersChillDebuff, ...ConsumablesInputs.FROST_POWER_CONFIG], + excludeBuffDebuffInputs: [BuffDebuffInputs.SpellWintersChillDebuff, ...ConsumablesInputs.FROST_POWER_CONFIG], petConsumeInputs: [ConsumablesInputs.PetAttackPowerConsumable, ConsumablesInputs.PetAgilityConsumable, ConsumablesInputs.PetStrengthConsumable], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { @@ -222,8 +221,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWarlock, { return Presets.DefaultAPLs[player.getLevel()][player.getTalentTree()].rotation.rotation!; } - const hasIncinerate = player.getEquippedItem(ItemSlot.ItemSlotWrist)?.rune?.id == WarlockRune.RuneBracerIncinerate; - const specNumber = hasIncinerate ? 2 : 0; + const specNumber = 0; return Presets.DefaultAPLs[level][specNumber].rotation.rotation!; }, diff --git a/ui/warrior/presets.ts b/ui/warrior/presets.ts index 0bad87ad9..f2beb0e11 100644 --- a/ui/warrior/presets.ts +++ b/ui/warrior/presets.ts @@ -7,7 +7,6 @@ import { AttackPowerBuff, Consumes, Debuffs, - EnchantedSigil, Food, HealthElixir, IndividualBuffs, @@ -178,11 +177,9 @@ export const DefaultConsumes = Consumes.create({ attackPowerBuff: AttackPowerBuff.JujuMight, defaultPotion: Potions.MightyRagePotion, dragonBreathChili: true, - enchantedSigil: EnchantedSigil.FlowingWatersSigil, food: Food.FoodSmokedDesertDumpling, healthElixir: HealthElixir.ElixirOfFortitude, - mainHandImbue: WeaponImbue.WildStrikes, - mildlyIrradiatedRejuvPot: true, + mainHandImbue: WeaponImbue.Windfury, offHandImbue: WeaponImbue.ElementalSharpeningStone, sapperExplosive: SapperExplosive.SapperGoblinSapper, strengthBuff: StrengthBuff.JujuPower, @@ -190,12 +187,9 @@ export const DefaultConsumes = Consumes.create({ }); export const DefaultRaidBuffs = RaidBuffs.create({ - aspectOfTheLion: true, battleShout: TristateEffect.TristateEffectImproved, - commandingShout: true, giftOfTheWild: TristateEffect.TristateEffectImproved, graceOfAirTotem: TristateEffect.TristateEffectImproved, - hornOfLordaeron: true, leaderOfThePack: true, powerWordFortitude: TristateEffect.TristateEffectImproved, strengthOfEarthTotem: TristateEffect.TristateEffectImproved, @@ -206,13 +200,11 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({ blessingOfKings: true, blessingOfMight: TristateEffect.TristateEffectImproved, fengusFerocity: true, - mightOfStormwind: true, moldarsMoxie: true, rallyingCryOfTheDragonslayer: true, saygesFortune: SaygesFortune.SaygesDamage, songflowerSerenade: true, spiritOfZandalar: true, - valorOfAzeroth: true, warchiefsBlessing: true, }); @@ -221,10 +213,7 @@ export const DefaultDebuffs = Debuffs.create({ exposeArmor: TristateEffect.TristateEffectImproved, faerieFire: true, giftOfArthas: true, - homunculi: 70, // 70% average uptime default - improvedFaerieFire: true, improvedScorch: true, - mangle: true, sunderArmor: true, });