Skip to content

Commit 7fe6b82

Browse files
authored
Merge pull request wowsims#104 from wowsims/feature/trinkets-dmc
Add darkmoon cards and hourglass
2 parents 5b04458 + 4fe2d59 commit 7fe6b82

8 files changed

Lines changed: 151 additions & 11 deletions

File tree

assets/database/db.bin

-19 Bytes
Binary file not shown.

assets/database/db.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9689,7 +9689,7 @@
96899689
{"id":9318,"name":"Zandalar Signet of Serenity","icon":"spell_holy_powerwordshield"},
96909690
{"id":9331,"name":"Greater Inscription of the Blade","icon":"spell_holy_weaponmastery"},
96919691
{"id":9334,"name":"Inscription of Vengeance","icon":"spell_holy_fistofjustice"},
9692-
{"id":9336,"name":"Greater Inscription of Vengeance","icon":"spell_holy_greaterblessingofkings"},
9692+
{"id":9336,"name":"Zandalar Signet of Might","icon":"inv_misc_armorkit_08"},
96939693
{"id":9344,"name":"Inscription of Discipline","icon":"spell_holy_sealofwisdom"},
96949694
{"id":9346,"name":"Zandalar Signet of Mojo","icon":"inv_jewelry_ring_46"},
96959695
{"id":9408,"name":"Greater Inscription of the Oracle","icon":"spell_holy_powerinfusion"},
@@ -11069,7 +11069,7 @@
1106911069
{"id":25064,"name":"Enchant Gloves - Shadow Power","icon":"inv_misc_note_01"},
1107011070
{"id":25065,"name":"Enchant Gloves - Fire Power","icon":"inv_misc_note_01"},
1107111071
{"id":25066,"name":"Enchant Gloves - Frost Power","icon":"inv_misc_note_01"},
11072-
{"id":25067,"name":"Enchant Gloves - Healing Power","icon":"inv_misc_note_01"},
11072+
{"id":25067,"name":"Enchant Bracer - Superior Healing","icon":"inv_misc_note_01"},
1107311073
{"id":25068,"name":"Enchant Cloak - Greater Fire Resistance","icon":"inv_misc_note_01"},
1107411074
{"id":25069,"name":"Enchant Cloak - Greater Nature Resistance","icon":"inv_misc_note_01"},
1107511075
{"id":25070,"name":"Enchant Cloak - Subtlety","icon":"inv_misc_note_01"},
@@ -11149,7 +11149,7 @@
1114911149
{"id":27904,"name":"Spell Warding","icon":"spell_holy_spellwarding"},
1115011150
{"id":27908,"name":"Enchant Bracer - Major Defense","icon":"inv_misc_note_01"},
1115111151
{"id":27912,"name":"Enchant Bracer - Restore Mana Prime","icon":"inv_misc_note_01"},
11152-
{"id":27916,"name":"Enchant Bracer - Fortitude","icon":"inv_misc_note_01"},
11152+
{"id":27916,"name":"Enchant Boots - Fortitude","icon":"inv_misc_note_01"},
1115311153
{"id":27918,"name":"Enchant Bracer - Spellpower","icon":"inv_misc_note_01"},
1115411154
{"id":27923,"name":"Enchant Ring - Spellpower","icon":"inv_misc_note_01"},
1115511155
{"id":27925,"name":"Enchant Ring - Healing Power","icon":"inv_misc_note_01"},

assets/database/leftover_db.bin

0 Bytes
Binary file not shown.

