From 4cc82e5f945e1814a180fe4fb861dee2a77d8482 Mon Sep 17 00:00:00 2001 From: sanguinerarogue Date: Wed, 1 Jan 2025 15:51:20 -0700 Subject: [PATCH] pvp items --- sim/hunter/TestP1Hunter.results | 70 ++++++++++ sim/hunter/_item_sets_pvp.go | 220 -------------------------------- sim/hunter/item_sets_pvp.go | 96 ++++++++++++++ sim/hunter/items.go | 71 +++++++++++ 4 files changed, 237 insertions(+), 220 deletions(-) delete mode 100644 sim/hunter/_item_sets_pvp.go create mode 100644 sim/hunter/item_sets_pvp.go diff --git a/sim/hunter/TestP1Hunter.results b/sim/hunter/TestP1Hunter.results index 8b0e08810..7d347e1e4 100644 --- a/sim/hunter/TestP1Hunter.results +++ b/sim/hunter/TestP1Hunter.results @@ -103,6 +103,27 @@ dps_results: { tps: 148.05127 } } +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-BloodGuard'sChainGauntlets-16530" + value: { + dps: 292.04584 + tps: 144.84534 + } +} +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-BloodGuard'sChainVices-22862" + value: { + dps: 293.022 + tps: 145.8215 + } +} +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-Champion'sPursuance" + value: { + dps: 298.93967 + tps: 151.7376 + } +} dps_results: { key: "TestP1Hunter-Phase1-AllItems-CryptstalkerArmor" value: { @@ -131,6 +152,20 @@ dps_results: { tps: 158.34988 } } +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-FieldMarshal'sPursuit" + value: { + dps: 306.67445 + tps: 159.47237 + } +} +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-General'sChainGloves-16571" + value: { + dps: 294.73892 + tps: 147.53842 + } +} dps_results: { key: "TestP1Hunter-Phase1-AllItems-GiantstalkerArmor" value: { @@ -138,6 +173,34 @@ dps_results: { tps: 155.72767 } } +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-Knight-Lieutenant'sChainGauntlets-16403" + value: { + dps: 292.04584 + tps: 144.84534 + } +} +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-Knight-Lieutenant'sChainVices-23279" + value: { + dps: 293.022 + tps: 145.8215 + } +} +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-LieutenantCommander'sPursuance" + value: { + dps: 298.93967 + tps: 151.7376 + } +} +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-Marshal'sChainGrips-16463" + value: { + dps: 294.73892 + tps: 147.53842 + } +} dps_results: { key: "TestP1Hunter-Phase1-AllItems-Predator'sArmor" value: { @@ -159,6 +222,13 @@ dps_results: { tps: 154.88863 } } +dps_results: { + key: "TestP1Hunter-Phase1-AllItems-Warlord'sPursuit" + value: { + dps: 306.67445 + tps: 159.47237 + } +} dps_results: { key: "TestP1Hunter-Phase1-Average-Default" value: { diff --git a/sim/hunter/_item_sets_pvp.go b/sim/hunter/_item_sets_pvp.go deleted file mode 100644 index 07b1481bb..000000000 --- a/sim/hunter/_item_sets_pvp.go +++ /dev/null @@ -1,220 +0,0 @@ -package hunter - -import ( - "github.com/wowsims/classic/sim/core" - "github.com/wowsims/classic/sim/core/stats" -) - -/////////////////////////////////////////////////////////////////////////// -// Classic Phase 2 -/////////////////////////////////////////////////////////////////////////// - -var ItemSetBloodGuardsChain = core.NewItemSet(core.ItemSet{ - Name: "Blood Guard's Chain", - Bonuses: map[int32]core.ApplyEffect{ - 3: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 15) - }, - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.AttackPower, 30) - c.AddStat(stats.RangedAttackPower, 20) - }, - }, -}) - -var ItemSetKnightLieutenantsChain = core.NewItemSet(core.ItemSet{ - Name: "Knight-Lieutenant's Chain", - Bonuses: map[int32]core.ApplyEffect{ - 3: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 15) - }, - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.AttackPower, 30) - c.AddStat(stats.RangedAttackPower, 20) - }, - }, -}) - -/////////////////////////////////////////////////////////////////////////// -// Classic Phase 3 -/////////////////////////////////////////////////////////////////////////// - -var ItemSetChampionsPursuit = core.NewItemSet(core.ItemSet{ - Name: "Champion's Pursuit", - Bonuses: map[int32]core.ApplyEffect{ - // +20 Agility. - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Agility, 20) - }, - // Reduces the cooldown of your Concussive Shot by 1 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +20 Stamina. - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - }, -}) - -var ItemSetChampionsProwess = core.NewItemSet(core.ItemSet{ - Name: "Champion's Prowess", - Bonuses: map[int32]core.ApplyEffect{ - // +40 Attack Power. - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStats(stats.Stats{ - stats.AttackPower: 40, - stats.RangedAttackPower: 40, - }) - }, - // Increases the duration of your Wing Clip by 2 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +20 Stamina. - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - }, -}) - -var ItemSetLieutenantCommandersPursuit = core.NewItemSet(core.ItemSet{ - Name: "Lieutenant Commander's Pursuit", - Bonuses: map[int32]core.ApplyEffect{ - // +20 Agility. - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Agility, 20) - }, - // Reduces the cooldown of your Concussive Shot by 1 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +20 Stamina. - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - }, -}) - -var ItemSetLieutenantCommandersProwess = core.NewItemSet(core.ItemSet{ - Name: "Lieutenant Commander's Prowess", - Bonuses: map[int32]core.ApplyEffect{ - // +40 Attack Power. - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStats(stats.Stats{ - stats.AttackPower: 40, - stats.RangedAttackPower: 40, - }) - }, - // Increases the duration of your Wing Clip by 2 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +20 Stamina. - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - }, -}) - -/////////////////////////////////////////////////////////////////////////// -// SoD Phase 5 Item Sets -/////////////////////////////////////////////////////////////////////////// - -var ItemSetWarlordsPursuit = core.NewItemSet(core.ItemSet{ - Name: "Warlord's Pursuit", - Bonuses: map[int32]core.ApplyEffect{ - // 20 Stamina - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - // Reduces the cooldown of your Concussive Shot by 1 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +20 Agi - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Agility, 20) - }, - }, -}) - -var ItemSetWarlordsProwess = core.NewItemSet(core.ItemSet{ - Name: "Warlord's Prowess", - Bonuses: map[int32]core.ApplyEffect{ - // +20 stamina - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - // Increases the duration of your Wing Clip by 2 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +40 Agnostic Attack Power - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStats(stats.Stats{ - stats.AttackPower: 40, - stats.RangedAttackPower: 40, - }) - }, - }, -}) - -var ItemSetFieldMarshalsPursuit = core.NewItemSet(core.ItemSet{ - Name: "Field Marshal's Pursuit", - Bonuses: map[int32]core.ApplyEffect{ - // 20 stamina - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - // Reduces the cooldown of your Concussive Shot by 1 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +20 Agi - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Agility, 20) - }, - }, -}) - -var ItemSetFieldMarshalsProwess = core.NewItemSet(core.ItemSet{ - Name: "Field Marshal's Prowess", - Bonuses: map[int32]core.ApplyEffect{ - //20 stamina - 2: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStat(stats.Stamina, 20) - }, - // Increases the duration of your Wing Clip by 2 sec. - 4: func(agent core.Agent) { - // Nothing to do - }, - // +40 Agnostic Attack Power. - 6: func(agent core.Agent) { - c := agent.GetCharacter() - c.AddStats(stats.Stats{ - stats.AttackPower: 40, - stats.RangedAttackPower: 40, - }) - }, - }, -}) diff --git a/sim/hunter/item_sets_pvp.go b/sim/hunter/item_sets_pvp.go new file mode 100644 index 000000000..3a7649f40 --- /dev/null +++ b/sim/hunter/item_sets_pvp.go @@ -0,0 +1,96 @@ +package hunter + +import ( + "github.com/wowsims/classic/sim/core" + "github.com/wowsims/classic/sim/core/stats" +) + +/////////////////////////////////////////////////////////////////////////// +// Classic Phase 2 +/////////////////////////////////////////////////////////////////////////// + +// https://www.wowhead.com/classic/item-set=543/champions-pursuance +var ItemSetChampionsPursuance = core.NewItemSet(core.ItemSet{ + Name: "Champion's Pursuance", + Bonuses: map[int32]core.ApplyEffect{ + // +20 Agility. + 2: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Agility, 20) + }, + // Reduces the cooldown of your Concussive Shot by 1 sec. + 4: func(agent core.Agent) { + // Nothing to do + }, + // +20 Stamina. + 6: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Stamina, 20) + }, + }, +}) + +// https://www.wowhead.com/classic/item-set=550/lieutenant-commanders-pursuance +var ItemSetLieutenantCommandersPursuance = core.NewItemSet(core.ItemSet{ + Name: "Lieutenant Commander's Pursuance", + Bonuses: map[int32]core.ApplyEffect{ + // +20 Agility. + 2: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Agility, 20) + }, + // Reduces the cooldown of your Concussive Shot by 1 sec. + 4: func(agent core.Agent) { + // Nothing to do + }, + // +20 Stamina. + 6: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Stamina, 20) + }, + }, +}) + +/////////////////////////////////////////////////////////////////////////// +// Classic Phase 3 +/////////////////////////////////////////////////////////////////////////// + +var ItemSetWarlordsPursuit = core.NewItemSet(core.ItemSet{ + Name: "Warlord's Pursuit", + Bonuses: map[int32]core.ApplyEffect{ + // 20 Stamina + 2: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Stamina, 20) + }, + // Reduces the cooldown of your Concussive Shot by 1 sec. + 4: func(agent core.Agent) { + // Nothing to do + }, + // +20 Agi + 6: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Agility, 20) + }, + }, +}) + +var ItemSetFieldMarshalsPursuit = core.NewItemSet(core.ItemSet{ + Name: "Field Marshal's Pursuit", + Bonuses: map[int32]core.ApplyEffect{ + // 20 stamina + 2: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Stamina, 20) + }, + // Reduces the cooldown of your Concussive Shot by 1 sec. + 4: func(agent core.Agent) { + // Nothing to do + }, + // +20 Agi + 6: func(agent core.Agent) { + c := agent.GetCharacter() + c.AddStat(stats.Agility, 20) + }, + }, +}) \ No newline at end of file diff --git a/sim/hunter/items.go b/sim/hunter/items.go index 384b4680c..dc26a75a0 100644 --- a/sim/hunter/items.go +++ b/sim/hunter/items.go @@ -8,12 +8,83 @@ import ( ) const ( + KnightLieutenantsChainGauntlets = 16403 + BloodGuardsChainGauntlets = 16530 + MarshalsChainGrips = 16463 + GeneralsChainGloves = 16571 RenatakisCharmofBeasts = 19953 DevilsaurEye = 19991 DevilsaurTooth = 19992 + KnightLieutenantsChainVices= 23279 + BloodGuardsChainVices = 22862 ) func init() { + // Equip: Reduces the mana cost of your Arcane Shot by 15. + core.NewItemEffect(KnightLieutenantsChainGauntlets, func(agent core.Agent) { + hunter := agent.(HunterAgent).GetHunter() + core.MakePermanent(hunter.RegisterAura(core.Aura{ + Label: "Arcane Shot Mana Reduction", + OnInit: func(aura *core.Aura, sim *core.Simulation) { + if hunter.ArcaneShot != nil { + hunter.ArcaneShot.Cost.FlatModifier -= 15.0 + } + }, + })) + }) + // Equip: Reduces the mana cost of your Arcane Shot by 15. + core.NewItemEffect(BloodGuardsChainGauntlets, func(agent core.Agent) { + hunter := agent.(HunterAgent).GetHunter() + core.MakePermanent(hunter.RegisterAura(core.Aura{ + Label: "Arcane Shot Mana Reduction", + OnInit: func(aura *core.Aura, sim *core.Simulation) { + if hunter.ArcaneShot != nil { + hunter.ArcaneShot.Cost.FlatModifier -= 15.0 + } + }, + })) + }) + + // Equip: Increases the damage done by your Multi-Shot by 4% + core.NewItemEffect(MarshalsChainGrips, func(agent core.Agent) { + hunter := agent.(HunterAgent).GetHunter() + core.MakePermanent(hunter.RegisterAura(core.Aura{ + Label: "Multi-Shot Damage Increase", + OnInit: func(aura *core.Aura, sim *core.Simulation) { + hunter.MultiShot.BaseDamageMultiplierAdditive += 0.04 + }, + })) + }) + // Equip: Increases the damage done by your Multi-Shot by 4% + core.NewItemEffect(GeneralsChainGloves, func(agent core.Agent) { + hunter := agent.(HunterAgent).GetHunter() + core.MakePermanent(hunter.RegisterAura(core.Aura{ + Label: "Multi-Shot Damage Increase", + OnInit: func(aura *core.Aura, sim *core.Simulation) { + hunter.MultiShot.BaseDamageMultiplierAdditive += 0.04 + }, + })) + }) + // Equip: Increases the damage done by your Multi-Shot by 4% + core.NewItemEffect(KnightLieutenantsChainVices, func(agent core.Agent) { + hunter := agent.(HunterAgent).GetHunter() + core.MakePermanent(hunter.RegisterAura(core.Aura{ + Label: "Multi-Shot Damage Increase", + OnInit: func(aura *core.Aura, sim *core.Simulation) { + hunter.MultiShot.BaseDamageMultiplierAdditive += 0.04 + }, + })) + }) + // Equip: Increases the damage done by your Multi-Shot by 4% + core.NewItemEffect(BloodGuardsChainVices, func(agent core.Agent) { + hunter := agent.(HunterAgent).GetHunter() + core.MakePermanent(hunter.RegisterAura(core.Aura{ + Label: "Multi-Shot Damage Increase", + OnInit: func(aura *core.Aura, sim *core.Simulation) { + hunter.MultiShot.BaseDamageMultiplierAdditive += 0.04 + }, + })) + }) // Use: Instantly clears the cooldowns of Aimed Shot, Multishot, Volley, and Arcane Shot. (cooldown 3 min) core.NewItemEffect(RenatakisCharmofBeasts, func(agent core.Agent) { hunter := agent.(HunterAgent).GetHunter()