From 38339ed6e25beebbd844c611b382f61a69322348 Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Fri, 23 Aug 2024 13:23:35 -0700 Subject: [PATCH 1/5] Removed WotLK Engi tinkers from enchants DB. If there is a desire to keep any of these for Cata, then they should be implemented as tinkers rather than as enchants. On branch guardian Changes to be committed: modified: assets/database/db.bin modified: assets/database/db.json modified: assets/database/leftover_db.bin modified: assets/database/leftover_db.json modified: sim/common/wotlk/enchant_effects.go modified: tools/database/enchant_overrides.go --- assets/database/db.bin | Bin 3897748 -> 3894769 bytes assets/database/db.json | 22 ----- assets/database/leftover_db.bin | Bin 15721125 -> 15718798 bytes assets/database/leftover_db.json | 9 -- sim/common/wotlk/enchant_effects.go | 148 ++++++++++++++-------------- tools/database/enchant_overrides.go | 9 -- 6 files changed, 74 insertions(+), 114 deletions(-) diff --git a/assets/database/db.bin b/assets/database/db.bin index 2f5fffe7e28d2e04e2224a58da474a288dcdc883..0e742c81adac11db480459e303ed9ed122dc7890 100644 GIT binary patch delta 194 zcmV;z06qVd^X&og+wB2>gaL#Cgad>Ggaw2Kga?EOgb9QSgbRcWgbjoagb#!egb{=i zgcF1mgcXDqgcpPugc*bygd2n$gdKz)gdc<;gdv0?gd>C`ge8O~geQb3gein7ge!zB zge`K;tk|rv)ssP&o!M zK2ln8jXM{{L{SVHyI>`3Ox&>WK`=3HOmsnvlDHrSye&pz0>;JN+;jeO{{MX6-Y+r9 z9m>>(bK{g=Bf$gvZav=|P!Y(jFKCn;#g-`^=U;z$FpcKl$3guvf3cz3o z9(KbXaKK)uges_p8mNUjsE2*9ADqwtjc@=Cg6o+uJmVTSpj%dM{-Ket^2vHcQzZo- zQRHA$*ZQO$RgQ*&*w?Q_WPDUsWnGGDx)YJRbHWGC#4a-^Zso=%jeJgxAw~vfG=atm1`gW~fjmllv7t=M|p#{&%QS#!paDse%Y8bEdGJX?#$$*kp z?j4m_ysE z__!(EdjGR3xQVy4hg7QS z3oD`SP*947G!-8X(J-%tGSYG_Z_b+8_JcudnEOn_#5_=XC=bv2$O)Wbr(4z7&f_lif}99ZDs;#hW=sCt4tDs#s^hOv)Y>JuS5!L>aUH z#h5&PC2}M%C8}l~QMl{|TwtDPi6~2UOO{fnyVye6v750= z4=8XTdJXpPYorU$pNP|r(t1QevYUd$vtki$M3fx+4|3^Isp&W3ih)|Cpx7-y^=5*n uCKp8Spvi?s?vdm%x07C%ET3|#^ykL$|V&-n+=l(E(wHqXR<3 z5m!9%C6G{nL=sCPsbrE%A*EDOOCzmx(#s&DOft(Nt8B8%A*Wn&%OkIR@++XALJBLQ zsA7sMp`=nuE2FG(%B!HFN-C?Os%omMp{81DtD~-Z>T95(MjC6Psb-pMp`}(@Ya>uw z?X=fHN1b%mMOWQ)*F#Ue^wvjT{RHW6fPn@XY>1(T87|leBaJfJ7-Nky-UJg(GT9VU zO%r0e8D?UZ*+R`R*F5truuzyq7F%MeWtLlErBzm2W36@8+hC(`n{2klRuLj?v)v9m z?Xue*d+oE|0S6s&*bzq^6Xm!QPCDhZGtP>3&UqJHbjf8`Ty@QLH{5i~ZFk&t&wUR( z^vGjRJoU_TFTC{1Yj3>u&U+tx^vP#meD%$DKm0rr(;+-+P(;k%hEc(>F@Ji81_l25 NKQ<~T@ORBc{{WE;{HFi_ delta 932 zcmXw$YgiO@6vm%rw;0RJ&|;(w#w|iC%}gt^3y{J}LJNl2o!R9tOb#>a>>v_dy!?v1 zfh*FKT`0>mFQsXrWzo%UcF`;;vyyIVE%iM5*oU4TZFaK{=hJzA=Y7vPt(&{kSMBId zpM!@qy!beUQ%OgnAE$9T{W*gHoXJ4WB7;E;=4{R(6PY1oaV~z&Bbyu)h7#a>E+Cf+ z$zvG9xrmFogb|G7QbutZqq&?hjO7ZhL*J9%BWM z^8`=w6rDWHGpyuUo?{iyvzj%$z*^R^o(;UnOKfBlFSD5~yuzz=v6XGS#_Me74c?@i zw|JX(c$fFs!TWr`hkV4x?Bo+Zmz5K{e z{LC->%0UisnBVw)OQNcC?6Nee%`fj-=M4-C2`gqAs;*4bMZ~tudbQRNwiZ!B4SGx{ z#ljGlYMa(5$(h-i*q`O8_GKLPNO8ZsV7)icugFqsl|rH0C;NHH{=77)-7oLm;0?$@ z)uqmZ?;jkr~2v)RshZJU^TlOagP$q~(6O#|1KjO;I;dRJihjNJQxW zxySz34^8R+@kkwhd7rD#DAL93Mxo9UN~KXFEM0X%xqZDJ-|DHIiD1rgkJO$mcO3Bs z22Y7vno--N6j*Ac&M;GqQ=Z$`>>QX}9Uh*VJKxQbEw6CpLn@L-XwcPU?gFdcw3I3l z4!aXhCMou;ae8~ovwTUgtMXvt?{L6fQ^GYw^e7OQjA zqP{`Sz??=Up1;V!X4lxOHX9p{1;(&#gbY K%1ZvsZ~GV0@{@Z2 diff --git a/assets/database/leftover_db.json b/assets/database/leftover_db.json index efb63d4823..daf83bc8dd 100644 --- a/assets/database/leftover_db.json +++ b/assets/database/leftover_db.json @@ -28563,11 +28563,6 @@ {"effectId":3370,"spellId":53343,"name":"Rune of Razorice","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],"quality":2,"phase":1,"classAllowlist":[10]}, {"effectId":3594,"spellId":54446,"name":"Rune of Swordbreaking","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],"quality":2,"phase":1,"classAllowlist":[10]}, {"effectId":3595,"spellId":54447,"name":"Rune of Spellbreaking","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],"quality":2,"phase":1,"classAllowlist":[10]}, -{"effectId":3599,"spellId":54736,"name":"Personal Electromagnetic Pulse Generator","type":8,"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],"quality":1,"requiredProfession":4}, -{"effectId":3601,"spellId":54793,"name":"Frag Belt","type":8,"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],"quality":1,"requiredProfession":4}, -{"effectId":3603,"spellId":54998,"name":"Hand-Mounted Pyro Rocket","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],"quality":1,"requiredProfession":4}, -{"effectId":3604,"spellId":54999,"name":"Hyperspeed Accelerators","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],"quality":1,"requiredProfession":4}, -{"effectId":3605,"spellId":55002,"name":"Flexweave Underlay","type":4,"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],"quality":1,"requiredProfession":4}, {"effectId":3607,"itemId":41146,"spellId":55076,"name":"Sun Scope","type":14,"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],"quality":3}, {"effectId":3608,"itemId":41167,"spellId":55135,"name":"Heartseeker Scope","type":14,"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],"quality":3}, {"effectId":3718,"itemId":41601,"spellId":55630,"name":"Shining Spellthread","type":9,"stats":[0,0,0,0,12,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, @@ -28639,8 +28634,6 @@ {"effectId":3852,"itemId":44957,"spellId":62384,"name":"Greater Inscription of the Gladiator","type":3,"stats":[0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0],"quality":4}, {"effectId":3853,"itemId":44963,"spellId":62447,"name":"Earthen Leg Armor","type":9,"stats":[0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0],"quality":4}, {"effectId":3854,"itemId":45059,"spellId":62948,"name":"Staff - Greater Spellpower","type":13,"enchantType":4,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, -{"effectId":3859,"spellId":63765,"name":"Springy Arachnoweave","type":4,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, -{"effectId":3860,"spellId":63770,"name":"Reticulated Armor Webbing","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,885,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":3870,"itemId":46348,"spellId":64579,"name":"Blood Draining","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],"quality":4}, {"effectId":3872,"spellId":56039,"name":"Sanctified Spellthread","type":9,"stats":[0,0,0,0,20,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":11}, {"effectId":3873,"spellId":56034,"name":"Master's Spellthread","type":9,"stats":[0,0,30,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":11}, @@ -28737,8 +28730,6 @@ {"effectId":4215,"itemId":55055,"spellId":92433,"name":"Elementium Shield Spike","type":13,"enchantType":2,"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],"quality":2}, {"effectId":4216,"itemId":55056,"spellId":92437,"name":"Pyrium Shield Spike","type":13,"enchantType":2,"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],"quality":3}, {"effectId":4217,"itemId":55057,"spellId":93448,"name":"Pyrium Weapon Chain","type":13,"stats":[0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":2}, -{"effectId":4222,"spellId":67839,"name":"Mind Amplification Dish","type":1,"stats":[0,0,45,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,"requiredProfession":4}, -{"effectId":4223,"spellId":55016,"name":"Nitro Boosts","type":10,"stats":[0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":4227,"spellId":95471,"name":"Enchant 2H Weapon - Mighty Agility","type":13,"enchantType":1,"stats":[0,130,0,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":4245,"itemId":68770,"spellId":96245,"name":"Arcanum of Vicious Intellect","type":1,"stats":[0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0],"quality":3}, {"effectId":4246,"itemId":68769,"spellId":96246,"name":"Arcanum of Vicious Agility","type":1,"stats":[0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0],"quality":3}, diff --git a/sim/common/wotlk/enchant_effects.go b/sim/common/wotlk/enchant_effects.go index 719611d5ec..1245097392 100644 --- a/sim/common/wotlk/enchant_effects.go +++ b/sim/common/wotlk/enchant_effects.go @@ -268,80 +268,80 @@ func init() { w.BaseDamageMax += 15 }) - core.NewEnchantEffect(3603, func(agent core.Agent) { - character := agent.GetCharacter() - actionID := core.ActionID{SpellID: 54757} - - spell := character.GetOrRegisterSpell(core.SpellConfig{ - ActionID: actionID, - SpellSchool: core.SpellSchoolFire, - ProcMask: core.ProcMaskEmpty, - Flags: core.SpellFlagNoOnCastComplete, - - Cast: core.CastConfig{ - CD: core.Cooldown{ - Timer: character.NewTimer(), - Duration: time.Second * 45, - }, - SharedCD: core.Cooldown{ - Timer: character.GetOffensiveTrinketCD(), - Duration: time.Second * 10, - }, - }, - - DamageMultiplier: 1, - CritMultiplier: character.DefaultSpellCritMultiplier(), - ThreatMultiplier: 1, - - ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - spell.CalcAndDealDamage(sim, target, sim.Roll(1654, 2020), spell.OutcomeMagicCrit) - }, - }) - - character.AddMajorCooldown(core.MajorCooldown{ - Spell: spell, - Priority: core.CooldownPriorityLow, // Use low prio so other actives get used first. - Type: core.CooldownTypeDPS, - }) - }) - - core.NewEnchantEffect(3604, func(agent core.Agent) { - character := agent.GetCharacter() - actionID := core.ActionID{SpellID: 54758} - - procAura := character.NewTemporaryStatsAura("Hyperspeed Acceleration", actionID, stats.Stats{stats.HasteRating: 340}, time.Second*12) - - spell := character.GetOrRegisterSpell(core.SpellConfig{ - ActionID: actionID, - SpellSchool: core.SpellSchoolPhysical, - Flags: core.SpellFlagNoOnCastComplete, - - Cast: core.CastConfig{ - CD: core.Cooldown{ - Timer: character.NewTimer(), - Duration: time.Second * 60, - }, - // Shared CD with Offensive trinkets has been removed. - // https://twitter.com/AggrendWoW/status/1579664462843633664 - // Change possibly temporary, but developers have confirmed it was intended. - - // SharedCD: core.Cooldown{ - // Timer: character.GetOffensiveTrinketCD(), - // Duration: time.Second * 12, - // }, - }, - - ApplyEffects: func(sim *core.Simulation, _ *core.Unit, _ *core.Spell) { - procAura.Activate(sim) - }, - }) - - character.AddMajorCooldown(core.MajorCooldown{ - Spell: spell, - Priority: core.CooldownPriorityLow, // Use low prio so other actives get used first. - Type: core.CooldownTypeDPS, - }) - }) + //core.NewEnchantEffect(3603, func(agent core.Agent) { + // character := agent.GetCharacter() + // actionID := core.ActionID{SpellID: 54757} + + // spell := character.GetOrRegisterSpell(core.SpellConfig{ + // ActionID: actionID, + // SpellSchool: core.SpellSchoolFire, + // ProcMask: core.ProcMaskEmpty, + // Flags: core.SpellFlagNoOnCastComplete, + + // Cast: core.CastConfig{ + // CD: core.Cooldown{ + // Timer: character.NewTimer(), + // Duration: time.Second * 45, + // }, + // SharedCD: core.Cooldown{ + // Timer: character.GetOffensiveTrinketCD(), + // Duration: time.Second * 10, + // }, + // }, + + // DamageMultiplier: 1, + // CritMultiplier: character.DefaultSpellCritMultiplier(), + // ThreatMultiplier: 1, + + // ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + // spell.CalcAndDealDamage(sim, target, sim.Roll(1654, 2020), spell.OutcomeMagicCrit) + // }, + // }) + + // character.AddMajorCooldown(core.MajorCooldown{ + // Spell: spell, + // Priority: core.CooldownPriorityLow, // Use low prio so other actives get used first. + // Type: core.CooldownTypeDPS, + // }) + //}) + + //core.NewEnchantEffect(3604, func(agent core.Agent) { + // character := agent.GetCharacter() + // actionID := core.ActionID{SpellID: 54758} + + // procAura := character.NewTemporaryStatsAura("Hyperspeed Acceleration", actionID, stats.Stats{stats.HasteRating: 340}, time.Second*12) + + // spell := character.GetOrRegisterSpell(core.SpellConfig{ + // ActionID: actionID, + // SpellSchool: core.SpellSchoolPhysical, + // Flags: core.SpellFlagNoOnCastComplete, + + // Cast: core.CastConfig{ + // CD: core.Cooldown{ + // Timer: character.NewTimer(), + // Duration: time.Second * 60, + // }, + // // Shared CD with Offensive trinkets has been removed. + // // https://twitter.com/AggrendWoW/status/1579664462843633664 + // // Change possibly temporary, but developers have confirmed it was intended. + + // // SharedCD: core.Cooldown{ + // // Timer: character.GetOffensiveTrinketCD(), + // // Duration: time.Second * 12, + // // }, + // }, + + // ApplyEffects: func(sim *core.Simulation, _ *core.Unit, _ *core.Spell) { + // procAura.Activate(sim) + // }, + // }) + + // character.AddMajorCooldown(core.MajorCooldown{ + // Spell: spell, + // Priority: core.CooldownPriorityLow, // Use low prio so other actives get used first. + // Type: core.CooldownTypeDPS, + // }) + //}) core.NewEnchantEffect(3722, func(agent core.Agent) { character := agent.GetCharacter() diff --git a/tools/database/enchant_overrides.go b/tools/database/enchant_overrides.go index 343dd105d7..271c8c0721 100644 --- a/tools/database/enchant_overrides.go +++ b/tools/database/enchant_overrides.go @@ -173,7 +173,6 @@ var EnchantOverrides = []*proto.UIEnchant{ {EffectId: 3820, ItemId: 44877, SpellId: 59970, Name: "Arcanum of Burning Mysteries", Quality: proto.ItemQuality_ItemQualityRare, Stats: stats.Stats{stats.SpellPower: 30, stats.CritRating: 20}.ToProtoArray(), Type: proto.ItemType_ItemTypeHead}, {EffectId: 3818, ItemId: 44878, SpellId: 59955, Name: "Arcanum of the Stalwart Protector", Quality: proto.ItemQuality_ItemQualityRare, Stats: stats.Stats{stats.Stamina: 37, stats.DodgeRating: 20}.ToProtoArray(), Type: proto.ItemType_ItemTypeHead}, {EffectId: 3817, ItemId: 44879, SpellId: 59954, Name: "Arcanum of Torment", Quality: proto.ItemQuality_ItemQualityRare, Stats: stats.Stats{stats.AttackPower: 50, stats.RangedAttackPower: 50, stats.CritRating: 20}.ToProtoArray(), Type: proto.ItemType_ItemTypeHead}, - {EffectId: 4222, SpellId: 67839, Name: "Mind Amplification Dish", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Stamina: 45}.ToProtoArray(), Type: proto.ItemType_ItemTypeHead, RequiredProfession: proto.Profession_Engineering}, // Shoulder {EffectId: 2998, ItemId: 29187, SpellId: 35441, Name: "Inscription of Endurance", Quality: proto.ItemQuality_ItemQualityUncommon, Stats: stats.Stats{stats.ArcaneResistance: 7, stats.FireResistance: 7, stats.FrostResistance: 7, stats.NatureResistance: 7, stats.ShadowResistance: 7}.ToProtoArray(), Type: proto.ItemType_ItemTypeShoulder}, @@ -208,11 +207,9 @@ var EnchantOverrides = []*proto.UIEnchant{ {EffectId: 3825, SpellId: 60609, Name: "Speed", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.HasteRating: 15}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack}, {EffectId: 983, SpellId: 44500, Name: "Superior Agility", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 16}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack}, {EffectId: 1099, SpellId: 60663, Name: "Major Agility", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 22}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack}, - {EffectId: 3605, SpellId: 55002, Name: "Flexweave Underlay", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Engineering}, {EffectId: 3722, SpellId: 55642, Name: "Lightweave Embroidery", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Tailoring}, {EffectId: 3728, SpellId: 55769, Name: "Darkglow Embroidery", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Tailoring}, {EffectId: 3730, SpellId: 55777, Name: "Swordguard Embroidery", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Tailoring}, - {EffectId: 3859, SpellId: 63765, Name: "Springy Arachnoweave", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.SpellPower: 27}.ToProtoArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Engineering}, // Chest {EffectId: 3245, ItemId: 37340, SpellId: 44588, Name: "Exceptional Resilience", Quality: proto.ItemQuality_ItemQualityUncommon, Stats: stats.Stats{stats.ResilienceRating: 20}.ToProtoArray(), Type: proto.ItemType_ItemTypeChest}, @@ -252,13 +249,8 @@ var EnchantOverrides = []*proto.UIEnchant{ {EffectId: 3829, SpellId: 44513, Name: "Greater Assult", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.AttackPower: 35, stats.RangedAttackPower: 35}.ToProtoArray(), Type: proto.ItemType_ItemTypeHands}, {EffectId: 3222, SpellId: 44529, Name: "Major Agility", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 20}.ToProtoArray(), Type: proto.ItemType_ItemTypeHands}, {EffectId: 3234, SpellId: 44488, Name: "Precision", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.HitRating: 20}.ToProtoArray(), Type: proto.ItemType_ItemTypeHands}, - {EffectId: 3603, SpellId: 54998, Name: "Hand-Mounted Pyro Rocket", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeHands, RequiredProfession: proto.Profession_Engineering}, - {EffectId: 3604, SpellId: 54999, Name: "Hyperspeed Accelerators", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeHands, RequiredProfession: proto.Profession_Engineering}, - {EffectId: 3860, SpellId: 63770, Name: "Reticulated Armor Webbing", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.BonusArmor: 885}.ToProtoArray(), Type: proto.ItemType_ItemTypeHands, RequiredProfession: proto.Profession_Engineering}, // Waist - {EffectId: 3599, SpellId: 54736, Name: "Personal Electromagnetic Pulse Generator", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeWaist, RequiredProfession: proto.Profession_Engineering}, - {EffectId: 3601, SpellId: 54793, Name: "Frag Belt", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToProtoArray(), Type: proto.ItemType_ItemTypeWaist, RequiredProfession: proto.Profession_Engineering}, // Legs {EffectId: 3325, ItemId: 38371, SpellId: 50901, Name: "Jormungar Leg Armor", Quality: proto.ItemQuality_ItemQualityRare, Stats: stats.Stats{stats.Stamina: 45, stats.Agility: 15}.ToProtoArray(), Type: proto.ItemType_ItemTypeLegs}, @@ -284,7 +276,6 @@ var EnchantOverrides = []*proto.UIEnchant{ {EffectId: 3244, SpellId: 44584, Name: "Greater Vitality", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.MP5: 7}.ToProtoArray(), Type: proto.ItemType_ItemTypeFeet}, {EffectId: 3826, SpellId: 60623, Name: "Icewalker", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.HitRating: 12, stats.CritRating: 12}.ToProtoArray(), Type: proto.ItemType_ItemTypeFeet}, {EffectId: 983, SpellId: 44589, Name: "Superior Agility", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 16}.ToProtoArray(), Type: proto.ItemType_ItemTypeFeet}, - {EffectId: 4223, SpellId: 55016, Name: "Nitro Boosts", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.CritRating: 24}.ToProtoArray(), Type: proto.ItemType_ItemTypeFeet, RequiredProfession: proto.Profession_Engineering}, // Weapon {EffectId: 1103, SpellId: 44633, Name: "Exceptional Agility", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 26}.ToProtoArray(), Type: proto.ItemType_ItemTypeWeapon}, From d516e3b24be142f54e9a35a715a5679c90fd16e4 Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Fri, 23 Aug 2024 13:47:49 -0700 Subject: [PATCH 2/5] Enforce only one Healthstone usage per fight On branch guardian Changes to be committed: modified: sim/core/consumes.go --- sim/core/consumes.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sim/core/consumes.go b/sim/core/consumes.go index 44803f51c3..b09a9971ca 100644 --- a/sim/core/consumes.go +++ b/sim/core/consumes.go @@ -788,10 +788,16 @@ func registerConjuredCD(agent Agent, consumes *proto.Consumes) { ActionID: actionID, Flags: SpellFlagNoOnCastComplete, Cast: CastConfig{ - CD: Cooldown{ + SharedCD: Cooldown{ Timer: character.GetConjuredCD(), Duration: time.Minute * 2, }, + + // Enforce only one HS per fight + CD: Cooldown{ + Timer: character.NewTimer(), + Duration: time.Minute * 60, + }, }, ApplyEffects: func(sim *Simulation, _ *Unit, _ *Spell) { character.GainHealth(sim, 0.45*character.baseStats[stats.Health], healthMetrics) From 75191a1044928d212f404c532fb87c5a61a449df Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Fri, 23 Aug 2024 14:03:40 -0700 Subject: [PATCH 3/5] Fixed mob type and Attack Power values on default encounter to match "Default / Raid Target" preset. On branch guardian Changes to be committed: modified: ui/core/encounter.ts --- ui/core/encounter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/core/encounter.ts b/ui/core/encounter.ts index 49077f335d..93601d8431 100644 --- a/ui/core/encounter.ts +++ b/ui/core/encounter.ts @@ -178,10 +178,10 @@ export class Encounter { id: 31146, name: 'Raid Target', level: Mechanics.BOSS_LEVEL, - mobType: MobType.MobTypeGiant, + mobType: MobType.MobTypeMechanical, stats: Stats.fromMap({ [Stat.StatArmor]: 11977, - [Stat.StatAttackPower]: 805, + [Stat.StatAttackPower]: 650, [Stat.StatHealth]: 120016403, }).asProtoArray(), minBaseDamage: 210000, From 259c4b0f10deb2f64a854faa826e0f91d4427280 Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Fri, 23 Aug 2024 14:39:37 -0700 Subject: [PATCH 4/5] Updated default healing model parameters for Cata On branch guardian Changes to be committed: modified: ui/core/components/inputs/other_inputs.ts modified: ui/core/player.ts --- ui/core/components/inputs/other_inputs.ts | 4 ++-- ui/core/player.ts | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ui/core/components/inputs/other_inputs.ts b/ui/core/components/inputs/other_inputs.ts index f8c21f14cd..3da93216b3 100644 --- a/ui/core/components/inputs/other_inputs.ts +++ b/ui/core/components/inputs/other_inputs.ts @@ -187,7 +187,7 @@ export const IncomingHps = { label: 'Incoming HPS', labelTooltip: `

