From 37139cd2ac45f2c9ec69c81f9123a78f005a490b Mon Sep 17 00:00:00 2001 From: rosenrusinov Date: Wed, 14 Feb 2024 10:12:20 +0100 Subject: [PATCH 1/4] update warlock presets for p2 --- sim/warlock/talents.go | 9 +- .../individual_sim_ui/rotation_tab.ts | 2 +- .../individual_sim_ui/talents_tab.ts | 3 +- ui/core/preset_utils.ts | 4 + ui/warlock/apls/{ => p1}/destruction.apl.json | 0 ui/warlock/apls/p2/affliction.apl.json | 20 +++ ui/warlock/apls/p2/demonology.apl.json | 17 +++ ui/warlock/apls/p2/fire.conflag.apl.json | 22 +++ ui/warlock/apls/p2/fire.imp.apl.json | 22 +++ .../gear_sets/{ => p1}/destruction.gear.json | 0 ui/warlock/gear_sets/p2/fire.imp.gear.json | 19 +++ .../gear_sets/p2/fire.succubus.gear.json | 19 +++ ui/warlock/gear_sets/p2/shadow.gear.json | 19 +++ ui/warlock/presets.ts | 142 +++++++++++------- ui/warlock/sim.ts | 57 +------ 15 files changed, 237 insertions(+), 118 deletions(-) rename ui/warlock/apls/{ => p1}/destruction.apl.json (100%) create mode 100644 ui/warlock/apls/p2/affliction.apl.json create mode 100644 ui/warlock/apls/p2/demonology.apl.json create mode 100644 ui/warlock/apls/p2/fire.conflag.apl.json create mode 100644 ui/warlock/apls/p2/fire.imp.apl.json rename ui/warlock/gear_sets/{ => p1}/destruction.gear.json (100%) create mode 100644 ui/warlock/gear_sets/p2/fire.imp.gear.json create mode 100644 ui/warlock/gear_sets/p2/fire.succubus.gear.json create mode 100644 ui/warlock/gear_sets/p2/shadow.gear.json diff --git a/sim/warlock/talents.go b/sim/warlock/talents.go index 2a8afdc17e..1359adc4b9 100644 --- a/sim/warlock/talents.go +++ b/sim/warlock/talents.go @@ -268,9 +268,9 @@ func (warlock *Warlock) applyFirestone() { fireProcSpell := warlock.GetOrRegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: spellId}, SpellSchool: core.SpellSchoolFire, - ProcMask: core.ProcMaskSpellDamage, + ProcMask: core.ProcMaskEmpty, - CritMultiplier: 1.5, + CritMultiplier: warlock.DefaultSpellCritMultiplier(), DamageMultiplier: 1, ThreatMultiplier: 1, DamageMultiplierAdditive: 1, @@ -278,11 +278,6 @@ func (warlock *Warlock) applyFirestone() { ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { baseDamage := sim.Roll(damageMin, damageMax) + spellCoeff*spell.SpellDamage() - // TODO: Test if LoF Buffs this - //if warlock.LakeOfFireAuras != nil && warlock.LakeOfFireAuras.Get(target).IsActive() { - // baseDamage *= 1.4 - //} - spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMagicCrit) }, }) diff --git a/ui/core/components/individual_sim_ui/rotation_tab.ts b/ui/core/components/individual_sim_ui/rotation_tab.ts index 2bfe14199a..93221d1c84 100644 --- a/ui/core/components/individual_sim_ui/rotation_tab.ts +++ b/ui/core/components/individual_sim_ui/rotation_tab.ts @@ -193,7 +193,7 @@ export class RotationTab extends SimTab { player.setAplRotation(eventID, newRotation.rotation || APLRotation.create()); }); }, - changeEmitters: [this.simUI.player.rotationChangeEmitter, this.simUI.player.talentsChangeEmitter], + changeEmitters: [this.simUI.player.rotationChangeEmitter, this.simUI.player.talentsChangeEmitter, this.simUI.player.levelChangeEmitter], equals: (a: SavedRotation, b: SavedRotation) => { // Uncomment this to debug equivalence checks with preset rotations (e.g. the chip doesn't highlight) //console.log(`Rot A: ${SavedRotation.toJsonString(a, {prettySpaces: 2})}\n\nRot B: ${SavedRotation.toJsonString(b, {prettySpaces: 2})}`); diff --git a/ui/core/components/individual_sim_ui/talents_tab.ts b/ui/core/components/individual_sim_ui/talents_tab.ts index cd2d3b5cb7..624319fd45 100644 --- a/ui/core/components/individual_sim_ui/talents_tab.ts +++ b/ui/core/components/individual_sim_ui/talents_tab.ts @@ -114,7 +114,7 @@ export class TalentsTab extends SimTab { player.setTalentsString(eventID, newTalents.talentsString); }); }, - changeEmitters: [this.simUI.player.talentsChangeEmitter], + changeEmitters: [this.simUI.player.talentsChangeEmitter, this.simUI.player.levelChangeEmitter], equals: (a: SavedTalents, b: SavedTalents) => SavedTalents.equals(a, b), toJson: (a: SavedTalents) => SavedTalents.toJson(a), fromJson: (obj: any) => SavedTalents.fromJson(obj), @@ -128,6 +128,7 @@ export class TalentsTab extends SimTab { name: config.name, isPreset: true, data: config.data, + enableWhen: config.enableWhen, }); }); }); diff --git a/ui/core/preset_utils.ts b/ui/core/preset_utils.ts index f9d2689d99..7deb8780dc 100644 --- a/ui/core/preset_utils.ts +++ b/ui/core/preset_utils.ts @@ -44,6 +44,7 @@ export interface PresetGearOptions { export interface PresetRotationOptions { talentTree?: number, + customCondition?: (player: Player) => boolean, } export function makePresetGear(name: string, gearJson: any, options?: PresetGearOptions): PresetGear { @@ -100,6 +101,9 @@ function makePresetRotationHelper(name: string, rotation: SavedRotation, options if (options?.talentTree != undefined) { conditions.push((player: Player) => player.getTalentTree() == options.talentTree); } + if (options?.customCondition != undefined) { + conditions.push(options.customCondition); + } return { name: name, diff --git a/ui/warlock/apls/destruction.apl.json b/ui/warlock/apls/p1/destruction.apl.json similarity index 100% rename from ui/warlock/apls/destruction.apl.json rename to ui/warlock/apls/p1/destruction.apl.json diff --git a/ui/warlock/apls/p2/affliction.apl.json b/ui/warlock/apls/p2/affliction.apl.json new file mode 100644 index 0000000000..431763e98b --- /dev/null +++ b/ui/warlock/apls/p2/affliction.apl.json @@ -0,0 +1,20 @@ +{ + "type": "TypeAPL", + "prepullActions": [ + {"action":{"castSpell":{"spellId":{"spellId":7641,"rank":6}}},"doAtValue":{"const":{"val":"-3s"}}} + ], + "priorityList": [ + {"action":{"condition":{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}}}},"castSpell":{"spellId":{"spellId":7658,"rank":2}}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"25%"}}}}]}},"castSpell":{"spellId":{"itemId":6149}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"3.5"}}}},"castSpell":{"spellId":{"spellId":17920,"rank":3}}}}, + {"action":{"condition":{"auraIsActive":{"auraId":{"spellId":17941}}},"castSpell":{"spellId":{"spellId":7641,"rank":6}}}}, + {"action":{"condition":{"cmp":{"op":"OpEq","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}},"rhs":{"const":{"val":"118.5s"}}}},"castSpell":{"spellId":{"spellId":437327}}}}, + {"action":{"castSpell":{"spellId":{"spellId":403501}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15.1s"}}}},"multidot":{"spellId":{"spellId":7651,"rank":4},"maxDots":1,"maxOverlap":{"const":{"val":"0ms"}}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"18.1s"}}}},"multidot":{"spellId":{"spellId":7648,"rank":4},"maxDots":1,"maxOverlap":{"const":{"val":"0ms"}}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15.1s"}}}},"multidot":{"spellId":{"spellId":11665,"rank":5},"maxDots":1,"maxOverlap":{"const":{"val":"0ms"}}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"30.1s"}}}},"multidot":{"spellId":{"spellId":18879,"rank":2},"maxDots":1,"maxOverlap":{"const":{"val":"0ms"}}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"15%"}}}},"castSpell":{"spellId":{"spellId":11687,"rank":4}}}}, + {"action":{"castSpell":{"spellId":{"spellId":7641,"rank":6}}}} + ] +} \ No newline at end of file diff --git a/ui/warlock/apls/p2/demonology.apl.json b/ui/warlock/apls/p2/demonology.apl.json new file mode 100644 index 0000000000..9ee4d796a3 --- /dev/null +++ b/ui/warlock/apls/p2/demonology.apl.json @@ -0,0 +1,17 @@ +{ + "type": "TypeAPL", + "prepullActions": [ + {"action":{"castSpell":{"spellId":{"spellId":19028}}},"doAtValue":{"const":{"val":"-30s"}}}, + {"action":{"castSpell":{"spellId":{"spellId":412758}}},"doAtValue":{"const":{"val":"-2.3"}}} + ], + "priorityList": [ + {"action":{"condition":{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}}}},"castSpell":{"spellId":{"spellId":7658,"rank":2}}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"25%"}}}}]}},"castSpell":{"spellId":{"itemId":6149}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"3.5"}}}},"castSpell":{"spellId":{"spellId":17920,"rank":3}}}}, + {"action":{"condition":{"and":{"vals":[{"auraIsActive":{"auraId":{"spellId":412758}}},{"cmp":{"op":"OpEq","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}},"rhs":{"const":{"val":"118.5s"}}}}]}},"castSpell":{"spellId":{"spellId":437327}}}}, + {"action":{"castSpell":{"spellId":{"spellId":403629}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}},"multidot":{"spellId":{"spellId":11665,"rank":5},"maxDots":1,"maxOverlap":{"const":{"val":"0ms"}}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"10%"}}}},"castSpell":{"spellId":{"spellId":11687,"rank":4}}}}, + {"action":{"castSpell":{"spellId":{"spellId":412758}}}} + ] +} \ No newline at end of file diff --git a/ui/warlock/apls/p2/fire.conflag.apl.json b/ui/warlock/apls/p2/fire.conflag.apl.json new file mode 100644 index 0000000000..32699aeef6 --- /dev/null +++ b/ui/warlock/apls/p2/fire.conflag.apl.json @@ -0,0 +1,22 @@ +{ + "type": "TypeAPL", + "prepullActions": [ + {"action":{"castSpell":{"spellId":{"spellId":412758}}},"doAtValue":{"const":{"val":"-2.25s"}}} + ], + "priorityList": [ + {"action":{"condition":{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}}}},"castSpell":{"spellId":{"spellId":7658,"rank":2}}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"25%"}}}}]}},"castSpell":{"spellId":{"itemId":6149}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"1.5"}}}},"castSpell":{"spellId":{"spellId":18869,"rank":4}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"3.75"}}}},"castSpell":{"spellId":{"spellId":17920,"rank":3}}}}, + {"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}}}},{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"30%"}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}}]}},"castSpell":{"spellId":{"spellId":11687,"rank":4}}}}, + {"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"13s"}}}}]}},"channelSpell":{"spellId":{"spellId":5740,"rank":1},"interruptIf":{"const":{"val":"true"}},"instantInterrupt":true}}}, + {"action":{"condition":{"and":{"vals":[{"auraIsActive":{"auraId":{"spellId":412758}}},{"cmp":{"op":"OpEq","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}},"rhs":{"const":{"val":"13.5s"}}}},{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}}]}},"castSpell":{"spellId":{"spellId":437327}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}},"multidot":{"spellId":{"spellId":11665,"rank":5},"maxDots":1,"maxOverlap":{"const":{"val":"0s"}}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":11665,"rank":5}}},"rhs":{"const":{"val":"2999ms"}}}},"castSpell":{"spellId":{"spellId":17962,"rank":1}}}}, + {"action":{"castSpell":{"spellId":{"spellId":403629}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}},"rhs":{"const":{"val":"2.25s"}}}},"castSpell":{"spellId":{"spellId":412758}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"4.5s"}}}},"castSpell":{"spellId":{"spellId":412758}}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}},"rhs":{"const":{"val":"2s"}}}},{"cmp":{"op":"OpGe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"30%"}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"13s"}}}}]}},"channelSpell":{"spellId":{"spellId":5740,"rank":1},"interruptIf":{"const":{"val":"true"}},"instantInterrupt":true}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"10%"}}}},"castSpell":{"spellId":{"spellId":11687,"rank":4}}}} + ] +} \ No newline at end of file diff --git a/ui/warlock/apls/p2/fire.imp.apl.json b/ui/warlock/apls/p2/fire.imp.apl.json new file mode 100644 index 0000000000..7c1d959ced --- /dev/null +++ b/ui/warlock/apls/p2/fire.imp.apl.json @@ -0,0 +1,22 @@ +{ + "type": "TypeAPL", + "prepullActions": [ + {"action":{"castSpell":{"spellId":{"spellId":412758}}},"doAtValue":{"const":{"val":"-2.25s"}}} + ], + "priorityList": [ + {"action":{"condition":{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}}}},"castSpell":{"spellId":{"spellId":7658,"rank":2}}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"25%"}}}}]}},"castSpell":{"spellId":{"itemId":6149}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"1.5"}}}},"castSpell":{"spellId":{"spellId":18869,"rank":4}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"3.75"}}}},"castSpell":{"spellId":{"spellId":17920,"rank":3}}}}, + {"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}}}},{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"30%"}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}}]}},"castSpell":{"spellId":{"spellId":11687,"rank":4}}}}, + {"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"13s"}}}}]}},"channelSpell":{"spellId":{"spellId":5740,"rank":1},"interruptIf":{"const":{"val":"true"}},"instantInterrupt":true}}}, + {"action":{"condition":{"and":{"vals":[{"auraIsActive":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":7658,"rank":2}}},{"cmp":{"op":"OpEq","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}},"rhs":{"const":{"val":"13.5"}}}},{"auraIsActive":{"auraId":{"spellId":412758}}}]}},"castSpell":{"spellId":{"spellId":437327}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15s"}}}},"multidot":{"spellId":{"spellId":11665,"rank":5},"maxDots":1,"maxOverlap":{"const":{"val":"0s"}}}}}, + {"action":{"castSpell":{"spellId":{"spellId":403629}}}}, + {"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}},"rhs":{"const":{"val":"2.25s"}}}},"castSpell":{"spellId":{"spellId":412758}}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"4.5s"}}}},"castSpell":{"spellId":{"spellId":412758}}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"sourceUnit":{"type":"CurrentTarget"},"auraId":{"spellId":403650}}},"rhs":{"const":{"val":"2s"}}}},{"cmp":{"op":"OpGe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"30%"}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"13s"}}}}]}},"channelSpell":{"spellId":{"spellId":5740,"rank":1},"interruptIf":{"const":{"val":"true"}},"instantInterrupt":true}}}, + {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"10%"}}}},"castSpell":{"spellId":{"spellId":11687,"rank":4}}}}, + {"action":{"castSpell":{"spellId":{"spellId":412758}}}} + ] +} \ No newline at end of file diff --git a/ui/warlock/gear_sets/destruction.gear.json b/ui/warlock/gear_sets/p1/destruction.gear.json similarity index 100% rename from ui/warlock/gear_sets/destruction.gear.json rename to ui/warlock/gear_sets/p1/destruction.gear.json diff --git a/ui/warlock/gear_sets/p2/fire.imp.gear.json b/ui/warlock/gear_sets/p2/fire.imp.gear.json new file mode 100644 index 0000000000..30ab690862 --- /dev/null +++ b/ui/warlock/gear_sets/p2/fire.imp.gear.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":215111}, + {"id":213345}, + {"id":213301}, + {"id":216620}, + {"id":215377,"enchant":866,"rune":403666}, + {"id":19597,"enchant":905}, + {"id":10019,"rune":403629}, + {"id":213321,"rune":426316}, + {"id":215379,"rune":412758}, + {"id":215378,"enchant":911,"rune":412732}, + {"id":213283}, + {"id":19524}, + {"id":213347}, + {"id":216509}, + {"id":213410,"enchant":7210}, + {"id":15107}, + {"id":213559} +]} \ No newline at end of file diff --git a/ui/warlock/gear_sets/p2/fire.succubus.gear.json b/ui/warlock/gear_sets/p2/fire.succubus.gear.json new file mode 100644 index 0000000000..4bebc7a3f2 --- /dev/null +++ b/ui/warlock/gear_sets/p2/fire.succubus.gear.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":215111}, + {"id":213345}, + {"id":213301}, + {"id":216620}, + {"id":215377,"enchant":866,"rune":412727}, + {"id":19597,"enchant":905}, + {"id":10019,"rune":403629}, + {"id":213321,"rune":426316}, + {"id":215379,"rune":412758}, + {"id":215378,"enchant":911,"rune":412732}, + {"id":213283}, + {"id":216508}, + {"id":213347}, + {"id":211450}, + {"id":213410,"enchant":7210}, + {"id":15107}, + {"id":213559} +]} \ No newline at end of file diff --git a/ui/warlock/gear_sets/p2/shadow.gear.json b/ui/warlock/gear_sets/p2/shadow.gear.json new file mode 100644 index 0000000000..38016c3f0d --- /dev/null +++ b/ui/warlock/gear_sets/p2/shadow.gear.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":215111}, + {"id":213345}, + {"id":213301}, + {"id":216620}, + {"id":215377,"enchant":866,"rune":403668}, + {"id":19597,"enchant":905}, + {"id":10019,"rune":403501}, + {"id":20098,"rune":426316}, + {"id":215379,"rune":412689}, + {"id":215378,"enchant":911,"rune":412732}, + {"id":213283}, + {"id":216507}, + {"id":213347}, + {"id":211450}, + {"id":213410,"enchant":7210}, + {"id":15108}, + {"id":213559} +]} \ No newline at end of file diff --git a/ui/warlock/presets.ts b/ui/warlock/presets.ts index 0b6fbc5765..50bdeac7ee 100644 --- a/ui/warlock/presets.ts +++ b/ui/warlock/presets.ts @@ -1,7 +1,10 @@ import { Phase } from '../core/constants/other.js'; import { + AgilityElixir, Consumes, Debuffs, + EnchantedSigil, + Explosive, FirePowerBuff, Flask, Food, @@ -9,6 +12,8 @@ import { Potions, Profession, RaidBuffs, + SaygesFortune, + SpellPowerBuff, TristateEffect, WeaponImbue } from '../core/proto/common.js'; @@ -20,60 +25,81 @@ import { WarlockOptions_WeaponImbue as WarlockWeaponImbue, } from '../core/proto/warlock.js'; import * as PresetUtils from '../core/preset_utils.js'; +import { Player } from '../core/player.js'; + +// gear +// P1 +import DestructionGear from './gear_sets/p1/destruction.gear.json'; +// P2 +import FireImpGear from './gear_sets/p2/fire.imp.gear.json'; +import FireSuccubusGear from './gear_sets/p2/fire.succubus.gear.json'; +import ShadowGear from './gear_sets/p2/shadow.gear.json'; + +// apls +// P1 +import DestroP1APL from './apls/p1/destruction.apl.json'; +// P2 +import DestroMgiAPL from './apls/p2/fire.imp.apl.json'; +import DestroConflagAPL from './apls/p2/fire.conflag.apl.json'; +import DemonologyAPL from './apls/p2/demonology.apl.json'; +import AfflictionAPL from './apls/p2/affliction.apl.json'; /////////////////////////////////////////////////////////////////////////// // Gear Presets /////////////////////////////////////////////////////////////////////////// -import DestructionGear from './gear_sets/destruction.gear.json'; -import DestructionAPL from './apls/destruction.apl.json'; +export const GearDestructionPhase1 = PresetUtils.makePresetGear('Destruction', DestructionGear, { customCondition: (player) => player.getLevel() == 25 }); -export const GearAfflictionPhase1 = PresetUtils.makePresetGear('Affliction', DestructionGear); -export const GearDemonologyPhase1 = PresetUtils.makePresetGear('Demonology', DestructionGear); -export const GearDestructionPhase1 = PresetUtils.makePresetGear('Destruction', DestructionGear); +export const FireImpGearPreset = PresetUtils.makePresetGear('Fire Imp', FireImpGear, { customCondition: (player) => player.getLevel() == 40 }); +export const FireSuccubusGearPreset = PresetUtils.makePresetGear('Fire Succubus', FireSuccubusGear, { customCondition: (player) => player.getLevel() == 40 }); +export const ShadowGearPreset = PresetUtils.makePresetGear('Shadow', ShadowGear, { customCondition: (player) => player.getLevel() == 40 }); export const GearPresets = { - [Phase.Phase1]: [ - GearAfflictionPhase1, - GearDemonologyPhase1, + [Phase.Phase1]: [ GearDestructionPhase1, - ], - [Phase.Phase2]: [ - ] + ], + [Phase.Phase2]: [ + FireImpGearPreset, + FireSuccubusGearPreset, + ShadowGearPreset, + ] }; -// TODO: Add Phase 2 preset and pull from map -export const DefaultGear = GearPresets[Phase.Phase1][0]; +export const DefaultGear = FireImpGearPreset; /////////////////////////////////////////////////////////////////////////// // APL Presets /////////////////////////////////////////////////////////////////////////// -export const RotationAfflictionPhase1 = PresetUtils.makePresetAPLRotation('Affliction', DestructionAPL); -export const RotationDemonologyPhase1 = PresetUtils.makePresetAPLRotation('Demonology', DestructionAPL); -export const RotationDestructionPhase1 = PresetUtils.makePresetAPLRotation('Destruction', DestructionAPL); +export const RotationDestructionPhase1 = PresetUtils.makePresetAPLRotation('Destruction', DestroP1APL, { customCondition: (player) => player.getLevel() == 25 }); + +export const DestroMgiRotationPreset = PresetUtils.makePresetAPLRotation('Destro Imp', DestroMgiAPL, { customCondition: (player) => player.getLevel() == 40 }); +export const DestroConflagRotationPreset = PresetUtils.makePresetAPLRotation('Destro Conflag', DestroConflagAPL, { customCondition: (player) => player.getLevel() == 40 }); +export const DemonologyRotationPreset = PresetUtils.makePresetAPLRotation('Demonology', DemonologyAPL, { customCondition: (player) => player.getLevel() == 40 }); +export const AfflictionRotationPreset = PresetUtils.makePresetAPLRotation('Affliction', AfflictionAPL, { customCondition: (player) => player.getLevel() == 40 }); export const APLPresets = { - [Phase.Phase1]: [ - RotationAfflictionPhase1, - RotationDemonologyPhase1, + [Phase.Phase1]: [ RotationDestructionPhase1, - ], - [Phase.Phase2]: [ - ] + ], + [Phase.Phase2]: [ + DestroMgiRotationPreset, + DestroConflagRotationPreset, + DemonologyRotationPreset, + AfflictionRotationPreset + ] }; -// TODO: Add Phase 2 preset and pull from map export const DefaultAPLs: Record> = { - 25: { - 0: APLPresets[Phase.Phase1][0], - 1: APLPresets[Phase.Phase1][1], - 2: APLPresets[Phase.Phase1][2], + 25: { + 0: RotationDestructionPhase1, + 1: RotationDestructionPhase1, + 2: RotationDestructionPhase1, }, - 40: { - 0: APLPresets[Phase.Phase1][0], - 1: APLPresets[Phase.Phase1][1], - 2: APLPresets[Phase.Phase1][2], + 40: { + 0: AfflictionRotationPreset, + 1: DemonologyRotationPreset, + 2: DestroMgiRotationPreset, } }; @@ -84,27 +110,26 @@ export const DefaultAPLs: Record) => player.getLevel() == 25}; + +export const DestroMgiTalents = {name: 'Destro Imp', data: SavedTalents.create({ talentsString: '-01-055020512000415' }), enableWhen: (player:Player) => player.getLevel() == 40}; +export const DestroConflagTalents = {name: 'Destro Conflag', data: SavedTalents.create({ talentsString: '--0550205120005141' }), enableWhen: (player:Player) => player.getLevel() == 40}; +export const DemonologyTalents = {name: 'Demonology', data: SavedTalents.create({ talentsString: '-2050033132501051' }), enableWhen: (player:Player) => player.getLevel() == 40}; +export const AfflictionTalents = {name: 'Affliction', data: SavedTalents.create({ talentsString: '3500253012201105--1' }), enableWhen: (player:Player) => player.getLevel() == 40}; export const TalentPresets = { - [Phase.Phase1]: [ - DestroTalents, - ], - [Phase.Phase2]: [ - ] + [Phase.Phase1]: [ + DestroP1Talents, + ], + [Phase.Phase2]: [ + DestroMgiTalents, + DestroConflagTalents, + DemonologyTalents, + AfflictionTalents + ] }; -// TODO: Add Phase 2 preset and pull from map -export const DefaultTalentsAffliction = TalentPresets[Phase.Phase1][0]; -export const DefaultTalentsDemonology = TalentPresets[Phase.Phase1][0]; -export const DefaultTalentsDestruction = TalentPresets[Phase.Phase1][0]; - -export const DefaultTalents = DefaultTalentsDestruction; +export const DefaultTalents = DestroMgiTalents; /////////////////////////////////////////////////////////////////////////// // Options @@ -119,32 +144,39 @@ export const DefaultOptions = WarlockOptions.create({ export const DefaultConsumes = Consumes.create({ flask: Flask.FlaskUnknown, food: Food.FoodSmokedSagefish, - defaultPotion: Potions.ManaPotion, - mainHandImbue: WeaponImbue.BlackfathomManaOil, + defaultPotion: Potions.GreaterManaPotion, + mainHandImbue: WeaponImbue.LesserWizardOil, firePowerBuff: FirePowerBuff.ElixirOfFirepower, + spellPowerBuff: SpellPowerBuff.LesserArcaneElixir, + enchantedSigil: EnchantedSigil.InnovationSigil, + agilityElixir: AgilityElixir.ElixirOfAgility, + fillerExplosive: Explosive.ExplosiveEzThroRadiationBomb, }); export const DefaultRaidBuffs = RaidBuffs.create({ powerWordFortitude: TristateEffect.TristateEffectImproved, giftOfTheWild: TristateEffect.TristateEffectImproved, arcaneBrilliance: true, - divineSpirit: true, aspectOfTheLion: true, + blessingOfWisdom: TristateEffect.TristateEffectRegular, + thorns: TristateEffect.TristateEffectRegular, }); export const DefaultIndividualBuffs = IndividualBuffs.create({ - blessingOfWisdom: TristateEffect.TristateEffectImproved, - blessingOfMight: TristateEffect.TristateEffectImproved, + saygesFortune: SaygesFortune.SaygesDamage, + sparkOfInspiration: true, }); export const DefaultDebuffs = Debuffs.create({ - homunculi: 70, // 70% average uptime default + homunculi: 100, faerieFire: true, + improvedScorch: true, + curseOfElements: true, }); export const OtherDefaults = { distanceFromTarget: 25, - profession1: Profession.Engineering, + profession1: Profession.Enchanting, profession2: Profession.Tailoring, channelClipDelay: 150, }; diff --git a/ui/warlock/sim.ts b/ui/warlock/sim.ts index 448310d1f3..4623ecfe3b 100644 --- a/ui/warlock/sim.ts +++ b/ui/warlock/sim.ts @@ -24,7 +24,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWarlock, { cssScheme: 'warlock', // List any known bugs / issues here and they'll be shown on the site. knownIssues: [ - "Most abilities and pets are work in progress" ], // All stats for which EP should be calculated. @@ -214,63 +213,13 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWarlock, { }, raidSimPresets: [ - { - spec: Spec.SpecWarlock, - tooltip: 'Affliction DPS', - defaultName: 'Affliction', - iconUrl: getSpecIcon(Class.ClassWarlock, 0), - - talents: Presets.DefaultTalentsAffliction.data, - specOptions: Presets.DefaultOptions, - consumes: Presets.DefaultConsumes, - defaultFactionRaces: { - [Faction.Unknown]: Race.RaceUnknown, - [Faction.Alliance]: Race.RaceHuman, - [Faction.Horde]: Race.RaceOrc, - }, - defaultGear: { - [Faction.Unknown]: {}, - [Faction.Alliance]: { - 1: Presets.GearPresets[Phase.Phase1][0].gear, - }, - [Faction.Horde]: { - 1: Presets.GearPresets[Phase.Phase1][0].gear, - }, - }, - otherDefaults: Presets.OtherDefaults, - }, - { - spec: Spec.SpecWarlock, - tooltip: 'Demonology DPS', - defaultName: 'Demonology', - iconUrl: getSpecIcon(Class.ClassWarlock, 1), - - talents: Presets.DefaultTalentsDemonology.data, - specOptions: Presets.DefaultOptions, - consumes: Presets.DefaultConsumes, - defaultFactionRaces: { - [Faction.Unknown]: Race.RaceUnknown, - [Faction.Alliance]: Race.RaceHuman, - [Faction.Horde]: Race.RaceOrc, - }, - defaultGear: { - [Faction.Unknown]: {}, - [Faction.Alliance]: { - 1: Presets.GearPresets[Phase.Phase1][1].gear, - }, - [Faction.Horde]: { - 1: Presets.GearPresets[Phase.Phase1][1].gear, - }, - }, - otherDefaults: Presets.OtherDefaults, - }, { spec: Spec.SpecWarlock, tooltip: 'Destruction DPS', defaultName: 'Destruction', iconUrl: getSpecIcon(Class.ClassWarlock, 2), - talents: Presets.DefaultTalentsDestruction.data, + talents: Presets.DestroMgiTalents.data, specOptions: Presets.DefaultOptions, consumes: Presets.DefaultConsumes, defaultFactionRaces: { @@ -281,10 +230,10 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWarlock, { defaultGear: { [Faction.Unknown]: {}, [Faction.Alliance]: { - 1: Presets.GearPresets[Phase.Phase1][2].gear, + 1: Presets.FireImpGearPreset.gear, }, [Faction.Horde]: { - 1: Presets.GearPresets[Phase.Phase1][2].gear, + 1: Presets.FireImpGearPreset.gear, }, }, otherDefaults: Presets.OtherDefaults, From 892b3e3d1d5ae0a0ff0b96e6038055a02082ac5c Mon Sep 17 00:00:00 2001 From: rosenrusinov Date: Wed, 14 Feb 2024 10:20:26 +0100 Subject: [PATCH 2/4] update tests --- sim/warlock/dps/TestAffliction.results | 108 ++++++++++++---------- sim/warlock/dps/TestDemonology.results | 116 +++++++++++------------ sim/warlock/dps/TestDestruction.results | 118 +++++++++++------------- sim/warlock/dps/dps_warlock_test.go | 28 +++--- 4 files changed, 182 insertions(+), 188 deletions(-) diff --git a/sim/warlock/dps/TestAffliction.results b/sim/warlock/dps/TestAffliction.results index 39831afa52..eb40381254 100644 --- a/sim/warlock/dps/TestAffliction.results +++ b/sim/warlock/dps/TestAffliction.results @@ -1,47 +1,47 @@ character_stats_results: { key: "TestAffliction-CharacterStats-Default" value: { - final_stats: 77.44 - final_stats: 36.74 - final_stats: 110.44 + final_stats: 78.54 + final_stats: 37.84 final_stats: 141.24 - final_stats: 119.24 - final_stats: 254 + final_stats: 187.44 + final_stats: 126.94 + final_stats: 375 final_stats: 0 - final_stats: 44 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 20 - final_stats: 0 - final_stats: 10.7592 - final_stats: 0 - final_stats: 10 - final_stats: 206.14 - final_stats: 0 - final_stats: 5 + final_stats: 28 + final_stats: 30 + final_stats: 1 + final_stats: 14.74118 final_stats: 0 final_stats: 0 + final_stats: 207.24 + final_stats: 1 + final_stats: 7 final_stats: 0 - final_stats: 2336.6 final_stats: 0 final_stats: 0 - final_stats: 1418.98 + final_stats: 3029.6 final_stats: 0 final_stats: 0 + final_stats: 1549.18 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 1203.4 - final_stats: 0 final_stats: 0 final_stats: 0 + final_stats: 1511.4 + final_stats: 5 + final_stats: 10 final_stats: 0 - final_stats: 15 - final_stats: 21 + final_stats: 22 + final_stats: 10 + final_stats: 190 final_stats: 0 final_stats: 0 final_stats: 0 @@ -51,114 +51,120 @@ character_stats_results: { dps_results: { key: "TestAffliction-AllItems-HyperconductiveMender'sMeditation" value: { - dps: 7.27091 + dps: 7.95013 } } dps_results: { key: "TestAffliction-AllItems-HyperconductiveWizard'sAttire" value: { - dps: 7.53573 + dps: 8.34239 } } dps_results: { key: "TestAffliction-AllItems-InfernalPactEssence-216509" value: { - dps: 7.63531 + dps: 9.54976 } } dps_results: { key: "TestAffliction-AllItems-IrradiatedGarments" value: { - dps: 7.77673 + dps: 8.59345 } } dps_results: { key: "TestAffliction-AllItems-TwilightInvoker'sVestments" value: { - dps: 7.24893 + dps: 7.86167 } } dps_results: { key: "TestAffliction-Average-Default" value: { - dps: 7.35834 + dps: 9.13026 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-AffItemSwap--FullBuffs-Full Consumes-LongMultiTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock--FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 7.33566 + dps: 9.05091 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-AffItemSwap--FullBuffs-Full Consumes-LongSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock--FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 7.33566 + dps: 9.05091 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-AffItemSwap--FullBuffs-Full Consumes-ShortSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock--FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 10.11362 + dps: 12.10625 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-AffItemSwap--NoBuffs-Full Consumes-LongMultiTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock--NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 5.61351 + dps: 6.85482 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-AffItemSwap--NoBuffs-Full Consumes-LongSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock--NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 5.61351 + dps: 6.85482 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-AffItemSwap--NoBuffs-Full Consumes-ShortSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock--NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 7.96628 + dps: 9.70642 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-Affliction Warlock--FullBuffs-Full Consumes-LongMultiTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock-affliction-FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 7.33566 + dps: 24.90843 + tps: 15.8571 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-Affliction Warlock--FullBuffs-Full Consumes-LongSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock-affliction-FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 7.33566 + dps: 24.90843 + tps: 15.8571 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-Affliction Warlock--FullBuffs-Full Consumes-ShortSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock-affliction-FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 10.11362 + dps: 27.42304 + tps: 15.2314 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-Affliction Warlock--NoBuffs-Full Consumes-LongMultiTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock-affliction-NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 5.61351 + dps: 22.23656 + tps: 15.45391 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-Affliction Warlock--NoBuffs-Full Consumes-LongSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock-affliction-NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 5.61351 + dps: 22.23656 + tps: 15.45391 } } dps_results: { - key: "TestAffliction-Settings-Orc-25-destruction-Affliction Warlock--NoBuffs-Full Consumes-ShortSingleTarget" + key: "TestAffliction-Settings-Orc-25-shadow-Affliction Warlock-affliction-NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 7.96628 + dps: 24.24377 + tps: 14.16757 } } dps_results: { key: "TestAffliction-SwitchInFrontOfTarget-Default" value: { - dps: 7.33566 + dps: 9.05091 } } diff --git a/sim/warlock/dps/TestDemonology.results b/sim/warlock/dps/TestDemonology.results index a0ebe51ffe..9d2f2ef7bc 100644 --- a/sim/warlock/dps/TestDemonology.results +++ b/sim/warlock/dps/TestDemonology.results @@ -1,47 +1,47 @@ character_stats_results: { key: "TestDemonology-CharacterStats-Default" value: { - final_stats: 77.44 - final_stats: 36.74 - final_stats: 113.41 - final_stats: 141.24 - final_stats: 119.24 - final_stats: 254 + final_stats: 78.54 + final_stats: 37.84 + final_stats: 164.956 + final_stats: 183.04 + final_stats: 120.593 + final_stats: 373 final_stats: 0 - final_stats: 44 + final_stats: 28 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 20 - final_stats: 0 - final_stats: 10.7592 - final_stats: 0 - final_stats: 10 - final_stats: 206.14 - final_stats: 0 - final_stats: 5 + final_stats: 30 + final_stats: 2 + final_stats: 24.55242 final_stats: 0 final_stats: 0 + final_stats: 207.24 + final_stats: 2 + final_stats: 17 final_stats: 0 - final_stats: 2336.6 final_stats: 0 final_stats: 0 - final_stats: 1418.98 + final_stats: 2963.6 final_stats: 0 final_stats: 0 + final_stats: 1551.18 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 1233.1 - final_stats: 0 final_stats: 0 final_stats: 0 + final_stats: 1748.56 + final_stats: 5 + final_stats: 10 final_stats: 0 - final_stats: 15 - final_stats: 21 + final_stats: 22 + final_stats: 10 + final_stats: 160 final_stats: 0 final_stats: 0 final_stats: 0 @@ -51,120 +51,120 @@ character_stats_results: { dps_results: { key: "TestDemonology-AllItems-HyperconductiveMender'sMeditation" value: { - dps: 12.7897 + dps: 2.91314 } } dps_results: { key: "TestDemonology-AllItems-HyperconductiveWizard'sAttire" value: { - dps: 13.35037 + dps: 3.08306 } } dps_results: { key: "TestDemonology-AllItems-InfernalPactEssence-216509" value: { - dps: 13.53647 + dps: 3.39406 } } dps_results: { key: "TestDemonology-AllItems-IrradiatedGarments" value: { - dps: 13.88424 + dps: 3.16742 } } dps_results: { key: "TestDemonology-AllItems-TwilightInvoker'sVestments" value: { - dps: 12.86928 + dps: 3.007 } } dps_results: { key: "TestDemonology-Average-Default" value: { - dps: 12.92039 + dps: 3.34009 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock--FullBuffs-Full Consumes-LongMultiTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 12.86203 + dps: 3.36789 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock--FullBuffs-Full Consumes-LongSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 12.86203 + dps: 3.34842 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock--FullBuffs-Full Consumes-ShortSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 17.96682 + dps: 3.80437 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock--NoBuffs-Full Consumes-LongMultiTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 9.49293 + dps: 2.82457 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock--NoBuffs-Full Consumes-LongSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 9.49293 + dps: 2.82836 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock--NoBuffs-Full Consumes-ShortSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 13.72867 + dps: 3.22131 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock-destruction-FullBuffs-Full Consumes-LongMultiTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 189.05402 - tps: 435.30858 + dps: 205.36138 + tps: 201.80626 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock-destruction-FullBuffs-Full Consumes-LongSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 189.05402 - tps: 184.28565 + dps: 205.37142 + tps: 201.80626 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock-destruction-FullBuffs-Full Consumes-ShortSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 223.91067 - tps: 202.84356 + dps: 282.93371 + tps: 278.84667 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock-destruction-NoBuffs-Full Consumes-LongMultiTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 175.6707 - tps: 468.08718 + dps: 169.12171 + tps: 166.09768 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock-destruction-NoBuffs-Full Consumes-LongSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 175.6707 - tps: 177.84192 + dps: 169.11578 + tps: 166.09768 } } dps_results: { - key: "TestDemonology-Settings-Orc-25-destruction-Demonology Warlock-destruction-NoBuffs-Full Consumes-ShortSingleTarget" + key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 207.77038 - tps: 196.83085 + dps: 269.6525 + tps: 266.09577 } } dps_results: { key: "TestDemonology-SwitchInFrontOfTarget-Default" value: { - dps: 12.86203 + dps: 3.37055 } } diff --git a/sim/warlock/dps/TestDestruction.results b/sim/warlock/dps/TestDestruction.results index feabe6f83b..bb6011ebba 100644 --- a/sim/warlock/dps/TestDestruction.results +++ b/sim/warlock/dps/TestDestruction.results @@ -1,33 +1,33 @@ character_stats_results: { key: "TestDestruction-CharacterStats-Default" value: { - final_stats: 77.44 - final_stats: 36.74 - final_stats: 113.41 - final_stats: 141.24 - final_stats: 119.24 - final_stats: 254 + final_stats: 78.54 + final_stats: 37.84 + final_stats: 140.14 + final_stats: 174.24 + final_stats: 126.94 + final_stats: 371 final_stats: 0 - final_stats: 44 + final_stats: 14 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 20 + final_stats: 33 + final_stats: 2 + final_stats: 14.1749 final_stats: 0 - final_stats: 10.7592 final_stats: 0 - final_stats: 10 - final_stats: 206.14 - final_stats: 0 - final_stats: 5 + final_stats: 207.24 + final_stats: 2 + final_stats: 7 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 2336.6 + final_stats: 2831.6 final_stats: 0 final_stats: 0 - final_stats: 1418.98 + final_stats: 1551.18 final_stats: 0 final_stats: 0 final_stats: 0 @@ -35,13 +35,13 @@ character_stats_results: { final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 1233.1 - final_stats: 0 - final_stats: 0 + final_stats: 1500.4 + final_stats: 5 + final_stats: 10 final_stats: 0 + final_stats: 22 final_stats: 0 - final_stats: 15 - final_stats: 21 + final_stats: 160 final_stats: 0 final_stats: 0 final_stats: 0 @@ -51,120 +51,114 @@ character_stats_results: { dps_results: { key: "TestDestruction-AllItems-HyperconductiveMender'sMeditation" value: { - dps: 12.7897 + dps: 12.99321 } } dps_results: { key: "TestDestruction-AllItems-HyperconductiveWizard'sAttire" value: { - dps: 13.35037 - } -} -dps_results: { - key: "TestDestruction-AllItems-InfernalPactEssence-216509" - value: { - dps: 13.53647 + dps: 13.52551 } } dps_results: { key: "TestDestruction-AllItems-IrradiatedGarments" value: { - dps: 13.88424 + dps: 14.09383 } } dps_results: { key: "TestDestruction-AllItems-TwilightInvoker'sVestments" value: { - dps: 12.86928 + dps: 13.00885 } } dps_results: { key: "TestDestruction-Average-Default" value: { - dps: 12.92039 + dps: 15.06996 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock--FullBuffs-Full Consumes-LongMultiTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock--FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 12.86203 + dps: 15.03589 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock--FullBuffs-Full Consumes-LongSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock--FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 12.86203 + dps: 15.03589 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock--FullBuffs-Full Consumes-ShortSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock--FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 17.96682 + dps: 23.29129 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock--NoBuffs-Full Consumes-LongMultiTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock--NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 9.49293 + dps: 11.14118 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock--NoBuffs-Full Consumes-LongSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock--NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 9.49293 + dps: 11.14118 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock--NoBuffs-Full Consumes-ShortSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock--NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 13.72867 + dps: 17.85159 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock-destruction-FullBuffs-Full Consumes-LongMultiTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock-fire.imp-FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 189.05402 - tps: 435.30858 + dps: 222.14932 + tps: 205.2317 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock-destruction-FullBuffs-Full Consumes-LongSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock-fire.imp-FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 189.05402 - tps: 184.28565 + dps: 222.14932 + tps: 205.2317 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock-destruction-FullBuffs-Full Consumes-ShortSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock-fire.imp-FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 223.91067 - tps: 202.84356 + dps: 395.89706 + tps: 363.38598 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock-destruction-NoBuffs-Full Consumes-LongMultiTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock-fire.imp-NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 175.6707 - tps: 468.08718 + dps: 174.02859 + tps: 161.48436 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock-destruction-NoBuffs-Full Consumes-LongSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock-fire.imp-NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 175.6707 - tps: 177.84192 + dps: 174.02859 + tps: 161.48436 } } dps_results: { - key: "TestDestruction-Settings-Orc-25-destruction-Destruction Warlock-destruction-NoBuffs-Full Consumes-ShortSingleTarget" + key: "TestDestruction-Settings-Orc-25-fire.imp-Destruction Warlock-fire.imp-NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 207.77038 - tps: 196.83085 + dps: 363.95548 + tps: 339.19794 } } dps_results: { key: "TestDestruction-SwitchInFrontOfTarget-Default" value: { - dps: 12.86203 + dps: 15.03589 } } diff --git a/sim/warlock/dps/dps_warlock_test.go b/sim/warlock/dps/dps_warlock_test.go index 633165ec7d..90ad84efd4 100644 --- a/sim/warlock/dps/dps_warlock_test.go +++ b/sim/warlock/dps/dps_warlock_test.go @@ -17,12 +17,12 @@ func TestAffliction(t *testing.T) { Class: proto.Class_ClassWarlock, Race: proto.Race_RaceOrc, - GearSet: core.GetGearSet("../../../ui/warlock/gear_sets", "destruction"), + GearSet: core.GetGearSet("../../../ui/warlock/gear_sets/p2", "shadow"), Talents: AfflictionTalents, Consumes: FullConsumes, SpecOptions: core.SpecOptionsCombo{Label: "Affliction Warlock", SpecOptions: DefaultAfflictionWarlock}, - OtherSpecOptions: []core.SpecOptionsCombo{ - {Label: "AffItemSwap", SpecOptions: afflictionItemSwap}, + OtherRotations: []core.RotationCombo{ + core.GetAplRotation("../../../ui/warlock/apls/p2", "affliction"), }, ItemFilter: ItemFilter, @@ -34,12 +34,12 @@ func TestDemonology(t *testing.T) { Class: proto.Class_ClassWarlock, Race: proto.Race_RaceOrc, - GearSet: core.GetGearSet("../../../ui/warlock/gear_sets", "destruction"), + GearSet: core.GetGearSet("../../../ui/warlock/gear_sets/p2", "fire.succubus"), Talents: DemonologyTalents, Consumes: FullConsumes, SpecOptions: core.SpecOptionsCombo{Label: "Demonology Warlock", SpecOptions: DefaultDemonologyWarlock}, OtherRotations: []core.RotationCombo{ - core.GetAplRotation("../../../ui/warlock/apls", "destruction"), + core.GetAplRotation("../../../ui/warlock/apls/p2", "demonology"), }, ItemFilter: ItemFilter, @@ -51,12 +51,12 @@ func TestDestruction(t *testing.T) { Class: proto.Class_ClassWarlock, Race: proto.Race_RaceOrc, - GearSet: core.GetGearSet("../../../ui/warlock/gear_sets", "destruction"), + GearSet: core.GetGearSet("../../../ui/warlock/gear_sets/p2", "fire.imp"), Talents: DestructionTalents, Consumes: FullConsumes, SpecOptions: core.SpecOptionsCombo{Label: "Destruction Warlock", SpecOptions: DefaultDestroWarlock}, OtherRotations: []core.RotationCombo{ - core.GetAplRotation("../../../ui/warlock/apls", "destruction"), + core.GetAplRotation("../../../ui/warlock/apls/p2", "fire.imp"), }, ItemFilter: ItemFilter, })) @@ -76,9 +76,9 @@ var ItemFilter = core.ItemFilter{ }, } -var AfflictionTalents = "05--50500001" -var DemonologyTalents = "-13-05502001" -var DestructionTalents = "-13-05502001" +var AfflictionTalents = "3500253012201105--1" +var DemonologyTalents = "-2050033132501051" +var DestructionTalents = "-01-055020512000415" var defaultDestroOptions = &proto.WarlockOptions{ Armor: proto.WarlockOptions_DemonArmor, @@ -99,12 +99,6 @@ var DefaultAfflictionWarlock = &proto.Player_Warlock{ }, } -var afflictionItemSwap = &proto.Player_Warlock{ - Warlock: &proto.Warlock{ - Options: defaultAfflictionOptions, - }, -} - var defaultAfflictionOptions = &proto.WarlockOptions{ Armor: proto.WarlockOptions_DemonArmor, Summon: proto.WarlockOptions_Imp, @@ -120,7 +114,7 @@ var DefaultDemonologyWarlock = &proto.Player_Warlock{ var defaultDemonologyOptions = &proto.WarlockOptions{ Armor: proto.WarlockOptions_DemonArmor, - Summon: proto.WarlockOptions_Imp, + Summon: proto.WarlockOptions_Succubus, WeaponImbue: proto.WarlockOptions_NoWeaponImbue, } From ca6c2c9f6caa7c11d63db7406429e86648d26570 Mon Sep 17 00:00:00 2001 From: rosenrusinov Date: Wed, 14 Feb 2024 10:45:27 +0100 Subject: [PATCH 3/4] update demo test --- sim/warlock/dps/TestDemonology.results | 38 +++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/sim/warlock/dps/TestDemonology.results b/sim/warlock/dps/TestDemonology.results index 9d2f2ef7bc..1ede5865be 100644 --- a/sim/warlock/dps/TestDemonology.results +++ b/sim/warlock/dps/TestDemonology.results @@ -51,120 +51,120 @@ character_stats_results: { dps_results: { key: "TestDemonology-AllItems-HyperconductiveMender'sMeditation" value: { - dps: 2.91314 + dps: 2.91191 } } dps_results: { key: "TestDemonology-AllItems-HyperconductiveWizard'sAttire" value: { - dps: 3.08306 + dps: 3.09437 } } dps_results: { key: "TestDemonology-AllItems-InfernalPactEssence-216509" value: { - dps: 3.39406 + dps: 3.36506 } } dps_results: { key: "TestDemonology-AllItems-IrradiatedGarments" value: { - dps: 3.16742 + dps: 3.15773 } } dps_results: { key: "TestDemonology-AllItems-TwilightInvoker'sVestments" value: { - dps: 3.007 + dps: 3.01562 } } dps_results: { key: "TestDemonology-Average-Default" value: { - dps: 3.34009 + dps: 3.34164 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 3.36789 + dps: 3.38222 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 3.34842 + dps: 3.37232 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 3.80437 + dps: 3.84992 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 2.82457 + dps: 2.83092 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 2.82836 + dps: 2.81119 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 3.22131 + dps: 3.23725 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 205.36138 + dps: 205.3958 tps: 201.80626 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 205.37142 + dps: 205.4225 tps: 201.80626 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 282.93371 + dps: 282.99242 tps: 278.84667 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 169.12171 + dps: 169.12634 tps: 166.09768 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 169.11578 + dps: 169.12629 tps: 166.09768 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 269.6525 + dps: 269.64967 tps: 266.09577 } } dps_results: { key: "TestDemonology-SwitchInFrontOfTarget-Default" value: { - dps: 3.37055 + dps: 3.3649 } } From bec0bc08581b7c537c4a06660c2d641c004bcb59 Mon Sep 17 00:00:00 2001 From: rosenrusinov Date: Wed, 14 Feb 2024 11:19:17 +0100 Subject: [PATCH 4/4] update tests --- sim/warlock/dps/TestDemonology.results | 50 +++++++++++++------------- sim/warlock/dps/dps_warlock_test.go | 2 +- sim/warlock/pet.go | 9 ++++- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/sim/warlock/dps/TestDemonology.results b/sim/warlock/dps/TestDemonology.results index 1ede5865be..e371b38455 100644 --- a/sim/warlock/dps/TestDemonology.results +++ b/sim/warlock/dps/TestDemonology.results @@ -51,120 +51,120 @@ character_stats_results: { dps_results: { key: "TestDemonology-AllItems-HyperconductiveMender'sMeditation" value: { - dps: 2.91191 + dps: 8.38736 } } dps_results: { key: "TestDemonology-AllItems-HyperconductiveWizard'sAttire" value: { - dps: 3.09437 + dps: 8.72197 } } dps_results: { key: "TestDemonology-AllItems-InfernalPactEssence-216509" value: { - dps: 3.36506 + dps: 10.65488 } } dps_results: { key: "TestDemonology-AllItems-IrradiatedGarments" value: { - dps: 3.15773 + dps: 9.04594 } } dps_results: { key: "TestDemonology-AllItems-TwilightInvoker'sVestments" value: { - dps: 3.01562 + dps: 8.45442 } } dps_results: { key: "TestDemonology-Average-Default" value: { - dps: 3.34164 + dps: 10.08818 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 3.38222 + dps: 9.91808 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 3.37232 + dps: 9.91808 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 3.84992 + dps: 13.15907 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 2.83092 + dps: 7.64246 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 2.81119 + dps: 7.64246 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock--NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 3.23725 + dps: 11.08608 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-LongMultiTarget" value: { - dps: 205.3958 - tps: 201.80626 + dps: 196.09569 + tps: 154.84119 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-LongSingleTarget" value: { - dps: 205.4225 - tps: 201.80626 + dps: 196.09569 + tps: 154.84119 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-FullBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 282.99242 - tps: 278.84667 + dps: 268.05322 + tps: 211.78555 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-LongMultiTarget" value: { - dps: 169.12634 - tps: 166.09768 + dps: 160.27585 + tps: 127.02926 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-LongSingleTarget" value: { - dps: 169.12629 - tps: 166.09768 + dps: 160.27585 + tps: 127.02926 } } dps_results: { key: "TestDemonology-Settings-Orc-25-fire.succubus-Demonology Warlock-demonology-NoBuffs-Full Consumes-ShortSingleTarget" value: { - dps: 269.64967 - tps: 266.09577 + dps: 252.96751 + tps: 201.18932 } } dps_results: { key: "TestDemonology-SwitchInFrontOfTarget-Default" value: { - dps: 3.3649 + dps: 9.91808 } } diff --git a/sim/warlock/dps/dps_warlock_test.go b/sim/warlock/dps/dps_warlock_test.go index 90ad84efd4..1d15e99aad 100644 --- a/sim/warlock/dps/dps_warlock_test.go +++ b/sim/warlock/dps/dps_warlock_test.go @@ -114,7 +114,7 @@ var DefaultDemonologyWarlock = &proto.Player_Warlock{ var defaultDemonologyOptions = &proto.WarlockOptions{ Armor: proto.WarlockOptions_DemonArmor, - Summon: proto.WarlockOptions_Succubus, + Summon: proto.WarlockOptions_Imp, WeaponImbue: proto.WarlockOptions_NoWeaponImbue, } diff --git a/sim/warlock/pet.go b/sim/warlock/pet.go index 8887ec7b13..bb8fd12052 100644 --- a/sim/warlock/pet.go +++ b/sim/warlock/pet.go @@ -283,6 +283,10 @@ func (wp *WarlockPet) Reset(_ *core.Simulation) { } func (wp *WarlockPet) ExecuteCustomRotation(sim *core.Simulation) { + if wp.primaryAbility == nil { + return + } + if wp.manaPooling { maxPossibleCasts := sim.GetRemainingDuration().Seconds() / wp.primaryAbility.CurCast.CastTime.Seconds() @@ -340,14 +344,17 @@ func (warlock *Warlock) makeStatInheritance() core.PetStatInheritance { // does correctly not include ff/misery ownerHitChance := ownerStats[stats.SpellHit] / core.SpellHitRatingPerHitChance + highestSchoolPower := ownerStats[stats.SpellPower] + ownerStats[stats.SpellDamage] + max(ownerStats[stats.FirePower], ownerStats[stats.ShadowPower]) + // TODO: Classic warlock pet stat deps return stats.Stats{ stats.Stamina: ownerStats[stats.Stamina] * core.Ternary(warlock.Options.Summon == proto.WarlockOptions_Imp, 0.66, 0.75), stats.Intellect: ownerStats[stats.Intellect] * 0.3, stats.Armor: ownerStats[stats.Armor] * 0.35, - stats.AttackPower: ownerStats[stats.SpellPower] * 0.57, + stats.AttackPower: highestSchoolPower * 0.57, stats.MP5: ownerStats[stats.MP5] * 0.3, stats.SpellPower: ownerStats[stats.SpellPower] * 0.15, + stats.SpellDamage: ownerStats[stats.SpellDamage] * 0.15, stats.FirePower: ownerStats[stats.FirePower] * 0.15, stats.ShadowPower: ownerStats[stats.ShadowPower] * 0.15, stats.SpellPenetration: ownerStats[stats.SpellPenetration],