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];