assets/database/leftover_db.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@
156156
{"effectId":931,"spellId":13928,"name":"Enchant Gloves - Minor Haste","icon":"trade_engraving","type":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1},
157157
{"effectId":943,"spellId":13693,"name":"Enchant Weapon - Striking","icon":"trade_engraving","type":13,"stats":[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,0,0,0,0,0],"quality":1},
158158
{"effectId":943,"spellId":13529,"name":"Enchant 2H Weapon - Lesser Impact","icon":"trade_engraving","type":13,"enchantType":1,"stats":[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,0,0,0,0,0],"quality":1},
159-
{"effectId":963,"spellId":13937,"name":"Enchant 2H Weapon - Greater Impact","icon":"trade_engraving","type":13,"enchantType":1,"stats":[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,0,0,0,0,0],"quality":1},
160159
{"effectId":963,"itemId":22552,"spellId":27967,"name":"Enchant Weapon - Major Striking","icon":"inv_misc_note_01","type":13,"stats":[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,0,0,0,0,0],"quality":1},
160+
{"effectId":963,"spellId":13937,"name":"Enchant 2H Weapon - Greater Impact","icon":"trade_engraving","type":13,"enchantType":1,"stats":[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,0,0,0,0,0],"quality":1},
161161
{"effectId":1144,"spellId":14433,"name":"Enchant Chest - Major Spirit","icon":"trade_engraving","type":5,"stats":[0,0,0,0,15,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],"quality":1},
162162
{"effectId":1594,"spellId":9334,"name":"Enchant Gloves - Assault","icon":"trade_engraving","type":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,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],"quality":1},
163163
{"effectId":1704,"itemId":12645,"spellId":16624,"name":"Thorium Shield Spike","icon":"inv_misc_armorkit_20","stats":[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,0,0,0,0,0],"quality":2},
@@ -177,8 +177,8 @@
177177
{"effectId":1893,"itemId":16242,"spellId":19991,"name":"Enchant Chest - Major Mana","icon":"inv_misc_note_01","type":5,"stats":[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,0,0,0,0,0],"quality":2},
178178
{"effectId":1894,"itemId":16223,"spellId":20005,"name":"Enchant Weapon - Icy Chill","icon":"inv_misc_note_01","type":13,"stats":[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,0,0,0,0,0],"quality":2},
179179
{"effectId":1896,"itemId":16247,"spellId":20030,"name":"Enchant 2H Weapon - Superior Impact","icon":"inv_misc_note_01","type":13,"enchantType":1,"stats":[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,0,0,0,0,0],"quality":2},
180-
{"effectId":1897,"itemId":16250,"spellId":20031,"name":"Enchant Weapon - Superior Striking","icon":"inv_misc_note_01","type":13,"stats":[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,0,0,0,0,0],"quality":2},
181180
{"effectId":1897,"spellId":13695,"name":"Enchant 2H Weapon - Impact","icon":"trade_engraving","type":13,"enchantType":1,"stats":[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,0,0,0,0,0],"quality":1},
181+
{"effectId":1897,"itemId":16250,"spellId":20031,"name":"Enchant Weapon - Superior Striking","icon":"inv_misc_note_01","type":13,"stats":[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,0,0,0,0,0],"quality":2},
182182
{"effectId":1898,"spellId":20004,"name":"Enchant Weapon - Major Spirit","icon":"trade_engraving","type":13,"stats":[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,0,0,0,0,0],"quality":1},
183183
{"effectId":1898,"itemId":16254,"spellId":20004,"name":"Enchant Weapon - Lifestealing","icon":"inv_misc_note_01","type":13,"stats":[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,0,0,0,0,0],"quality":3},
184184
{"effectId":1899,"itemId":16248,"spellId":20006,"name":"Enchant Weapon - Unholy Weapon","icon":"inv_misc_note_01","type":13,"stats":[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,0,0,0,0,0],"quality":2,"enchantEffect":{"buffId":20006,"buffName":"Unholy Curse","effectDurationMs":12000,"scalingOptions":{"0":{"stats":{"5":-15}}},"proc":{}}},
@@ -221,8 +221,8 @@
221221
{"effectId":2934,"spellId":33993,"name":"Enchant Gloves - Blasting","icon":"trade_engraving","type":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,10,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],"quality":1},
222222
{"effectId":3150,"spellId":39882,"name":"Enchant Chest - Restore Mana Prime","icon":"trade_engraving","type":5,"stats":[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,0,0,0,0,0],"quality":1},
223223
{"effectId":3269,"itemId":34836,"spellId":45698,"name":"Truesilver Fishing Line","icon":"inv_misc_thread_01","type":13,"stats":[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,0,0,0,0,0],"quality":2},
224-
{"effectId":3289,"spellId":48557,"name":"Riding Crop","icon":"trade_engraving","type":13,"stats":[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,0,0,0,0,0],"quality":1},
225224
{"effectId":3289,"spellId":48555,"name":"Skybreaker Whip","icon":"trade_engraving","type":13,"stats":[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,0,0,0,0,0],"quality":1},
225+
{"effectId":3289,"spellId":48557,"name":"Riding Crop","icon":"trade_engraving","type":13,"stats":[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,0,0,0,0,0],"quality":1},
226226
{"effectId":3315,"itemId":37312,"spellId":48401,"name":"Carrot on a Stick","icon":"inv_misc_food_54","type":13,"stats":[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,0,0,0,0,0],"quality":2}
227227
],
228228
"gems":[

sim/common/tbc/items_trinkets.go

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,35 @@ func init() {
3737
character.ItemSwap.RegisterProc(27683, procAura)
3838
})
3939