Average amount of healing received per second. Used for calculating chance of death.

-

If set to 0, defaults to 17.5% of the primary target's base DPS.

+

If set to 0, defaults to 25% of the primary target's base DPS.

`, changedEvent: (player: Player) => player.getRaid()!.changeEmitter, getValue: (player: Player) => player.getHealingModel().hps, @@ -207,7 +207,7 @@ export const HealingCadence = { labelTooltip: `

How often the incoming heal 'ticks', in seconds. Generally, longer durations favor Effective Hit Points (EHP) for minimizing Chance of Death, while shorter durations favor avoidance.

Example: if Incoming HPS is set to 1000 and this is set to 1s, then every 1s a heal will be received for 1000. If this is instead set to 2s, then every 2s a heal will be recieved for 2000.

-

If set to 0, defaults to 1.5 times the primary target's base swing timer, and half that for dual wielding targets.

+

If set to 0, default values for Healing Cadence and Cadence +/- are inferred from boss damage parameters.

`, changedEvent: (player: Player) => player.getRaid()!.changeEmitter, getValue: (player: Player) => player.getHealingModel().cadenceSeconds, diff --git a/ui/core/player.ts b/ui/core/player.ts index 7d137f4538..872f06b954 100644 --- a/ui/core/player.ts +++ b/ui/core/player.ts @@ -1060,13 +1060,15 @@ export class Player { const boss = this.sim.encounter.primaryTarget; const dualWield = boss.dualWield; if (hm.cadenceSeconds == 0) { - hm.cadenceSeconds = 1.5 * boss.swingSpeed; + let maxCadence = 1.5 * boss.swingSpeed; if (dualWield) { - hm.cadenceSeconds /= 2; + maxCadence /= 2; } + hm.cadenceSeconds = 0.4; + hm.cadenceVariation = maxCadence - hm.cadenceSeconds; } if (hm.hps == 0) { - hm.hps = (0.175 * boss.minBaseDamage) / boss.swingSpeed; + hm.hps = (0.25 * boss.minBaseDamage) / boss.swingSpeed; if (dualWield) { hm.hps *= 1.5; } From 06f086eaa1337e236d2582969b1927ed363013ab Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Fri, 23 Aug 2024 14:46:48 -0700 Subject: [PATCH 5/5] Keep target parameters for unit tests in sync with UI defaults On branch guardian Changes to be committed: modified: sim/core/test_utils.go modified: sim/druid/guardian/TestGuardian.results modified: sim/warrior/protection/TestProtectionWarrior.results --- sim/core/test_utils.go | 12 ++++++------ sim/druid/guardian/TestGuardian.results | 12 ++++++------ sim/warrior/protection/TestProtectionWarrior.results | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/sim/core/test_utils.go b/sim/core/test_utils.go index 3a527ca4b6..332ba5936b 100644 --- a/sim/core/test_utils.go +++ b/sim/core/test_utils.go @@ -35,14 +35,14 @@ var DefaultTargetProto = &proto.Target{ Level: CharacterLevel + 3, Stats: stats.Stats{ stats.Armor: 11977, - stats.AttackPower: 805, + stats.AttackPower: 650, }.ToProtoArray(), - MobType: proto.MobType_MobTypeGiant, + MobType: proto.MobType_MobTypeMechanical, - SwingSpeed: 1.5, - MinBaseDamage: 65000, - ParryHaste: true, - DamageSpread: 0, + SwingSpeed: 2.5, + MinBaseDamage: 210000, + ParryHaste: false, + DamageSpread: 0.4, } var FullRaidBuffs = &proto.RaidBuffs{ diff --git a/sim/druid/guardian/TestGuardian.results b/sim/druid/guardian/TestGuardian.results index 37bb75221c..2992925623 100644 --- a/sim/druid/guardian/TestGuardian.results +++ b/sim/druid/guardian/TestGuardian.results @@ -1439,9 +1439,9 @@ dps_results: { dps_results: { key: "TestGuardian-Average-Default" value: { - dps: 12737.14414 - tps: 63763.44676 - dtps: 6117.26228 + dps: 14149.11293 + tps: 70821.40961 + dtps: 14337.1455 } } dps_results: { @@ -1531,8 +1531,8 @@ dps_results: { dps_results: { key: "TestGuardian-SwitchInFrontOfTarget-Default" value: { - dps: 14363.69744 - tps: 71902.49649 - dtps: 5432.96711 + dps: 16846.35708 + tps: 84315.01135 + dtps: 14270.94119 } } diff --git a/sim/warrior/protection/TestProtectionWarrior.results b/sim/warrior/protection/TestProtectionWarrior.results index 24912874a4..01dda5b5d8 100644 --- a/sim/warrior/protection/TestProtectionWarrior.results +++ b/sim/warrior/protection/TestProtectionWarrior.results @@ -1494,9 +1494,9 @@ dps_results: { dps_results: { key: "TestProtectionWarrior-Average-Default" value: { - dps: 12303.04112 - tps: 71616.42477 - dtps: 8010.71299 + dps: 14534.94697 + tps: 83733.08016 + dtps: 16484.81524 } } dps_results: { @@ -1586,8 +1586,8 @@ dps_results: { dps_results: { key: "TestProtectionWarrior-SwitchInFrontOfTarget-Default" value: { - dps: 13219.28619 - tps: 77141.51925 - dtps: 7387.74325 + dps: 16804.34167 + tps: 96746.89516 + dtps: 16435.41698 } }