Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions proto/paladin.proto
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,12 @@ enum PaladinSeal {
NoSeal = 0;
Righteousness = 1;
Command = 2;
Martyrdom = 3;
}

message PaladinOptions {
PaladinSeal primarySeal = 1;
PaladinAura aura = 2;
bool IsUsingDivineStormStopAttack = 4;
bool IsUsingJudgementStopAttack = 5;
bool IsUsingCrusaderStrikeStopAttack = 6;

bool righteousFury = 8;
Blessings personalBlessing = 9;
Expand Down
6 changes: 3 additions & 3 deletions sim/common/item_sets/dungeon_set_1.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ var ItemSetLightforgeArmor = core.NewItemSet(core.ItemSet{
c := agent.GetCharacter()
actionID := core.ActionID{SpellID: 27498}

procAura := c.NewTemporaryStatsAura("Crusader's Wrath", core.ActionID{SpellID: 27498}, stats.Stats{stats.SpellPower: 95}, time.Second*10)
procAura := c.NewTemporaryStatsAura("Crusader's Wrath", actionID, stats.Stats{stats.SpellPower: 95}, time.Second*10)
handler := func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) {
procAura.Activate(sim)
}
Expand All @@ -162,8 +162,8 @@ var ItemSetLightforgeArmor = core.NewItemSet(core.ItemSet{
Name: "Item - Crusader's Wrath Proc - Lightforge Armor",
Callback: core.CallbackOnSpellHitDealt,
Outcome: core.OutcomeLanded,
ProcMask: core.ProcMaskMeleeWhiteHit,
ProcChance: 0.06, //Unsure if this is the classic or SoD proc rate.
ProcMask: core.ProcMaskMelee, // Unsure if this is melee or all attacks but most on proc effects like enchants trigger off white or seal hits,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PPM: 3, //6% is the sod proc rate, best data I could find online says 3 ppm
Handler: handler,
})
},
Expand Down
47 changes: 0 additions & 47 deletions sim/paladin/avenging_wrath.go

This file was deleted.

23 changes: 10 additions & 13 deletions sim/paladin/exorcism.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ func (paladin *Paladin) registerExorcism() {
maxDamage float64
scale float64
}{
{level: 20, spellID: 415068, manaCost: 85, scaleLevel: 25, minDamage: 84, maxDamage: 96, scale: 1.2},
{level: 28, spellID: 415069, manaCost: 135, scaleLevel: 33, minDamage: 152, maxDamage: 172, scale: 1.6},
{level: 36, spellID: 415070, manaCost: 180, scaleLevel: 41, minDamage: 217, maxDamage: 245, scale: 2.0},
{level: 44, spellID: 415071, manaCost: 235, scaleLevel: 49, minDamage: 304, maxDamage: 342, scale: 2.4},
{level: 52, spellID: 415072, manaCost: 285, scaleLevel: 57, minDamage: 393, maxDamage: 439, scale: 2.8},
{level: 60, spellID: 415073, manaCost: 345, scaleLevel: 60, minDamage: 505, maxDamage: 563, scale: 3.2},
{level: 20, spellID: 879, manaCost: 85, scaleLevel: 25, minDamage: 84, maxDamage: 96, scale: 1.2},
{level: 28, spellID: 5614, manaCost: 135, scaleLevel: 33, minDamage: 152, maxDamage: 172, scale: 1.6},
{level: 36, spellID: 5615, manaCost: 180, scaleLevel: 41, minDamage: 217, maxDamage: 245, scale: 2.0},
{level: 44, spellID: 10312, manaCost: 235, scaleLevel: 49, minDamage: 304, maxDamage: 342, scale: 2.4},
{level: 52, spellID: 10313, manaCost: 285, scaleLevel: 57, minDamage: 393, maxDamage: 439, scale: 2.8},
{level: 60, spellID: 10314, manaCost: 345, scaleLevel: 60, minDamage: 505, maxDamage: 563, scale: 3.2},
}

for i, rank := range ranks {
Expand Down Expand Up @@ -64,15 +64,12 @@ func (paladin *Paladin) registerExorcism() {

BonusCoefficient: 0.429,

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
bonusCrit := 0.0
if target.MobType == proto.MobType_MobTypeDemon || target.MobType == proto.MobType_MobTypeUndead {
bonusCrit += 100 * core.CritRatingPerCritChance
}
ExtraCastCondition: func(sim *core.Simulation, target *core.Unit) bool {
return target.MobType == proto.MobType_MobTypeDemon || target.MobType == proto.MobType_MobTypeUndead
},

spell.BonusCritRating += bonusCrit
ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
spell.CalcAndDealDamage(sim, target, sim.Roll(minDamage, maxDamage), spell.OutcomeMagicHitAndCrit)
spell.BonusCritRating -= bonusCrit
},
})