40+
// Hourglass of the Unraveller
41+
core.NewItemEffect(28034, func(agent core.Agent) {
42+
character := agent.GetCharacter()
43+
duration := time.Second * 6
44+
value := 300.0
45+
46+
aura := character.NewTemporaryStatsAura(
47+
"Rage of the Unraveller",
48+
core.ActionID{SpellID: 33649},
49+
stats.Stats{stats.MeleeHasteRating: value},
50+
duration,
51+
)
52+
53+
procAura := character.MakeProcTriggerAura(core.ProcTrigger{
54+
Name: "Hourglass of the Unraveller",
55+
ActionID: core.ActionID{ItemID: 28034},
56+
ProcChance: 0.1,
57+
ICD: time.Second * 50,
58+
ProcMask: core.ProcMaskMeleeOrRanged,
59+
Outcome: core.OutcomeCrit,
60+
Callback: core.CallbackOnSpellHitDealt,
61+
Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
62+
aura.Activate(sim)
63+
},
64+
})
65+
66+
character.ItemSwap.RegisterProc(28034, procAura)
67+
})
68+
4069
// The Lightning Capacitor
4170
core.NewItemEffect(28785, func(agent core.Agent) {
4271
character := agent.GetCharacter()
@@ -120,4 +149,115 @@ func init() {
120149

121150
character.ItemSwap.RegisterProc(28830, procAura)
122151
})
152+
153+
// Darkmoon Card: Crusade
154+
core.NewItemEffect(31856, func(agent core.Agent) {
155+
character := agent.GetCharacter()
156+
157+
meleeAura := core.MakeStackingAura(character, core.StackingStatAura{
158+
Aura: core.Aura{
159+
Label: "Aura of the Crusader (Melee)",
160+
ActionID: core.ActionID{SpellID: 39438},
161+
Duration: time.Second * 10,
162+
MaxStacks: 20,
163+
},
164+
BonusPerStack: stats.Stats{stats.AttackPower: 6, stats.RangedAttackPower: 6},
165+
})
166+
167+
casterAura := core.MakeStackingAura(character, core.StackingStatAura{
168+
Aura: core.Aura{
169+
Label: "Aura of the Crusader (Caster)",
170+
ActionID: core.ActionID{SpellID: 39441},
171+
Duration: time.Second * 10,
172+
MaxStacks: 10,
173+
},
174+
BonusPerStack: stats.Stats{stats.SpellDamage: 8},
175+
})
176+
177+
procAura := character.MakeProcTriggerAura(core.ProcTrigger{
178+
Name: "Darkmoon Card: Crusade",
179+
ActionID: core.ActionID{ItemID: 31856},
180+
ProcMask: core.ProcMaskDirect | core.ProcMaskProc,
181+
Outcome: core.OutcomeLanded,
182+
Callback: core.CallbackOnSpellHitDealt,
183+
Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
184+
aura := core.Ternary(spell.ProcMask.Matches(core.ProcMaskSpellDamageProc), casterAura, meleeAura)
185+
aura.Activate(sim)
186+
aura.AddStack(sim)
187+
},
188+
})
189+
190+
character.ItemSwap.RegisterProc(28830, procAura)
191+
})
192+
193+
// Darkmoon Card: Wrath
194+
core.NewItemEffect(31857, func(agent core.Agent) {
195+
character := agent.GetCharacter()
196+
197+
aura := core.MakeStackingAura(character, core.StackingStatAura{
198+
Aura: core.Aura{
199+
Label: "Aura of Wrath",
200+
ActionID: core.ActionID{SpellID: 39442},
201+
Duration: time.Second * 10,
202+
MaxStacks: 20,
203+
},
204+
BonusPerStack: stats.Stats{stats.MeleeCritRating: 17, stats.SpellCritRating: 17},
205+
})
206+
207+
procAura := character.MakeProcTriggerAura(core.ProcTrigger{
208+
Name: "Darkmoon Card: Wrath",
209+
ActionID: core.ActionID{ItemID: 31857},
210+
ProcMask: core.ProcMaskDirect,
211+
Outcome: core.OutcomeLanded,
212+
Callback: core.CallbackOnSpellHitDealt,
213+
Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
214+
if result.Outcome.Matches(core.OutcomeCrit) {
215+
aura.Deactivate(sim)
216+
} else {
217+
aura.Activate(sim)
218+
aura.AddStack(sim)
219+
}
220+
},
221+
})
222+
223+
character.ItemSwap.RegisterProc(31857, procAura)
224+
})
225+
226+
// Darkmoon Card: Vengeance
227+
core.NewItemEffect(31858, func(agent core.Agent) {
228+
character := agent.GetCharacter()
229+
230+
spell := character.RegisterSpell(core.SpellConfig{
231+
ActionID: core.ActionID{SpellID: 39445},
232+
SpellSchool: core.SpellSchoolHoly,
233+
234+
ProcMask: core.ProcMaskEmpty,
235+
Flags: core.SpellFlagPassiveSpell | core.SpellFlagNoOnCastComplete | core.SpellFlagIgnoreResists,
236+
237+
DamageMultiplier: 1,
238+
CritMultiplier: character.DefaultMeleeCritMultiplier(),
239+
ThreatMultiplier: 1,
240+
241+
ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
242+
baseDamage := sim.Roll(95, 115)
243+
spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialCritOnly)
244+
},
245+
})
246+
247+
procAura := character.MakeProcTriggerAura(core.ProcTrigger{
248+
Name: "Darkmoon Card: Wrath",
249+
ActionID: core.ActionID{ItemID: 31858},
250+
ProcMask: core.ProcMaskDirect,
251+
ProcChance: 0.1,
252+
RequireDamageDealt: true,
253+
Outcome: core.OutcomeLanded,
254+
Callback: core.CallbackOnSpellHitTaken,
255+
Handler: func(sim *core.Simulation, _ *core.Spell, result *core.SpellResult) {
256+
spell.Cast(sim, result.Target)
257+
},
258+
})
259+
260+
character.ItemSwap.RegisterProc(31858, procAura)
261+
})
262+
123263
}

