Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions sim/mage/arcane/TestArcane.results
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ dps_results: {
dps_results: {
key: "TestArcane-AllItems-ChronomancerRegalia"
value: {
dps: 211716.34559
tps: 204402.36752
dps: 214624.5418
tps: 206557.52494
}
}
dps_results: {
Expand Down
4 changes: 1 addition & 3 deletions sim/mage/arcane/arcane_missiles.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ func (arcane *ArcaneMage) registerArcaneMissilesSpell() {
Duration: time.Second * 20,
MaxStacks: 2,
}))
arcane.ArcaneMissilesProcAura = arcaneMissilesProcAura

arcaneMissilesTickSpell := arcane.GetOrRegisterSpell(core.SpellConfig{
ActionID: actionID.WithTag(1),
Expand Down Expand Up @@ -68,9 +69,6 @@ func (arcane *ArcaneMage) registerArcaneMissilesSpell() {
arcane.ExtendGCDUntil(sim, sim.CurrentTime+arcane.ReactionTime)
},
OnReset: func(aura *core.Aura, sim *core.Simulation) {
if arcane.T16_4pc != nil && arcane.T16_4pc.IsActive() && sim.Proc(0.15, "Item - Mage T16 4P Bonus") {
return
}
arcane.ArcaneChargesAura.Deactivate(sim)
},
},
Expand Down
4 changes: 2 additions & 2 deletions sim/mage/frost/TestFrost.results
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ dps_results: {
dps_results: {
key: "TestFrost-AllItems-ChronomancerRegalia"
value: {
dps: 157888.40404
tps: 117880.536
dps: 145281.79401
tps: 105142.50597
}
}
dps_results: {
Expand Down
16 changes: 15 additions & 1 deletion sim/mage/items.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,20 @@ var ItemSetChronomancerRegalia = core.NewItemSet(core.ItemSet{

mage.T16_4pc = setBonusAura

// Arcane: 15% chance when casting Arcane Missiles to gain an additional Arcane Missiles! proc stack
setBonusAura.MakeDependentProcTriggerAura(&mage.Unit, core.ProcTrigger{
Name: "Item - Mage T16 4P Bonus - Arcane",
ClassSpellMask: MageSpellArcaneMissilesCast,
ProcChance: 0.15,
Callback: core.CallbackOnSpellHitDealt,
Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
if mage.ArcaneMissilesProcAura != nil {
mage.ArcaneMissilesProcAura.Activate(sim)
mage.ArcaneMissilesProcAura.AddStack(sim)
}
},
})

frigidBlast := mage.RegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 145264},
SpellSchool: core.SpellSchoolFrost,
Expand All @@ -251,7 +265,7 @@ var ItemSetChronomancerRegalia = core.NewItemSet(core.ItemSet{
return
}
mage.BrainFreezeAura.ApplyOnExpire(func(_ *core.Aura, sim *core.Simulation) {
if setBonusAura.IsActive() {
if setBonusAura.IsActive() && sim.Proc(0.30, "Item - Mage T16 4P Bonus - Frigid Blast") {
frigidBlast.Cast(sim, mage.CurrentTarget)
}
})
Expand Down
25 changes: 13 additions & 12 deletions sim/mage/mage.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,19 @@ type Mage struct {
IcyVeins *core.Spell
Icicle *core.Spell

AlterTimeAura *core.Aura
InvocationAura *core.Aura
RuneOfPowerAura *core.Aura
PresenceOfMindAura *core.Aura
FingersOfFrostAura *core.Aura
BrainFreezeAura *core.Aura
IcyVeinsAura *core.Aura
IceFloesAura *core.Aura
IciclesAura *core.Aura
ArcaneChargesAura *core.Aura
HeatingUp *core.Aura
InstantPyroblastAura *core.Aura
AlterTimeAura *core.Aura
InvocationAura *core.Aura
RuneOfPowerAura *core.Aura
PresenceOfMindAura *core.Aura
FingersOfFrostAura *core.Aura
BrainFreezeAura *core.Aura
IcyVeinsAura *core.Aura
IceFloesAura *core.Aura
IciclesAura *core.Aura
ArcaneChargesAura *core.Aura
HeatingUp *core.Aura
InstantPyroblastAura *core.Aura
ArcaneMissilesProcAura *core.Aura

ArcanePowerDamageMod *core.SpellMod

Expand Down
20 changes: 20 additions & 0 deletions ui/mage/arcane/gear_sets/p4_bis.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"items": [
{ "id": 96635, "gems": [95347, 76700], "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96453, "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96638, "enchant": 4806, "gems": [76672, 76700], "reforging": 147, "upgradeStep": "UpgradeStepTwo" },
{ "id": 98150, "enchant": 4892, "gems": [76672], "reforging": 144, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96637, "enchant": 4419, "gems": [76672, 76700, 76643], "reforging": 138, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96452, "randomSuffix": -339, "enchant": 4414, "gems": [76700, 0], "upgradeStep": "UpgradeStepTwo" },
{ "id": 96634, "enchant": 4433, "gems": [76672, 0], "reforging": 145, "upgradeStep": "UpgradeStepTwo", "tinker": 4898 },
{ "id": 96462, "gems": [76672, 76700, 76700], "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 95030, "enchant": 4825, "gems": [76672, 76700, 76700], "upgradeStep": "UpgradeStepTwo" },
{ "id": 95004, "enchant": 4429, "gems": [76700, 76643], "reforging": 145, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96529, "gems": [76643], "reforging": 145, "upgradeStep": "UpgradeStepTwo" },
{ "id": 95019, "gems": [76643], "reforging": 154, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96785, "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96558, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96518, "enchant": 4442, "gems": [76672, 76700], "upgradeStep": "UpgradeStepTwo" },
{ "id": 96562, "enchant": 4434, "gems": [76672], "reforging": 147, "upgradeStep": "UpgradeStepTwo" }
]
}
58 changes: 54 additions & 4 deletions ui/mage/arcane/presets.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,39 @@
import { Encounter } from '../../core/encounter';
import { Player } from '../../core/player';
import * as PresetUtils from '../../core/preset_utils';
import { ConsumesSpec, Glyphs, Profession, Race, Stat } from '../../core/proto/common';
import { ConsumesSpec, Glyphs, Profession, Race, Spec, Stat } from '../../core/proto/common';
import { ArcaneMage_Options as MageOptions, MageMajorGlyph as MajorGlyph, MageMinorGlyph, MageArmor } from '../../core/proto/mage';
import { SavedTalents } from '../../core/proto/ui';
import { Stats } from '../../core/proto_utils/stats';
import { TypedEvent } from '../../core/typed_event';
import { DefaultDebuffs, DefaultRaidBuffs } from '../presets';
import ArcaneApl from './apls/default.apl.json';
import ArcaneCleaveApl from './apls/arcane_cleave.apl.json';
import ArcaneP3APL from './apls/arcane_t15_4pc.apl.json';
import PreBISGear from './gear_sets/prebis.gear.json';
import P2BISGear from './gear_sets/p2_bis.gear.json';
import P3BISGear from './gear_sets/p3_bis.gear.json';
import P4BISGear from './gear_sets/p4_bis.gear.json';

// Preset options for this spec.
// Eventually we will import these values for the raid sim too, so its good to
// keep them in a separate file.
export const PREBIS = PresetUtils.makePresetGear('Pre-BIS', PreBISGear);
export const P2_BIS = PresetUtils.makePresetGear('P2 - BIS', P2BISGear);
export const P3_BIS = PresetUtils.makePresetGear('P3 - BIS', P3BISGear);
const setFrostArmor = (player: Player<Spec.SpecArcaneMage>) => {
const specOptions = player.getSpecOptions();
specOptions.classOptions!.defaultMageArmor = MageArmor.MageArmorFrostArmor;
player.setSpecOptions(TypedEvent.nextEventID(), specOptions);
};

const setMageArmor = (player: Player<Spec.SpecArcaneMage>) => {
const specOptions = player.getSpecOptions();
specOptions.classOptions!.defaultMageArmor = MageArmor.MageArmorMageArmor;
player.setSpecOptions(TypedEvent.nextEventID(), specOptions);
};

export const PREBIS = PresetUtils.makePresetGear('Pre-BIS', PreBISGear, { onLoad: setFrostArmor });
export const P2_BIS = PresetUtils.makePresetGear('P2 - BIS', P2BISGear, { onLoad: setFrostArmor });
export const P3_BIS = PresetUtils.makePresetGear('P3 - BIS', P3BISGear, { onLoad: setFrostArmor });
export const P4_BIS = PresetUtils.makePresetGear('P4 - BIS', P4BISGear, { onLoad: setMageArmor });

export const ROTATION_PRESET_DEFAULT = PresetUtils.makePresetAPLRotation('Default', ArcaneApl);
export const ROTATION_PRESET_T15_4PC = PresetUtils.makePresetAPLRotation('P3 - T15 4PC', ArcaneP3APL);
Expand Down Expand Up @@ -111,6 +128,12 @@ export const DefaultArcaneOptions = MageOptions.create({
defaultMageArmor: MageArmor.MageArmorFrostArmor,
},
});

export const MageArmorOptions = MageOptions.create({
classOptions: {
defaultMageArmor: MageArmor.MageArmorMageArmor,
},
});
export const DefaultConsumables = ConsumesSpec.create({
flaskId: 76085, // Flask of the Warm Sun
foodId: 74650, // Mogu Fish Stew
Expand All @@ -125,14 +148,41 @@ export const OtherDefaults = {
race: Race.RaceTroll,
};

export const DEFAULT_SETTINGS: PresetUtils.PresetSettings = {
name: 'Default',
specOptions: DefaultArcaneOptions,
consumables: DefaultConsumables,
raidBuffs: DefaultRaidBuffs,
debuffs: DefaultDebuffs,
playerOptions: OtherDefaults,
};

export const P4_SETTINGS: PresetUtils.PresetSettings = {
name: 'P4',
specOptions: MageArmorOptions,
consumables: DefaultConsumables,
raidBuffs: DefaultRaidBuffs,
debuffs: DefaultDebuffs,
playerOptions: OtherDefaults,
};

export const T14_PRESET_BUILD = PresetUtils.makePresetBuild('T14', {
gear: P2_BIS,
rotation: ROTATION_PRESET_DEFAULT,
epWeights: P1_BIS_EP_PRESET,
settings: DEFAULT_SETTINGS,
});

export const T15_PRESET_BUILD = PresetUtils.makePresetBuild('T15', {
gear: P3_BIS,
rotation: ROTATION_PRESET_T15_4PC,
epWeights: P3_BIS_EP_PRESET,
settings: DEFAULT_SETTINGS,
});

export const T15_P4_PRESET_BUILD = PresetUtils.makePresetBuild('T15 P4', {
gear: P4_BIS,
rotation: ROTATION_PRESET_T15_4PC,
epWeights: P3_BIS_EP_PRESET,
settings: P4_SETTINGS,
});
16 changes: 11 additions & 5 deletions ui/mage/arcane/sim.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecArcaneMage, {

defaults: {
// Default equipped gear.
gear: Presets.P2_BIS.gear,
gear: Presets.P4_BIS.gear,
// Default EP weights for sorting gear in the gear picker.
epWeights: Presets.P1_BIS_EP_PRESET.epWeights,
// Default stat caps for the Reforge Optimizer
Expand All @@ -60,7 +60,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecArcaneMage, {
const hasteBreakpointConfig = StatCap.fromPseudoStat(PseudoStat.PseudoStatSpellHastePercent, {
breakpoints: [
hasteBreakpoints.get('5-tick - Living Bomb')!,
// hasteBreakpoints.get('6-tick - Living Bomb')!,
hasteBreakpoints.get('6-tick - Living Bomb')!,
hasteBreakpoints.get('7-tick - Living Bomb')!,
// hasteBreakpoints.get('8-tick - Living Bomb')!,
// hasteBreakpoints.get('9-tick - Living Bomb')!,
Expand Down Expand Up @@ -119,9 +119,15 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecArcaneMage, {
// Preset talents that the user can quickly select.
talents: [Presets.ArcaneTalents, Presets.ArcaneTalentsCleave],
// Preset gear configurations that the user can quickly select.
gear: [Presets.PREBIS, Presets.P2_BIS, Presets.P3_BIS],

builds: [Presets.P1_PRESET_BUILD_DEFAULT, Presets.P1_PRESET_BUILD_CLEAVE, Presets.T14_PRESET_BUILD, Presets.T15_PRESET_BUILD],
gear: [Presets.PREBIS, Presets.P2_BIS, Presets.P3_BIS, Presets.P4_BIS],

builds: [
Presets.P1_PRESET_BUILD_DEFAULT,
Presets.P1_PRESET_BUILD_CLEAVE,
Presets.T14_PRESET_BUILD,
Presets.T15_PRESET_BUILD,
Presets.T15_P4_PRESET_BUILD,
],
},

autoRotation: (player: Player<Spec.SpecArcaneMage>): APLRotation => {
Expand Down
20 changes: 20 additions & 0 deletions ui/mage/fire/gear_sets/p4_bis.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"items": [
{ "id": 96635, "gems": [95347, 76697], "reforging": 137, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96453, "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96638, "enchant": 4806, "gems": [76660, 76697], "reforging": 154, "upgradeStep": "UpgradeStepTwo" },
{ "id": 98150, "enchant": 4892, "gems": [76660], "upgradeStep": "UpgradeStepTwo" },
{ "id": 96637, "enchant": 4419, "gems": [76660, 76697, 76641], "reforging": 137, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96452, "randomSuffix": -336, "enchant": 4414, "gems": [76697, 0], "upgradeStep": "UpgradeStepTwo" },
{ "id": 96634, "enchant": 4433, "gems": [76660, 0], "upgradeStep": "UpgradeStepTwo", "tinker": 4898 },
{ "id": 94996, "gems": [76641, 76641, 76697], "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 95030, "enchant": 4825, "gems": [76660, 76697, 76697], "reforging": 152, "upgradeStep": "UpgradeStepTwo" },
{ "id": 95004, "enchant": 4429, "gems": [76697, 76641], "upgradeStep": "UpgradeStepTwo" },
{ "id": 96529, "gems": [76697], "reforging": 168, "upgradeStep": "UpgradeStepTwo" },
{ "id": 95019, "gems": [76697], "reforging": 152, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96516, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96413, "reforging": 137, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96610, "enchant": 4442, "gems": [76697, 76697], "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96562, "enchant": 4434, "gems": [76660], "reforging": 154, "upgradeStep": "UpgradeStepTwo" }
]
}
6 changes: 4 additions & 2 deletions ui/mage/fire/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,17 @@ import FireApl from './apls/fire.apl.json';
import MasteryApl from './apls/mastery_fire.apl.json';
import P3BISGear from './gear_sets/p3_bis.gear.json';
import P3MasteryGear from './gear_sets/mastery_fire.gear.json';
import P4BISGear from './gear_sets/p4_bis.gear.json';

// Preset options for this spec.
// Eventually we will import these values for the raid sim too, so its good to
// keep them in a separate file.
// export const P1_PREBIS = PresetUtils.makePresetGear('P1 - Pre-BIS', P1PreBISGear);
// export const P1_BIS = PresetUtils.makePresetGear('P1 - BIS', P1BISGear);
// export const P2_BIS = PresetUtils.makePresetGear('P2 - BIS', P2BISGear);
export const P3_BIS = PresetUtils.makePresetGear('P3 - Crit BiS', P3BISGear);
// export const P3_BIS = PresetUtils.makePresetGear('P3 - Crit BiS', P3BISGear);
export const P3_MASTERY = PresetUtils.makePresetGear('P3 - Mastery BiS', P3MasteryGear);
export const P4_BIS = PresetUtils.makePresetGear('P3/P4 - BIS', P4BISGear);

export const P1TrollDefaultSimpleRotation = FireMage_Rotation.create({
combustAlwaysSend: 4000000,
Expand Down Expand Up @@ -227,7 +229,7 @@ export const MASTERY_SETTINGS: PresetUtils.PresetSettings = {
};

export const P3_CRIT_PRESET_BUILD = PresetUtils.makePresetBuild('P3 - Crit', {
gear: P3_BIS,
gear: P4_BIS,
rotation: P3_SIMPLE_ROTATION_PRESET_DEFAULT,
talents: FireTalents,
epWeights: DEFAULT_EP_PRESET,
Expand Down
29 changes: 8 additions & 21 deletions ui/mage/fire/sim.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecFireMage, {

defaults: {
// Default equipped gear.
gear: Presets.P3_BIS.gear,
gear: Presets.P4_BIS.gear,
// Default EP weights for sorting gear in the gear picker.
epWeights: Presets.DEFAULT_EP_PRESET.epWeights,
// Default stat caps for the Reforge Optimizer
Expand Down Expand Up @@ -153,33 +153,20 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecFireMage, {
presets: {
epWeights: [Presets.DEFAULT_EP_PRESET, Presets.P1_PREBIS_EP_PRESET, Presets.MASTERY_EP_PRESET],
// Preset rotations that the user can quickly select.
rotations: [
Presets.P1_ROTATION_PRESET_APL,
Presets.P3_SIMPLE_ROTATION_PRESET_DEFAULT,
Presets.MASTERY_ROTATION_PRESET_APL,
],
rotations: [Presets.P1_ROTATION_PRESET_APL, Presets.P3_SIMPLE_ROTATION_PRESET_DEFAULT, Presets.MASTERY_ROTATION_PRESET_APL],
// Preset talents that the user can quickly select.
talents: [Presets.FireTalents, Presets.FireTalentsCleave, Presets.FireTalentsMastery],
// Preset gear configurations that the user can quickly select.
gear: [Presets.P3_BIS, Presets.P3_MASTERY],
gear: [Presets.P3_MASTERY, Presets.P4_BIS],
// gear: [Presets.P1_PREBIS, Presets.P1_BIS, Presets.P2_BIS, Presets.P3_BIS, Presets.P3_MASTERY],

builds: [
Presets.P3_CRIT_PRESET_BUILD,
Presets.P3_MASTERY_PRESET_BUILD,
],
builds: [Presets.P3_CRIT_PRESET_BUILD, Presets.P3_MASTERY_PRESET_BUILD],

// Saved Encounter presets
encounters: [
Presets.ENCOUNTER_SINGLE_TARGET,
Presets.ENCOUNTER_MASTERY,
],
encounters: [Presets.ENCOUNTER_SINGLE_TARGET, Presets.ENCOUNTER_MASTERY],

// Saved Settings presets
settings: [
Presets.CRIT_SETTINGS,
Presets.MASTERY_SETTINGS,
],
settings: [Presets.CRIT_SETTINGS, Presets.MASTERY_SETTINGS],
},

autoRotation: (player: Player<Spec.SpecFireMage>): APLRotation => {
Expand Down Expand Up @@ -284,10 +271,10 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecFireMage, {
defaultGear: {
[Faction.Unknown]: {},
[Faction.Alliance]: {
1: Presets.P3_BIS.gear,
1: Presets.P4_BIS.gear,
},
[Faction.Horde]: {
1: Presets.P3_BIS.gear,
1: Presets.P4_BIS.gear,
},
},
},
Expand Down
20 changes: 20 additions & 0 deletions ui/mage/frost/gear_sets/p4_bis.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"items": [
{ "id": 96635, "gems": [95347, 76672], "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96453, "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96638, "enchant": 4806, "gems": [76694, 76672], "reforging": 147, "upgradeStep": "UpgradeStepTwo" },
{ "id": 98150, "enchant": 4892, "gems": [76694], "upgradeStep": "UpgradeStepTwo" },
{ "id": 96637, "enchant": 4419, "gems": [76694, 76672, 76682], "reforging": 138, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96452, "randomSuffix": -339, "enchant": 4414, "gems": [76672, 0], "upgradeStep": "UpgradeStepTwo" },
{ "id": 96634, "enchant": 4430, "gems": [76694, 0], "reforging": 145, "upgradeStep": "UpgradeStepTwo", "tinker": 4898 },
{ "id": 96462, "gems": [76694, 76672, 76694], "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 95030, "enchant": 4895, "gems": [76694, 76668, 76672], "upgradeStep": "UpgradeStepTwo" },
{ "id": 95004, "enchant": 4429, "gems": [76672, 76682], "reforging": 145, "upgradeStep": "UpgradeStepTwo" },
{ "id": 95019, "gems": [76682], "reforging": 154, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96529, "gems": [76682], "reforging": 145, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96785, "reforging": 140, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96827, "reforging": 154, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96404, "enchant": 4442, "gems": [76682, 76694], "reforging": 147, "upgradeStep": "UpgradeStepTwo" },
{ "id": 96562, "enchant": 4434, "gems": [76694], "reforging": 151, "upgradeStep": "UpgradeStepTwo" }
]
}
Loading
Loading