Skip to content

Commit

Permalink
Merge pull request #1173 from Adamrch/pallyP6Librams
Browse files Browse the repository at this point in the history
p6 pally librams
  • Loading branch information
kayla-glick authored Nov 24, 2024
2 parents 26aa514 + 92ade29 commit b58a630
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 21 deletions.
24 changes: 15 additions & 9 deletions sim/core/buffs.go
Original file line number Diff line number Diff line change
Expand Up @@ -890,18 +890,24 @@ func applyPetBuffEffects(petAgent PetAgent, playerFaction proto.Faction, raidBuf
}

func SanctityAuraAura(character *Character) *Aura {
return character.GetOrRegisterAura(Aura{
aura := MakePermanent(character.GetOrRegisterAura(Aura{
Label: "Sanctity Aura",
ActionID: ActionID{SpellID: 20218},
Duration: NeverExpires,
OnReset: func(aura *Aura, sim *Simulation) {
aura.Activate(sim)
},
OnGain: func(aura *Aura, sim *Simulation) {
character.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] *= 1.1
}))

ExclusiveHolyDamageDealtAura(aura, 1.1)

return aura
}

func ExclusiveHolyDamageDealtAura(aura *Aura, multiplier float64) {
aura.NewExclusiveEffect("HolyDamageDealt", false, ExclusiveEffect{
Priority: multiplier,
OnGain: func(ee *ExclusiveEffect, sim *Simulation) {
aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] *= multiplier
},
OnExpire: func(aura *Aura, sim *Simulation) {
character.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] /= 1.1
OnExpire: func(ee *ExclusiveEffect, sim *Simulation) {
aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] /= multiplier
},
})
}
Expand Down
9 changes: 5 additions & 4 deletions sim/paladin/holy_shock.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func (paladin *Paladin) registerHolyShock() {
{level: 56, spellID: 20930, manaCost: 325, minDamage: 365, maxDamage: 395},
}

damageMultiplier := core.TernaryFloat64(hasInfusionOfLight, 1.5, 1.0)
damageMultiplierAdditive := core.TernaryFloat64(hasInfusionOfLight, 1.5, 1.0)

//hasArtOfWar := paladin.hasRune(proto.PaladinRune_RuneFeetTheArtOfWar)
manaCostMultiplier := int32(100) //core.TernaryFloat64(hasArtOfWar, 0.2, 1.0)
Expand Down Expand Up @@ -78,9 +78,10 @@ func (paladin *Paladin) registerHolyShock() {
CD: *paladin.holyShockCooldown,
},

DamageMultiplier: damageMultiplier,
ThreatMultiplier: 1,
BonusCoefficient: 0.429,
DamageMultiplier: 1,
DamageMultiplierAdditive: damageMultiplierAdditive,
ThreatMultiplier: 1,
BonusCoefficient: 0.429,

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
baseDamage := sim.Roll(rank.minDamage, rank.maxDamage)
Expand Down
10 changes: 5 additions & 5 deletions sim/paladin/item_sets_pve.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ var ItemSetFreethinkersArmor = core.NewItemSet(core.ItemSet{
paladin.OnSpellRegistered(func(spell *core.Spell) {
if spell.SpellCode == SpellCode_PaladinHolyShock {
//Damage multiplier is Additive with Infusion of Light rather than multiplicitive
spell.DamageMultiplier += 0.5
spell.DamageMultiplierAdditive += 0.5
}
})
},
Expand All @@ -245,7 +245,7 @@ var ItemSetFreethinkersArmor = core.NewItemSet(core.ItemSet{
OnInit: func(aura *core.Aura, sim *core.Simulation) {
for _, spell := range paladin.exorcism {
spell.CD.Duration -= time.Second * 3
spell.DamageMultiplier *= 1.50
spell.DamageMultiplierAdditive += 0.5
}
},
})
Expand All @@ -270,7 +270,7 @@ var ItemSetMercifulJudgement = core.NewItemSet(core.ItemSet{
paladin := agent.GetCharacter()
paladin.OnSpellRegistered(func(spell *core.Spell) {
if spell.SpellCode == SpellCode_PaladinConsecration {
spell.AOEDot().DamageMultiplier *= 1.5
spell.AOEDot().DamageMultiplier += 0.5
}
})
},
Expand All @@ -293,7 +293,7 @@ var ItemSetRadiantJudgement = core.NewItemSet(core.ItemSet{
OnInit: func(aura *core.Aura, sim *core.Simulation) {
for _, judgeSpells := range paladin.allJudgeSpells {
for _, judgeRankSpell := range judgeSpells {
judgeRankSpell.DamageMultiplier *= 1.2
judgeRankSpell.DamageMultiplierAdditive += 0.2
}
}

Expand Down Expand Up @@ -450,7 +450,7 @@ var ItemSetAvengersRadiance = core.NewItemSet(core.ItemSet{
//"S03 - Item - TAQ - Paladin - Retribution 2P Bonus",
if spell.SpellCode == SpellCode_PaladinCrusaderStrike {
// 2 Set: Increases Crusader Strike Damage by 50%
spell.DamageMultiplier *= 1.5
spell.DamageMultiplier += 0.5
}
})
},
Expand Down
54 changes: 51 additions & 3 deletions sim/paladin/items.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ const (
ZandalarFreethinkersBreastplate = 231329
ZandalarFreethinkersBelt = 231330
LibramOfWrath = 232420
LibramOfTheExorcist = 234475
LibramOfSanctity = 234476
LibramOfRighteousness = 234477
)

func init() {
Expand Down Expand Up @@ -210,11 +213,11 @@ func init() {
core.Each(holyWrathSpells, func(spell *core.Spell) {
spell.CastTimeMultiplier += (0.2 * float64(oldStacks))
spell.Cost.Multiplier += int32(100.0 * (0.2 * float64(oldStacks)))
spell.DamageMultiplier -= (0.2 * float64(oldStacks))
spell.DamageMultiplierAdditive -= (0.2 * float64(oldStacks))

spell.CastTimeMultiplier -= (0.2 * float64(newStacks))
spell.Cost.Multiplier -= int32(100.0 * (0.2 * float64(newStacks)))
spell.DamageMultiplier += (0.2 * float64(newStacks))
spell.DamageMultiplierAdditive += (0.2 * float64(newStacks))

})
},
Expand Down Expand Up @@ -257,6 +260,51 @@ func init() {
},
}))
})

