diff --git a/assets/database/db.bin b/assets/database/db.bin index 4753a1cde9..dc1f7cca5e 100644 Binary files a/assets/database/db.bin and b/assets/database/db.bin differ diff --git a/assets/database/db.json b/assets/database/db.json index 7935b3da75..2fa66127c6 100644 --- a/assets/database/db.json +++ b/assets/database/db.json @@ -9540,8 +9540,8 @@ {"effectId":63,"spellId":13538,"name":"Enchant Chest - Lesser Absorption","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}, {"effectId":66,"spellId":7457,"name":"Enchant Bracer - Minor Stamina","type":6,"stats":[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, {"effectId":66,"spellId":7863,"name":"Enchant Boots - Minor Stamina","type":10,"stats":[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, -{"effectId":241,"spellId":13503,"name":"Enchant Weapon - Lesser Striking","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}, {"effectId":241,"spellId":7745,"name":"Enchant 2H Weapon - Minor Impact","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}, +{"effectId":241,"spellId":13503,"name":"Enchant Weapon - Lesser Striking","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}, {"effectId":242,"spellId":7748,"name":"Enchant Chest - Lesser Health","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,15,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":243,"spellId":7766,"name":"Enchant Bracer - Minor Spirit","type":6,"stats":[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, {"effectId":246,"spellId":7776,"name":"Enchant Chest - Lesser Mana","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,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, @@ -9615,8 +9615,8 @@ {"effectId":929,"itemId":16217,"spellId":20069,"name":"Enchant Shield - Greater Stamina","type":13,"enchantType":2,"stats":[0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, {"effectId":930,"spellId":13947,"name":"Enchant Gloves - Riding Skill","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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":931,"spellId":13948,"name":"Enchant Gloves - Minor Haste","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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, -{"effectId":943,"spellId":13693,"name":"Enchant Weapon - Striking","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}, {"effectId":943,"spellId":13529,"name":"Enchant 2H Weapon - Lesser Impact","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}, +{"effectId":943,"spellId":13693,"name":"Enchant Weapon - Striking","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}, {"effectId":963,"spellId":13937,"name":"Enchant 2H Weapon - Greater Impact","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}, {"effectId":1483,"itemId":11622,"spellId":15340,"name":"Lesser Arcanum of Rumination","type":1,"extraTypes":[9],"enchantType":3,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1503,"itemId":11642,"spellId":15389,"name":"Lesser Arcanum of Constitution","type":1,"extraTypes":[9],"enchantType":3,"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,100,0,0,0,0,0,0,0,0,0],"quality":2}, @@ -9642,8 +9642,8 @@ {"effectId":1893,"spellId":20028,"name":"Enchant Chest - Major Mana","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,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1894,"spellId":20029,"name":"Enchant Weapon - Icy Chill","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}, {"effectId":1896,"spellId":20030,"name":"Enchant 2H Weapon - Superior Impact","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}, -{"effectId":1897,"spellId":20031,"name":"Enchant Weapon - Superior Striking","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}, {"effectId":1897,"spellId":13695,"name":"Enchant 2H Weapon - Impact","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}, +{"effectId":1897,"spellId":20031,"name":"Enchant Weapon - Superior Striking","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}, {"effectId":1898,"spellId":20032,"name":"Enchant Weapon - Lifestealing","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}, {"effectId":1899,"spellId":20033,"name":"Enchant Weapon - Unholy Weapon","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}, {"effectId":1900,"spellId":20034,"name":"Enchant Weapon - Crusader","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}, diff --git a/assets/database/leftover_db.json b/assets/database/leftover_db.json index e64bb2df73..633fe7ae9b 100644 --- a/assets/database/leftover_db.json +++ b/assets/database/leftover_db.json @@ -1479,8 +1479,8 @@ {"effectId":63,"spellId":13538,"name":"Enchant Chest - Lesser Absorption","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}, {"effectId":66,"spellId":7457,"name":"Enchant Bracer - Minor Stamina","type":6,"stats":[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, {"effectId":66,"spellId":7863,"name":"Enchant Boots - Minor Stamina","type":10,"stats":[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, -{"effectId":241,"spellId":13503,"name":"Enchant Weapon - Lesser Striking","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}, {"effectId":241,"spellId":7745,"name":"Enchant 2H Weapon - Minor Impact","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}, +{"effectId":241,"spellId":13503,"name":"Enchant Weapon - Lesser Striking","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}, {"effectId":242,"spellId":7748,"name":"Enchant Chest - Lesser Health","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,15,0,0,0,0,0,0,0,0,0],"quality":1}, {"effectId":243,"spellId":7766,"name":"Enchant Bracer - Minor Spirit","type":6,"stats":[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, {"effectId":246,"spellId":7776,"name":"Enchant Chest - Lesser Mana","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,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, @@ -1554,8 +1554,8 @@ {"effectId":929,"itemId":16217,"spellId":20069,"name":"Enchant Shield - Greater Stamina","type":13,"enchantType":2,"stats":[0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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}, {"effectId":930,"spellId":13947,"name":"Enchant Gloves - Riding Skill","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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":931,"spellId":13948,"name":"Enchant Gloves - Minor Haste","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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1}, -{"effectId":943,"spellId":13693,"name":"Enchant Weapon - Striking","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}, {"effectId":943,"spellId":13529,"name":"Enchant 2H Weapon - Lesser Impact","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}, +{"effectId":943,"spellId":13693,"name":"Enchant Weapon - Striking","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}, {"effectId":963,"spellId":13937,"name":"Enchant 2H Weapon - Greater Impact","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}, {"effectId":1483,"itemId":11622,"spellId":15340,"name":"Lesser Arcanum of Rumination","type":1,"extraTypes":[9],"enchantType":3,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, {"effectId":1503,"itemId":11642,"spellId":15389,"name":"Lesser Arcanum of Constitution","type":1,"extraTypes":[9],"enchantType":3,"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,100,0,0,0,0,0,0,0,0,0],"quality":2}, diff --git a/proto/rogue.proto b/proto/rogue.proto index 3aa4be53b2..c464ff1556 100644 --- a/proto/rogue.proto +++ b/proto/rogue.proto @@ -92,6 +92,7 @@ enum RogueRune { RuneSaberSlash = 424785; RuneShiv = 424799; RuneMainGauche = 424919; + RuneCutthroat = 462708; // Waist RuneShurikenToss = 399986; diff --git a/sim/rogue/ambush.go b/sim/rogue/ambush.go index deee1cb076..878cf43e20 100644 --- a/sim/rogue/ambush.go +++ b/sim/rogue/ambush.go @@ -23,6 +23,11 @@ func (rogue *Rogue) registerAmbushSpell() { }[rogue.Level] // waylay := rogue.HasRune(proto.RogueRune_RuneWaylay) + hasCutthroatRune := rogue.HasRune(proto.RogueRune_RuneCutthroat) + hasSlaughterRune := rogue.HasRune(proto.RogueRune_RuneSlaughterFromTheShadows) + + RuneDamageModifier := core.TernaryFloat64(hasSlaughterRune, 1.6, 1) + RuneCostModifier := core.TernaryFloat64(hasSlaughterRune, 30, 0) rogue.Ambush = rogue.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: spellID}, @@ -32,7 +37,7 @@ func (rogue *Rogue) registerAmbushSpell() { Flags: rogue.builderFlags(), EnergyCost: core.EnergyCostOptions{ - Cost: 60 - core.TernaryFloat64(rogue.HasRune(proto.RogueRune_RuneSlaughterFromTheShadows), 20, 0), + Cost: 60 - RuneCostModifier, Refund: 0.8, }, Cast: core.CastConfig{ @@ -42,21 +47,28 @@ func (rogue *Rogue) registerAmbushSpell() { IgnoreHaste: true, }, ExtraCastCondition: func(sim *core.Simulation, target *core.Unit) bool { - return !rogue.PseudoStats.InFrontOfTarget && rogue.HasDagger(core.MainHand) && rogue.IsStealthed() + if !rogue.HasDagger(core.MainHand) { + return false + } + if hasCutthroatRune && (rogue.CutthroatProcAura.IsActive() || rogue.IsStealthed()) { + return true + } + return !rogue.PseudoStats.InFrontOfTarget && rogue.IsStealthed() }, BonusCritRating: 15 * core.CritRatingPerCritChance * float64(rogue.Talents.ImprovedAmbush), - DamageMultiplier: 2.5 * []float64{1, 1.04, 1.08, 1.12, 1.16, 1.2}[rogue.Talents.Opportunity], ThreatMultiplier: 1, BonusCoefficient: 1, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { rogue.BreakStealth(sim) - baseDamage := flatDamageBonus + spell.Unit.MHNormalizedWeaponDamage(sim, spell.MeleeAttackPower()) + baseDamage := (flatDamageBonus + spell.Unit.MHNormalizedWeaponDamage(sim, spell.MeleeAttackPower())) * RuneDamageModifier result := spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialNoBlockDodgeParry) - + if hasCutthroatRune && rogue.CutthroatProcAura.IsActive() { + rogue.CutthroatProcAura.Deactivate(sim) + } if result.Landed() { rogue.AddComboPoints(sim, 1, spell.ComboPointMetrics()) /** Currently does not apply to bosses due to being a slow diff --git a/sim/rogue/backstab.go b/sim/rogue/backstab.go index edd852ec00..ec36c2df18 100644 --- a/sim/rogue/backstab.go +++ b/sim/rogue/backstab.go @@ -23,6 +23,11 @@ func (rogue *Rogue) registerBackstabSpell() { }[rogue.Level] // waylay := rogue.HasRune(proto.RogueRune_RuneWaylay) + hasCutthroatRune := rogue.HasRune(proto.RogueRune_RuneCutthroat) + hasSlaughterRune := rogue.HasRune(proto.RogueRune_RuneSlaughterFromTheShadows) + + RuneDamageModifier := core.TernaryFloat64(hasSlaughterRune, 1.6, 1) + RuneCostModifier := core.TernaryFloat64(hasSlaughterRune, 30, 0) rogue.Backstab = rogue.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: spellID}, @@ -32,7 +37,7 @@ func (rogue *Rogue) registerBackstabSpell() { Flags: rogue.builderFlags(), EnergyCost: core.EnergyCostOptions{ - Cost: 60 - core.TernaryFloat64(rogue.HasRune(proto.RogueRune_RuneSlaughterFromTheShadows), 30, 0), + Cost: 60 - RuneCostModifier, Refund: 0.8, }, Cast: core.CastConfig{ @@ -42,7 +47,10 @@ func (rogue *Rogue) registerBackstabSpell() { IgnoreHaste: true, }, ExtraCastCondition: func(sim *core.Simulation, target *core.Unit) bool { - return !rogue.PseudoStats.InFrontOfTarget && rogue.HasDagger(core.MainHand) + if !rogue.HasDagger(core.MainHand) { + return false + } + return hasCutthroatRune || !rogue.PseudoStats.InFrontOfTarget }, BonusCritRating: 10 * core.CritRatingPerCritChance * float64(rogue.Talents.ImprovedBackstab), @@ -55,13 +63,16 @@ func (rogue *Rogue) registerBackstabSpell() { ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { rogue.BreakStealth(sim) - baseDamage := (flatDamageBonus + spell.Unit.MHNormalizedWeaponDamage(sim, spell.MeleeAttackPower())) * core.TernaryFloat64(rogue.HasRune(proto.RogueRune_RuneSlaughterFromTheShadows), 1.6, 1) + baseDamage := (flatDamageBonus + spell.Unit.MHNormalizedWeaponDamage(sim, spell.MeleeAttackPower())) * RuneDamageModifier result := spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeWeaponSpecialHitAndCrit) if result.Landed() { rogue.AddComboPoints(sim, 1, spell.ComboPointMetrics()) - /** Currently does not apply to bosses due to being a slow + if hasCutthroatRune { + rogue.rollCutthroat(sim) + } + /** Currently does not apply to bosses due to being a slow if waylay { rogue.WaylayAuras.Get(target).Activate(sim) } */ diff --git a/sim/rogue/garrote.go b/sim/rogue/garrote.go index 20ff806f40..fd28069fce 100644 --- a/sim/rogue/garrote.go +++ b/sim/rogue/garrote.go @@ -4,6 +4,7 @@ import ( "time" "github.com/wowsims/sod/sim/core" + "github.com/wowsims/sod/sim/core/proto" ) func (rogue *Rogue) registerGarrote() { @@ -21,6 +22,8 @@ func (rogue *Rogue) registerGarrote() { 60: 11290, }[rogue.Level] + hasCutthroatRune := rogue.HasRune(proto.RogueRune_RuneCutthroat) + rogue.Garrote = rogue.GetOrRegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: spellID}, SpellSchool: core.SpellSchoolPhysical, @@ -39,7 +42,10 @@ func (rogue *Rogue) registerGarrote() { IgnoreHaste: true, }, ExtraCastCondition: func(sim *core.Simulation, target *core.Unit) bool { - return !rogue.PseudoStats.InFrontOfTarget && rogue.IsStealthed() + if !rogue.IsStealthed() { + return false + } + return hasCutthroatRune || !rogue.PseudoStats.InFrontOfTarget }, DamageMultiplier: 1 + diff --git a/sim/rogue/rogue.go b/sim/rogue/rogue.go index da43d28e86..49f8f39f42 100644 --- a/sim/rogue/rogue.go +++ b/sim/rogue/rogue.go @@ -86,6 +86,7 @@ type Rogue struct { WaylayAuras core.AuraArray RollingWithThePunchesAura *core.Aura RollingWithThePunchesProcAura *core.Aura + CutthroatProcAura *core.Aura HonorAmongThieves *core.Aura diff --git a/sim/rogue/runes.go b/sim/rogue/runes.go index ba7fcdac3b..f109d05dd0 100644 --- a/sim/rogue/runes.go +++ b/sim/rogue/runes.go @@ -36,6 +36,7 @@ func (rogue *Rogue) ApplyRunes() { rogue.registerBladeDance() rogue.applyJustAFleshWound() rogue.applyRollingWithThePunches() + rogue.registerCutthroat() } func (rogue *Rogue) applyCombatPotency() { @@ -315,3 +316,22 @@ func (rogue *Rogue) applyRollingWithThePunches() { }, }) } + + +func (rogue *Rogue) rollCutthroat(sim *core.Simulation) { + if sim.RandomFloat("Cutthroat") < 0.15 { + rogue.CutthroatProcAura.Activate(sim) + } +} + +func (rogue *Rogue) registerCutthroat() { + if !rogue.HasRune(proto.RogueRune_RuneCutthroat) { + return + } + + rogue.CutthroatProcAura = rogue.RegisterAura(core.Aura{ + Label: "Cutthroat", + ActionID: core.ActionID{SpellID: 462707}, + Duration: time.Second * 10, + }) +}