sim/warrior/talents_arms.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (war *Warrior) registerDeflection() {
6969
return
7070
}
7171

72-
war.PseudoStats.BaseParryChance += float64(war.Talents.Deflection)
72+
war.PseudoStats.BaseParryChance += 0.01 * float64(war.Talents.Deflection)
7373
}
7474

7575
func (war *Warrior) registerImprovedRend() {

sim/warrior/talents_fury.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,10 @@ func (war *Warrior) registerPrecision() {
300300
}
301301

302302
func (war *Warrior) registerBloodthirst() {
303+
if !war.Talents.Bloodthirst {
304+
return
305+
}
306+
303307
actionID := core.ActionID{SpellID: 23881}
304308

305309
war.RegisterSpell(core.SpellConfig{

ui/core/constants/missing_effects_auto_gen.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ export const MISSING_ITEM_EFFECTS = [
4646
27924, // Mark of Defiance
4747
27926, // Mark of Vindication
4848
27927, // Mark of Vindication
49-
28034, // Hourglass of the Unraveller
5049
28108, // Power Infused Mushroom
5150
28109, // Essence Infused Mushroom
5251
28190, // Scarab of the Infinite Cycle
@@ -77,9 +76,6 @@ export const MISSING_ITEM_EFFECTS = [
7776
31323, // Don Santos' Famous Hunting Rifle
7877
31328, // Leggings of Beast Mastery
7978
31336, // Blade of Wizardry
80-
31856, // Darkmoon Card: Crusade
81-
31857, // Darkmoon Card: Wrath
82-
31858, // Darkmoon Card: Vengeance
8379
32262, // Syphon of the Nathrezim
8480
32336, // Black Bow of the Betrayer
8581
32375, // Bulwark of Azzinoth

0 commit comments

Comments
 (0)