Skip to content

Commit

Permalink
Merge pull request #878 from wowsims/rogue-phase-4
Browse files Browse the repository at this point in the history
Rogue AoE Runes
  • Loading branch information
catszeid authored Jul 7, 2024
2 parents 9d89b8e + 22e6c4b commit 2618277
Show file tree
Hide file tree
Showing 10 changed files with 285 additions and 39 deletions.
Binary file modified assets/database/db.bin
Binary file not shown.
9 changes: 3 additions & 6 deletions assets/database/db.json
Original file line number Diff line number Diff line change
Expand Up @@ -5230,11 +5230,8 @@
{"id":19163,"name":"Molten Belt","icon":"inv_belt_13","type":8,"armorType":2,"requiresLevel":60,"stats":[0,28,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,12,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":70,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":8,"spellId":23710}}]},
{"id":19164,"name":"Dark Iron Gauntlets","icon":"inv_gauntlets_22","type":7,"armorType":4,"requiresLevel":60,"stats":[0,12,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,495,0,0,0,0,0,0,0,0,0,28,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":70,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":2,"spellId":23637}}]},
{"id":19165,"name":"Flarecore Leggings","icon":"inv_pants_06","type":9,"armorType":1,"requiresLevel":60,"stats":[0,0,21,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,0,0,0,0,0,0,0,0,0,16,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":70,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":11,"spellId":23667}}]},
{"id":19166,"name":"Black Amnesty","icon":"inv_weapon_shortblade_12","type":13,"weaponType":2,"handType":2,"requiresLevel":60,"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],"weaponDamageMin":53,"weaponDamageMax":100,"weaponSpeed":1.6,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":66,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":2,"spellId":23638}}]},
{"id":19167,"name":"Blackfury","icon":"inv_spear_08","type":13,"weaponType":6,"handType":4,"requiresLevel":60,"stats":[35,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0],"weaponDamageMin":105,"weaponDamageMax":158,"weaponSpeed":2.1,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":66,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":2,"spellId":23639}}]},
{"id":19168,"name":"Blackguard","icon":"inv_sword_39","type":13,"weaponType":9,"handType":2,"requiresLevel":60,"stats":[0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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":65,"weaponDamageMax":121,"weaponSpeed":1.8,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":70,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":2,"spellId":23652}}]},
{"id":19169,"name":"Nightfall","icon":"inv_axe_12","type":13,"weaponType":1,"handType":4,"requiresLevel":60,"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],"weaponDamageMin":187,"weaponDamageMax":282,"weaponSpeed":3.5,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":70,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":2,"spellId":23653}}]},
{"id":19170,"name":"Ebon Hand","icon":"inv_hammer_19","type":13,"weaponType":4,"handType":2,"requiresLevel":60,"stats":[0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0],"weaponDamageMin":90,"weaponDamageMax":168,"weaponSpeed":2.5,"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":70,"phase":1,"quality":4,"expansion":1,"sources":[{"crafted":{"profession":2,"spellId":23650}}]},
{"id":19287,"name":"Darkmoon Card: Heroism","icon":"inv_misc_ticket_tarot_heroism_01","type":12,"requiresLevel":60,"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],"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":66,"phase":1,"quality":4,"unique":true,"sources":[{"quest":{"id":7928,"name":"Darkmoon Warlords Deck"}}]},
{"id":19288,"name":"Darkmoon Card: Blue Dragon","icon":"inv_misc_ticket_tarot_bluedragon_01","type":12,"requiresLevel":60,"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],"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":66,"phase":1,"quality":4,"unique":true,"sources":[{"quest":{"id":7907,"name":"Darkmoon Beast Deck"}}]},
{"id":19289,"name":"Darkmoon Card: Maelstrom","icon":"inv_misc_ticket_tarot_maelstrom_01","type":12,"requiresLevel":60,"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],"weaponSkills":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ilvl":66,"phase":1,"quality":4,"unique":true,"sources":[{"quest":{"id":7929,"name":"Darkmoon Elementals Deck"}}]},
Expand Down Expand Up @@ -9761,6 +9758,7 @@
{"id":408531,"name":"Engrave Pants - Way of Earth","icon":"spell_nature_earthquake","type":9,"requiresLevel":1,"classAllowlist":[7]},
{"id":408696,"name":"Engrave Boots - Spirit of the Alpha","icon":"ability_hunter_pet_wolf","type":10,"requiresLevel":1,"classAllowlist":[7]},
{"id":408700,"name":"Engrave Boots - Waylay","icon":"ability_rogue_waylay","type":10,"requiresLevel":1,"classAllowlist":[6]},
{"id":409240,"name":"Engrave Cloak - Fan of Knives","icon":"ability_rogue_fanofknives","type":4,"requiresLevel":1,"classAllowlist":[6]},
{"id":409324,"name":"Engrave Pants - Ancestral Guidance","icon":"ability_druid_lunarguidance","type":9,"requiresLevel":1,"classAllowlist":[7]},
{"id":409368,"name":"Engrave Gloves - Beast Mastery","icon":"ability_physical_taunt","type":7,"requiresLevel":1,"classAllowlist":[2]},
{"id":409428,"name":"Engrave Chest - Master Marksman","icon":"ability_hunter_mastermarksman","type":5,"requiresLevel":1,"classAllowlist":[2]},
Expand All @@ -9774,6 +9772,7 @@
{"id":410176,"name":"Engrave Gloves - Skull Bash","icon":"inv_misc_bone_taurenskull_01","type":7,"requiresLevel":1,"classAllowlist":[1]},
{"id":411115,"name":"Engrave Chest - Survival of the Fittest","icon":"ability_druid_enrage","type":5,"requiresLevel":1,"classAllowlist":[1]},
{"id":412019,"name":"Engrave Boots - Sacred Shield","icon":"ability_paladin_blessedmending","type":10,"requiresLevel":1,"classAllowlist":[4]},
{"id":412096,"name":"Engrave Cloak - Crimson Tempest","icon":"inv_sword_17","type":4,"requiresLevel":1,"classAllowlist":[6]},
{"id":412115,"name":"Engrave Helm - Advanced Warding","icon":"spell_arcane_arcaneresilience","type":1,"requiresLevel":1,"classAllowlist":[3]},
{"id":412286,"name":"Engrave Chest - Burnout","icon":"ability_mage_burnout","type":5,"requiresLevel":1,"classAllowlist":[3]},
{"id":412322,"name":"Engrave Boots - Spell Power","icon":"spell_holy_mindvision","type":10,"requiresLevel":1,"classAllowlist":[3]},
Expand Down Expand Up @@ -9899,6 +9898,7 @@
{"id":432276,"name":"Engrave Bracers - Carnage","icon":"ability_rogue_bloodsplatter","type":6,"requiresLevel":1,"classAllowlist":[6]},
{"id":436364,"name":"Engrave Chest - Two-Handed Mastery","icon":"spell_fire_enchantweapon","type":5,"requiresLevel":1,"classAllowlist":[7]},
{"id":436516,"name":"Engrave Boots - Chronostatic Preservation","icon":"spell_arcane_arcane02","type":10,"requiresLevel":1,"classAllowlist":[3]},
{"id":436564,"name":"Engrave Cloak - Blunderbuss","icon":"inv_musket_04","type":4,"requiresLevel":1,"classAllowlist":[6]},
{"id":437123,"name":"Engrave Belt - Steady Shot","icon":"ability_hunter_steadyshot","type":8,"requiresLevel":1,"classAllowlist":[2]},
{"id":439510,"name":"Engrave Cloak - Improved Swipe","icon":"inv_misc_monsterclaw_03","type":4,"requiresLevel":1,"classAllowlist":[1]},
{"id":439733,"name":"Engrave Cloak - Tree of Life","icon":"ability_druid_treeoflife","type":4,"requiresLevel":1,"classAllowlist":[1]},
Expand Down Expand Up @@ -13613,11 +13613,8 @@
{"id":23633,"name":"Gloves of the Dawn","icon":"inv_gauntlets_29","requiresLevel":59},
{"id":23636,"name":"Dark Iron Helm","icon":"inv_helmet_22","requiresLevel":60},
{"id":23637,"name":"Dark Iron Gauntlets","icon":"inv_gauntlets_22","requiresLevel":60},
{"id":23638,"name":"Black Amnesty","icon":"inv_weapon_shortblade_12","requiresLevel":60},
{"id":23639,"name":"Blackfury","icon":"inv_spear_08","requiresLevel":60},
{"id":23650,"name":"Ebon Hand","icon":"inv_hammer_19","requiresLevel":60},
{"id":23652,"name":"Blackguard","icon":"inv_sword_39","requiresLevel":60},
{"id":23653,"name":"Nightfall","icon":"inv_axe_12","requiresLevel":60},
{"id":23663,"name":"Mantle of the Timbermaw","icon":"inv_shoulder_19","requiresLevel":59},
{"id":23664,"name":"Argent Boots","icon":"inv_boots_cloth_03","requiresLevel":53},
{"id":23665,"name":"Argent Shoulders","icon":"inv_shoulder_13","requiresLevel":59},
Expand Down
Binary file modified assets/database/leftover_db.bin
Binary file not shown.
7 changes: 5 additions & 2 deletions assets/database/leftover_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -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":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":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":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},
Expand Down Expand Up @@ -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},
Expand Down Expand Up @@ -1693,6 +1693,7 @@
{"id":408531,"name":"Engrave Pants - Way of Earth","icon":"spell_nature_earthquake","type":9,"requiresLevel":1,"classAllowlist":[7]},
{"id":408696,"name":"Engrave Boots - Spirit of the Alpha","icon":"ability_hunter_pet_wolf","type":10,"requiresLevel":1,"classAllowlist":[7]},
{"id":408700,"name":"Engrave Boots - Waylay","icon":"ability_rogue_waylay","type":10,"requiresLevel":1,"classAllowlist":[6]},
{"id":409240,"name":"Engrave Cloak - Fan of Knives","icon":"ability_rogue_fanofknives","type":4,"requiresLevel":1,"classAllowlist":[6]},
{"id":409324,"name":"Engrave Pants - Ancestral Guidance","icon":"ability_druid_lunarguidance","type":9,"requiresLevel":1,"classAllowlist":[7]},
{"id":409368,"name":"Engrave Gloves - Beast Mastery","icon":"ability_physical_taunt","type":7,"requiresLevel":1,"classAllowlist":[2]},
{"id":409428,"name":"Engrave Chest - Master Marksman","icon":"ability_hunter_mastermarksman","type":5,"requiresLevel":1,"classAllowlist":[2]},
Expand All @@ -1706,6 +1707,7 @@
{"id":410176,"name":"Engrave Gloves - Skull Bash","icon":"inv_misc_bone_taurenskull_01","type":7,"requiresLevel":1,"classAllowlist":[1]},
{"id":411115,"name":"Engrave Chest - Survival of the Fittest","icon":"ability_druid_enrage","type":5,"requiresLevel":1,"classAllowlist":[1]},
{"id":412019,"name":"Engrave Boots - Sacred Shield","icon":"ability_paladin_blessedmending","type":10,"requiresLevel":1,"classAllowlist":[4]},
{"id":412096,"name":"Engrave Cloak - Crimson Tempest","icon":"inv_sword_17","type":4,"requiresLevel":1,"classAllowlist":[6]},
{"id":412115,"name":"Engrave Helm - Advanced Warding","icon":"spell_arcane_arcaneresilience","type":1,"requiresLevel":1,"classAllowlist":[3]},
{"id":412286,"name":"Engrave Chest - Burnout","icon":"ability_mage_burnout","type":5,"requiresLevel":1,"classAllowlist":[3]},
{"id":412322,"name":"Engrave Boots - Spell Power","icon":"spell_holy_mindvision","type":10,"requiresLevel":1,"classAllowlist":[3]},
Expand Down Expand Up @@ -1831,6 +1833,7 @@
{"id":432276,"name":"Engrave Bracers - Carnage","icon":"ability_rogue_bloodsplatter","type":6,"requiresLevel":1,"classAllowlist":[6]},
{"id":436364,"name":"Engrave Chest - Two-Handed Mastery","icon":"spell_fire_enchantweapon","type":5,"requiresLevel":1,"classAllowlist":[7]},
{"id":436516,"name":"Engrave Boots - Chronostatic Preservation","icon":"spell_arcane_arcane02","type":10,"requiresLevel":1,"classAllowlist":[3]},
{"id":436564,"name":"Engrave Cloak - Blunderbuss","icon":"inv_musket_04","type":4,"requiresLevel":1,"classAllowlist":[6]},
{"id":437123,"name":"Engrave Belt - Steady Shot","icon":"ability_hunter_steadyshot","type":8,"requiresLevel":1,"classAllowlist":[2]},
{"id":439510,"name":"Engrave Cloak - Improved Swipe","icon":"inv_misc_monsterclaw_03","type":4,"requiresLevel":1,"classAllowlist":[1]},
{"id":439733,"name":"Engrave Cloak - Tree of Life","icon":"ability_druid_treeoflife","type":4,"requiresLevel":1,"classAllowlist":[1]},
Expand Down
62 changes: 62 additions & 0 deletions sim/rogue/blunderbuss.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package rogue

import (
"time"

"github.com/wowsims/sod/sim/core"
"github.com/wowsims/sod/sim/core/proto"
)

// TODO: 10 yd range
func (rogue *Rogue) registerBlunderbussSpell() {
if !rogue.HasRune(proto.RogueRune_RuneBlunderbuss) {
return
}

results := make([]*core.SpellResult, min(4, rogue.Env.GetNumTargets()))

rogue.Blunderbuss = rogue.RegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 436564},
SpellSchool: core.SpellSchoolPhysical,
DefenseType: core.DefenseTypeRanged,
ProcMask: core.ProcMaskRangedSpecial,
Flags: core.SpellFlagMeleeMetrics | core.SpellFlagAPL,

EnergyCost: core.EnergyCostOptions{
Cost: 20,
Refund: 0,
},
Cast: core.CastConfig{
DefaultCast: core.Cast{
GCD: time.Second,
},
CD: core.Cooldown{
Timer: rogue.NewTimer(),
Duration: time.Second * 15,
},
IgnoreHaste: true,
},

DamageMultiplier: 1,
ThreatMultiplier: 1,

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
rogue.BreakStealth(sim)
baseApDamage := spell.MeleeAttackPower() * 0.48

for idx := range results {
results[idx] = spell.CalcDamage(sim, target, rogue.rollBlunderbussDamage(sim)+baseApDamage, spell.OutcomeRangedHitAndCrit)
target = sim.Environment.NextTargetUnit(target)
}

for _, result := range results {
spell.DealDamage(sim, result)
}
},
})
}

