Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
aee7d36
[Feature][Class] Initial implementation for shadow
May 4, 2025
9376047
[Feature][Shadow] Implement T14 and T15
May 5, 2025
dc0aba5
[Feature][Shadow] Cleanup code
May 5, 2025
c084e55
Merge branch 'feature/generic-resources' into feature/shadow
May 5, 2025
82bb2e8
[Feature] Generic Resource: Add missing callback invoke
May 5, 2025
ecb66e7
[Feature][Shadow] Add T16 set
May 5, 2025
9ec9dd8
Merge branch 'feature/generic-resources' into feature/shadow
May 5, 2025
d6c3c30
Merge branch 'feature/generic-resources' into feature/shadow
May 5, 2025
0ba0903
[Feature][Shadow] Fix ShadowOrb bar
May 5, 2025
d8f06e7
[Feature][Shadow] Add first set of presets and level 90 support
May 6, 2025
8107f0c
Merge branch 'master' into feature/shadow
May 11, 2025
fb358e5
[Feature][Shadow] Update to new Buffs
May 11, 2025
1f05c91
Merge branch 'master' into feature/shadow
May 11, 2025
3380820
Merge branch 'master' into feature/shadow
May 11, 2025
3fecb64
Merge branch 'master' into feature/shadow
May 11, 2025
7bfff34
[Feature][Shadow] Fixup UI mastery scaling
May 11, 2025
1165247
[Feature][Shadow] Fix Spirit/Hit scaling
May 11, 2025
6fd67ef
Merge branch 'master' into feature/shadow
May 11, 2025
1fcb2fe
Merge branch 'feature/lvl-90' into feature/shadow
May 11, 2025
bac2bf5
[Feature][Shadow] Update Shadow
May 12, 2025
79fac5c
[Feature][Shadow] Update P1 Gearset
May 12, 2025
0e3b711
[Feature][MoP] Remove int/mana scaling
May 13, 2025
064cd6b
[Feature][Shadow] Fix shadow bugs
May 13, 2025
aef95f5
Merge branch 'master' into feature/shadow
May 13, 2025
7f920ad
[Feature][Priest] Fixup bugs
May 13, 2025
db8a959
Merge branch 'master' into feature/shadow
May 13, 2025
265af98
[Featuer][Shadow] Fixup VT mana regen
May 13, 2025
ce4e7e9
[Feature][Shadow] Reenable Shadowcrawl
May 14, 2025
a94b138
[Feature][Shadow] Fix Mindbender and Fiend
May 14, 2025
5119204
[Feature][Shadow] Add melee haste scaling option
May 14, 2025
31d8aa7
Merge branch 'fix/bloodlust' into feature/shadow
May 14, 2025
8f075fa
[Fix][Pet] Dynamic haste scaling for temporary pets
May 14, 2025
f54e934
Merge branch 'master' into feature/shadow
May 21, 2025
f6eb78c
[Feature][Shadow] Migrate to new PetConfig
May 21, 2025
0c81707
[Priest] Update UI to Alpha
May 21, 2025
4a478f1
[Priest] Fixup haste scaling
May 21, 2025
fbc8baa
[Priest] Add new presets
May 21, 2025
8a51033
[Priest] Updates from PR feedback
May 21, 2025
987b949
[Priest] Cleanup legacy reforge code
May 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions sim/core/aura_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,22 @@ func (parentAura *Aura) AttachAdditivePseudoStatBuff(fieldPointer *float64, bonu
return parentAura
}

func (parentAura *Aura) AttachMultiplyCastSpeed(multiplier float64) *Aura {
parentAura.ApplyOnGain(func(_ *Aura, _ *Simulation) {
parentAura.Unit.MultiplyCastSpeed(multiplier)
})

parentAura.ApplyOnExpire(func(_ *Aura, _ *Simulation) {
parentAura.Unit.MultiplyCastSpeed(1 / multiplier)
})

if parentAura.IsActive() {
parentAura.Unit.MultiplyCastSpeed(multiplier)
}

return parentAura
}

type ShieldStrengthCalculator func(unit *Unit) float64

