Skip to content

Commit

Permalink
enhancement presets phase 6
Browse files Browse the repository at this point in the history
  • Loading branch information
kayla-glick committed Dec 1, 2024
1 parent a77ee96 commit 0b6a1b5
Show file tree
Hide file tree
Showing 24 changed files with 174 additions and 51 deletions.
41 changes: 41 additions & 0 deletions sim/shaman/enhancement/enhancement_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,30 @@ func TestEnhancement(t *testing.T) {
{Label: "Sync Delay OH", SpecOptions: PlayerOptionsSyncDelayOH},
},

ItemFilter: ItemFilters,
EPReferenceStat: proto.Stat_StatAttackPower,
StatsToWeigh: Stats,
},
{
Class: proto.Class_ClassShaman,
Phase: 6,
Level: 60,
Race: proto.Race_RaceTroll,
OtherRaces: []proto.Race{proto.Race_RaceOrc},

Talents: Phase4Talents,
GearSet: core.GetGearSet("../../../ui/enhancement_shaman/gear_sets", "phase_6_dw"),
OtherGearSets: []core.GearSetCombo{
core.GetGearSet("../../../ui/enhancement_shaman/gear_sets", "phase_6_2h"),
},
Rotation: core.GetAplRotation("../../../ui/enhancement_shaman/apls", "phase_6"),
Buffs: core.FullBuffsPhase6,
Consumes: Phase6Consumes,
SpecOptions: core.SpecOptionsCombo{Label: "Sync Auto", SpecOptions: PlayerOptionsSyncAuto},
OtherSpecOptions: []core.SpecOptionsCombo{
{Label: "Sync Delay OH", SpecOptions: PlayerOptionsSyncDelayOH},
},

ItemFilter: ItemFilters,
EPReferenceStat: proto.Stat_StatAttackPower,
StatsToWeigh: Stats,
Expand Down Expand Up @@ -262,6 +286,23 @@ var Phase4ConsumesWFFT = core.ConsumesCombo{
},
}

var Phase6Consumes = core.ConsumesCombo{
Label: "P6-Consumes",
Consumes: &proto.Consumes{
AttackPowerBuff: proto.AttackPowerBuff_JujuMight,
AgilityElixir: proto.AgilityElixir_ElixirOfTheHoneyBadger,
DefaultPotion: proto.Potions_MajorManaPotion,
DragonBreathChili: true,
FirePowerBuff: proto.FirePowerBuff_ElixirOfGreaterFirepower,
Flask: proto.Flask_FlaskOfAncientKnowledge,
Food: proto.Food_FoodSmokedDesertDumpling,
MainHandImbue: proto.WeaponImbue_WindfuryWeapon,
OffHandImbue: proto.WeaponImbue_FlametongueWeapon,
SpellPowerBuff: proto.SpellPowerBuff_ElixirOfTheMageLord,
StrengthBuff: proto.StrengthBuff_JujuPower,
},
}