func (rogue *Rogue) rollBlunderbussDamage(sim *core.Simulation) float64 {
baseDamage := rogue.baseRuneAbilityDamage()
return sim.Roll(baseDamage*1.92, baseDamage*2.88)
}
96 changes: 96 additions & 0 deletions sim/rogue/crimson_tempest.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package rogue

import (
"time"

"github.com/wowsims/sod/sim/core"
"github.com/wowsims/sod/sim/core/proto"
"github.com/wowsims/sod/sim/core/stats"
)

func (rogue *Rogue) makeCrimsonTempestHitSpell() *core.Spell {
actionID := core.ActionID{SpellID: 412096}
procMask := core.ProcMaskMeleeMHSpecial

return rogue.RegisterSpell(core.SpellConfig{
ActionID: actionID,
SpellSchool: core.SpellSchoolPhysical,
DefenseType: core.DefenseTypeMelee,
ProcMask: procMask,
Flags: core.SpellFlagMeleeMetrics,

DamageMultiplier: []float64{1, 1.1, 1.2, 1.3}[rogue.Talents.SerratedBlades],
ThreatMultiplier: 1,

Dot: core.DotConfig{
Aura: core.Aura{
Label: "Crimson Tempest",
Tag: RogueBleedTag,
},
NumberOfTicks: 0,
TickLength: time.Second * 2,

OnSnapshot: func(sim *core.Simulation, target *core.Unit, dot *core.Dot, isRollover bool) {
dot.Snapshot(target, rogue.CrimsonTempestDamage(rogue.ComboPoints()), isRollover)
},
OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) {
dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.OutcomeTick)
},
},

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
result := spell.CalcOutcome(sim, target, spell.OutcomeMeleeSpecialHit)
if result.Landed() {
dot := spell.Dot(target)
dot.Spell = spell
dot.NumberOfTicks = rogue.ComboPoints() + 1
dot.Apply(sim)
}
spell.DealOutcome(sim, result)
},
})
}

