Skip to content

Commit

Permalink
searing prepull changes, bonus stats for fele snapshotting
Browse files Browse the repository at this point in the history
  • Loading branch information
Polynomix committed Nov 12, 2024
1 parent 0c49560 commit c075799
Show file tree
Hide file tree
Showing 8 changed files with 1,504 additions and 1,485 deletions.
1,654 changes: 827 additions & 827 deletions sim/shaman/elemental/TestElemental.results

Large diffs are not rendered by default.

1,298 changes: 649 additions & 649 deletions sim/shaman/enhancement/TestEnhancement.results

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions sim/shaman/fire_elemental_pet.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,13 @@ func (shaman *Shaman) fireElementalStatInheritance(bonusIntellect float64, bonus
return func(ownerStats stats.Stats) stats.Stats {
ownerSpellHitPercent := ownerStats[stats.SpellHitPercent]

bonusStats := shaman.ApplyStatDependencies(stats.Stats{stats.Intellect: bonusIntellect, stats.SpellPower: bonusSpellPower})

return stats.Stats{
stats.Stamina: ownerStats[stats.Stamina] * 0.80, //Estimated from beta testing
stats.Intellect: (ownerStats[stats.Intellect] + bonusIntellect) * FireElementalIntellectScaling, //Estimated from beta testing
stats.SpellPower: (ownerStats[stats.SpellPower] + bonusSpellPower) * FireElementalSpellPowerScaling, //Estimated from beta testing
stats.AttackPower: (ownerStats[stats.SpellPower] + bonusSpellPower) * 4.9, // 0.7*7 Estimated from beta testing
stats.Stamina: ownerStats[stats.Stamina] * 0.80, //Estimated from beta testing
stats.Intellect: (ownerStats[stats.Intellect] + bonusStats[stats.Intellect]) * FireElementalIntellectScaling, //Estimated from beta testing
stats.SpellPower: (ownerStats[stats.SpellPower] + bonusStats[stats.SpellPower]) * FireElementalSpellPowerScaling, //Estimated from beta testing
stats.AttackPower: (ownerStats[stats.SpellPower] + bonusStats[stats.SpellPower]) * 4.9, // 0.7*7 Estimated from beta testing

stats.PhysicalHitPercent: ownerSpellHitPercent / 17 * 8,
stats.SpellHitPercent: ownerSpellHitPercent,
Expand Down
18 changes: 17 additions & 1 deletion sim/shaman/fire_totems.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package shaman

import (
"math"
"time"

"github.com/wowsims/cata/sim/core"
Expand Down Expand Up @@ -44,7 +45,22 @@ func (shaman *Shaman) registerSearingTotemSpell() {
ApplyEffects: func(sim *core.Simulation, _ *core.Unit, spell *core.Spell) {
shaman.MagmaTotem.AOEDot().Deactivate(sim)
shaman.FireElemental.Disable(sim)
spell.Dot(sim.GetTargetUnit(0)).Apply(sim)
if sim.CurrentTime < 0 {
dropTime := sim.CurrentTime
pa := &core.PendingAction{
NextActionAt: 0,
Priority: core.ActionPriorityGCD,

OnAction: func(sim *core.Simulation) {
spell.Dot(sim.GetTargetUnit(0)).BaseTickCount = int32(math.Ceil(40*(1.0+0.20*float64(shaman.Talents.TotemicFocus)+dropTime.Minutes()))) - 1
spell.Dot(sim.GetTargetUnit(0)).Apply(sim)
},
}
sim.AddPendingAction(pa)
} else {
spell.Dot(sim.GetTargetUnit(0)).BaseTickCount = int32(40*(1.0+0.20*float64(shaman.Talents.TotemicFocus))) - 1
spell.Dot(sim.GetTargetUnit(0)).Apply(sim)
}
duration := 60 * (1.0 + 0.20*float64(shaman.Talents.TotemicFocus))
shaman.TotemExpirations[FireTotem] = sim.CurrentTime + time.Duration(duration)*time.Second
},
Expand Down
1 change: 1 addition & 0 deletions ui/shaman/elemental/apls/aoe.apl.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
{"action":{"castSpell":{"spellId":{"spellId":2825}}}},
{"action":{"condition":{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"math":{"op":"OpAdd","lhs":{"currentTime":{}},"rhs":{"remainingTime":{}}}},"rhs":{"math":{"op":"OpAdd","lhs":{"shamanFireElementalDuration":{}},"rhs":{"const":{"val":"20s"}}}}}},{"auraIsActive":{"auraId":{"spellId":64701}}}]}},{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"anyTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"numEquippedStatProcTrinkets":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"0"}}}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}}]}},{"spellCanCast":{"spellId":{"spellId":2894}}},{"or":{"vals":[{"shamanCanSnapshotStrongerFireElemental":{}},{"cmp":{"op":"OpLe","lhs":{"totemRemainingTime":{"totemType":"Fire"}},"rhs":{"const":{"val":"30s"}}}}]}}]}}]}},"castSpell":{"spellId":{"itemId":58091}}}},
{"action":{"condition":{"and":{"vals":[{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"anyTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"numEquippedStatProcTrinkets":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"0"}}}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}}]}},{"spellCanCast":{"spellId":{"spellId":2894}}},{"or":{"vals":[{"shamanCanSnapshotStrongerFireElemental":{}},{"cmp":{"op":"OpLe","lhs":{"totemRemainingTime":{"totemType":"Fire"}},"rhs":{"const":{"val":"30s"}}}}]}}]}},{"or":{"vals":[{"cmp":{"op":"OpGe","lhs":{"math":{"op":"OpAdd","lhs":{"currentTime":{}},"rhs":{"remainingTime":{}}}},"rhs":{"math":{"op":"OpAdd","lhs":{"shamanFireElementalDuration":{}},"rhs":{"const":{"val":"20s"}}}}}},{"cmp":{"op":"OpLe","lhs":{"currentTime":{}},"rhs":{"const":{"val":"30s"}}}}]}}]}},"castSpell":{"spellId":{"spellId":66843}}}},
{"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":2894}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":3599}}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15"}}}},{"cmp":{"op":"OpGe","lhs":{"currentTime":{}},"rhs":{"const":{"val":"20"}}}}]}},"castSpell":{"spellId":{"spellId":3599}}}},
{"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8050,"tag":1}}},"rhs":{"const":{"val":"2"}}}},{"cmp":{"op":"OpLe","lhs":{"numberTargets":{}},"rhs":{"const":{"val":"2"}}}}]}},"castSpell":{"spellId":{"spellId":51505}}}},
{"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"numberTargets":{}},"rhs":{"const":{"val":"2"}}}},"multidot":{"spellId":{"spellId":8050},"maxDots":2,"maxOverlap":{"const":{"val":"3"}}}}},
{"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"auraNumStacks":{"auraId":{"spellId":324}}},"rhs":{"const":{"val":"9"}}}},{"cmp":{"op":"OpEq","lhs":{"numberTargets":{}},"rhs":{"const":{"val":"1"}}}},{"cmp":{"op":"OpGe","lhs":{"dotRemainingTime":{"spellId":{"spellId":8050}}},"rhs":{"const":{"val":"3"}}}}]}},"castSpell":{"spellId":{"spellId":8042}}}},
Expand Down
2 changes: 1 addition & 1 deletion ui/shaman/elemental/apls/default.apl.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
{"action":{"castSpell":{"spellId":{"spellId":2825}}}},
{"action":{"condition":{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"math":{"op":"OpAdd","lhs":{"currentTime":{}},"rhs":{"remainingTime":{}}}},"rhs":{"math":{"op":"OpAdd","lhs":{"shamanFireElementalDuration":{}},"rhs":{"const":{"val":"20s"}}}}}},{"auraIsActive":{"auraId":{"spellId":64701}}}]}},{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"anyTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"numEquippedStatProcTrinkets":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"0"}}}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}}]}},{"spellCanCast":{"spellId":{"spellId":2894}}},{"or":{"vals":[{"shamanCanSnapshotStrongerFireElemental":{}},{"cmp":{"op":"OpLe","lhs":{"totemRemainingTime":{"totemType":"Fire"}},"rhs":{"const":{"val":"30s"}}}}]}}]}}]}},"castSpell":{"spellId":{"itemId":58091}}}},
{"action":{"condition":{"and":{"vals":[{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"anyTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1.7s"}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"numEquippedStatProcTrinkets":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"0"}}}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}},{"and":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}}]}}]}},{"spellCanCast":{"spellId":{"spellId":2894}}},{"or":{"vals":[{"shamanCanSnapshotStrongerFireElemental":{}},{"cmp":{"op":"OpLe","lhs":{"totemRemainingTime":{"totemType":"Fire"}},"rhs":{"const":{"val":"30s"}}}}]}}]}},{"or":{"vals":[{"cmp":{"op":"OpGe","lhs":{"math":{"op":"OpAdd","lhs":{"currentTime":{}},"rhs":{"remainingTime":{}}}},"rhs":{"math":{"op":"OpAdd","lhs":{"shamanFireElementalDuration":{}},"rhs":{"const":{"val":"20s"}}}}}},{"cmp":{"op":"OpLe","lhs":{"currentTime":{}},"rhs":{"const":{"val":"30s"}}}}]}}]}},"castSpell":{"spellId":{"spellId":66843}}}},
{"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":2894}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":3599}}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15"}}}}]}},"castSpell":{"spellId":{"spellId":3599}}}},
{"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":2894}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":3599}}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15"}}}},{"cmp":{"op":"OpGe","lhs":{"currentTime":{}},"rhs":{"const":{"val":"20"}}}}]}},"castSpell":{"spellId":{"spellId":3599}}}},
{"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8050,"tag":1}}},"rhs":{"const":{"val":"2"}}}},{"cmp":{"op":"OpLe","lhs":{"numberTargets":{}},"rhs":{"const":{"val":"2"}}}}]}},"castSpell":{"spellId":{"spellId":51505}}}},
{"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"numberTargets":{}},"rhs":{"const":{"val":"2"}}}},"multidot":{"spellId":{"spellId":8050},"maxDots":2,"maxOverlap":{"const":{"val":"3"}}}}},
{"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"auraNumStacks":{"auraId":{"spellId":324}}},"rhs":{"const":{"val":"9"}}}},{"cmp":{"op":"OpEq","lhs":{"numberTargets":{}},"rhs":{"const":{"val":"1"}}}},{"cmp":{"op":"OpGe","lhs":{"dotRemainingTime":{"spellId":{"spellId":8050}}},"rhs":{"const":{"val":"3"}}}}]}},"castSpell":{"spellId":{"spellId":8042}}}},
Expand Down
4 changes: 2 additions & 2 deletions ui/shaman/elemental/apls/unleash.apl.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
"priorityList": [
{"action":{"autocastOtherCooldowns":{}}},
{"action":{"castSpell":{"spellId":{"spellId":2825}}}},
{"action":{"condition":{"cmp":{"op":"OpGt","lhs":{"spellTimeToReady":{"spellId":{"spellId":2894}}},"rhs":{"const":{"val":"90"}}}},"castAllStatBuffCooldowns":{"statType1":3,"statType2":14,"statType3":-1}}},
{"action":{"condition":{"cmp":{"op":"OpGt","lhs":{"spellTimeToReady":{"spellId":{"spellId":2894}}},"rhs":{"const":{"val":"90"}}}},"castAllStatBuffCooldowns":{"statType1":3,"statType2":14,"statType3":-1}}},
{"action":{"condition":{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"remainingTime":{}},"rhs":{"math":{"op":"OpAdd","lhs":{"spellTimeToReady":{"spellId":{"spellId":2894}}},"rhs":{"const":{"val":"30"}}}}}},{"spellIsReady":{"spellId":{"spellId":2894}}}]}},"castSpell":{"spellId":{"itemId":58091}}}},
{"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"allTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}},{"cmp":{"op":"OpLe","lhs":{"trinketProcsMinRemainingTime":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"1s"}}}},{"and":{"vals":[{"auraIsActive":{"auraId":{"itemId":58091}}},{"or":{"vals":[{"and":{"vals":[{"auraIsActive":{"auraId":{"spellId":75170}}},{"auraIsActive":{"auraId":{"spellId":74241}}},{"or":{"vals":[{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"auraId":{"itemId":58091}}},"rhs":{"const":{"val":"1s"}}}},{"cmp":{"op":"OpEq","lhs":{"numEquippedStatProcTrinkets":{"statType1":3,"statType2":14,"statType3":-1}},"rhs":{"const":{"val":"0"}}}}]}}]}},{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"120s"}}}}]}},{"anyTrinketStatProcsActive":{"statType1":3,"statType2":14,"statType3":-1}}]}}]}},{"spellCanCast":{"spellId":{"spellId":2894}}}]}},"strictSequence":{"actions":[{"castAllStatBuffCooldowns":{"statType1":3,"statType2":14,"statType3":-1}},{"castSpell":{"spellId":{"spellId":66843}}}]}}},
{"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":2894}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":3599}}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15"}}}}]}},"castSpell":{"spellId":{"spellId":3599}}}},
{"action":{"condition":{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":2894}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":3599}}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"15"}}}},{"cmp":{"op":"OpGe","lhs":{"currentTime":{}},"rhs":{"const":{"val":"20"}}}}]}},"castSpell":{"spellId":{"spellId":3599}}}},
{"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"dotRemainingTime":{"spellId":{"spellId":8050,"tag":1}}},"rhs":{"const":{"val":"2"}}}},"castSpell":{"spellId":{"spellId":8050}}}},
{"action":{"castSpell":{"spellId":{"spellId":73680}}}},
{"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8050,"tag":1}}},"rhs":{"const":{"val":"2"}}}}]}},"castSpell":{"spellId":{"spellId":51505}}}},
Expand Down
2 changes: 1 addition & 1 deletion ui/shaman/elemental/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ export const DefaultOptions = ElementalShamanOptions.create({
elements: TotemSet.create({
earth: EarthTotem.StrengthOfEarthTotem,
air: AirTotem.WrathOfAirTotem,
fire: FireTotem.SearingTotem,
fire: FireTotem.FlametongueTotem,
water: WaterTotem.ManaSpringTotem,
}),
ancestors: TotemSet.create({
Expand Down

0 comments on commit c075799

Please sign in to comment.