core.NewItemEffect(LibramOfTheExorcist, func(agent core.Agent) {
paladin := agent.(PaladinAgent).GetPaladin()
paladin.OnSpellRegistered(func(spell *core.Spell) {
if spell.SpellCode == SpellCode_PaladinCrusaderStrike || spell.SpellCode == SpellCode_PaladinExorcism {
// Increases the damage of Exorcism and Crusader Strike by 3%.
spell.DamageMultiplierAdditive += 0.03
}
})
})

core.NewItemEffect(LibramOfSanctity, func(agent core.Agent) {
paladin := agent.(PaladinAgent).GetPaladin()

buffAura := core.MakePermanent(paladin.RegisterAura(core.Aura{
ActionID: core.ActionID{SpellID: 1214298},
Label: "Libram of Sanctity",
Duration: time.Minute,
}))
core.ExclusiveHolyDamageDealtAura(buffAura, 1.1)

paladin.OnSpellRegistered(func(spell *core.Spell) {
if spell.SpellCode == SpellCode_PaladinHolyShock {
// Increases the damage of Holy Shock by 3%, and your Shock and Awe buff now also grants 10% increased Holy Damage. (This effect does not stack with Sanctity Aura).
spell.DamageMultiplierAdditive += 0.03

originalApplyEffects := spell.ApplyEffects
spell.ApplyEffects = func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
originalApplyEffects(sim, target, spell)
buffAura.Activate(sim)
}
}
})
})

core.NewItemEffect(LibramOfRighteousness, func(agent core.Agent) {
paladin := agent.(PaladinAgent).GetPaladin()
paladin.OnSpellRegistered(func(spell *core.Spell) {
if spell.SpellCode == SpellCode_PaladinHammerOfTheRighteous || spell.SpellCode == SpellCode_PaladinShieldOfRighteousness {
// Increases the damage of Hammer of the Righteous and Shield of Righteousness by 3%.
spell.DamageMultiplierAdditive += 0.03
}
})
})

}

// https://www.wowhead.com/classic/spell=465414/crusaders-zeal
Expand Down Expand Up @@ -290,7 +338,7 @@ func crusadersZealAura465414(character *core.Character) *core.Aura {
Outcome: core.OutcomeLanded,
ProcMask: core.ProcMaskMelee,
SpellFlagsExclude: core.SpellFlagSuppressWeaponProcs,
PPM: 2.0, // TBD
PPM: 2.0,
Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
procAura.Activate(sim)
},
Expand Down
2 changes: 2 additions & 0 deletions sim/paladin/paladin.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ const (
SpellCode_PaladinLayOnHands
SpellCode_PaladinHammerOfWrath
SpellCode_PaladinCrusaderStrike
SpellCode_PaladinHammerOfTheRighteous
SpellCode_PaladinShieldOfRighteousness
)

type SealJudgeCode uint8
Expand Down

0 comments on commit b58a630

Please sign in to comment.