Skip to content

Commit

Permalink
Merge pull request wowsims#4032 from psiven/master
Browse files Browse the repository at this point in the history
Prot Presets and PWar SimpleRotation
  • Loading branch information
psiven authored Nov 12, 2023
2 parents 7de4275 + 59bd8b5 commit 57c6bc1
Show file tree
Hide file tree
Showing 11 changed files with 237 additions and 58 deletions.
19 changes: 19 additions & 0 deletions ui/protection_paladin/gear_sets/p3.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{"items": [
{"id":49475,"enchant":3878,"gems":[41380,40129]},
{"id":47133,"gems":[40119]},
{"id":48646,"enchant":3852,"gems":[40119]},
{"id":47549,"enchant":3605,"gems":[40119]},
{"id":46968,"enchant":3832,"gems":[40129,49110,40119]},
{"id":47111,"enchant":3850,"gems":[40119,0]},
{"id":45487,"enchant":3860,"gems":[40119,40119,0]},
{"id":47076,"gems":[40129,40119,40119]},
{"id":48645,"enchant":3822,"gems":[40129,40119]},
{"id":47003,"enchant":3606,"gems":[40129,40119]},
{"id":47157,"gems":[40119]},
{"id":45471,"gems":[40166]},
{"id":45158},
{"id":47451},
{"id":46097,"enchant":3788,"gems":[40119]},
{"id":46964,"enchant":3849,"gems":[40119]},
{"id":47661}
]}
19 changes: 19 additions & 0 deletions ui/protection_paladin/gear_sets/p4.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{"items": [
{"id":50640,"enchant":3818,"gems":[41380,40141]},
{"id":50682,"gems":[40119]},
{"id":50660,"enchant":3852,"gems":[40167,40119]},
{"id":50718,"enchant":3605,"gems":[40119]},
{"id":51265,"enchant":3297,"gems":[40141,40119]},
{"id":51901,"enchant":3850,"gems":[40119,0]},
{"id":51267,"enchant":3860,"gems":[40119,0]},
{"id":50991,"enchant":3601,"gems":[40141,40119,40119]},
{"id":49904,"enchant":3822,"gems":[40119,40119,40119]},
{"id":50625,"enchant":3606,"gems":[40119,40119]},
{"id":50642,"gems":[40119]},
{"id":50622,"gems":[40119]},
{"id":50364},
{"id":50344},
{"id":51893,"enchant":3788,"gems":[40119]},
{"id":50729,"enchant":1071,"gems":[40119]},
{"id":47661}
]}
19 changes: 19 additions & 0 deletions ui/protection_paladin/gear_sets/p4_preraid.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{"items": [
{"id":48639,"enchant":3818,"gems":[41380,40129]},
{"id":45485,"gems":[40167]},
{"id":48637,"enchant":3852,"gems":[40119]},
{"id":45496,"enchant":1951,"gems":[40119]},
{"id":48641,"enchant":1953,"gems":[40166,40119]},
{"id":47570,"enchant":3850,"gems":[40166,0]},
{"id":48640,"enchant":3860,"gems":[40166,0]},
{"id":47072,"gems":[40119,40119]},
{"id":49904,"enchant":3822,"gems":[40119,40119,40119]},
{"id":49907,"enchant":3606,"gems":[40166,40119]},
{"id":45471,"gems":[40119]},
{"id":47149},
{"id":47080},
{"id":46021},
{"id":46097,"enchant":3788,"gems":[40119]},
{"id":46963,"enchant":3849},
{"id":47661}
]}
8 changes: 7 additions & 1 deletion ui/protection_paladin/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,24 @@ import {
import * as PresetUtils from '../core/preset_utils.js';

import PreraidGear from './gear_sets/preraid.gear.json';
import P4PreraidGear from './gear_sets/p4_preraid.gear.json';
import P1Gear from './gear_sets/p1.gear.json';
import P2Gear from './gear_sets/p2.gear.json';
import P3Gear from './gear_sets/p3.gear.json';
import P4Gear from './gear_sets/p4.gear.json';

import DefaultApl from './apls/default.apl.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 PRERAID_PRESET = PresetUtils.makePresetGear('PreRaid', PreraidGear);
export const PRERAID_PRESET = PresetUtils.makePresetGear('P1 PreRaid Preset', PreraidGear);
export const P4_PRERAID_PRESET = PresetUtils.makePresetGear('P4 PreRaid Preset', P4PreraidGear);
export const P1_PRESET = PresetUtils.makePresetGear('P1 Preset', P1Gear);
export const P2_PRESET = PresetUtils.makePresetGear('P2 Preset', P2Gear);
export const P3_PRESET = PresetUtils.makePresetGear('P3 Preset', P3Gear);
export const P4_PRESET = PresetUtils.makePresetGear('P4 Preset', P4Gear);

export const DefaultRotation = ProtectionPaladinRotation.create({
hammerFirst: false,
Expand Down
5 changes: 4 additions & 1 deletion ui/protection_paladin/sim.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export class ProtectionPaladinSimUI extends IndividualSimUI<Spec.SpecProtectionP
},
defaults: {
// Default equipped gear.
gear: Presets.P2_PRESET.gear,
gear: Presets.P3_PRESET.gear,
// Default EP weights for sorting gear in the gear picker.
epWeights: Stats.fromMap({
[Stat.StatArmor]: 0.07,
Expand Down Expand Up @@ -226,8 +226,11 @@ export class ProtectionPaladinSimUI extends IndividualSimUI<Spec.SpecProtectionP
// Preset gear configurations that the user can quickly select.
gear: [
Presets.PRERAID_PRESET,
Presets.P4_PRERAID_PRESET,
Presets.P1_PRESET,
Presets.P2_PRESET,
Presets.P3_PRESET,
Presets.P4_PRESET,
],
},

Expand Down
19 changes: 19 additions & 0 deletions ui/protection_warrior/gear_sets/p3.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{"items": [
{"id":48433,"enchant":3818,"gems":[41380,40130]},
{"id":47133,"gems":[40130]},
{"id":48455,"enchant":3852,"gems":[40119]},
{"id":47549,"enchant":3605,"gems":[40119]},
{"id":46968,"enchant":3832,"gems":[40130,49110,36767]},
{"id":47111,"enchant":3850,"gems":[40130,0]},
{"id":48453,"enchant":3860,"gems":[40167,0]},
{"id":47076,"enchant":3599,"gems":[40130,36767,36767]},
{"id":48447,"enchant":3822,"gems":[40130,40119]},
{"id":47003,"enchant":3232,"gems":[40130,40119]},
{"id":45471,"gems":[40167]},
{"id":47157,"gems":[40130]},
{"id":45158},
{"id":47088},
{"id":47506,"enchant":3788,"gems":[40167]},
{"id":46964,"enchant":3849,"gems":[40119]},
{"id":47660}
]}
19 changes: 19 additions & 0 deletions ui/protection_warrior/gear_sets/p4.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{"items": [
{"id":50640,"enchant":3818,"gems":[41380,40130]},
{"id":50682,"gems":[40130]},
{"id":51224,"enchant":3852,"gems":[40130]},
{"id":50718,"enchant":3605,"gems":[40119]},
{"id":51220,"enchant":3832,"gems":[40130,40119]},
{"id":50611,"enchant":3850,"gems":[40119,0]},
{"id":51222,"enchant":3860,"gems":[40119,0]},
{"id":50691,"enchant":3599,"gems":[40130,36767,0]},
{"id":51223,"enchant":3822,"gems":[40167,40119]},
{"id":50625,"enchant":3232,"gems":[40167,40119]},
{"id":50622,"gems":[40130]},
{"id":50642,"gems":[40130]},
{"id":50364},
{"id":50344},
{"id":50738,"enchant":3788,"gems":[40119]},
{"id":50729,"enchant":3849,"gems":[40130]},
{"id":51834,"gems":[36767]}
]}
19 changes: 19 additions & 0 deletions ui/protection_warrior/gear_sets/p4_preraid.gear.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{"items": [
{"id":48430,"enchant":3818,"gems":[41380,40130]},
{"id":47116},
{"id":48454,"enchant":3852,"gems":[40119]},
{"id":45496,"enchant":3605,"gems":[40130]},
{"id":48450,"enchant":3832,"gems":[40167,40119]},
{"id":47570,"enchant":3850,"gems":[40167,0]},
{"id":48452,"enchant":3860,"gems":[40167,0]},
{"id":47072,"enchant":3599,"gems":[40130,36767]},
{"id":49904,"enchant":3822,"gems":[40130,40167,36767]},
{"id":49907,"enchant":3232,"gems":[40167,36767]},
{"id":45471,"gems":[40167]},
{"id":47731},
{"id":47216},
{"id":47080},
{"id":45876,"enchant":3788,"gems":[40130]},
{"id":45877,"enchant":3849,"gems":[40119,40119]},
{"id":47660}
]}
89 changes: 45 additions & 44 deletions ui/protection_warrior/inputs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,49 +41,50 @@ export const ShatteringThrow = InputHelpers.makeSpecOptionsBooleanIconInput<Spec

export const ProtectionWarriorRotationConfig = {
inputs: [
InputHelpers.makeCustomRotationInput<Spec.SpecProtectionWarrior, SpellOption>({
fieldName: 'customRotation',
numColumns: 3,
values: [
{ actionId: ActionId.fromSpellId(57823), value: SpellOption.Revenge },
{ actionId: ActionId.fromSpellId(47488), value: SpellOption.ShieldSlam },
{ actionId: ActionId.fromSpellId(47440), value: SpellOption.Shout },
{ actionId: ActionId.fromSpellId(47502), value: SpellOption.ThunderClap },
{ actionId: ActionId.fromSpellId(25203), value: SpellOption.DemoralizingShout },
{ actionId: ActionId.fromSpellId(47486), value: SpellOption.MortalStrike },
{ actionId: ActionId.fromSpellId(47498), value: SpellOption.Devastate },
{ actionId: ActionId.fromSpellId(47467), value: SpellOption.SunderArmor },
{ actionId: ActionId.fromSpellId(12809), value: SpellOption.ConcussionBlow },
{ actionId: ActionId.fromSpellId(46968), value: SpellOption.Shockwave },
],
}),
InputHelpers.makeRotationNumberInput<Spec.SpecProtectionWarrior>({
fieldName: 'hsRageThreshold',
label: 'HS rage threshold',
labelTooltip: 'Heroic Strike when rage is above:',
}),
InputHelpers.makeRotationBooleanInput<Spec.SpecProtectionWarrior>({
fieldName: 'prioSslamOnShieldBlock',
label: 'Prio SSlam on Shield Block',
labelTooltip: 'The rotation code will prio SSlam over Revenge during active shield block windows.',
}),
InputHelpers.makeRotationEnumInput<Spec.SpecProtectionWarrior, DemoShoutChoice>({
fieldName: 'demoShoutChoice',
label: 'Demo Shout',
values: [
{ name: 'Never', value: DemoShoutChoice.DemoShoutChoiceNone },
{ name: 'Maintain Debuff', value: DemoShoutChoice.DemoShoutChoiceMaintain },
{ name: 'Filler', value: DemoShoutChoice.DemoShoutChoiceFiller },
],
}),
InputHelpers.makeRotationEnumInput<Spec.SpecProtectionWarrior, ThunderClapChoice>({
fieldName: 'thunderClapChoice',
label: 'Thunder Clap',
values: [
{ name: 'Never', value: ThunderClapChoice.ThunderClapChoiceNone },
{ name: 'Maintain Debuff', value: ThunderClapChoice.ThunderClapChoiceMaintain },
{ name: 'On CD', value: ThunderClapChoice.ThunderClapChoiceOnCD },
],
}),
// TODO: Currently these are unhooked and not configurable in Simple mode.
// InputHelpers.makeCustomRotationInput<Spec.SpecProtectionWarrior, SpellOption>({
// fieldName: 'customRotation',
// numColumns: 3,
// values: [
// { actionId: ActionId.fromSpellId(57823), value: SpellOption.Revenge },
// { actionId: ActionId.fromSpellId(47488), value: SpellOption.ShieldSlam },
// { actionId: ActionId.fromSpellId(47440), value: SpellOption.Shout },
// { actionId: ActionId.fromSpellId(47502), value: SpellOption.ThunderClap },
// { actionId: ActionId.fromSpellId(25203), value: SpellOption.DemoralizingShout },
// { actionId: ActionId.fromSpellId(47486), value: SpellOption.MortalStrike },
// { actionId: ActionId.fromSpellId(47498), value: SpellOption.Devastate },
// { actionId: ActionId.fromSpellId(47467), value: SpellOption.SunderArmor },
// { actionId: ActionId.fromSpellId(12809), value: SpellOption.ConcussionBlow },
// { actionId: ActionId.fromSpellId(46968), value: SpellOption.Shockwave },
// ],
// }),
// InputHelpers.makeRotationNumberInput<Spec.SpecProtectionWarrior>({
// fieldName: 'hsRageThreshold',
// label: 'HS rage threshold',
// labelTooltip: 'Heroic Strike when rage is above:',
// }),
// InputHelpers.makeRotationBooleanInput<Spec.SpecProtectionWarrior>({
// fieldName: 'prioSslamOnShieldBlock',
// label: 'Prio SSlam on Shield Block',
// labelTooltip: 'The rotation code will prio SSlam over Revenge during active shield block windows.',
// }),
// InputHelpers.makeRotationEnumInput<Spec.SpecProtectionWarrior, DemoShoutChoice>({
// fieldName: 'demoShoutChoice',
// label: 'Demo Shout',
// values: [
// { name: 'Never', value: DemoShoutChoice.DemoShoutChoiceNone },
// { name: 'Maintain Debuff', value: DemoShoutChoice.DemoShoutChoiceMaintain },
// { name: 'Filler', value: DemoShoutChoice.DemoShoutChoiceFiller },
// ],
// }),
// InputHelpers.makeRotationEnumInput<Spec.SpecProtectionWarrior, ThunderClapChoice>({
// fieldName: 'thunderClapChoice',
// label: 'Thunder Clap',
// values: [
// { name: 'Never', value: ThunderClapChoice.ThunderClapChoiceNone },
// { name: 'Maintain Debuff', value: ThunderClapChoice.ThunderClapChoiceMaintain },
// { name: 'On CD', value: ThunderClapChoice.ThunderClapChoiceOnCD },
// ],
// }),
],
};
17 changes: 13 additions & 4 deletions ui/protection_warrior/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
Glyphs,
GuardianElixir,
Potions,
Spec,
} from '../core/proto/common.js';
import { SavedTalents } from '../core/proto/ui.js';

Expand All @@ -25,18 +26,24 @@ import {
import * as PresetUtils from '../core/preset_utils.js';

import PreraidBalancedGear from './gear_sets/preraid_balanced.gear.json';
import PreraidP4Gear from './gear_sets/p4_preraid.gear.json';
import P1BalancedGear from './gear_sets/p1_balanced.gear.json';
import P2SurvivalGear from './gear_sets/p2_survival.gear.json';
import P3Gear from './gear_sets/p3.gear.json';
import P4Gear from './gear_sets/p4.gear.json';

import DefaultApl from './apls/default.apl.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 PRERAID_BALANCED_PRESET = PresetUtils.makePresetGear('PreRaid Balanced', PreraidBalancedGear);
export const P1_BALANCED_PRESET = PresetUtils.makePresetGear('P1 Balanced Preset', P1BalancedGear);
export const P2_SURVIVAL_PRESET = PresetUtils.makePresetGear('P2 Survival Preset', P2SurvivalGear);
export const PRERAID_BALANCED_PRESET = PresetUtils.makePresetGear('P1 PreRaid Preset', PreraidBalancedGear);
export const P4_PRERAID_PRESET = PresetUtils.makePresetGear('P4 PreRaid Preset', PreraidP4Gear);
export const P1_BALANCED_PRESET = PresetUtils.makePresetGear('P1 Preset', P1BalancedGear);
export const P2_SURVIVAL_PRESET = PresetUtils.makePresetGear('P2 Preset', P2SurvivalGear);
export const P3_PRESET = PresetUtils.makePresetGear('P3 Preset', P3Gear);
export const P4_PRESET = PresetUtils.makePresetGear('P4 Preset', P4Gear);

export const DefaultRotation = ProtectionWarriorRotation.create({
customRotation: CustomRotation.create({
Expand All @@ -58,7 +65,9 @@ export const DefaultRotation = ProtectionWarriorRotation.create({
hsRageThreshold: 30,
});

export const ROTATION_DEFAULT = PresetUtils.makePresetAPLRotation('Default', DefaultApl);
export const ROTATION_DEFAULT = PresetUtils.makePresetAPLRotation('Default APL', DefaultApl);
export const ROTATION_PRESET_SIMPLE = PresetUtils.makePresetSimpleRotation('Simple Cooldowns', Spec.SpecProtectionWarrior, DefaultRotation);


// Default talents. Uses the wowhead calculator format, make the talents on
// https://wowhead.com/wotlk/talent-calc and copy the numbers in the url.
Expand Down
Loading

0 comments on commit 57c6bc1

Please sign in to comment.