var ItemFilters = core.ItemFilter{
WeaponTypes: []proto.WeaponType{
proto.WeaponType_WeaponTypeAxe,
Expand Down
1 change: 0 additions & 1 deletion ui/balance_druid/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,6 @@ export const DefaultIndividualBuffs = IndividualBuffs.create({
export const DefaultPartyBuffs = PartyBuffs.create({});

export const DefaultDebuffs = Debuffs.create({
improvedFaerieFire: true,
judgementOfWisdom: true,
occultPoison: true,
markOfChaos: true,
Expand Down
4 changes: 2 additions & 2 deletions ui/core/components/inputs/consumables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ export const makeEncanthedSigilInput = makeConsumeInputFactory({ consumesFieldNa
export const SapperGoblinSapper: ConsumableInputConfig<SapperExplosive> = {
actionId: (player: Player<Spec>) => player.getMatchingItemActionId([{ id: 10646, minLevel: 50 }]),
showWhen: player => player.hasProfession(Profession.Engineering),
value: SapperExplosive.SapperGoblinSapper,
value: SapperExplosive.SapperFumigator,
};

export const SapperFumigator: ConsumableInputConfig<SapperExplosive> = {
Expand Down Expand Up @@ -545,7 +545,7 @@ export const ElixirOfTheHoneyBadger: ConsumableInputConfig<AgilityElixir> = {
};
export const ElixirOfTheMongoose: ConsumableInputConfig<AgilityElixir> = {
actionId: (player: Player<Spec>) => player.getMatchingItemActionId([{ id: 13452, minLevel: 46 }]),
value: AgilityElixir.ElixirOfTheMongoose,
value: AgilityElixir.ElixirOfTheHoneyBadger,
};
export const ElixirOfGreaterAgility: ConsumableInputConfig<AgilityElixir> = {
actionId: (player: Player<Spec>) => player.getMatchingItemActionId([{ id: 9187, minLevel: 38 }]),
Expand Down
1 change: 0 additions & 1 deletion ui/elemental_shaman/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,6 @@ export const DefaultDebuffs = Debuffs.create({
markOfChaos: true,
occultPoison: true,
stormstrike: true,
sunderArmor: true,
});

export const OtherDefaults = {
Expand Down
31 changes: 31 additions & 0 deletions ui/enhancement_shaman/apls/phase_6.apl.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"type": "TypeAPL",
"prepullActions": [
{"action":{"castSpell":{"spellId":{"spellId":10432,"rank":7}}},"doAtValue":{"const":{"val":"-10s"}}},
{"action":{"activateAuraWithStacks":{"auraId":{"spellId":10432,"rank":7},"numStacks":"9"}},"doAtValue":{"const":{"val":"-10s"}}},
{"action":{"activateAura":{"auraId":{"spellId":415140}}},"doAtValue":{"const":{"val":"-10s"}}},
{"action":{"castSpell":{"spellId":{"spellId":10497,"rank":4}}},"doAtValue":{"const":{"val":"-8.25s"}}},
{"action":{"castSpell":{"spellId":{"spellId":25359,"rank":3}}},"doAtValue":{"const":{"val":"-6.75s"}}},
{"action":{"castSpell":{"spellId":{"spellId":25361,"rank":5}}},"doAtValue":{"const":{"val":"-5.00s"}}},
{"action":{"castSpell":{"spellId":{"spellId":10438,"rank":6}}},"doAtValue":{"const":{"val":"-2.75s"}}},
{"action":{"castSpell":{"spellId":{"spellId":20572}}},"doAtValue":{"const":{"val":"-1.25s"}}},
{"action":{"castSpell":{"spellId":{"spellId":26297,"tag":2}}},"doAtValue":{"const":{"val":"-1.0s"}}},
{"action":{"castSpell":{"spellId":{"itemId":215162}}},"doAtValue":{"const":{"val":"-1s"}}}
],
"priorityList": [
{"action":{"castSpell":{"spellId":{"spellId":440580}}}},
{"action":{"autocastOtherCooldowns":{}}},
{"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"currentManaPercent":{}},"rhs":{"const":{"val":"65%"}}}},"castSpell":{"spellId":{"spellId":425336}}}},
{"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"autoTimeToNext":{"autoType":"Melee"}},"rhs":{"math":{"op":"OpAdd","lhs":{"spellCastTime":{"spellId":{"spellId":408490}}},"rhs":{"const":{"val":"100ms"}}}}}},"castSpell":{"spellId":{"spellId":408490}}}},
{"action":{"castSpell":{"spellId":{"spellId":17364,"rank":1}}}},
{"action":{"castSpell":{"spellId":{"spellId":408507}}}},
{"action":{"condition":{"cmp":{"op":"OpGe","lhs":{"autoTimeToNext":{"autoType":"Melee"}},"rhs":{"math":{"op":"OpAdd","lhs":{"spellCastTime":{"spellId":{"spellId":15208,"rank":10}}},"rhs":{"const":{"val":"100ms"}}}}}},"castSpell":{"spellId":{"spellId":15208,"rank":10}}}},
{"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGe","lhs":{"auraNumStacks":{"auraId":{"spellId":408505}}},"rhs":{"const":{"val":"4"}}}},{"cmp":{"op":"OpGe","lhs":{"numberTargets":{}},"rhs":{"const":{"val":"2"}}}}]}},"castSpell":{"spellId":{"spellId":10605,"rank":4}}}},
{"action":{"condition":{"not":{"val":{"auraIsActive":{"auraId":{"spellId":10432,"rank":7}}}}},"castSpell":{"spellId":{"spellId":10432,"rank":7}}}},
{"action":{"condition":{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":29228,"rank":6}}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"12"}}}}]}},"castSpell":{"spellId":{"spellId":29228,"rank":6}}}},
{"action":{"castSpell":{"spellId":{"spellId":10414,"rank":7}}}},
{"action":{"castSpell":{"spellId":{"spellId":425339}}}},
{"action":{"condition":{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":10438,"rank":6}}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"30s"}}}}]}},"castSpell":{"spellId":{"spellId":10438,"rank":6}}}}
]
}

21 changes: 21 additions & 0 deletions ui/enhancement_shaman/gear_sets/phase_6_2h.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"items": [
{"id":233700,"enchant":7626,"rune":415140},
{"id":234116},
{"id":233702,"enchant":2606},
{"id":230842,"enchant":849,"rune":440580},
{"id":233699,"enchant":1891,"rune":436364},
{"id":231223,"enchant":1885,"rune":432134},
{"id":231222,"enchant":931,"rune":408490},
{"id":231224,"rune":408498},
{"id":233703,"enchant":7626,"rune":409324},
{"id":231228,"enchant":1887,"rune":408696},
{"id":233600,"rune":442894},
{"id":228261,"rune":442896},
{"id":233990},
{"id":233627},
{"id":234985,"enchant":1900},
{},
{"id":234478}
]
}
21 changes: 21 additions & 0 deletions ui/enhancement_shaman/gear_sets/phase_6_dw.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"items": [
{"id":233700,"enchant":7626,"rune":415140},
{"id":234116},
{"id":233702,"enchant":2606},
{"id":233504,"enchant":849,"rune":440580},
{"id":233699,"enchant":1891,"rune":408496},
{"id":231223,"enchant":1885,"rune":432134},
{"id":231222,"enchant":2564,"rune":408507},
{"id":231224,"rune":408498},
{"id":233703,"enchant":7626,"rune":409324},
{"id":231228,"enchant":1887,"rune":408696},
{"id":233600,"rune":442896},
{"id":234034,"rune":442894},
{"id":233627},
{"id":230273},
{"id":234804,"enchant":1900},
{"id":234804,"enchant":1900},
{"id":234478}
]
}
44 changes: 35 additions & 9 deletions ui/enhancement_shaman/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import * as PresetUtils from '../core/preset_utils.js';
import {
AgilityElixir,
AttackPowerBuff,
Conjured,
Consumes,
Debuffs,
EnchantedSigil,
Expand All @@ -14,6 +15,7 @@ import {
Potions,
Profession,
RaidBuffs,
SapperExplosive,
SaygesFortune,
SpellPowerBuff,
StrengthBuff,
Expand All @@ -28,13 +30,16 @@ import Phase2APL from './apls/phase_2.apl.json';
import Phase3APL from './apls/phase_3.apl.json';
import Phase4APL from './apls/phase_4.apl.json';
import Phase5APL from './apls/phase_5.apl.json';
import Phase6APL from './apls/phase_6.apl.json';
import Phase1Gear from './gear_sets/phase_1.gear.json';
import Phase2Gear from './gear_sets/phase_2.gear.json';
import Phase3Gear from './gear_sets/phase_3.gear.json';
import Phase4Gear2H from './gear_sets/phase_4_2h.gear.json';
import Phase4GearDW from './gear_sets/phase_4_dw.gear.json';
import Phase5Gear2H from './gear_sets/phase_5_2h.gear.json';
import Phase5GearDW from './gear_sets/phase_5_dw.gear.json';
import Phase6Gear2H from './gear_sets/phase_6_2h.gear.json';
import Phase6GearDW from './gear_sets/phase_6_dw.gear.json';

// Preset options for this spec.
// Eventually we will import these values for the raid sim too, so its good to
Expand All @@ -50,16 +55,19 @@ export const GearDWPhase4 = PresetUtils.makePresetGear('Phase 4 DW', Phase4GearD
export const Gear2HPhase4 = PresetUtils.makePresetGear('Phase 4 2H', Phase4Gear2H, { customCondition: player => player.getLevel() === 60 });
export const GearDWPhase5 = PresetUtils.makePresetGear('Phase 5 DW', Phase5GearDW, { customCondition: player => player.getLevel() === 60 });
export const Gear2HPhase5 = PresetUtils.makePresetGear('Phase 5 2H', Phase5Gear2H, { customCondition: player => player.getLevel() === 60 });
export const GearDWPhase6 = PresetUtils.makePresetGear('Phase 6 DW', Phase6GearDW, { customCondition: player => player.getLevel() === 60 });
export const Gear2HPhase6 = PresetUtils.makePresetGear('Phase 6 2H', Phase6Gear2H, { customCondition: player => player.getLevel() === 60 });

export const GearPresets = {
[Phase.Phase1]: [GearPhase1],
[Phase.Phase2]: [GearPhase2],
[Phase.Phase3]: [GearPhase3],
[Phase.Phase4]: [GearDWPhase4, Gear2HPhase4],
[Phase.Phase5]: [GearDWPhase5, Gear2HPhase5],
[Phase.Phase6]: [GearDWPhase6, Gear2HPhase6],
};

export const DefaultGear = GearPresets[Phase.Phase5][0];
export const DefaultGear = GearPresets[Phase.Phase6][0];

///////////////////////////////////////////////////////////////////////////
// APL Presets
Expand All @@ -70,20 +78,22 @@ export const APLPhase2 = PresetUtils.makePresetAPLRotation('Phase 2', Phase2APL,
export const APLPhase3 = PresetUtils.makePresetAPLRotation('Phase 3', Phase3APL, { customCondition: player => player.getLevel() === 50 });
export const APLPhase4 = PresetUtils.makePresetAPLRotation('Phase 4', Phase4APL, { customCondition: player => player.getLevel() === 60 });
export const APLPhase5 = PresetUtils.makePresetAPLRotation('Phase 5', Phase5APL, { customCondition: player => player.getLevel() === 60 });
export const APLPhase6 = PresetUtils.makePresetAPLRotation('Phase 6', Phase6APL, { customCondition: player => player.getLevel() === 60 });

export const APLPresets = {
[Phase.Phase1]: [APLPhase1],
[Phase.Phase2]: [APLPhase2],
[Phase.Phase3]: [APLPhase3],
[Phase.Phase4]: [APLPhase4],
[Phase.Phase5]: [APLPhase5],
[Phase.Phase6]: [APLPhase6],
};

export const DefaultAPLs: Record<number, PresetUtils.PresetRotation> = {
25: APLPresets[Phase.Phase1][0],
40: APLPresets[Phase.Phase2][0],
50: APLPresets[Phase.Phase3][0],
60: APLPresets[Phase.Phase5][0],
60: APLPresets[Phase.Phase6][0],
};

///////////////////////////////////////////////////////////////////////////
Expand All @@ -99,7 +109,7 @@ export const TalentsPhase2 = PresetUtils.makePresetTalents('Level 40', SavedTale
export const TalentsPhase3 = PresetUtils.makePresetTalents('Level 50', SavedTalents.create({ talentsString: '05003-5005132105023051' }), {
customCondition: player => player.getLevel() === 50,
});
export const TalentsPhase4 = PresetUtils.makePresetTalents('Level 60', SavedTalents.create({ talentsString: '25003105003-5005032105023051' }), {
export const TalentsPhase4 = PresetUtils.makePresetTalents('Level 60', SavedTalents.create({ talentsString: '05023105003-5005032105023051' }), {
customCondition: player => player.getLevel() === 60,
});

Expand All @@ -109,10 +119,26 @@ export const TalentPresets = {
[Phase.Phase3]: [TalentsPhase3],
[Phase.Phase4]: [TalentsPhase4],
[Phase.Phase5]: [],
[Phase.Phase6]: [],
};

export const DefaultTalents = TalentPresets[Phase.Phase4][0];

///////////////////////////////////////////////////////////////////////////
// Build Presets
///////////////////////////////////////////////////////////////////////////

export const PresetBuildDW = PresetUtils.makePresetBuild('Dual Wield', {
gear: GearDWPhase6,
talents: TalentsPhase4,
rotation: APLPhase6,
});
export const PresetBuild2H = PresetUtils.makePresetBuild('2-Handed', {
gear: Gear2HPhase6,
talents: TalentsPhase4,
rotation: APLPhase6,
});

///////////////////////////////////////////////////////////////////////////
// Options
///////////////////////////////////////////////////////////////////////////
Expand All @@ -122,18 +148,20 @@ export const DefaultOptions = EnhancementShamanOptions.create({
});

export const DefaultConsumes = Consumes.create({
agilityElixir: AgilityElixir.ElixirOfTheMongoose,
agilityElixir: AgilityElixir.ElixirOfTheHoneyBadger,
attackPowerBuff: AttackPowerBuff.JujuMight,
defaultConjured: Conjured.ConjuredDemonicRune,
defaultPotion: Potions.MajorManaPotion,
dragonBreathChili: true,
enchantedSigil: EnchantedSigil.WrathOfTheStormSigil,
firePowerBuff: FirePowerBuff.ElixirOfGreaterFirepower,
flask: Flask.FlaskOfAncientKnowledge,
food: Food.FoodBlessSunfruit,
food: Food.FoodSmokedDesertDumpling,
mainHandImbue: WeaponImbue.WindfuryWeapon,
manaRegenElixir: ManaRegenElixir.MagebloodPotion,
mildlyIrradiatedRejuvPot: true,
offHandImbue: WeaponImbue.WindfuryWeapon,
offHandImbue: WeaponImbue.FlametongueWeapon,
sapperExplosive: SapperExplosive.SapperFumigator,
spellPowerBuff: SpellPowerBuff.ElixirOfTheMageLord,
strengthBuff: StrengthBuff.JujuPower,
zanzaBuff: ZanzaBuff.ROIDS,
Expand Down Expand Up @@ -171,15 +199,13 @@ export const DefaultDebuffs = Debuffs.create({
exposeArmor: TristateEffect.TristateEffectImproved,
faerieFire: true,
homunculi: 70, // 70% average uptime default
improvedFaerieFire: true,
improvedScorch: true,
markOfChaos: true,
occultPoison: true,
stormstrike: true,
sunderArmor: true,
});

export const OtherDefaults = {
profession1: Profession.Alchemy,
profession2: Profession.Enchanting,
profession2: Profession.Engineering,
};
9 changes: 8 additions & 1 deletion ui/enhancement_shaman/sim.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecEnhancementShaman, {
displayPseudoStats: [],

defaults: {
race: Race.RaceTroll,
race: Race.RaceOrc,
// Default equipped gear.
gear: Presets.DefaultGear.gear,
// Default EP weights for sorting gear in the gear picker.
Expand Down Expand Up @@ -131,26 +131,33 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecEnhancementShaman, {

presets: {
talents: [
...Presets.TalentPresets[Phase.Phase6],
...Presets.TalentPresets[Phase.Phase5],
...Presets.TalentPresets[Phase.Phase4],
...Presets.TalentPresets[Phase.Phase3],
...Presets.TalentPresets[Phase.Phase2],
...Presets.TalentPresets[Phase.Phase1],
],
rotations: [
...Presets.APLPresets[Phase.Phase6],
...Presets.APLPresets[Phase.Phase5],
...Presets.APLPresets[Phase.Phase4],
...Presets.APLPresets[Phase.Phase3],
...Presets.APLPresets[Phase.Phase2],
...Presets.APLPresets[Phase.Phase1],
],
gear: [
...Presets.GearPresets[Phase.Phase6],
...Presets.GearPresets[Phase.Phase5],
...Presets.GearPresets[Phase.Phase4],
...Presets.GearPresets[Phase.Phase3],
...Presets.GearPresets[Phase.Phase2],
...Presets.GearPresets[Phase.Phase1],
],
builds: [
Presets.PresetBuildDW,
Presets.PresetBuild2H,
]
},

autoRotation: (player): APLRotation => {
Expand Down
3 changes: 1 addition & 2 deletions ui/feral_druid/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ export const DefaultOptions = FeralDruidOptions.create({
});

export const DefaultConsumes = Consumes.create({
agilityElixir: AgilityElixir.ElixirOfTheMongoose,
agilityElixir: AgilityElixir.ElixirOfTheHoneyBadger,
attackPowerBuff: AttackPowerBuff.JujuMight,
defaultConjured: Conjured.ConjuredDemonicRune,
defaultPotion: Potions.MajorManaPotion,
Expand Down Expand Up @@ -185,7 +185,6 @@ export const DefaultDebuffs = Debuffs.create({
exposeArmor: TristateEffect.TristateEffectImproved,
faerieFire: true,
homunculi: 70, // 70% average uptime default
sunderArmor: true,
});

export const OtherDefaults = {
Expand Down
1 change: 0 additions & 1 deletion ui/holy_paladin/sim.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecHolyPaladin, {
judgementOfLight: true,
faerieFire: true,
exposeArmor: TristateEffect.TristateEffectImproved,
sunderArmor: true,
thunderClap: TristateEffect.TristateEffectImproved,
insectSwarm: true,
}),
Expand Down
Loading

0 comments on commit 0b6a1b5

Please sign in to comment.