type DamageAbsorptionAura struct {
Expand Down
1 change: 1 addition & 0 deletions sim/core/buffs.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ func applyBuffEffects(agent Agent, raidBuffs *proto.RaidBuffs, _ *proto.PartyBuf
if raidBuffs.Heroism {
registerBloodlustCD(agent, 32182)
}

if raidBuffs.TimeWarp {
registerBloodlustCD(agent, 80353)
}
Expand Down
16 changes: 15 additions & 1 deletion sim/core/dot.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ type Dot struct {

BaseTickCount int32 // base tick count without haste applied
remainingTicks int32
tmpExtraTicks int32 // extra ticks that are added during the runtime of the dot

BonusCoefficient float64 // EffectBonusCoefficient in SpellEffect client DB table, "SP mod" on Wowhead (not necessarily shown there even if > 0)

Expand Down Expand Up @@ -97,6 +98,7 @@ func (dot *Dot) recomputeAuraDuration(sim *Simulation) {
nextTick := dot.TimeUntilNextTick(sim)

dot.remainingTicks = dot.BaseTickCount
dot.tmpExtraTicks = 0
if dot.affectedByCastSpeed {
// round the tickPeriod to the nearest full ms, same as ingame. This can best be seen ingame in how haste caps
// work. For example shadowflame should take 1009 haste rating with the 5%/3% haste buffs without rounding, but
Expand Down Expand Up @@ -159,7 +161,7 @@ func (dot *Dot) RemainingTicks() int32 {
}

func (dot *Dot) TickCount() int32 {
return dot.HastedTickCount() - dot.remainingTicks
return dot.HastedTickCount() + dot.tmpExtraTicks - dot.remainingTicks
}

func (dot *Dot) OutstandingDmg() float64 {
Expand All @@ -170,6 +172,17 @@ func (dot *Dot) BaseDuration() time.Duration {
return time.Duration(dot.BaseTickCount) * dot.BaseTickLength
}

// Adds a tick to the current active dot and extends it's duration
func (dot *Dot) AddTick() {
if !dot.active {
return
}

dot.tmpExtraTicks++
dot.remainingTicks++
dot.UpdateExpires(dot.expires + dot.TickPeriod())
}

// Copy's the original DoT's period and duration to the current DoT.
// This is only currently used for Mage's Impact DoT spreading and Enhancement's ImprovedLava Lash.
func (dot *Dot) CopyDotAndApply(sim *Simulation, originaldot *Dot) {
Expand All @@ -178,6 +191,7 @@ func (dot *Dot) CopyDotAndApply(sim *Simulation, originaldot *Dot) {

dot.tickPeriod = originaldot.tickPeriod
dot.remainingTicks = originaldot.remainingTicks
dot.tmpExtraTicks = 0

// must be set before Activate
dot.Duration = originaldot.ExpiresAt() - sim.CurrentTime // originaldot.Duration
Expand Down
7 changes: 0 additions & 7 deletions sim/core/mana.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,6 @@ func (character *Character) EnableManaBar() {
}

func (character *Character) EnableManaBarWithModifier(modifier float64) {
// Assumes all units have >= 20 intellect.
// See https://wowwiki-archive.fandom.com/wiki/Base_mana.
// Subtract out the non-linear part of the formula separately, so that weird
// mana values are not included when using the stat dependency manager.
character.AddStat(stats.Mana, 20-15*20*modifier)
character.AddStatDependency(stats.Intellect, stats.Mana, 15*modifier)

// Starting with cataclysm you get mp5 equal 5% of your base mana
character.AddStat(stats.MP5, character.baseStats[stats.Mana]*0.05)

Expand Down
61 changes: 0 additions & 61 deletions sim/priest/_glyphs.go

This file was deleted.

61 changes: 0 additions & 61 deletions sim/priest/_power_infusion.go

This file was deleted.

67 changes: 0 additions & 67 deletions sim/priest/_talents.go
Original file line number Diff line number Diff line change
Expand Up @@ -619,73 +619,6 @@ func (priest *Priest) applySinAndPunishment() {
})
}

func (priest *Priest) applyShadowyApparition() {
if priest.Talents.ShadowyApparition == 0 {
return
}

const spellScaling = 0.515
const levelScaling = 0.514

spell := priest.RegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 87532},
MissileSpeed: 3.5,
ProcMask: core.ProcMaskEmpty, // summoned guardian, should not be able to proc stuff - verify
ClassSpellMask: PriestSpellShadowyApparation,
Flags: core.SpellFlagPassiveSpell,
DamageMultiplier: 1,
DamageMultiplierAdditive: 1,
CritMultiplier: priest.DefaultCritMultiplier(),
SpellSchool: core.SpellSchoolShadow,

BonusCoefficient: spellScaling,

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
baseDamage := priest.ClassSpellScaling * levelScaling

// snapshot values on spawn
dmgMulti := spell.DamageMultiplier
dmgMultiAdd := spell.DamageMultiplierAdditive

spell.WaitTravelTime(sim, func(sim *core.Simulation) {

oldMulti := spell.DamageMultiplier
oldAdd := spell.DamageMultiplierAdditive

// calculate dmg on hit, as the apparations profit from the debuffs on the target
// when they reach them
// spell and other modifiers are snapshotted when the apparations spawn
spell.DamageMultiplier = dmgMulti
spell.DamageMultiplierAdditive = dmgMultiAdd

result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMagicHitAndCrit)
spell.DealDamage(sim, result)

// restore mods
spell.DamageMultiplier = oldMulti
spell.DamageMultiplierAdditive = oldAdd
})
},
})

core.MakeProcTriggerAura(&priest.Unit, core.ProcTrigger{
Name: "Shadowy Apparition Aura",
Callback: core.CallbackOnPeriodicDamageDealt,
Outcome: core.OutcomeLanded,
ClassSpellMask: PriestSpellShadowWordPain,
Handler: func(sim *core.Simulation, _ *core.Spell, result *core.SpellResult) {
procChance := 0.04 * float64(priest.Talents.ShadowyApparition)
if priest.Moving {
procChance *= 5
}

if sim.Proc(procChance, "Shadowy Apparition Aura") {
spell.Cast(sim, result.Target)
}
},
})
}

// func (priest *Priest) applyDivineAegis() {
// if priest.Talents.DivineAegis == 0 {
// return
Expand Down
19 changes: 19 additions & 0 deletions sim/priest/glyphs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package priest

import (
"github.com/wowsims/mop/sim/core"
"github.com/wowsims/mop/sim/core/proto"
)

func (priest *Priest) ApplyGlyphs() {
// Glyph of Dispersion
// Glyph of Mindspike
// Glyph of Shadow Word Death
if priest.HasMinorGlyph(proto.PriestMinorGlyph_GlyphOfTheSha) {
priest.AddStaticMod(core.SpellModConfig{
Kind: core.SpellMod_GlobalCooldown_Flat,
TimeValue: -core.GCDDefault,
ClassMask: PriestSpellMindBender | PriestSpellShadowFiend,
})
}
}
Loading
Loading