diff --git a/assets/database/db.json b/assets/database/db.json index 7d9d21e5e..4650dae7c 100644 --- a/assets/database/db.json +++ b/assets/database/db.json @@ -7226,7 +7226,7 @@ {"id":22519,"name":"Bindings of Faith","icon":"inv_bracer_13","type":6,"armorType":1,"stats":[0,0,11,15,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":88,"phase":6,"quality":4,"classAllowlist":[5],"setName":"Vestments of Faith","setId":525,"sources":[{"quest":{"id":9118,"name":"Bindings of Faith"}}]}, {"id":22589,"name":"Atiesh, Greatstaff of the Guardian","icon":"inv_staff_medivh","type":13,"weaponType":8,"handType":4,"stats":[0,0,31,32,24,150,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"weaponDamageMin":130,"weaponDamageMax":243,"weaponSpeed":2.9,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":90,"phase":6,"quality":5,"classAllowlist":[3],"sources":[{"quest":{"id":9270,"name":"Atiesh, Greatstaff of the Guardian"}}]}, {"id":22630,"name":"Atiesh, Greatstaff of the Guardian","icon":"inv_staff_medivh","type":13,"weaponType":8,"handType":4,"stats":[0,0,30,29,0,150,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"weaponDamageMin":130,"weaponDamageMax":243,"weaponSpeed":2.9,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":90,"phase":6,"quality":5,"classAllowlist":[8],"sources":[{"quest":{"id":9271,"name":"Atiesh, Greatstaff of the Guardian"}}]}, -{"id":22631,"name":"Atiesh, Greatstaff of the Guardian","icon":"inv_staff_medivh","type":13,"weaponType":8,"handType":4,"stats":[0,0,28,28,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"weaponDamageMin":130,"weaponDamageMax":243,"weaponSpeed":2.9,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":90,"phase":6,"quality":5,"classAllowlist":[5],"sources":[{"quest":{"id":9257,"name":"Atiesh, Greatstaff of the Guardian"}}]}, +{"id":22631,"name":"Atiesh, Greatstaff of the Guardian","icon":"inv_staff_medivh","type":13,"weaponType":8,"handType":4,"stats":[0,0,28,28,27,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300,0,0],"weaponDamageMin":130,"weaponDamageMax":243,"weaponSpeed":2.9,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":90,"phase":6,"quality":5,"classAllowlist":[5],"sources":[{"quest":{"id":9257,"name":"Atiesh, Greatstaff of the Guardian"}}]}, {"id":22632,"name":"Atiesh, Greatstaff of the Guardian","icon":"inv_staff_medivh","type":13,"weaponType":8,"handType":4,"stats":[0,0,28,28,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300,0,420],"weaponDamageMin":130,"weaponDamageMax":243,"weaponSpeed":2.9,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":90,"phase":6,"quality":5,"classAllowlist":[1],"sources":[{"quest":{"id":9269,"name":"Atiesh, Greatstaff of the Guardian"}}]}, {"id":22651,"name":"Outrider's Plate Legguards","icon":"inv_pants_plate_20","type":9,"armorType":4,"stats":[28,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":65,"phase":2,"quality":4,"sources":[{"soldBy":{"npcId":14754,"npcName":"Kelm Hargunth","zoneId":17}},{"rep":{"repFactionId":889,"repLevel":8,"playerFaction":2}}],"factionRestriction":2}, {"id":22652,"name":"Glacial Vest","icon":"inv_chest_cloth_08","type":5,"armorType":1,"stats":[0,0,26,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0],"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":80,"phase":6,"quality":4,"expansion":1,"sources":[{"quest":{"id":9240,"name":"Glacial Vest"}},{"crafted":{"profession":11,"spellId":28207}}]}, diff --git a/sim/core/buffs.go b/sim/core/buffs.go index 2272c1bc8..416a0182b 100644 --- a/sim/core/buffs.go +++ b/sim/core/buffs.go @@ -1801,3 +1801,26 @@ func ApplySaygesFortunes(character *Character, fortune proto.SaygesFortune) { makeExclusiveBuff(aura, config) } + +/////////////////////////////////////////////////////////////////////////// +// Misc Other Buffs +/////////////////////////////////////////////////////////////////////////// + +// Equip: Increases healing done by magical spells and effects of all party members within 30 yards by up to 62. +func AtieshHealingEffect(unit *Unit) *Aura { + label := "Atiesh Greatstaff of the Guardian (Healing)" + + if unit.HasAura(label) { + return unit.GetAura(label) + } + + stats := stats.Stats{ + stats.HealingPower: 62, + } + + return MakePermanent(unit.RegisterAura(Aura{ + ActionID: ActionID{SpellID: 28144}, + Label: label, + BuildPhase: CharacterBuildPhaseBuffs, + }).AttachStatsBuff(stats)) +} diff --git a/sim/priest/_items.go b/sim/priest/_items.go index 6c907fc1d..fd1015876 100644 --- a/sim/priest/_items.go +++ b/sim/priest/_items.go @@ -1,15 +1,13 @@ package priest import ( - "slices" - "time" "github.com/wowsims/classic/sim/core" ) const ( // Keep these ordered by ID - CassandrasTome = 231509 + AtieshPriest = 22631 ) func init() { @@ -17,60 +15,12 @@ func init() { // Keep these ordered by name - // https://www.wowhead.com/classic/item=231509/cassandras-tome - core.NewItemEffect(CassandrasTome, func(agent core.Agent) { - priest := agent.(PriestAgent).GetPriest() - - actionID := core.ActionID{ItemID: CassandrasTome} - duration := time.Second * 15 - affectedSpells := []*core.Spell{} - - buffAura := priest.RegisterAura(core.Aura{ - ActionID: actionID, - Label: "Cassandra's Tome", - Duration: duration, - OnInit: func(aura *core.Aura, sim *core.Simulation) { - affectedSpells = core.FilterSlice(priest.Spellbook, func(spell *core.Spell) bool { - return spell.Flags.Matches(SpellFlagPriest) && !spell.Flags.Matches(core.SpellFlagPureDot|core.SpellFlagChanneled) - }) - }, - OnGain: func(aura *core.Aura, sim *core.Simulation) { - for _, spell := range affectedSpells { - spell.BonusCritRating += 100 * core.SpellCritRatingPerCritChance - } - }, - OnExpire: func(aura *core.Aura, sim *core.Simulation) { - for _, spell := range affectedSpells { - spell.BonusCritRating -= 100 * core.SpellCritRatingPerCritChance - } - }, - OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { - if slices.Contains(affectedSpells, spell) { - aura.Deactivate(sim) - } - }, - }) - - spell := priest.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagOffensiveEquipment, - Cast: core.CastConfig{ - CD: core.Cooldown{ - Timer: priest.NewTimer(), - Duration: time.Minute * 2, - }, - // Does not seem to share the offensive trinket timer - }, - ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - buffAura.Activate(sim) - }, - }) - - priest.AddMajorCooldown(core.MajorCooldown{ - Spell: spell, - Type: core.CooldownTypeDPS, - }) + // https://www.wowhead.com/classic/item=22631/atiesh-greatstaff-of-the-guardian + core.NewItemEffect(AtieshPriest, func(agent core.Agent) { + character := agent.GetCharacter() + aura := core.AtieshHealingEffect(&character.Unit) + character.ItemSwap.RegisterProc(AtieshPriest, aura) }) - + core.AddEffectsToTest = true } diff --git a/ui/index.html b/ui/index.html index ed1521a59..9b336e8c5 100644 --- a/ui/index.html +++ b/ui/index.html @@ -93,7 +93,7 @@

Classic

Priest - Phase 1 - Alpha + Phase 4 - Alpha
diff --git a/ui/retribution_paladin/inputs.ts b/ui/retribution_paladin/inputs.ts index 6d2002532..57e0d6e5c 100644 --- a/ui/retribution_paladin/inputs.ts +++ b/ui/retribution_paladin/inputs.ts @@ -36,28 +36,12 @@ export const PrimarySealSelection = InputHelpers.makeSpecOptionsEnumIconInput) => player.getTalents().sealOfCommand, }, - { - actionId: () => ActionId.fromSpellId(407798), - value: PaladinSeal.Martyrdom, - }, ], // changeEmitter: (player: Player) => player.changeEmitter, changeEmitter: (player: Player) => TypedEvent.onAny([player.gearChangeEmitter, player.talentsChangeEmitter, player.specOptionsChangeEmitter]), }); -export const CrusaderStrikeStopAttack = InputHelpers.makeSpecOptionsBooleanInput({ - fieldName: 'isUsingCrusaderStrikeStopAttack', - label: 'Using Crusader Strike StopAttack Macro', - labelTooltip: 'Allows saving of extra attacks', -}); - -export const DivineStormStopAttack = InputHelpers.makeSpecOptionsBooleanInput({ - fieldName: 'isUsingDivineStormStopAttack', - label: 'Using Divine Storm StopAttack Macro', - labelTooltip: 'Allows saving of extra attacks', -}); - export const JudgementStopAttack = InputHelpers.makeSpecOptionsBooleanInput({ fieldName: 'isUsingJudgementStopAttack', label: 'Using Judgement StopAttack Macro', diff --git a/ui/retribution_paladin/presets.ts b/ui/retribution_paladin/presets.ts index b32d7a908..ef22a59b2 100644 --- a/ui/retribution_paladin/presets.ts +++ b/ui/retribution_paladin/presets.ts @@ -83,27 +83,15 @@ export const DefaultAPL = APLPresets[Phase.Phase5][0]; // Default talents. Uses the wowhead calculator format, make the talents on // https://wowhead.com/classic/talent-calc and copy the numbers in the url. -export const P1RetTalents = PresetUtils.makePresetTalents('P1 Ret', SavedTalents.create({ talentsString: '--05230051' })); +export const RetTalents = PresetUtils.makePresetTalents('Retribution', SavedTalents.create({ talentsString: '500501-503-52230351200315' })); -export const P2RetTalents = PresetUtils.makePresetTalents('P2 Ret', SavedTalents.create({ talentsString: '--532300512003151' })); - -export const P2ShockadinTalents = PresetUtils.makePresetTalents('P2 Shockadin', SavedTalents.create({ talentsString: '55050100521151--' })); - -export const P3RetTalents = PresetUtils.makePresetTalents('P3 Ret', SavedTalents.create({ talentsString: '500501--53230051200315' })); - -export const P4RetTalents = PresetUtils.makePresetTalents('P4/P5 Ret', SavedTalents.create({ talentsString: '500501-503-52230351200315' })); - -export const P5ShockadinTalents = PresetUtils.makePresetTalents('P5 Shockadin', SavedTalents.create({ talentsString: '55053100501051--052303511' })); +export const ShockadinTalents = PresetUtils.makePresetTalents('Shockadin', SavedTalents.create({ talentsString: '55050112501051--0523005122' })); export const TalentPresets = { - [Phase.Phase1]: [P1RetTalents], - [Phase.Phase2]: [P2RetTalents, P2ShockadinTalents], - [Phase.Phase3]: [P3RetTalents], - [Phase.Phase4]: [P4RetTalents], - [Phase.Phase5]: [P4RetTalents, P5ShockadinTalents], + [Phase.Phase1]: [RetTalents, ShockadinTalents], }; -export const DefaultTalents = TalentPresets[Phase.Phase5][0]; +export const DefaultTalents = TalentPresets[Phase.Phase1][0]; /////////////////////////////////////////////////////////////////////////// // Options @@ -111,7 +99,7 @@ export const DefaultTalents = TalentPresets[Phase.Phase5][0]; export const DefaultOptions = RetributionPaladinOptions.create({ aura: PaladinAura.SanctityAura, - primarySeal: PaladinSeal.Martyrdom, + primarySeal: PaladinSeal.Command, }); export const DefaultConsumes = Consumes.create({ diff --git a/ui/retribution_paladin/sim.ts b/ui/retribution_paladin/sim.ts index 9fb75d3e1..e4fea9cd8 100644 --- a/ui/retribution_paladin/sim.ts +++ b/ui/retribution_paladin/sim.ts @@ -125,9 +125,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecRetributionPaladin, { inputs: [ OtherInputs.TankAssignment, OtherInputs.InFrontOfTarget, - RetributionPaladinInputs.CrusaderStrikeStopAttack, RetributionPaladinInputs.JudgementStopAttack, - RetributionPaladinInputs.DivineStormStopAttack, ], }, encounterPicker: { @@ -137,18 +135,10 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecRetributionPaladin, { presets: { rotations: [ - ...Presets.APLPresets[Phase.Phase5], - ...Presets.APLPresets[Phase.Phase4], - ...Presets.APLPresets[Phase.Phase3], - ...Presets.APLPresets[Phase.Phase2], ...Presets.APLPresets[Phase.Phase1], ], // Preset talents that the user can quickly select. talents: [ - ...Presets.TalentPresets[Phase.Phase5], - ...Presets.TalentPresets[Phase.Phase4], - ...Presets.TalentPresets[Phase.Phase3], - ...Presets.TalentPresets[Phase.Phase2], ...Presets.TalentPresets[Phase.Phase1], ], // Preset gear configurations that the user can quickly select. diff --git a/ui/shadow_priest/apls/disc.apl.json b/ui/shadow_priest/apls/disc.apl.json new file mode 100644 index 000000000..7348ac744 --- /dev/null +++ b/ui/shadow_priest/apls/disc.apl.json @@ -0,0 +1,12 @@ +{ + "type": "TypeAPL", + "prepullActions": [ + {"action":{"castSpell":{"spellId":{"spellId":15261,"rank":8}}},"doAtValue":{"const":{"val":"-3s"}}} + ], + "priorityList": [ + {"action":{"autocastOtherCooldowns":{}}}, + {"action":{"condition":{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":10894,"rank":8}}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"10"}}}}]}},"castSpell":{"spellId":{"spellId":10894,"rank":8}}}}, + {"action":{"strictSequence":{"actions":[{"castSpell":{"spellId":{"spellId":14751}}},{"castSpell":{"spellId":{"spellId":10934,"rank":8}}}]}}}, + {"action":{"castSpell":{"spellId":{"spellId":10934,"rank":8}}}} + ] +} diff --git a/ui/shadow_priest/apls/p1.apl.json b/ui/shadow_priest/apls/p1.apl.json index 416d6fb4b..83d163846 100644 --- a/ui/shadow_priest/apls/p1.apl.json +++ b/ui/shadow_priest/apls/p1.apl.json @@ -1,7 +1,7 @@ { "type": "TypeAPL", "prepullActions": [ - {"action":{"castSpell":{"spellId":{"spellId":15473}}},"doAtValue":{"const":{"val":"-1s"}}} + {"action":{"castSpell":{"spellId":{"spellId":15473}}},"doAtValue":{"const":{"val":"-5s"}}} ], "priorityList": [ {"action":{"autocastOtherCooldowns":{}}}, @@ -10,4 +10,4 @@ {"action":{"castSpell":{"spellId":{"spellId":10947,"rank":9}}}}, {"action":{"castSpell":{"spellId":{"spellId":18807,"rank":6}}}} ] -} \ No newline at end of file +} diff --git a/ui/shadow_priest/apls/shadow.apl.json b/ui/shadow_priest/apls/shadow.apl.json new file mode 100644 index 000000000..68fda6f2a --- /dev/null +++ b/ui/shadow_priest/apls/shadow.apl.json @@ -0,0 +1,14 @@ +{ + "type": "TypeAPL", + "prepullActions": [ + {"action":{"castSpell":{"spellId":{"spellId":15473}}},"doAtValue":{"const":{"val":"-5s"}}}, + {"action":{"castSpell":{"spellId":{"spellId":10947,"rank":9}}},"doAtValue":{"const":{"val":"-1s"}}} + ], + "priorityList": [ + {"action":{"autocastOtherCooldowns":{}}}, + {"action":{"condition":{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":10894,"rank":8}}}}},{"cmp":{"op":"OpGe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"10"}}}}]}},"castSpell":{"spellId":{"spellId":10894,"rank":8}}}}, + {"action":{"strictSequence":{"actions":[{"castSpell":{"spellId":{"spellId":14751}}},{"castSpell":{"spellId":{"spellId":10947,"rank":9}}}]}}}, + {"action":{"castSpell":{"spellId":{"spellId":10947,"rank":9}}}}, + {"action":{"castSpell":{"spellId":{"spellId":18807,"rank":6}}}} + ] +} diff --git a/ui/shadow_priest/gear_sets/disc.p1.json b/ui/shadow_priest/gear_sets/disc.p1.json new file mode 100644 index 000000000..42df7ae8c --- /dev/null +++ b/ui/shadow_priest/gear_sets/disc.p1.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":18727,"enchant":1509}, + {"id":18814}, + {"id":18681}, + {"id":17078}, + {"id":19145,"enchant":1891}, + {"id":18709,"enchant":1883}, + {"id":13253}, + {"id":19136}, + {"id":13170,"enchant":1509}, + {"id":11822,"enchant":911}, + {"id":19147}, + {"id":19147}, + {"id":18820}, + {"id":12930}, + {"id":18842,"enchant":2504}, + {}, + {"id":13938} +]} diff --git a/ui/shadow_priest/gear_sets/disc.p2.json b/ui/shadow_priest/gear_sets/disc.p2.json new file mode 100644 index 000000000..9bca4f1b5 --- /dev/null +++ b/ui/shadow_priest/gear_sets/disc.p2.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":18727,"enchant":2544}, + {"id":18814}, + {"id":18681}, + {"id":18350}, + {"id":19145,"enchant":1891}, + {"id":18497,"enchant":1883}, + {"id":13253}, + {"id":19136}, + {"id":13170,"enchant":2544}, + {"id":19131,"enchant":911}, + {"id":19147}, + {"id":19147}, + {"id":18820}, + {"id":12930}, + {"id":17070,"enchant":2504}, + {"id":11904}, + {"id":13938} +]} diff --git a/ui/shadow_priest/gear_sets/disc.p3.json b/ui/shadow_priest/gear_sets/disc.p3.json new file mode 100644 index 000000000..0ca4f8ecd --- /dev/null +++ b/ui/shadow_priest/gear_sets/disc.p3.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":19375,"enchant":2544}, + {"id":18814}, + {"id":19370}, + {"id":19378}, + {"id":19145,"enchant":1891}, + {"id":19374,"enchant":1883}, + {"id":13253}, + {"id":19400}, + {"id":19165,"enchant":2544}, + {"id":19131,"enchant":911}, + {"id":19147}, + {"id":19403}, + {"id":18820}, + {"id":19379}, + {"id":19360,"enchant":2504}, + {"id":19366}, + {"id":13938} +]} diff --git a/ui/shadow_priest/gear_sets/disc.p4.json b/ui/shadow_priest/gear_sets/disc.p4.json new file mode 100644 index 000000000..cc1f03732 --- /dev/null +++ b/ui/shadow_priest/gear_sets/disc.p4.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":19375,"enchant":2544}, + {"id":18814}, + {"id":19370,"enchant":2605}, + {"id":19857}, + {"id":19682,"enchant":1891}, + {"id":19374,"enchant":1883}, + {"id":19929}, + {"id":19400}, + {"id":19683,"enchant":2544}, + {"id":19684,"enchant":911}, + {"id":19147}, + {"id":19403}, + {"id":19950}, + {"id":19379}, + {"id":19360,"enchant":2504}, + {"id":19366}, + {"id":19861} +]} diff --git a/ui/shadow_priest/gear_sets/disc.p5.json b/ui/shadow_priest/gear_sets/disc.p5.json new file mode 100644 index 000000000..34267a2fb --- /dev/null +++ b/ui/shadow_priest/gear_sets/disc.p5.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":22267,"enchant":2544}, + {"id":18814}, + {"id":19370,"enchant":2605}, + {"id":22731}, + {"id":19682,"enchant":1891}, + {"id":21186,"enchant":1883}, + {"id":21585,"enchant":2614}, + {"id":22730}, + {"id":19683,"enchant":2544}, + {"id":19684,"enchant":911}, + {"id":21709}, + {"id":19403}, + {"id":19950}, + {"id":19379}, + {"id":19360,"enchant":2504}, + {"id":21597}, + {"id":21603} +]} diff --git a/ui/shadow_priest/gear_sets/disc.p6.json b/ui/shadow_priest/gear_sets/disc.p6.json new file mode 100644 index 000000000..29021cac9 --- /dev/null +++ b/ui/shadow_priest/gear_sets/disc.p6.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":23035,"enchant":2544}, + {"id":18814}, + {"id":22983,"enchant":2721}, + {"id":23050}, + {"id":19682,"enchant":1891}, + {"id":21186,"enchant":1883}, + {"id":21585,"enchant":2614}, + {"id":22730}, + {"id":19683,"enchant":2544}, + {"id":19684,"enchant":911}, + {"id":21709}, + {"id":23031}, + {"id":23046}, + {"id":19379}, + {"id":22800,"enchant":2504}, + {}, + {"id":22820} +]} diff --git a/ui/shadow_priest/gear_sets/p1.bis.gear.json b/ui/shadow_priest/gear_sets/p1.bis.gear.json deleted file mode 100644 index db2781a17..000000000 --- a/ui/shadow_priest/gear_sets/p1.bis.gear.json +++ /dev/null @@ -1,19 +0,0 @@ -{"items": [ - {"id":16813}, - {}, - {"id":16816}, - {}, - {"id":16815}, - {"id":16819}, - {"id":16812}, - {"id":16817}, - {"id":16814}, - {"id":16811}, - {}, - {}, - {}, - {}, - {}, - {}, - {} -]} \ No newline at end of file diff --git a/ui/shadow_priest/gear_sets/shadow.p1.json b/ui/shadow_priest/gear_sets/shadow.p1.json new file mode 100644 index 000000000..fae0de35d --- /dev/null +++ b/ui/shadow_priest/gear_sets/shadow.p1.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":14111,"enchant":1509}, + {"id":18814}, + {"id":14112}, + {"id":17078}, + {"id":14136,"enchant":1891}, + {"id":11766,"enchant":1883}, + {"id":13253}, + {"id":18809}, + {"id":13170,"enchant":1509}, + {"id":18735,"enchant":911}, + {"id":19147}, + {"id":19147}, + {"id":18820}, + {"id":12930}, + {"id":18609,"enchant":2504}, + {}, + {"id":13396} +]} diff --git a/ui/shadow_priest/gear_sets/shadow.p2.json b/ui/shadow_priest/gear_sets/shadow.p2.json new file mode 100644 index 000000000..569ccc196 --- /dev/null +++ b/ui/shadow_priest/gear_sets/shadow.p2.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":14111,"enchant":2544}, + {"id":18814}, + {"id":14112}, + {"id":18350}, + {"id":14136,"enchant":1891}, + {"id":11766,"enchant":1883}, + {"id":18407}, + {"id":18809}, + {"id":19133,"enchant":2544}, + {"id":19131,"enchant":911}, + {"id":19147}, + {"id":19147}, + {"id":18820}, + {"id":12930}, + {"id":18609,"enchant":2504}, + {}, + {"id":13396} +]} diff --git a/ui/shadow_priest/gear_sets/shadow.p3.json b/ui/shadow_priest/gear_sets/shadow.p3.json new file mode 100644 index 000000000..93183b2fb --- /dev/null +++ b/ui/shadow_priest/gear_sets/shadow.p3.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":19375,"enchant":2544}, + {"id":18814}, + {"id":19370}, + {"id":19378}, + {"id":14136,"enchant":1891}, + {"id":19374,"enchant":1883}, + {"id":19407}, + {"id":19400}, + {"id":19133,"enchant":2544}, + {"id":19131,"enchant":911}, + {"id":19434}, + {"id":19147}, + {"id":18820}, + {"id":19379}, + {"id":19360,"enchant":2504}, + {"id":19366}, + {"id":13396} +]} diff --git a/ui/shadow_priest/gear_sets/shadow.p4.json b/ui/shadow_priest/gear_sets/shadow.p4.json new file mode 100644 index 000000000..42849c820 --- /dev/null +++ b/ui/shadow_priest/gear_sets/shadow.p4.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":19886,"enchant":2544}, + {"id":18814}, + {"id":19370,"enchant":2605}, + {"id":19857}, + {"id":19682,"enchant":1891}, + {"id":19374,"enchant":1883}, + {"id":19407}, + {"id":19400}, + {"id":19133,"enchant":2544}, + {"id":19131,"enchant":911}, + {"id":19434}, + {"id":19147}, + {"id":19950}, + {"id":19379}, + {"id":19360,"enchant":2504}, + {"id":19366}, + {"id":19861} +]} diff --git a/ui/shadow_priest/gear_sets/shadow.p5.json b/ui/shadow_priest/gear_sets/shadow.p5.json new file mode 100644 index 000000000..ab5d3f85f --- /dev/null +++ b/ui/shadow_priest/gear_sets/shadow.p5.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":19886,"enchant":2544}, + {"id":18814}, + {"id":19370,"enchant":2605}, + {"id":22731}, + {"id":20635,"enchant":1891}, + {"id":21186,"enchant":1883}, + {"id":19407,"enchant":2614}, + {"id":22730}, + {"id":19133,"enchant":2544}, + {"id":21600,"enchant":911}, + {"id":19434}, + {"id":21709}, + {"id":19950}, + {"id":19379}, + {"id":19360,"enchant":2504}, + {"id":21597}, + {"id":21603} +]} diff --git a/ui/shadow_priest/gear_sets/shadow.p6.json b/ui/shadow_priest/gear_sets/shadow.p6.json new file mode 100644 index 000000000..0ed574830 --- /dev/null +++ b/ui/shadow_priest/gear_sets/shadow.p6.json @@ -0,0 +1,19 @@ +{"items": [ + {"id":23035,"enchant":2544}, + {"id":18814}, + {"id":22983,"enchant":2605}, + {"id":22731}, + {"id":23220,"enchant":1891}, + {"id":21186,"enchant":1883}, + {"id":19407,"enchant":2614}, + {"id":22730}, + {"id":19133,"enchant":2544}, + {"id":21600,"enchant":911}, + {"id":23031}, + {"id":21709}, + {"id":23046}, + {"id":19379}, + {"id":22799,"enchant":2504}, + {}, + {"id":21603} +]} diff --git a/ui/shadow_priest/presets.ts b/ui/shadow_priest/presets.ts index fc8f699fd..cb01d40fa 100644 --- a/ui/shadow_priest/presets.ts +++ b/ui/shadow_priest/presets.ts @@ -20,9 +20,22 @@ import { } from '../core/proto/common.js'; import { ShadowPriest_Options as Options } from '../core/proto/priest.js'; import { SavedTalents } from '../core/proto/ui.js'; -import P1APL from './apls/p1.apl.json'; +import APLShadowUDJSON from './apls/p1.apl.json'; +import APLShadowJSON from './apls/shadow.apl.json'; +import APLDiscJSON from './apls/disc.apl.json'; import P0BISGear from './gear_sets/p0.bis.gear.json'; -import P1BISGear from './gear_sets/p1.bis.gear.json'; +import P1Shadow from './gear_sets/shadow.p1.json'; +import P2Shadow from './gear_sets/shadow.p2.json'; +import P3Shadow from './gear_sets/shadow.p3.json'; +import P4Shadow from './gear_sets/shadow.p4.json'; +import P5Shadow from './gear_sets/shadow.p5.json'; +import P6Shadow from './gear_sets/shadow.p6.json'; +import P1Disc from './gear_sets/disc.p1.json'; +import P2Disc from './gear_sets/disc.p2.json'; +import P3Disc from './gear_sets/disc.p3.json'; +import P4Disc from './gear_sets/disc.p4.json'; +import P5Disc from './gear_sets/disc.p5.json'; +import P6Disc from './gear_sets/disc.p6.json'; // Preset options for this spec. // Eventually we will import these values for the raid sim too, so its good to @@ -33,10 +46,26 @@ import P1BISGear from './gear_sets/p1.bis.gear.json'; /////////////////////////////////////////////////////////////////////////// export const GearP0BIS = PresetUtils.makePresetGear('Pre-BiS', P0BISGear); -export const GearP1BIS = PresetUtils.makePresetGear('P1 BiS', P1BISGear); +export const GearP1Shadow = PresetUtils.makePresetGear('P1 Shadow', P1Shadow); +export const GearP2Shadow = PresetUtils.makePresetGear('P2 Shadow', P2Shadow); +export const GearP3Shadow = PresetUtils.makePresetGear('P3 Shadow', P3Shadow); +export const GearP4Shadow = PresetUtils.makePresetGear('P4 Shadow', P4Shadow); +export const GearP5Shadow = PresetUtils.makePresetGear('P5 Shadow', P5Shadow); +export const GearP6Shadow = PresetUtils.makePresetGear('P6 Shadow', P6Shadow); +export const GearP1Disc = PresetUtils.makePresetGear('P1 Disc', P1Disc); +export const GearP2Disc = PresetUtils.makePresetGear('P2 Disc', P2Disc); +export const GearP3Disc = PresetUtils.makePresetGear('P3 Disc', P3Disc); +export const GearP4Disc = PresetUtils.makePresetGear('P4 Disc', P4Disc); +export const GearP5Disc = PresetUtils.makePresetGear('P5 Disc', P5Disc); +export const GearP6Disc = PresetUtils.makePresetGear('P6 Disc', P6Disc); export const GearPresets = { - [Phase.Phase1]: [GearP0BIS, GearP1BIS], + [Phase.Phase1]: [GearP0BIS, GearP1Shadow,GearP1Disc], + [Phase.Phase2]: [GearP2Shadow,GearP2Disc], + [Phase.Phase3]: [GearP3Shadow,GearP3Disc], + [Phase.Phase4]: [GearP4Shadow,GearP4Disc], + [Phase.Phase5]: [GearP5Shadow,GearP5Disc], + [Phase.Phase6]: [GearP6Shadow,GearP6Disc], }; export const DefaultGear = GearP0BIS; @@ -45,10 +74,12 @@ export const DefaultGear = GearP0BIS; // APL Presets /////////////////////////////////////////////////////////////////////////// -export const APLP1Shadow = PresetUtils.makePresetAPLRotation('Shadow', P1APL); +export const APLShadowUD = PresetUtils.makePresetAPLRotation('Shadow UD', APLShadowUDJSON); +export const APLShadow = PresetUtils.makePresetAPLRotation('Shadow', APLShadowJSON); +export const APLDisc = PresetUtils.makePresetAPLRotation('Disc', APLDiscJSON); export const APLPresets = { - [Phase.Phase1]: [APLP1Shadow], + [Phase.Phase1]: [APLShadowUD,APLShadow,APLDisc], }; export const DefaultAPL = APLPresets[Phase.Phase1][0]; @@ -60,10 +91,11 @@ export const DefaultAPL = APLPresets[Phase.Phase1][0]; // Default talents. Uses the wowhead calculator format, make the talents on // https://wowhead.com/classic/talent-calc and copy the numbers in the url. -export const TalentsP1Shadow = PresetUtils.makePresetTalents('Shadow', SavedTalents.create({ talentsString: '0512301302--5002504103501251' })); +export const TalentsP1Shadow = PresetUtils.makePresetTalents('Shadow', SavedTalents.create({ talentsString: '50023013--5002524103511251' })); +export const TalentsP1Disc = PresetUtils.makePresetTalents('Discipline', SavedTalents.create({ talentsString: '510230130505151-20505102202' })); export const TalentPresets = { - [Phase.Phase1]: [TalentsP1Shadow], + [Phase.Phase1]: [TalentsP1Shadow,TalentsP1Disc], }; export const DefaultTalents = TalentPresets[Phase.Phase1][0];