Expand Down
38 changes: 33 additions & 5 deletions sim/paladin/item_sets_pve.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
// Classic Phase 1 Item Sets - Molten Core
///////////////////////////////////////////////////////////////////////////

var ItemSetVestmentsOfProphecy = core.NewItemSet(core.ItemSet{
var ItemSetLawbringerArmor = core.NewItemSet(core.ItemSet{
Name: "Lawbringer Armor",
Bonuses: map[int32]core.ApplyEffect{
// Increases the chance of triggering a Judgement of Light heal by 10%.
Expand All @@ -36,7 +36,7 @@ var ItemSetVestmentsOfProphecy = core.NewItemSet(core.ItemSet{
// Classic Phase 3 Item Sets - BWL
///////////////////////////////////////////////////////////////////////////

var ItemSetSoulforgeArmor = core.NewItemSet(core.ItemSet{
var ItemSetJudgementArmor = core.NewItemSet(core.ItemSet{
Name: "Judgement Armor",
Bonuses: map[int32]core.ApplyEffect{
// Increases the radius of a Paladin's auras by 10.
Expand Down Expand Up @@ -69,7 +69,7 @@ var ItemSetSoulforgeArmor = core.NewItemSet(core.ItemSet{
// Classic Phase 4 Item Sets - ZG and AB
///////////////////////////////////////////////////////////////////////////

var ItemSetConfessorsRaiment = core.NewItemSet(core.ItemSet{
var ItemSetFreethinkersArmor = core.NewItemSet(core.ItemSet{
Name: "Freethinker's Armor",
Bonuses: map[int32]core.ApplyEffect{
// Restores 4 mana per 5 sec.
Expand All @@ -92,7 +92,7 @@ var ItemSetConfessorsRaiment = core.NewItemSet(core.ItemSet{
// Classic Phase 5 Item Sets - AQ
///////////////////////////////////////////////////////////////////////////

var ItemSetGarmentsOfTheOracle = core.NewItemSet(core.ItemSet{
var ItemSetAvengersBattlegear = core.NewItemSet(core.ItemSet{
Name: "Avenger's Battlegear",
Bonuses: map[int32]core.ApplyEffect{
// Increases the duration of your Judgements by 20%.
Expand All @@ -107,11 +107,39 @@ var ItemSetGarmentsOfTheOracle = core.NewItemSet(core.ItemSet{
},
})

var ItemSetBattlegearOfEternalJustice = core.NewItemSet(core.ItemSet{
Name: "Battlegear of Eternal Justice",
Bonuses: map[int32]core.ApplyEffect{
// 20% chance to regain 100 mana when you cast a Judgement.
3: func(agent core.Agent) {
paladin := agent.(PaladinAgent).GetPaladin()

manaMetrics := paladin.NewManaMetrics(core.ActionID{SpellID: 0})

spellCodes := []int32{
SpellCode_PaladinJudgementOfCommand,
SpellCode_PaladinJudgementOfRighteousness,
}

paladin.RegisterAura(core.Aura{
Label: "Battlegear of Eternal Justice 3 pc",
OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) {
if slices.Contains(spellCodes, spell.SpellCode) {
if sim.Proc(0.20, "Battlegear of Eternal Justice 3 pc") {
paladin.AddMana(sim, 100, manaMetrics)
}
}
},
})
},
},
})

///////////////////////////////////////////////////////////////////////////
// Classic Phase 6 Item Sets - Naxx
///////////////////////////////////////////////////////////////////////////

var ItemSetVestmentsOfFaith = core.NewItemSet(core.ItemSet{
var ItemSetRedemptionArmor = core.NewItemSet(core.ItemSet{
Name: "Redemption Armor",
Bonuses: map[int32]core.ApplyEffect{
// Increases the amount healed by your Judgement of Light by 20.
Expand Down
1 change: 0 additions & 1 deletion sim/paladin/paladin.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@ func (paladin *Paladin) Initialize() {
paladin.registerDivineFavor()
paladin.registerHammerOfWrath()
paladin.registerHolyWrath()
paladin.registerAvengingWrath()
paladin.registerHolyShield()
paladin.registerBlessingOfSanctuary()
paladin.registerLayOnHands()
Expand Down
Loading