From ce889e2b3f18037fb8a29820c0cbb0b47b507780 Mon Sep 17 00:00:00 2001 From: FelixPflaum <141590183+FelixPflaum@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:46:39 +0100 Subject: [PATCH 1/3] Remove runes and SoD proto values from core and UI --- proto/api.proto | 3 +- proto/apl.proto | 17 +- proto/common.proto | 235 +++--------- proto/ui.proto | 31 +- schemas/gear.schema.json | 3 +- sim/common/sod/item_effects/phase_2.go | 4 +- sim/common/sod/item_effects/phase_3.go | 4 +- sim/common/sod/item_effects/phase_5.go | 8 +- sim/common/sod/item_effects/phase_6.go | 7 +- sim/core/agent.go | 3 +- sim/core/apl_value.go | 4 - sim/core/apl_values_rune.go | 39 -- sim/core/buffs.go | 352 +----------------- sim/core/character.go | 96 ----- sim/core/consumes.go | 270 +------------- sim/core/database.go | 35 -- sim/core/database_load.go | 1 - sim/core/debuffs.go | 341 +---------------- sim/core/dot_test.go | 1 - sim/core/item_swaps.go | 1 - sim/core/pet.go | 1 - sim/core/simsignals/api_test.go | 6 +- sim/core/stats/stats.go | 3 - sim/core/target_ai.go | 1 - sim/core/target_dummy.go | 1 - sim/core/test_utils.go | 258 +------------ sim/druid/balance/TestBalance.results | 66 ++-- sim/druid/balance/balance_test.go | 43 +-- sim/druid/druid.go | 2 +- sim/druid/feral/TestFeral.results | 116 +++--- sim/druid/feral/feral_test.go | 47 +-- sim/druid/runes.go | 2 +- sim/hunter/TestBM.results | 192 +++++----- sim/hunter/TestMM.results | 96 ++--- sim/hunter/TestSV.results | 96 ++--- sim/hunter/hunter.go | 5 +- sim/hunter/hunter_test.go | 36 +- sim/mage/TestArcane.results | 90 ++--- sim/mage/TestFire.results | 88 ++--- sim/mage/TestFrost.results | 90 ++--- sim/mage/mage.go | 2 +- sim/mage/mage_test.go | 53 +-- sim/paladin/paladin.go | 2 +- sim/paladin/protection/TestProtection.results | 112 +++--- sim/paladin/protection/protection_test.go | 8 +- sim/paladin/retribution/TestExodin.results | 90 ++--- .../retribution/TestRetribution.results | 134 ++++--- sim/paladin/retribution/TestShockadin.results | 98 ++--- sim/paladin/retribution/retribution_test.go | 54 +-- sim/priest/homunculi.go | 8 +- sim/priest/priest.go | 2 +- sim/priest/shadow/TestShadow.results | 88 ++--- sim/priest/shadow/shadow_priest_test.go | 32 +- sim/rogue/dps_rogue/TestAssassination.results | 44 +-- sim/rogue/dps_rogue/TestCombat.results | 44 +-- sim/rogue/dps_rogue/dps_rogue_test.go | 16 +- sim/rogue/rogue.go | 4 +- sim/rogue/waylay.go | 7 +- sim/shaman/elemental/TestElemental.results | 96 ++--- sim/shaman/elemental/elemental_test.go | 62 +-- .../enhancement/TestEnhancement.results | 94 ++--- sim/shaman/enhancement/enhancement_test.go | 91 +---- sim/shaman/runes.go | 4 +- sim/shaman/shaman.go | 2 +- sim/shaman/warden/TestWardenShaman.results | 90 ++--- sim/shaman/warden/warden_test.go | 8 +- sim/warlock/dps/TestAffliction.results | 66 ++-- sim/warlock/dps/TestDemonology.results | 86 ++--- sim/warlock/dps/TestDestruction.results | 68 ++-- sim/warlock/dps/dps_warlock_test.go | 41 +- sim/warlock/runes.go | 11 +- sim/warlock/talents.go | 4 +- sim/warlock/tank/TestAffliction.results | 76 ++-- sim/warlock/tank/TestDemonology.results | 64 ++-- sim/warlock/tank/TestDestruction.results | 76 ++-- sim/warlock/tank/tank_warlock_test.go | 41 +- sim/warlock/warlock.go | 2 +- .../dps_warrior/TestDualWieldWarrior.results | 64 ++-- .../dps_warrior/TestTwoHandedWarrior.results | 64 ++-- sim/warrior/dps_warrior/dps_warrior_test.go | 41 +- .../tank_warrior/TestTankWarrior.results | 84 ++--- sim/warrior/tank_warrior/tank_warrior_test.go | 4 +- sim/warrior/warrior.go | 2 +- tools/database/wowhead_tooltips.go | 7 - ui/balance_druid/presets.ts | 11 - ui/core/components/character_stats.tsx | 4 +- .../components/gear_picker/gear_picker.tsx | 40 -- ui/core/components/gear_picker/item_list.tsx | 20 +- .../components/gear_picker/selector_modal.tsx | 49 +-- .../individual_sim_ui/apl_helpers.tsx | 30 +- .../individual_sim_ui/apl_values.ts | 2 +- .../individual_sim_ui/consumes_picker.ts | 26 -- ui/core/components/inputs/buffs_debuffs.ts | 241 +----------- ui/core/components/inputs/consumables.ts | 198 ---------- ui/core/components/inputs/rogue_imbues.ts | 12 - ui/core/components/inputs/warlock_inputs.ts | 5 - ui/core/components/inputs/warrior_inputs.ts | 5 - ui/core/constants/other.ts | 2 +- ui/core/player.ts | 10 - ui/core/proto_utils/database.ts | 41 +- ui/core/proto_utils/equipped_item.ts | 25 +- ui/core/proto_utils/names.ts | 1 - ui/core/raid.ts | 10 - ui/elemental_shaman/presets.ts | 14 +- ui/elemental_shaman/sim.ts | 6 +- ui/enhancement_shaman/presets.ts | 11 - ui/enhancement_shaman/sim.ts | 2 +- ui/feral_druid/presets.ts | 8 - ui/feral_druid/sim.ts | 2 +- ui/hunter/gear_sets/placeholder.gear.json | 4 +- ui/hunter/inputs.ts | 17 - ui/hunter/presets.ts | 16 +- ui/hunter/sim.ts | 10 +- ui/mage/inputs.ts | 5 - ui/mage/presets.ts | 12 - ui/protection_paladin/inputs.ts | 5 +- ui/protection_paladin/presets.ts | 16 +- ui/restoration_shaman/sim.ts | 1 - ui/retribution_paladin/presets.ts | 16 +- ui/retribution_paladin/sim.ts | 1 - ui/rogue/presets.ts | 24 +- ui/rogue/sim.ts | 3 +- .../components/gear_picker/_gear_picker.scss | 27 -- ui/shadow_priest/presets.ts | 10 - ui/tank_rogue/presets.ts | 16 +- ui/tank_rogue/sim.ts | 1 - ui/tank_warlock/presets.ts | 11 - ui/tank_warlock/sim.ts | 5 +- .../gear_sets/placeholder.gear.json | 4 +- ui/tank_warrior/presets.ts | 11 +- ui/warden_shaman/presets.ts | 13 - ui/warden_shaman/sim.ts | 2 +- ui/warlock/presets.ts | 11 - ui/warlock/sim.ts | 6 +- ui/warrior/presets.ts | 13 +- 135 files changed, 1464 insertions(+), 4311 deletions(-) delete mode 100644 sim/core/apl_values_rune.go 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..0f88ca3f5 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,15 @@ 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 = 3; + bool juju_chill = 4; + bool juju_escape = 5; + bool juju_flurry = 6; } message PetMiscConsumes { @@ -536,18 +499,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 +518,6 @@ enum WeaponImbue { FrostOil = 22; // Windfury Imbues - WildStrikes = 7; Windfury = 8; // Shaman imbues @@ -568,15 +527,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 +558,7 @@ enum SaygesFortune { } // Buffs that affect the entire raid. -// NextIndex: 44 +// NextIndex: 36 message RaidBuffs { // +Stats TristateEffect gift_of_the_wild = 1; @@ -640,17 +593,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 +612,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 +632,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 +646,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 +720,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 +828,6 @@ message ItemSpec { int32 id = 2; int32 random_suffix = 6; int32 enchant = 3; - int32 rune = 5; } message EquipmentSpec { @@ -930,11 +838,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 +859,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 +882,6 @@ message SimEnchant { repeated double stats = 2; } -message SimRune { - int32 id = 1; -} - message UnitReference { enum Type { Unknown = 0; @@ -1095,23 +996,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..fd5b16204 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", @@ -2371,9 +2146,6 @@ func ApplyWarchiefsBuffs(unit *Unit, buffs *proto.IndividualBuffs, isAlliance bo 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..389de3bc2 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 } } @@ -874,56 +705,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 +726,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 +745,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 +775,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 +827,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 +914,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 +1266,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..da67fd51c 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: 514.55703 + tps: 750.86219 } } dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 500.50216 - tps: 513.48758 + dps: 403.21466 + tps: 416.06733 } } 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..652ba9e93 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: 402.37416 + tps: 518.26188 } } 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: 381.0503 + tps: 282.21897 } } 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: 402.37416 + tps: 518.26188 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 444.08535 - tps: 327.02998 + dps: 381.0503 + tps: 282.21897 } } 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: 402.37416 + tps: 518.26188 } } 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: 381.0503 + tps: 282.21897 } } 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..6918db27b 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: 859.33765 + tps: 874.55169 } } 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: 598.76357 + tps: 279.15801 } } 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: 627.58942 + tps: 276.35825 } } 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: 747.70435 + tps: 718.10614 } } 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: 660.88371 + tps: 342.06625 } } 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: 701.0324 + tps: 342.51098 } } 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..3f42642e8 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.53896 } } 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.80957 } } 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.58129 } } 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..9e4af1299 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: 1267.77882 + tps: 1879.29945 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 433.72896 - tps: 465.73911 + dps: 426.59025 + tps: 362.74026 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 425.87165 - tps: 456.4752 + dps: 425.95885 + tps: 351.13112 } } 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..afac9b966 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.87485 + tps: 653.94848 } } 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.87485 + tps: 385.97853 } } 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.37983 } } 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..6429976e5 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: 328.52541 + tps: 562.21997 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 469.38612 - tps: 352.99528 + dps: 328.52541 + tps: 246.5804 } } 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.68439 + tps: 302.05357 } } 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..51cb08fe6 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: 397.37884 + tps: 587.62691 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 459.84004 - tps: 333.51361 + dps: 397.37884 + tps: 317.79797 } } 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: 323.00782 } } 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..61fb3ab45 100644 --- a/sim/paladin/protection/TestProtection.results +++ b/sim/paladin/protection/TestProtection.results @@ -1,41 +1,41 @@ 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 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 49.6 + final_stats: 39.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: 4910.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.36836 + weights: 0.14659 weights: 0 weights: 0 weights: 0 - weights: 0.12327 + weights: 0.10482 weights: 0 weights: 0 weights: 0 - weights: 0.04771 + weights: 0.04693 weights: 0 weights: 0 weights: 0 - weights: 1.31118 - weights: 0.10337 + weights: 1.31055 + weights: 0.08066 weights: 0 weights: 0 - weights: 0.16683 - weights: 4.02803 - weights: 2.58215 - weights: 3.01164 + weights: 0.1456 + weights: 2.98915 + weights: 2.16293 + weights: 1.88267 weights: 0 weights: 0 weights: 0 @@ -78,7 +78,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.24653 + weights: 0.20964 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: 311.90154 + tps: 480.2634 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Average-Default" value: { - dps: 376.83423 - tps: 565.34083 + dps: 312.49877 + tps: 480.43802 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 59.36548 - tps: 118.35105 + dps: 51.69456 + tps: 109.26224 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 34.03927 - tps: 64.69938 + dps: 32.51277 + tps: 62.09519 } } 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: 51.53097 + tps: 108.53323 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 34.60885 - tps: 65.69439 + dps: 32.41881 + tps: 61.89564 } } 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: 270.48257 + tps: 419.98409 } } 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..e86e9ff09 100644 --- a/sim/paladin/retribution/TestExodin.results +++ b/sim/paladin/retribution/TestExodin.results @@ -1,41 +1,41 @@ 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 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 49.6 + final_stats: 39.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 + final_stats: 4910.6125 final_stats: 27 final_stats: 60 final_stats: 60 @@ -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.39797 + weights: 0.16031 weights: 0 weights: 0 weights: 0 - weights: 0.30579 + weights: 0.25561 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.21625 + weights: 0.09094 weights: 0 weights: 0 - weights: 0.17304 - weights: 5.10241 - weights: 3.67606 + weights: 0.143 + weights: 3.8024 + weights: 2.80308 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: 308.86702 + tps: 344.25151 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Average-Default" value: { - dps: 434.83832 - tps: 471.85994 + dps: 306.84691 + tps: 342.5715 } } 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.37335 + tps: 218.3785 } } 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.84742 + tps: 19.59768 } } 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: 25.01923 + tps: 220.31939 } } 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: 10.05073 + tps: 19.81574 } } 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: 253.59155 + tps: 288.6616 } } diff --git a/sim/paladin/retribution/TestRetribution.results b/sim/paladin/retribution/TestRetribution.results index a1de0bf99..d7b91f453 100644 --- a/sim/paladin/retribution/TestRetribution.results +++ b/sim/paladin/retribution/TestRetribution.results @@ -1,41 +1,41 @@ 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 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 49.6 + final_stats: 39.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 + final_stats: 4910.6125 final_stats: 27 final_stats: 60 final_stats: 60 @@ -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.43784 + weights: 0.17111 weights: 0 weights: 0 weights: 0 - weights: 0.15957 + weights: 0.14884 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.81482 + weights: 0.08142 weights: 0 weights: 0 - weights: 0.1783 - weights: 4.20294 - weights: 3.61558 + weights: 0.15733 + weights: 3.57897 + weights: 3.08603 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: 333.07757 + tps: 365.39866 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Average-Default" value: { - dps: 411.03302 - tps: 447.44782 + dps: 332.98738 + tps: 365.47503 } } 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: 44.48615 + tps: 252.66798 } } 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: 26.1478 + tps: 36.57164 } } 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: 37.54176 + tps: 54.39718 } } 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: 16.82326 + tps: 202.29009 } } 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: 14.86719 + tps: 24.14053 } } 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.81643 + tps: 256.68659 } } 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.02238 + tps: 38.46589 } } 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: 37.45917 + tps: 54.31459 } } 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: 15.59483 + tps: 201.15999 } } 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: 14.53231 + tps: 23.81057 } } 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: 278.77629 + tps: 310.94343 } } diff --git a/sim/paladin/retribution/TestShockadin.results b/sim/paladin/retribution/TestShockadin.results index ea9b305fc..4bdbcc3c1 100644 --- a/sim/paladin/retribution/TestShockadin.results +++ b/sim/paladin/retribution/TestShockadin.results @@ -1,41 +1,41 @@ 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 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 49.6 + final_stats: 39.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 + final_stats: 4910.6125 final_stats: 27 final_stats: 60 final_stats: 60 @@ -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.24563 + weights: 0.11292 weights: 0 weights: 0 weights: 0 - weights: 0.51161 + weights: 0.42509 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: 1.81149 + weights: 0.39963 weights: 0 weights: 0 - weights: 0.10732 - weights: 2.14741 - weights: 2.99483 + weights: 0.08826 + weights: 0 + weights: 2.14476 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: 397.64754 + tps: 435.20541 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Average-Default" value: { - dps: 525.42593 - tps: 567.45423 + dps: 395.11448 + tps: 432.6894 } } 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: 281.61762 + tps: 496.48611 } } 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: 84.97457 + tps: 95.66883 } } 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: 181.60249 + tps: 199.0725 } } 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: 283.81885 + tps: 499.17901 } } 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: 85.37421 + tps: 96.05863 } } 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: 181.47227 + tps: 198.99145 } } 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: 355.92742 + tps: 391.45531 } } 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..8d2b0b1b8 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: 626.36854 + tps: 813.79835 } } 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..5691d6e61 100644 --- a/sim/rogue/dps_rogue/TestAssassination.results +++ b/sim/rogue/dps_rogue/TestAssassination.results @@ -1,12 +1,12 @@ 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 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 24 final_stats: 0 - final_stats: 7 + final_stats: 21 final_stats: 0 final_stats: 0 - final_stats: 598.2 + final_stats: 886.18 final_stats: 0 - final_stats: 14.66644 + final_stats: 26.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: 13.33288 + final_stats: 17.44283 final_stats: 5 final_stats: 0 - final_stats: 2085 + final_stats: 2806.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.10757 + weights: 0.15682 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.08503 + weights: 0.36349 + weights: 0.71253 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: 77.62275 + tps: 55.11216 } } dps_results: { @@ -154,7 +154,7 @@ dps_results: { dps_results: { key: "TestAssassination-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 48.35335 - tps: 34.33088 + dps: 72.75594 + tps: 51.65672 } } diff --git a/sim/rogue/dps_rogue/TestCombat.results b/sim/rogue/dps_rogue/TestCombat.results index 23479d785..b7193926f 100644 --- a/sim/rogue/dps_rogue/TestCombat.results +++ b/sim/rogue/dps_rogue/TestCombat.results @@ -1,12 +1,12 @@ 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 @@ -15,27 +15,27 @@ character_stats_results: { final_stats: 0 final_stats: 24 final_stats: 0 - final_stats: 7 + final_stats: 21 final_stats: 0 final_stats: 0 - final_stats: 598.2 + 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: 2806.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.10951 + weights: 0.1612 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.08657 + weights: 0.7808 + weights: 0.71495 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: 79.16551 + tps: 56.20751 } } dps_results: { @@ -154,7 +154,7 @@ dps_results: { dps_results: { key: "TestCombat-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 49.69395 - tps: 35.28271 + dps: 74.38794 + tps: 52.81544 } } 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..b26a99d20 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({ @@ -541,14 +502,6 @@ export const WarchiefsBlessing = withLabel( }), `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..feee3ca08 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,17 +537,9 @@ 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', @@ -676,7 +549,6 @@ export const elixirOfCoalescedRegret = makeBooleanMiscConsumeInput({ actionId: ( 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 +782,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 +801,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 +871,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 +947,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 +979,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 +1024,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 +1041,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 +1049,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 +1071,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, }); From 605290b50dab19db810d23fb66f0ec2aba07e1f2 Mon Sep 17 00:00:00 2001 From: FelixPflaum <141590183+FelixPflaum@users.noreply.github.com> Date: Thu, 21 Nov 2024 18:01:12 +0100 Subject: [PATCH 2/3] Remove runes field from db gen output. --- assets/database/db.bin | Bin 5124999 -> 5124854 bytes assets/database/db.json | 7 ++----- assets/database/leftover_db.json | 2 +- assets/db_inputs/atlasloot_db.json | 2 -- 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/assets/database/db.bin b/assets/database/db.bin index 2970e3eb1bb9e17f8c0d22047336fbabcccee63e..8e1d3be0f144a079bde7fc2a3c990a72e09fae9c 100644 GIT binary patch delta 18525 zcmZu&c|cU<`o1$Nj!Q6NDQeQ-y9QX6JE&>7|DNxCzjtQz{{Fz@JkRq!@3)@sobQ{N@cTyV zl@lASxo(Tw>aOFi>#pYxa@Tj;+zs3f-HqIh-S@bI-63wfyNNs0-PC=r`#yIwcXM}` zyM?=@yOsNXcWZaJyN%o7j&QeiKj41Q{gC_b?so3>?*DOja6jyR#NE-|$=%uQbVs_Q z++Ey{x*u~t?(XW2cK^d2^JO>N9Lt3X4d!&i-xK(I5`VGy>yAGc{^HCAb9$_wW%ldb zbB4v-(y`}Ei}|aw=f7SzE0^}1Y%vo*>p9CZ;nih5@%K;s^)g>w_SCjPW=2r_1EJ=s zu=v6#b9z#IaTiNJGbJbf4NJX#7p=A+WAS|n&CFxD@dE%{u-bx+h{S}}X6|#=ehh>d zyQ2~wGILurPP8D@@nL*66HQp@DQv8jp&Dpr(?C-ST~|4XB5Nkazs^aUbJF*wP*Rj4 zi~wWOwB(cdu54An=~Tc=R$EJ>Z%%w?Gi_wu9tf_r+FBXjg7`;a8l#G{ssP2owaqLt zM+IVyj1kF~4bL#kyHue>`dm;sh(A8hblSUh-bGl=Tna;;L7bnDUqaVz|EP z+zG{k9zs1k`M zSlC^YuAqLX=R^zJXNK2t6uGDk3)hLg!S+V&%*Hm;Go?u)Cz-=Za{G6o;@CGzhPgUJ z)uNt>$O-#-+CFA(@~M2+D3oX9W^rFG?qvz6Sqv9)C4*+gx<~t|y6!3!`D!h%@Yb`h zs|r!wf(ozUvN(%+Qdv5G8~-K~UM4Dz+hSBx!m9NS;np&jSD7GOqaRQQXmWm}x?tR_ zw{VA(L6DjX8#Ll6kEeDzQo%8O_DB)G()G{#S0eQvHTxzF>XO)zWzBwx*enrT6gxFq zF*n+*%p~cO;3F6@#Fa2-E;@?ILP)7@;uej4@~lddV}R_{jh1#IppAdhV0zzAmJ!5z+51LSuQ*Zjn~w2yVh>jV~5gxLMq z4IdVe@1`HDeLqS^-(pKO*$unXYBT-R?Yk(lr_q;d_4QW^wCq3BBuWcTP`5%1gGI)u zP6>ZE9q;pesHbiT>kQ9*3C)eGZ#>DpiKaM0;?_5yF))cdV_r zloDXnU+r3+?^+A(nukb>YL`*94d+w$g8GzNVi&hW-iI*`Sa*OtxP!D(1#ugmN$}tF zcQaJmQw=h8%NX8C)O*?7bvX!gvy{w#V)NY3>8|f0Y#+<2dRdeV4snl)!vU68J(i$u z=qT?&)|M`4uC<@P)~W#O-;AxjFhxDzK5R1`7ksym+fPW)NftPE{ljLuIs{bf z6cgSXd^bX=2E|Fx86DIVH>I@Xl$NNtlS+4%iM&4^!MIFp;mLQcKwxn%2|Uky$o97J zMXp9%qZ-C4J3E)dTRN^ z$QYXNnCUu$Dj?gyp$W7=?*2EfB$&?vsv`jl2tWlXpyO~3SUf@kJj5G3aJ>|=m_2l@ zoXB%Co5MzpmaxxQgVCxVl9sX$*U5{RvbQ-V?p=z(GO*5wd@mtl_TKv2^Iemn==fg3 zTPQV{^}^uxyE;*p|JJ#}n|{9HjYh)X^MUYR5pUq}#BK%%Zhk0&uLA_Nr51WBIX6+* z;s7=;wgs`rCJS4lSv=vG!j?@Fc55K}jj!y*`6Bp_PoS&4dZtj{GNo30BWqxDn^EPh zXL8#tFhsQdZjtwJG^WoyG~m>^BKrO=k(u=r7CcDaTOg7jSfcI^Mun?2o-wp!xJM*q zcS($j=`Hl&9k@h9<#&l@Z;r*H^f79VbSa;UY&Xl)-NvvVX<)lU_T(2L+Z!NrM6~Kq zvVj;lnlFF>Gt499|Q75x6ux{yRzY%Uw4HYBuB4X!p;=nft}C=Fzipt9<(ou)ljV4R2$OdaN;RHLNi?yRbUY!FxpztAp_?+yV=^nED`s|{iBVmv+Jql@ zS|YOhWrJ3uh=Dx$oxt$Q9-W_bF^A>80 z_%XL-e(z+q^tlH5_V}8$w_X)~WXjXb*1&MowSpgy&==|nzstwlHq`G;zDYJAEBvHc z+kn|_jfCC9Z0)56HnVEaqZIpau&_TdTVZV&hId*TA+4GSx!)J63*6{lp$=+Fy_kFN zEDG*E21IJn9S8u1D?{>Ss-rC1Bcyv+ECSgslo-vm%)Nx~;Is1K9Kj znO*siu)k_{L>D~VwPSW(dtra`vARf;9~SDQk3yGrSXq{NMX+g zu=Xy@zVN89=l$%4$C*s(Dr7B_YI2#i(ad&>5%yvLTh)!(ho2Poj{vqJmf2P=VXqK7 z`vRJ{G>*weJ%#+sPkR5!-cUh|WlcqY#z2zi5(;>p@(<|Q(FBuUs?0c>sxSb7p% zVDx>tcbG9Kt+&mrN$st-kQNeZ0#)xqZnKY<1Y244 z$aoaaVR7A|y5$zte^{0CF;eF2>#ZKW!>BCZ1Q7O#QkHKCH6hn!`Hp47ry%~;B*;*P zzEi|~ho3b@d>&&nD++j$be}Ggokrvgw9&#yUmJCtA>5Cgt+YV0m9ZZHo7sJq6l#|r zHJ)n?>nDW*>HZUSR!?6OjhXQh9@=V?R?iZ6e{*x37ATh>1v*+wbR%kH_k!}CHXJ-UgUYqW_3(e zw-8;VdtyGH5-^vk^mC194b>H#$Eb5^EQUr54~=O@C1!zfp$bjq z9qUwkdAfoN1B|esQbo>HNr;D8M=@FqE2>Vjn2gNmo&tOtAj8^9CR=|Klh2s-{I3i9 z0=-cxs@zgS&GZnQ<0ay+J?JfmXBLx{~r<*TPB6}0rKIF~c& z=~2gK)EtdgjY^Yo%?(jtr%{FTWSm5fdk8WeYxo{T7KEh5sLuU|llp#GcRcE0c zjxp%Wz%9W$qmkZCa5fR+O6FzAfTs>{cd{iqj|1E&UOeA)2xUeUUz7dH|qbe*4H>PG$G%`~nggs5M zYM$z+wli$z`6`^YFev?5#&{MM5Oj_q|8(W;OHX?-u3>>pL`pmDVPP*2YnC2GX%R`5 z7de6^H0Gi1pG%B-(w*v_q&wpe2CKR@#1_!5INVIs@TiUwdu*7fkt36qTBQ6jVXYJe#Y;VCN~`+@q>IijrtCc7voPA8|5Pg zCkpWyhmA~0r0pLnPu~<_KM!Qpp)i$l8Kde%SnUC6bUC3WP+iO~0%QRP!fT!u_mwQz z@+^D;1fFL_u$l$l0RaLk!5Yp5Lgy+BP|{f}$-IVTFlsFa#Wx3u@meP6oK)QwGKBb& zeQv*kjKWsGBJ2icU(FPjvX}v=K4issMaOLVc6CD6ymlxqv;0-c&tIf2ON5!3vlcO!mRjMngt7zQUVCOQ;9<`A+WJS?bCXi`0p_yrX@xR9+EG& zf{TV_W+HAB!z}8El@1?o76|!=BBL>nV|eOcrqBAMcMRPPu5dioPL3z=PX=>y)MKT3 zhD@6$mRFg=aw;doW5CBQ6#lxOH!DKx>BKh(#oCEIK6PxYZ$zr-1p1Y?d`g_K(rqt) zsd(oaqgJA>Rhv8LV&yCsYP_PNC1m(Y!QF)OK?f!MkUg+QVuS5{EH#9F6oAs92%!@K zP&(;AO-t8`^~cO+?SCSn$YoWddChv^CNqZ_rq4*oZwjOKtS(VS___gMQv;MZ@X+O% z#%SL0dRSl8@r|Wetn--4jY9?U)ENlani64W7}eVnqkY7&Z9>eXFf;cXSwv^C54K$G z`Y43g@!0`5pMLOaYG{0=)u%^h=T1rRiJw=e9aOIHGGXU2i-i-F^ufsAVpomc@Pj#X`$lq?{{hHX^__{jLL6Z>VlwXDX zUXfk(RRRtewbzkXFQcH$v)6??#2lS- z(9ZZ_HmkHGIpla`eQJ_!wxgUHdK29nH^_94n1x)66LR)cKSV%_5>RPaQF^9((NMu-AHQ+V>t;)ZYsnn_BnR1_?%`R z0BAXV#IdHi$j`F8dkc}DV>tjvz=?+aehH|V-6pAP0COW;mE#g1YxJH1SQUrGv z;SJ8a$SHZ}8R?HF(L}ME(xZF1E6(?%33vCaOP zCEo7;IhR6i;ML9CJtZmHVyL&Idi?+_VgQd_{Mn-g*r(`$D(wC!>3#J`kv5U98GO$Ji zRo{d&P^bZKE1lLWA(w+#QKW&2Z-P`6w=U$WxIBCo?w`+E*ou_?nX}+RWG1TO`>r@ouHPf7SrLtHf57 z8bBj5P^AHUzm9=w4U~EssANsHbCT&h_fJUJamu87R^K9(fp8E5J%C1M4(^CTHMF@yHBiV7&&= z{P7*v?c?`HGtaz1HWhht;xWz8o&T%;DiQnyJg@v4PYcQ z@Vf>uk{LKDA(w*~IHdtJJp-r3qnAZhG5;~HioGjer$_TOIEJrNyWvW|Y?*9WQj+Hv zR1WG}P&H^ALUUr1vzeMolp4Wl>YwqXpT;0w?$ZqX!{BrVF>uq=?Sa8O1~FFC4E&>Z z=C|~MH?EQKlA}OJPHKqANewx2rUnZl02V|rIE%rwgRSkl&ehRaKu6e9h>6z zP|GaRw)LOn&mQ_*VBe93KjnA+MJ{v3An{$oAr(&tqoPj-v+rjNmc9ZI|1h|eL1+Ib z(U`+xm0ibI*v>PA>~I#h-LSlxd_{H3yL7U&gFa(kysKI)Gg+V5?qnG@Oj-8BU7vsC z&p5+Sal1!K+%Cq^!5mkvKbHn8opZG4b~B#-Tyxg#G5d~7&Qkq8{cX|gV-3ayYxeVJ z+{cvH`LUuqc$e299hVuZbSdLRcZ6{aA@)1UpE1Yy^D+Nt#6?U<*6+c!W|K+Dqg2`M znIzan16Xr&;pAlfIDIJqfO6zCQC=ouL!Jn)u<+~*01)n;A;Q0mt+SGEt1ZNA;Kj29 zzs3QnhB#ag0HAC$SCluI@XizEEe7T<{hJDeppsn@bo{@0iu;9d)3rC5zJ(ILR{~B15TyLg9Cv`* z;JpJPI>{LErzk*wm$u5^B&YuyN6Gpg6OXgR8@2dpUB2s}KknRr4!2Zt)rfB9>Zx(Niu5R zsgIvra77n0WN%hSK~PU?AnGMVncisuiC51KPI+DZ9*(x!Z`>o=Lc-BIgxA^yFCrYB zW94pKOP{fBkZ#a@qWh9?bdA=nr_Z?8lkUeBqB9k)H^l~^w59h8^Oa)IE81Wa8RTAi zlngpWh-@?CpW}Bo)RM(y$iGf{8;0{A5@iW7+#`y~YcI@J@~9dw9@|LCov{|mTaSqH z8&aY#bhd9vS@B#4G`8{_7AeZ@Mph(h#{HnE^hbsIo+#B1$_0m6dyU=EDJal9Yg;uJ z%A!;BvGG18&<#YCbQ9tL6X*vbieiO0!~_=Xw(NbF0rZ3hjxeBJA6Rje06kmgAb;>v z;`TFZ>6_Md{`R+i8+r>eFAS-`NQrq<*}mz5^KdjBuwE*VhbrF69BP&S@6w`NC<>us8S994g6KiZg27 zsXsa2rP3`ND3<5hA#EegxG->e>ELi}@KVZK>N@UaTxqy1GA;~Fc|mnuO9ng);6~R{ zDbEd+UjLK{y^*gr|EgaV?la~vjkL>B2GEV<(r2V7muZ(R7Oh-PfbP9KxE8-I+7+xt z?~zH-n?kH&0+UIbtkx#fdoRGG%^1-ZGQ~ZXM|JjcIBs_2J2gkNYnjkL_fl0HH(t0e z*@q|9PV!lAWK2fe*`GtVLR<5ZXie5~cX7^*q}6viRn38uMZJl$>h4lm`%VLg>krdY z#-LZOT5aDM<({d+Vy9U+k2)FAKd>0RLE_GHS-f(d zhMjmYc!A(XHiPWHc?*C z#Ncy{Sb0$c<&zpJWzKh^{6iDnF9)&mvIZ)9k>}4lMfs;DO5(y<`IiPlwuLFrC(A{7 zO%a1EhO@LzDAnk?2C(2Va6^XKc8XO`ow1a1DXMCsW?V%z$i;52lZwa1>^alI5Hg**wNEf!J-n|1)&8 zwW7nf{*e_gq%6aC{`E(wGA@e>-}F~ytLpU_%Ras9^9mFEn`(xpT&Ea3Gi^3YZ>Okt zI{d$w{||oiZMiR$_%N?ERXxzWd&YBRQkgxU;G%U1Y4>`(m5&`zyW_3Q5Mq%%vxQwON_ zYw19laGf3@MyGv7cEkBbSA5M^{V?v(IuVu>X~&I_P&}(Q6TEtPN`?Db90> zo9&T;YFERx!&eEz)Ul7lVjx=8t?XgSiUzo#B(Vk`FTJB~ofxIahOeFb>YU~3j^Tj1 zUg89(E9x-7SP_}pvh{$Lwr4}{?J;cR$X8y^$QVL+NU9@Ko8j_T zWNPaU1De`y)d_9<^uLEV{yF4dnZsBTYRj)1+9)o2=#UYk9skUDYlI5x9+lc`$beS1 zvbv%7KASmWG^80X4as&qot=?6g5#Rms_TY^^c*rGBRg~C2uIJ%?3afPLF|3DL-j&~ zpUNKj`slYt4*Qp*=dcWA+01shUT8@F(Ic~mXJx)N#1a2SM)oTz)uyP_`=gQSYEbCC z{WFKXIVAh7%n?H!{ZSmG8m4LyX1f*?+T_`c?AJ$v>GQ_u?95km{eruswtz|dE~#yC PN$QgNATC*5Qk(xDnnh6J delta 18697 zcmZu(XJAy-wtf?eL(LG76xsxziU<;d2vWiXE+&~20_xS9D~VM+ctSi4J&io~dK!B| zJz<`3PlTt5r>Uozr@5zv$LWdmwDjEP`Crfdo(DV+dRloN^0f9m>}lg^>v_b}&J*Qn z?}_$w@I312=y}Z3$ZE4AIyBq)^!14F^ufb3hL3rD;EQ8Njv1Og@P*7FV@D5t zK7IHI>xMh7q(hCg%R%-U%DW@3os|<_x2LT}+NB_SP35>ZzOj{*6PE_yVvxPQYTrA) znU(WwP(KEORe9U^`?ZPNW=peXd*ZU0Xh2F8b;)M83QoJDZC+Oxxd>qw1&!^-MMHA2 z?)U)mFd#Q>GzSmm;Af{(aFiyD09E;fJG{sh3lWMOPDO^XE-~&SxC*J6)iqENWN)JO zzYzZ@1YP*PDcxHTbkPN#^)7`&)ne4B;Yn9jL56J{mD5f4bB_<;+kY{gI5@vGBQuiiRcwK|3I$2yj-^DJ- zpPec+iYufcvdZT4vBW{mHkuO^Zm(AAb>-^fuArF6p-07*#5G@68myClCCL7^%G(ha zWjQO|6am`e)zSb{Rpi0A2ZV!bRQDY<=}26t%Dv`x7P%;c&DV)37pBx#gPl=rS94jSih5C5mTZrEg$wCpqVyNLq+!Mm;np(e8jY}& z@pY>GZ*d(hc%cNG|5m!tdM3yVDK{`svLntkmc;;kk?Gd`Qryou8KtL_TBB}GYQ{|l z<3c%5y=DhRznM8I6!i?`Z;NT00q(FO7gg}hBXMInx5dO+^^ekEg1Cgm|9ZK7V6u<@ zOa|yE-*Nu();?^voWm2THKKy0Sc9KrDh3_nbXfo}-eyBu$rgUo%l|VPa4VQEp|| z_Si>**HyUhLtks9Tdt)Tl(2zHith(b_lsut6Njqr;i^YH(P+8X^#NsLFF{t`+g+TH zw}$-9ha^*_%sHDU2Z4(x{eHqWRA8czUVebR`mVarji$px-*)2Rd-hNf6|W~ml;8)} zmi4yfdR-;Z`Z|dAN7niV#`{O+A(odc4mI-N<fzsMzMp>sm+7e^dKi7%l~0VSqa( z()6##+{kWXbD9Oty^q^BJQeS+!S94ynNL$_ZL`NEHh&nKhHdRCFTd+fuWK>|JIi?9 zl{R+eaEBLoT`LGb$9PuVc6L=VsP1I1YbX3IeM04roxxkS9x;=_)5YT}vnGGoUJlWXg?L5P8U;?2~bqx$xXk5b&s?}JM2C)8x3 ztkPVX`LSBQ#eivJ7p*BC!b}@uiKa!BTyh)hsiNRt;&Li`KpWFAob{X#(}++}CnEIp zLT++dOKnWRbk=YKZzO1jf#x45LLEY~&azMg{EGb+sl!`pC~xHbbpwS~o3hbj^AQVB6%%L~ zJK?JM5U1N~Y~y>KY%s;IQw8JWBj^48E%K8MGLbve>|DP(}RJZB7LVd-QUU5}c|4_T-8p5@zt35LJx5LLhV zo`}A=OJrp|!OO(iMI!l@C3;d&rLJc7D#_7&k?grkqDp6no7(LDKt%iQ5?KY~xX7EA ziDW-Z^z>p?9IjfIS1uR9cYc9#MmA|($_3ZSjvWL(9`b^%BG0K#D>GK~Fd=7b6LPYj z9YS!foW5Y7AlrJGwwXg% z_!x9fd=&hbikG=LP$gA}>VvygvcZX=9-izc;J$niekP(JE8p)!kI6pPAa{t8Q0=5~^8V*Id-4OAF!4n7{LJ zhxj5_ZJn;xErt7qIP3WK1ijVN`@M+!g*#zFj_hE!iXY(8)@~*2Z&j=*P-SbOPFGQO zE58jJo@p!W8D{mvr^>s}vC-?&J@!bH@MrzJH8Gm4cXbfJh{Cxjlsa)5Pu;Z@1dTGCQuPu-5|E7XM)O zrQX6;2C%_#%%;T)dz0DVBRw4|Yj5Z$yt=y+g}=>wahK|L>p~K&X@9s_d7n-QQ+xU( z*sVJsw{W8c?MP)&p9Hi0&1b=n!EJgJxti#f&+jMPQs$=Rw8I4T3>RqT)53nJS*I$! z(pa}HMf->#EC1O9^Ll9+d9doICFo~CY>hu=mjLXlc&%Phbw@0FPMj`hgSfizz(w6V zP`DM$Js83q`7309eV#}C$_7i=m8=A6!mjemRO;3k`-ZIc^xTBlk;BCQ8WwdQhO%WX zyDv}_{E~=@lx+lRT~H>o&aDig)-hFob60+jr2>A&PA80lQ{T`!cp}16G!n6%iwN8l zaf4rI?Yj@j=IW=85%(KekTC{TUDKF0OnNZJyefiCEGT{h0ve3)K(W3EAX3Lkk~R}+ zL2gR0g=MQIps0OXJZ7Jt*}+T{-U$+;I6$*+DYkBoDcmn6P7=vBHOhkwIc+XKJHjLE zf5^dxDH3!$-OrzbGEbZ;Mf<7>R3%>`h_8*?Jbxl{Uvm+TPKOB%U`|xYbP2IDKtLmu z1*>O?U>6G-N3}uyKBN?VOOUnEE9KhFK)bmD>|rASn3(n0Wv{mR;&mSjUi|!Vhf00- zVUxNG3xwa#9-rvy*0#Fojx7}KJ5|0g!O7#6S`APCmsI+yghy1=yWK8%U8#_}3KGm) znJY~BDmo7Hx_+X^;;RH%cWjuYq0RqDw0|*ip*jdsUSngt$*x-dqP5BGkOPw(PTnE^IT|pfzh^MbPiH^DHs&Fy&f_*)OLSdJC2HZAMf7S>G63_(BY( zGF9+-SG|(9X8k)Fe9Wwn`oTS=MD)2#MYXMsIqMDbKAl`xQTJjjLc40aXlJtTvNv3* zUe_hk&SEGh7S+YrH07JkD7Lxw`9t(G;T!NXX_xr%GF=ka)NV!X7Na=I50 zY~E!S`%zgs`3=mx0ACeOBnXjud?!}QSQQ4@t@GbYqy>zYMFgWW>nEQjKZ?Qo%62s2 zF+KiFRTi=~YGw>J!)@Huqi+2q^2N*+42lZK_7e7iA!>Z&n|PgSOp!>_k z%Tnema${tKaYKB-xN{4Vi=jz%i~3EhJ~FYNcFDqt#R}tV8RMn7i00eZ4Rb!Ns=A)D z&xr9SevuV(RtmbDQCH4AwANC<^XFwS?^KaD6Iv-Aoxjrb@(n>&@Ev-!he>P~0~oGm zq5hTu3{%?j#r`SY_OQ3W;Y#t^T^GeZt%y<=j&|1T4rRXCO(FL)SrHM07r5vOh<$)O z&h=fSeXE`o0De~mR*h8MDqy}RMrAeXir!p_>||AQo6W;Pru@T{=fnXuMR3RnXvEGT zcX;)$vm+zbgvZN&jb;sNspm}+{=^UuUcLV-swZxb5oP6+(3VthX!0Gx9ar9lZoJQ< zfvU&w%!Wdhvl#}gN%}7wf(L3PMg5f_|B&Q&aVHp-@k;}~EJ7Ur7QkXi61%sVu&0^D zFs`cG?^O_9emLdz;u%H*#xCy_{$RY|^XBprB=UZ7e$Lobja+Vm;8r5IzycYV)OT*R z7WSgDJ&bIbt*)M%(c+f~)Vo{LI+slWc=#IC6$Z=vqg8i~)M#=2C-XEau@$DI#B>z) znsMnLmE7vr8P}uI8q`@bQ|U(o$10oL@RL?bSDuW$-6YU0W@W5WF(&qKzlN&*8Dw9q zBA;?csKq_pVRVR$8jR{GWImI#dm54~3jCmc=c6+OKT8=sn-D1dzz?z%-uEVm_m7zU zImt~gkEmcJNy2{YXX)h+?Fta+6T+?1KJGM*yqtvq_$`qLKlS5sgsTTiv!^6Np%z33 za>36Cw~CEhq@ip9XT!EM5v&Oi&~Ykd!N+JWP9XK`Ba@pVLM@=C$ZG>+=B-c|iZ&o! zynn`mkzQ16O zj#g2s{Eau{LSz9@BI~@i_`QacKbRKTH9E)e3TJ#Y`zH)+%ie z03DH!)?5fMAy0<)B~`T8-AaG9!S8Qr0=vxMnrof1y{psv2o7Cd(262@%utu*HmY72CVmLs}>7&gD9&sq(&E>L~oKCtg_}bmr8NV5Bin2 zt3aIU>iK!YGVz+DBG;pKWt&@@vYh`!sL4!W9o2`yCg@v!P#^Ug)Z<6ZfeH3anCIVS zJSyGhU^QwKyG8=w^A8=H*wV3ec+;^~*lC*WYzfh9y%5vM%qrO+iJrlJ99bQri(Fxx zoSBSa{Lxv7Dd#Lk^M0ve-n3_J7O#0s<;2?X)IrB5I{gERg`dMb23{3URh;X`^|6Tw z^e&?qW`9@D^W&^WjH0h4hB9m+UaONYu=(Ez`(6NxgB42G%-zB+RNmc47ZFsjMFg0` z6K)QyMLOZWf%*uLU#Ki$C~tU(L!<~=_MN!JVx#s>0x4+@VJsEV)Xc7MyN2KbN( zEVB*^XEP=*Sdz57tlRzmrdsA#ngf=XP=v^zB?J~EZG-jI5x@tRyUi=&9V-2_JJc%p zg@!cV#P1|P%{b|H@?i|zjXEjvT>-3oq}Bhlu)8(eDd4PS4+C=6QhZjF`^b-#dS1eo zvSR>FIZcVYDCz^M!4-EW!RuWS{CoDYK!-lk8&gOMpPmQAX4e_JkT$ClM!D{M{1#on!#Ri~9AxU{Rjp$b%Y4<0iUtUn2Yd}0%kUtqbTnaC?x4!{|35>nnm z4DeMz%fwCr)Si|?T_LLKe1r0bw<+kfs-zX%`HxK6Jt#JKsiHeIc$09vRM7@2A4YKl zPD;EFiv`}PR0#r(JKlUm1UJ>BN01ufs2B@X`!0#0s&%;=2YDB;dEvdv@n|txOad$G zQ7Oj~wgBM3ewH64JBhkLlMf2swu|5&5H24b@uA&^?8xa#ly9Es!8k^2mJx4(HyQYt z4Z2-KS727}Y!78GAe<3yzVHPvY_NeX`>?vx94jdCsp7PVh zU<(HZYcjr-L^#cVH#K}i75-vfLI{@jbgf2l6Mh@2RTO7I_o^fE=k`-~9n zR~)=-qy+z(odb}SM+Yw&B?ddy(lKz(9|ve^@fe|Yv9Cv75ntc3F95U{QRq9biF^;s z^TvsMFUtWq6fbJ6^z4xSrdX7!zBz~;z$NDpcQeSo#M+jd*x9DAV)U$$1|XjSY}9(f z$u>{o1ntZl`hwi;Il1t<(+S3ep6`DNgc0gzt?4jTaZ)xq*M zagh3(`8s2Z1Un|an;73e8vvg@v8&?-DBW&=G6UdqJyw((proLd4wmyZ2f4k2uj9Xw zU?)Ww+Z>jaLH0^3>p)@*r4=vT0o-5!Y32KyMu4>Hx9=B96UXbMWgNhj405dU!`g#> z!X;pm0kDH+V6p*dO~*$AhuFoj!{Xv?BS1FUVu}HfO$MeK0NK=~*ngZ|q?C(`Tq8i= zWQ*wrK;L9wh5?XP24)%nY1KZ9Pm8bFhCnu1nP-5!H)0v^iehmn19JqJ+fe(8s^Idi zx+op|Q>*A=;fY{~?9JIWVNvYJMTT{V)WB{q> z`$I;6)a&nRy-m0#j%IwF-JGxWoqU}ci7PoeE{0oe?5RwE!XO694S;Mi@QVSEO$L57 z06H=QCk%jTmw}T8z_iQ2Zw5fuX5f?o(6t#jEhblMGVr?rka}IkNgb#v8#;20CO*d3 z+nxCO=Hs|h4KEnGl2{!IziF9{ABrR`!cSBB&Mg}-39im}Ps-NgKfMR8B$-7L{qUZu z|CvnSYzEO)Q}x8aU><|$ov8}{=yytOd$YTOC&b-cW0_kUmbtar@?8VYjRZJ1lEHZl zrXFf?fMU+)d-SeUg@3gBmvqBo(G737{uOKE2Ez5o~rUPVi?5!Sc7@TkV5>UV+0Q+ z-#ClHL-P2fKXpruqq8YIBjX-}gKxiK8e?M|%*tO%GUveGGLA<`*5UD3yQ$b&PwQNn zqT97#3Q0`&H55DOlU1yRhyc-(y14y8h!u zhv#3dtMYf4?=kM!?g-x-|LrG>-BHFd*jR_BUy6r&_|Kb?WS)B~tej~{qjb+7KTWVp z3RtLBZ+ep1CSMK!p!|8JD6cY+Ia`!}GVt#?0HAcu5#==%H81Ioe#w{(yv;npE7@Sn zeDQE20DyAVd!oF>M2m%@yv;zJB^;|_u_$w_vI4Ht(E`CHGe%qVw-oq03g>~kEHTTV zp)c>=uBRqVOKNQG`xqVxnG%RVTkxs)d&kOK$uVZE6#HCOtBGrqPLp@?G5u~7e$M;E zW~PY%8xwO@AOdab`lQ!&E_ZFfwMN=sLH5;Z?}nty`jwR)0$V>9+{ZW;DvTEliSL#7 zKob3&r$Q%wFo8e(f8fEpK)7wNO}f${Ch2#GzAuyX!5^F-z8i&2)>mS4lv#W}7!djx zgZS2$L0IhjMl5jXs0&*~QjjtNE&QIZpH9Iedqw?A06|KuKL?Vsv}oo55n;vA81cW6 zLDg5ir~L^z_5U&OlYU72{7wpd(Hl^gGk?dRFF7juv+OarYn=dtb9aHTXi+XL_m1+O zOiI)*<@9G1XyR!M;1R1e)#;=tr!#^1iik<4g_y|%CMe@#mT|Eoj+7V9iZYK0yb>}> zF9GH)4b9vaMLU3wD)xMq<5vt6v-p~57chZeFPNC`u`&O8 zp#Xl{-V!Zd^y*|(JVZYOLd^A%$)@MyTfCD=Zk7La_XTvujZ7_JM_9J-TMF%Hc6Ct~ zu=>L5_e=*x1;qDw+CgyRY8rz2mR;2N7!QGm1u5M>b)Xdk0o%K#P>QtoLa%Fm389dSf#3l(Am6KEgf!Xm)5Pa49tYbx5$ zSxfCh72L!?&gDnR>td%UH#32zA;No~5L=l*)0l9@1SoEr*AVW`gQDGLoam;Za9DS&ZQ3L?^&6ftyHU_|NzBGWgX{ihKNY`X@QjK4HX##CSgfm8n!%Sf8 z7#H}l7rEFGXMmp=(9atj6+frc3N#Y=db79q`k4uOgIVo={wK}Kj2EhmDE!WeOwtnt z|AkG^G{*U_1nA8k^09zwd4e@)C8IgX8g8WpsOQ#x;_sC4#{h%|&=UJV#DHgvz(}U{HKv1~8mY)2o zzE%vzm0CJq4H}mGZ{2zk3=}Yc){D@}=Y~ncf4~He&WT8UNr;b_z<@F?mN9_VBjwhS zqWpvjG@4N^X8?^x$~L1#xq=Ba8WGM{gjmT0hLdrziU7rv-oH`eS>r^zhAD2fJgTmb z&CzP)_vQrAu4OHrN6-xV6Pt=jLVZRQhLnl89*+yj|28eAr30pj)M78(OdN3|tGSu- zpx&J;>P@WXX3{NKG7}W8U1lf0f!4ULKMakTojgL1rP>VaU;tyOwpOm53ni|t=ZVEG ztNB7|Tv&h0Vl)Jam%PW~h=n5F%L3%zxZg*Bnb`)z@vMBdsl8Ne4zLYcz}S4pHrxV< zu$i!oZ7M$&n}ckFv>Tfr*@g#84s1pivdx*5Vsqqfo1fI)jmaZS-bce`KoQ#xs?sZ>TFTaCy*sk(1OGjAvDZac$T)@{bbkfeH(TDC zDPwi%i*Csru$3|5i>vq+K`CZ~wJm`EvWlNsQ~2#w*rZy5eH~!4ql&*!Px#URet#9; zKP1I;^D-+vB*kpg%N73n0Ts2S6FvbNlITR^Y^8p=xp9hF#eY>LjZ<1Hi~+ot8Bd>6 zt_~-XPFa^WO$k+7+oj;g5f9)i{DO!k_&)G^{vGP#rpO090-jRPwNL}++-Fwv2;+)a;6vv^W#&%l6KP5SLAJqwK>RBqJm3M!N zn**L>gHP9oI;=ij`3u#)t*AH%i^Eu5ZG4^>rcaJgZ9S6Fa@`)Lh>%>ot7PWT>2>8R z3_|Zk%u4}@$#V5TCqP0jQ(OxPNwakx9B%I#((tJlGqZ<}9pUVmojK;kq1i8HWcIN0YuV!Yv;Ov!=PA(fn zr-Z`uL(wTsJHzw!njwvz9G>yY(Ck--j~wQF64Bu~Ll-*CURg7w!87UEqcg$u89OF> c`17VZZ$_tt!-A(n+a 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}, From ca318a44344503bf9db759903d7d47200beb2f10 Mon Sep 17 00:00:00 2001 From: FelixPflaum <141590183+FelixPflaum@users.noreply.github.com> Date: Thu, 21 Nov 2024 19:35:49 +0100 Subject: [PATCH 3/3] Remove coalesced regret, allow warchief's sun thieves in the grasslands --- proto/common.proto | 9 ++- sim/core/buffs.go | 2 +- sim/core/consumes.go | 10 --- sim/druid/balance/TestBalance.results | 8 +-- sim/druid/feral/TestFeral.results | 24 +++---- sim/hunter/TestBM.results | 24 +++---- sim/hunter/TestMM.results | 6 +- sim/hunter/TestSV.results | 12 ++-- sim/mage/TestArcane.results | 10 +-- sim/mage/TestFire.results | 12 ++-- sim/mage/TestFrost.results | 10 +-- sim/paladin/protection/TestProtection.results | 54 +++++++------- sim/paladin/retribution/TestExodin.results | 48 ++++++------- .../retribution/TestRetribution.results | 72 +++++++++---------- sim/paladin/retribution/TestShockadin.results | 54 +++++++------- sim/priest/shadow/TestShadow.results | 4 +- sim/rogue/dps_rogue/TestAssassination.results | 22 +++--- sim/rogue/dps_rogue/TestCombat.results | 22 +++--- ui/core/components/inputs/buffs_debuffs.ts | 2 +- ui/core/components/inputs/consumables.ts | 2 - 20 files changed, 197 insertions(+), 210 deletions(-) diff --git a/proto/common.proto b/proto/common.proto index 0f88ca3f5..a2d0679b0 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -469,11 +469,10 @@ enum ZanzaBuff { message MiscConsumes { bool bogling_root = 1; - bool elixir_of_coalesced_regret = 2; - bool juju_ember = 3; - bool juju_chill = 4; - bool juju_escape = 5; - bool juju_flurry = 6; + bool juju_ember = 2; + bool juju_chill = 3; + bool juju_escape = 4; + bool juju_flurry = 5; } message PetMiscConsumes { diff --git a/sim/core/buffs.go b/sim/core/buffs.go index fd5b16204..7968333f2 100644 --- a/sim/core/buffs.go +++ b/sim/core/buffs.go @@ -2143,7 +2143,7 @@ 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") } } diff --git a/sim/core/consumes.go b/sim/core/consumes.go index 389de3bc2..0193d9153 100644 --- a/sim/core/consumes.go +++ b/sim/core/consumes.go @@ -611,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) } diff --git a/sim/druid/balance/TestBalance.results b/sim/druid/balance/TestBalance.results index da67fd51c..5843f41bb 100644 --- a/sim/druid/balance/TestBalance.results +++ b/sim/druid/balance/TestBalance.results @@ -106,15 +106,15 @@ dps_results: { dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 514.55703 - tps: 750.86219 + dps: 520.28089 + tps: 758.25771 } } dps_results: { key: "TestBalance-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 403.21466 - tps: 416.06733 + dps: 409.77009 + tps: 422.72601 } } dps_results: { diff --git a/sim/druid/feral/TestFeral.results b/sim/druid/feral/TestFeral.results index 652ba9e93..288b814f9 100644 --- a/sim/druid/feral/TestFeral.results +++ b/sim/druid/feral/TestFeral.results @@ -106,15 +106,15 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-NoBleed-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 402.37416 - tps: 518.26188 + 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: 381.0503 - tps: 282.21897 + dps: 384.24199 + tps: 284.53209 } } dps_results: { @@ -148,15 +148,15 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 402.37416 - tps: 518.26188 + dps: 405.3226 + tps: 520.99922 } } dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Default-phase_5-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 381.0503 - tps: 282.21897 + dps: 384.24199 + tps: 284.53209 } } dps_results: { @@ -190,15 +190,15 @@ dps_results: { dps_results: { key: "TestFeral-Phase5-Lvl60-Settings-NightElf-blank-Flower-Aoe-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 402.37416 - tps: 518.26188 + 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: 381.0503 - tps: 282.21897 + dps: 384.24199 + tps: 284.53209 } } dps_results: { diff --git a/sim/hunter/TestBM.results b/sim/hunter/TestBM.results index 6918db27b..36900a9d3 100644 --- a/sim/hunter/TestBM.results +++ b/sim/hunter/TestBM.results @@ -106,22 +106,22 @@ dps_results: { dps_results: { key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 859.33765 - tps: 874.55169 + dps: 938.88875 + tps: 912.66402 } } dps_results: { key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 598.76357 - tps: 279.15801 + dps: 667.23482 + tps: 313.89596 } } dps_results: { key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_melee-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 627.58942 - tps: 276.35825 + dps: 701.09983 + tps: 319.47299 } } dps_results: { @@ -148,22 +148,22 @@ dps_results: { dps_results: { key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 747.70435 - tps: 718.10614 + dps: 787.77778 + tps: 681.30603 } } dps_results: { key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 660.88371 - tps: 342.06625 + dps: 698.66246 + tps: 339.611 } } dps_results: { key: "TestBM-Phase2-Lvl40-Settings-NightElf-placeholder-Basic-p2_ranged_bm-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 701.0324 - tps: 342.51098 + dps: 734.58089 + tps: 336.78729 } } dps_results: { diff --git a/sim/hunter/TestMM.results b/sim/hunter/TestMM.results index 3f42642e8..54e9f0763 100644 --- a/sim/hunter/TestMM.results +++ b/sim/hunter/TestMM.results @@ -121,21 +121,21 @@ dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-LongMultiTarget" value: { dps: 419.37663 - tps: 579.53896 + tps: 579.42693 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-LongSingleTarget" value: { dps: 274.78179 - tps: 282.80957 + tps: 282.80397 } } dps_results: { key: "TestMM-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_ranged-FullBuffs-P4-Consumes-ShortSingleTarget" value: { dps: 266.84113 - tps: 276.58129 + tps: 276.55328 } } dps_results: { diff --git a/sim/hunter/TestSV.results b/sim/hunter/TestSV.results index 9e4af1299..a77972337 100644 --- a/sim/hunter/TestSV.results +++ b/sim/hunter/TestSV.results @@ -120,22 +120,22 @@ dps_results: { dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 1267.77882 - tps: 1879.29945 + dps: 1324.90663 + tps: 1909.48506 } } dps_results: { key: "TestSV-Phase4-Lvl60-Settings-Dwarf-placeholder-Weave-p4_weave-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 426.59025 - tps: 362.74026 + 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.95885 - tps: 351.13112 + dps: 460.26913 + tps: 394.30809 } } dps_results: { diff --git a/sim/mage/TestArcane.results b/sim/mage/TestArcane.results index afac9b966..017e8f275 100644 --- a/sim/mage/TestArcane.results +++ b/sim/mage/TestArcane.results @@ -106,22 +106,22 @@ dps_results: { dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 371.87485 - tps: 653.94848 + dps: 371.0616 + tps: 648.00894 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 371.87485 - tps: 385.97853 + dps: 371.0616 + tps: 384.90897 } } dps_results: { key: "TestArcane-Phase5-Lvl60-Settings-Gnome-blank-Arcane-p5_spellfrost-FullBuffs-P5-Consumes-ShortSingleTarget" value: { dps: 388.44813 - tps: 404.37983 + tps: 404.27494 } } dps_results: { diff --git a/sim/mage/TestFire.results b/sim/mage/TestFire.results index 6429976e5..1899b21a0 100644 --- a/sim/mage/TestFire.results +++ b/sim/mage/TestFire.results @@ -106,22 +106,22 @@ dps_results: { dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 328.52541 - tps: 562.21997 + dps: 336.04823 + tps: 563.87387 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 328.52541 - tps: 246.5804 + dps: 336.04823 + tps: 251.66577 } } dps_results: { key: "TestFire-Phase5-Lvl60-Settings-Gnome-blank-Fire-p5_fire-FullBuffs-P5-Consumes-ShortSingleTarget" value: { - dps: 414.68439 - tps: 302.05357 + dps: 414.69838 + tps: 302.05805 } } dps_results: { diff --git a/sim/mage/TestFrost.results b/sim/mage/TestFrost.results index 51cb08fe6..fbbdfca19 100644 --- a/sim/mage/TestFrost.results +++ b/sim/mage/TestFrost.results @@ -106,22 +106,22 @@ dps_results: { dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 397.37884 - tps: 587.62691 + dps: 399.58783 + tps: 587.87827 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-LongSingleTarget" value: { - dps: 397.37884 - tps: 317.79797 + dps: 399.58783 + tps: 318.94962 } } dps_results: { key: "TestFrost-Phase5-Lvl60-Settings-Gnome-blank-Frost-p5_spellfrost-FullBuffs-P5-Consumes-ShortSingleTarget" value: { dps: 400.34254 - tps: 323.00782 + tps: 322.31659 } } dps_results: { diff --git a/sim/paladin/protection/TestProtection.results b/sim/paladin/protection/TestProtection.results index 61fb3ab45..6e68cc2c7 100644 --- a/sim/paladin/protection/TestProtection.results +++ b/sim/paladin/protection/TestProtection.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 39.6 + final_stats: 49.6 final_stats: 0 final_stats: 27.28857 final_stats: 0 @@ -35,7 +35,7 @@ character_stats_results: { final_stats: 8.84509 final_stats: 10.4 final_stats: 0 - final_stats: 4910.6125 + 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.36836 - weights: 0.14659 + weights: 0.42023 + weights: 0.15825 weights: 0 weights: 0 weights: 0 - weights: 0.10482 + weights: 0.10858 weights: 0 weights: 0 weights: 0 - weights: 0.04693 + weights: 0.04691 weights: 0 weights: 0 weights: 0 - weights: 1.31055 - weights: 0.08066 + weights: 1.30854 + weights: 0.07653 weights: 0 weights: 0 - weights: 0.1456 - weights: 2.98915 - weights: 2.16293 - weights: 1.88267 + 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.20964 + weights: 0.21716 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 311.90154 - tps: 480.2634 + dps: 344.87219 + tps: 523.27171 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Average-Default" value: { - dps: 312.49877 - tps: 480.43802 + dps: 345.01187 + tps: 522.72475 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 51.69456 - tps: 109.26224 + dps: 52.63206 + tps: 112.15163 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 32.51277 - tps: 62.09519 + dps: 33.74085 + tps: 64.59191 } } dps_results: { @@ -155,15 +155,15 @@ dps_results: { dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 51.53097 - tps: 108.53323 + dps: 54.15443 + tps: 113.64298 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-blank-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 32.41881 - tps: 61.89564 + dps: 33.98391 + tps: 64.97911 } } dps_results: { @@ -197,7 +197,7 @@ dps_results: { dps_results: { key: "TestProtection-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 270.48257 - tps: 419.98409 + dps: 296.79219 + tps: 452.21141 } } diff --git a/sim/paladin/retribution/TestExodin.results b/sim/paladin/retribution/TestExodin.results index e86e9ff09..e124ae319 100644 --- a/sim/paladin/retribution/TestExodin.results +++ b/sim/paladin/retribution/TestExodin.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 39.6 + final_stats: 49.6 final_stats: 0 final_stats: 27.28857 final_stats: 0 @@ -35,7 +35,7 @@ character_stats_results: { final_stats: 8.44509 final_stats: 5 final_stats: 0 - final_stats: 4910.6125 + final_stats: 5210.6125 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestExodin-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.39797 - weights: 0.16031 + weights: 0.45025 + weights: 0.17414 weights: 0 weights: 0 weights: 0 - weights: 0.25561 + weights: 0.27825 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.21625 - weights: 0.09094 + weights: 0.21247 + weights: 0.09393 weights: 0 weights: 0 - weights: 0.143 - weights: 3.8024 - weights: 2.80308 + 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: 308.86702 - tps: 344.25151 + dps: 345.99852 + tps: 382.73754 } } dps_results: { key: "TestExodin-Phase5-Lvl60-Average-Default" value: { - dps: 306.84691 - tps: 342.5715 + 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: 23.37335 - tps: 218.3785 + 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: 9.84742 - tps: 19.59768 + dps: 9.77675 + tps: 19.51226 } } dps_results: { @@ -154,15 +154,15 @@ dps_results: { dps_results: { key: "TestExodin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 25.01923 - tps: 220.31939 + 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: 10.05073 - tps: 19.81574 + dps: 9.52886 + tps: 19.23487 } } dps_results: { @@ -195,7 +195,7 @@ dps_results: { dps_results: { key: "TestExodin-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 253.59155 - tps: 288.6616 + dps: 282.33836 + tps: 316.6778 } } diff --git a/sim/paladin/retribution/TestRetribution.results b/sim/paladin/retribution/TestRetribution.results index d7b91f453..5e5930d0a 100644 --- a/sim/paladin/retribution/TestRetribution.results +++ b/sim/paladin/retribution/TestRetribution.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 39.6 + final_stats: 49.6 final_stats: 0 final_stats: 27.28857 final_stats: 0 @@ -35,7 +35,7 @@ character_stats_results: { final_stats: 8.44509 final_stats: 5 final_stats: 0 - final_stats: 4910.6125 + final_stats: 5210.6125 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestRetribution-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.43784 - weights: 0.17111 + weights: 0.47964 + weights: 0.19354 weights: 0 weights: 0 weights: 0 - weights: 0.14884 + weights: 0.14806 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.81482 - weights: 0.08142 + weights: 0.94395 + weights: 0.09534 weights: 0 weights: 0 - weights: 0.15733 - weights: 3.57897 - weights: 3.08603 + weights: 0.17157 + weights: 3.67644 + weights: 3.24639 weights: 0 weights: 0 weights: 0 @@ -99,36 +99,36 @@ stat_weights_results: { dps_results: { key: "TestRetribution-Phase5-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 333.07757 - tps: 365.39866 + dps: 353.12213 + tps: 391.8802 } } dps_results: { key: "TestRetribution-Phase5-Lvl60-Average-Default" value: { - dps: 332.98738 - tps: 365.47503 + 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: 44.48615 - tps: 252.66798 + 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: 26.1478 - tps: 36.57164 + 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: 37.54176 - tps: 54.39718 + dps: 39.32693 + tps: 56.20694 } } dps_results: { @@ -155,15 +155,15 @@ dps_results: { 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: { - dps: 16.82326 - tps: 202.29009 + 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: { - dps: 14.86719 - tps: 24.14053 + dps: 15.32613 + tps: 24.61914 } } dps_results: { @@ -197,22 +197,22 @@ dps_results: { 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: 47.81643 - tps: 256.68659 + 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: 28.02238 - tps: 38.46589 + 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: 37.45917 - tps: 54.31459 + dps: 39.24434 + tps: 56.12435 } } dps_results: { @@ -239,15 +239,15 @@ dps_results: { 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: { - dps: 15.59483 - tps: 201.15999 + 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: { - dps: 14.53231 - tps: 23.81057 + dps: 15.43201 + tps: 24.72502 } } dps_results: { @@ -281,7 +281,7 @@ dps_results: { dps_results: { key: "TestRetribution-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 278.77629 - tps: 310.94343 + dps: 294.7041 + tps: 329.75827 } } diff --git a/sim/paladin/retribution/TestShockadin.results b/sim/paladin/retribution/TestShockadin.results index 4bdbcc3c1..6d3f3e0fe 100644 --- a/sim/paladin/retribution/TestShockadin.results +++ b/sim/paladin/retribution/TestShockadin.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 39.6 + final_stats: 49.6 final_stats: 0 final_stats: 27.56742 final_stats: 0 @@ -35,7 +35,7 @@ character_stats_results: { final_stats: 8.44509 final_stats: 5 final_stats: 0 - final_stats: 4910.6125 + final_stats: 5210.6125 final_stats: 27 final_stats: 60 final_stats: 60 @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestShockadin-Phase5-Lvl60-StatWeights-Default" value: { - weights: 0.24563 - weights: 0.11292 + weights: 0.28168 + weights: 0.1433 weights: 0 weights: 0 weights: 0 - weights: 0.42509 + weights: 0.48361 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 1.81149 - weights: 0.39963 + weights: 2.0315 + weights: 0.38404 weights: 0 weights: 0 - weights: 0.08826 + weights: 0.10121 weights: 0 - weights: 2.14476 + weights: 2.47585 weights: 0 weights: 0 weights: 0 @@ -99,36 +99,36 @@ stat_weights_results: { dps_results: { key: "TestShockadin-Phase5-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 397.64754 - tps: 435.20541 + dps: 445.35192 + tps: 487.33093 } } dps_results: { key: "TestShockadin-Phase5-Lvl60-Average-Default" value: { - dps: 395.11448 - tps: 432.6894 + 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: 281.61762 - tps: 496.48611 + 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: 84.97457 - tps: 95.66883 + 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: 181.60249 - tps: 199.0725 + dps: 182.76437 + tps: 200.25897 } } dps_results: { @@ -155,22 +155,22 @@ dps_results: { dps_results: { key: "TestShockadin-Phase5-Lvl60-Settings-Human-blank-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P5-Consumes-LongMultiTarget" value: { - dps: 283.81885 - tps: 499.17901 + 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: 85.37421 - tps: 96.05863 + 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: 181.47227 - tps: 198.99145 + dps: 183.28967 + tps: 200.80884 } } dps_results: { @@ -197,7 +197,7 @@ dps_results: { dps_results: { key: "TestShockadin-Phase5-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 355.92742 - tps: 391.45531 + dps: 399.54508 + tps: 439.01167 } } diff --git a/sim/priest/shadow/TestShadow.results b/sim/priest/shadow/TestShadow.results index 8d2b0b1b8..b3478b8bf 100644 --- a/sim/priest/shadow/TestShadow.results +++ b/sim/priest/shadow/TestShadow.results @@ -106,8 +106,8 @@ dps_results: { dps_results: { key: "TestShadow-Phase5-Lvl60-Settings-NightElf-blank-Basic-phase_5-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 626.36854 - tps: 813.79835 + dps: 644.32784 + tps: 810.64669 } } dps_results: { diff --git a/sim/rogue/dps_rogue/TestAssassination.results b/sim/rogue/dps_rogue/TestAssassination.results index 5691d6e61..20e0b4a76 100644 --- a/sim/rogue/dps_rogue/TestAssassination.results +++ b/sim/rogue/dps_rogue/TestAssassination.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 24 + final_stats: 34 final_stats: 0 final_stats: 21 final_stats: 0 @@ -35,7 +35,7 @@ character_stats_results: { final_stats: 17.44283 final_stats: 5 final_stats: 0 - final_stats: 2806.9575 + 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.10757 - weights: 0.15682 + 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.08503 - weights: 0.36349 - weights: 0.71253 + 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: 77.62275 - tps: 55.11216 + dps: 89.26122 + tps: 63.37547 } } dps_results: { @@ -154,7 +154,7 @@ dps_results: { dps_results: { key: "TestAssassination-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 72.75594 - tps: 51.65672 + dps: 83.64203 + tps: 59.38584 } } diff --git a/sim/rogue/dps_rogue/TestCombat.results b/sim/rogue/dps_rogue/TestCombat.results index b7193926f..4766a6389 100644 --- a/sim/rogue/dps_rogue/TestCombat.results +++ b/sim/rogue/dps_rogue/TestCombat.results @@ -13,7 +13,7 @@ character_stats_results: { final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 24 + final_stats: 34 final_stats: 0 final_stats: 21 final_stats: 0 @@ -35,7 +35,7 @@ character_stats_results: { final_stats: 22.44283 final_stats: 5 final_stats: 0 - final_stats: 2806.9575 + 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.10951 - weights: 0.1612 + 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.08657 - weights: 0.7808 - weights: 0.71495 + 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: 79.16551 - tps: 56.20751 + dps: 91.03793 + tps: 64.63693 } } dps_results: { @@ -154,7 +154,7 @@ dps_results: { dps_results: { key: "TestCombat-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 74.38794 - tps: 52.81544 + dps: 85.51688 + tps: 60.71699 } } diff --git a/ui/core/components/inputs/buffs_debuffs.ts b/ui/core/components/inputs/buffs_debuffs.ts index b26a99d20..0544bfa15 100644 --- a/ui/core/components/inputs/buffs_debuffs.ts +++ b/ui/core/components/inputs/buffs_debuffs.ts @@ -498,7 +498,7 @@ 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`, ); diff --git a/ui/core/components/inputs/consumables.ts b/ui/core/components/inputs/consumables.ts index feee3ca08..8c8ca49b1 100644 --- a/ui/core/components/inputs/consumables.ts +++ b/ui/core/components/inputs/consumables.ts @@ -545,12 +545,10 @@ export const JujuFlurry = makeBooleanMiscConsumeInput({ 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: JujuFlurry, picker: IconPicker, stats: [Stat.StatAttackPower] }, - { config: elixirOfCoalescedRegret, picker: IconPicker, stats: [] }, { config: BoglingRoot, picker: IconPicker, stats: [Stat.StatAttackPower] }, ];