// TODO: Currently bugged and creates "infite loop detected" warning
func (rogue *Rogue) registerCrimsonTempestSpell() {
if !rogue.HasRune(proto.RogueRune_RuneCrimsonTempest) {
return
}

// Must be updated to match combo points spent
rogue.CrimsonTempestBleed = rogue.makeCrimsonTempestHitSpell()

rogue.CrimsonTempest = rogue.RegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 412096},
SpellSchool: core.SpellSchoolPhysical,
DefenseType: core.DefenseTypeMelee,
ProcMask: core.ProcMaskMeleeMHSpecial,
Flags: SpellFlagCarnage, // TODO: Placeholder to prevent use in APL while broken. Replace with rogue.finisherFlags()
MetricSplits: 6,

EnergyCost: core.EnergyCostOptions{
Cost: 35,
Refund: 0,
},
Cast: core.CastConfig{
DefaultCast: core.Cast{
GCD: time.Second,
},
IgnoreHaste: true,
},

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
rogue.BreakStealth(sim)

for _, aoeTarget := range sim.Encounter.TargetUnits {
rogue.CrimsonTempestBleed.Cast(sim, aoeTarget)
}

rogue.SpendComboPoints(sim, spell)
},
})
}

func (rogue *Rogue) CrimsonTempestDamage(comboPoints int32) float64 {
return []float64{0.15, 0.3, 0.45, 0.6, 0.75, 0.9}[comboPoints] * rogue.GetStat(stats.AttackPower)
}
Loading

0 comments on commit 2618277

Please sign in to comment.