Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
d9b9fd1
Use MoP debuffs
neteyesking May 4, 2025
c9d416c
Update debuff pickers
neteyesking May 4, 2025
874acaf
make everything run
neteyesking May 4, 2025
def6f3a
Fix common.proto comments
neteyesking May 4, 2025
c332536
Fix some tests
neteyesking May 4, 2025
653c69c
Fix sunder test
neteyesking May 4, 2025
37d2d79
Tests update again
neteyesking May 4, 2025
2f6c4bc
Update armor test
1337LutZ May 4, 2025
6cde777
Various consume / input toggle fixes
1337LutZ May 4, 2025
108f3af
Fix proper stacks setting
1337LutZ May 4, 2025
7f3f298
Make Spell Damage Taken a single aura
neteyesking May 5, 2025
db55bed
First v
neteyesking May 5, 2025
ba23832
Remove unused
neteyesking May 5, 2025
1f3f28d
Address PR comments
neteyesking May 5, 2025
2f2c80e
Remove
neteyesking May 5, 2025
78ef89a
Update raid buffs to MoP
neteyesking May 5, 2025
c727ce1
Delete old presets
neteyesking May 5, 2025
8916abe
Add faction
neteyesking May 5, 2025
fbdba9c
Remove faction
neteyesking May 5, 2025
304fa62
Merge pull request #61 from wowsims/raid-buffs
ToxicKevinFerm May 5, 2025
5887699
Merge branch 'master' into raid-debuffs
neteyesking May 5, 2025
cfbad64
Remvoe stamina from all stats
neteyesking May 5, 2025
884ad9c
Add missing buffs
neteyesking May 5, 2025
49a97ee
Fix PR notes
neteyesking May 6, 2025
8a715f9
Add back mana tide
neteyesking May 6, 2025
1c9752a
Remove commanding shout from ap
neteyesking May 6, 2025
60f213c
Remove dark intent uptime
neteyesking May 6, 2025
92343fb
Fix last pr notes
neteyesking May 7, 2025
67f5571
Fix compile
neteyesking May 7, 2025
0564bae
Remove PI etc from frontend
neteyesking May 7, 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
Binary file modified assets/database/db.bin
Binary file not shown.
1 change: 0 additions & 1 deletion assets/database/db.json
Original file line number Diff line number Diff line change
Expand Up @@ -18071,7 +18071,6 @@
{"id":770,"name":"Faerie Fire","icon":"spell_nature_faeriefire","hasBuff":true},
{"id":779,"name":"Swipe","icon":"inv_misc_monsterclaw_03"},
{"id":879,"name":"Exorcism","icon":"spell_holy_excorcism_02"},
{"id":1130,"name":"Hunter's Mark","icon":"ability_hunter_snipershot","hasBuff":true},
{"id":1459,"name":"Arcane Brilliance","icon":"spell_holy_magicalsentry","hasBuff":true},
{"id":1463,"name":"Incanter's Ward","icon":"spell_shadow_detectlesserinvisibility","hasBuff":true},
{"id":1490,"name":"Curse of the Elements","icon":"warlock_curse_shadow","hasBuff":true},
Expand Down
Binary file modified assets/database/leftover_db.bin
Binary file not shown.
79 changes: 33 additions & 46 deletions proto/common.proto

Choose a reason for hiding this comment

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

Also need to delete vampiric_touch, enduring_winter, soul_leach, revitalize, communion, power_infusion_count, focus_magic, and dark_intent from IndividualBuffs.

Original file line number Diff line number Diff line change
Expand Up @@ -550,52 +550,39 @@ message IndividualBuffs {
}

message Debuffs {
// 8% spell damage
bool curse_of_elements = 1;
bool ebon_plaguebringer = 2;
bool earth_and_moon = 3;
bool master_poisoner = 4;
bool fire_breath = 5;
bool lightning_breath = 6;

// 5% spell crit
bool critical_mass = 7;
bool shadow_and_flame = 8;

// 30% bleed damage
bool blood_frenzy = 9;
bool hemorrhage = 10;
bool mangle = 11;
bool stampede = 12;

// Major armor
bool expose_armor = 13;
bool sunder_armor = 14;
bool faerie_fire = 15;
bool corrosive_spit = 16;

// 4% physical dmg
bool savage_combat = 17;
bool brittle_bones = 18;
bool acid_spit = 19;

// -dmg %
bool curse_of_weakness = 20;
bool demoralizing_roar = 21;
bool demoralizing_shout = 22;
bool vindication = 23;
bool scarlet_fever = 24;
bool demoralizing_screech = 25;
bool keg_smask = 32;

// -attack speed
bool thunder_clap = 26;
bool frost_fever = 27;
bool infected_wounds = 28;
bool judgements_of_the_just = 29;
bool dust_cloud = 30;
bool earth_shock = 31;
}

// –10% Physical damage dealt for 30s
// Physical‐damage‐dealt sources:
// Scarlet Fever, Thrash, Demoralizing Roar, Demoralizing Screech, Keg Smash,
// Hammer of the Righteous, Earth Shock, Curse of Enfeeblement, Thunder Clap
bool weakened_blows = 1;

// +4% Physical damage taken for 30s
// Gore, Stampede, Acid Spit, Ravage, Judgments of the Bold, Colossus Smash
bool physical_vulnerability = 2;

// –4% Armor for 30s, stacks 3 times
// Faerie Fire, Tear Armor, Dust Cloud, Expose Armor, Sunder Armor
bool weakened_armor = 3;

//Healing reduction
//Widow Venom, Monstrous Bite, Rising Sun Kick, Wound Poison, Mortal Strike, Wild Strike
bool mortal_wounds = 4;

// Spell‐damage‐taken sources:
bool fire_breath = 5;
bool lightning_breath = 6;
bool master_poisoner = 7;
bool curse_of_elements = 8;

// Casting‐speed‐reduction sources:
bool necrotic_strike = 9;
bool lava_breath = 10;
bool spore_cloud = 11;
bool slow = 12;
bool mind_numbing_poison = 13;
bool curse_of_enfeeblement = 14;
}

message ConsumesSpec {
int32 prepot_id = 1;
Expand Down
113 changes: 7 additions & 106 deletions sim/core/armor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"github.com/wowsims/mop/sim/core/stats"
)

func TestSunderArmorStacks(t *testing.T) {
func TestWeakenedArmorStacks(t *testing.T) {
sim := Simulation{}
baseArmor := 11977.0
target := Unit{
Expand All @@ -24,7 +24,7 @@ func TestSunderArmorStacks(t *testing.T) {
t.Fatalf("Armor value for target should be %f but found %f", 11977.0, target.Armor())
}
stacks := int32(1)
sunderAura := SunderArmorAura(&target)
sunderAura := WeakenedArmorAura(&target)
sunderAura.Activate(&sim)
sunderAura.SetStacks(&sim, stacks)
tolerance := 0.001
Expand All @@ -38,96 +38,6 @@ func TestSunderArmorStacks(t *testing.T) {
}
}

func TestAcidSpitStacks(t *testing.T) {
sim := Simulation{}
baseArmor := 11977.0
target := Unit{
Type: EnemyUnit,
Index: 0,
Level: 88,
auraTracker: newAuraTracker(),
initialStats: stats.Stats{stats.Armor: baseArmor},
PseudoStats: stats.NewPseudoStats(),
Metrics: NewUnitMetrics(),
}
target.stats = target.initialStats
expectedArmor := baseArmor
if target.Armor() != expectedArmor {
t.Fatalf("Armor value for target should be %f but found %f", 11977.0, target.Armor())
}
stacks := int32(1)
corrosiveSpitAura := CorrosiveSpitAura(&target)
corrosiveSpitAura.Activate(&sim)
corrosiveSpitAura.SetStacks(&sim, stacks)
tolerance := 0.001
for stacks <= 3 {
expectedArmor = baseArmor * (1.0 - float64(stacks)*0.04)
if !WithinToleranceFloat64(expectedArmor, target.Armor(), tolerance) {
t.Fatalf("Armor value for target should be %f but found %f", expectedArmor, target.Armor())
}
stacks++
corrosiveSpitAura.AddStack(&sim)
}
}

func TestExposeArmor(t *testing.T) {
sim := Simulation{}
baseArmor := 11977.0
target := Unit{
Type: EnemyUnit,
Index: 0,
Level: 88,
auraTracker: newAuraTracker(),
initialStats: stats.Stats{stats.Armor: baseArmor},
PseudoStats: stats.NewPseudoStats(),
Metrics: NewUnitMetrics(),
}
target.stats = target.initialStats
expectedArmor := baseArmor
if target.Armor() != expectedArmor {
t.Fatalf("Armor value for target should be %f but found %f", 11977.0, target.Armor())
}
exposeAura := ExposeArmorAura(&target, false)
exposeAura.Activate(&sim)
tolerance := 0.001
expectedArmor = baseArmor * (1.0 - 0.12)
if !WithinToleranceFloat64(expectedArmor, target.Armor(), tolerance) {
t.Fatalf("Armor value for target should be %f but found %f", expectedArmor, target.Armor())
}
}

func TestMajorArmorReductionAurasDoNotStack(t *testing.T) {
sim := Simulation{}
baseArmor := 11977.0
target := Unit{
Type: EnemyUnit,
Index: 0,
Level: 88,
auraTracker: newAuraTracker(),
initialStats: stats.Stats{stats.Armor: baseArmor},
PseudoStats: stats.NewPseudoStats(),
Metrics: NewUnitMetrics(),
}
target.stats = target.initialStats
expectedArmor := baseArmor
if target.Armor() != expectedArmor {
t.Fatalf("Armor value for target should be %f but found %f", 11977.0, target.Armor())
}
corrosiveSpitAura := CorrosiveSpitAura(&target)
corrosiveSpitAura.Activate(&sim)
corrosiveSpitAura.SetStacks(&sim, 3)
tolerance := 0.001
expectedArmor = baseArmor * (1.0 - 0.12)
if !WithinToleranceFloat64(expectedArmor, target.Armor(), tolerance) {
t.Fatalf("Armor value for target should be %f but found %f", expectedArmor, target.Armor())
}
exposeArmorAura := ExposeArmorAura(&target, false)
exposeArmorAura.Activate(&sim)
if !WithinToleranceFloat64(expectedArmor, target.Armor(), tolerance) {
t.Fatalf("Armor value for target should be %f but found %f", expectedArmor, target.Armor())
}
}

func TestDamageReductionFromArmor(t *testing.T) {
sim := Simulation{}
baseArmor := 11977.0
Expand All @@ -154,28 +64,19 @@ func TestDamageReductionFromArmor(t *testing.T) {
}

// Major
corrosiveSpitAura := CorrosiveSpitAura(&target)
corrosiveSpitAura.Activate(&sim)
corrosiveSpitAura.SetStacks(&sim, 3)
weakenedArmorAura := WeakenedArmorAura(&target)
weakenedArmorAura.Activate(&sim)
weakenedArmorAura.SetStacks(&sim, 3)
expectedDamageReduction = 0.287895
if !WithinToleranceFloat64(1-expectedDamageReduction, attackTable.GetArmorDamageModifier(spell), tolerance) {
t.Fatalf("Expected major armor modifier to result in %f damage reduction got %f", expectedDamageReduction, 1-attackTable.GetArmorDamageModifier(spell))
}
corrosiveSpitAura.Deactivate(&sim)

// Major
faerieFireAura := FaerieFireAura(&target)
faerieFireAura.Activate(&sim)
faerieFireAura.SetStacks(&sim, 3)
expectedDamageReduction = 0.287895
if !WithinToleranceFloat64(1-expectedDamageReduction, attackTable.GetArmorDamageModifier(spell), tolerance) {
t.Fatalf("Expected major & minor armor modifier to result in %f damage reduction got %f", expectedDamageReduction, 1-attackTable.GetArmorDamageModifier(spell))
}
weakenedArmorAura.Deactivate(&sim)

// Major Multi
shatteringThrowAura := ShatteringThrowAura(&target, attacker.UnitIndex)
shatteringThrowAura.Activate(&sim)
expectedDamageReduction = 0.244387
expectedDamageReduction = 0.268757
if !WithinToleranceFloat64(1-expectedDamageReduction, attackTable.GetArmorDamageModifier(spell), tolerance) {
t.Fatalf("Expected major & shattering modifier to result in %f damage reduction got %f", expectedDamageReduction, 1-attackTable.GetArmorDamageModifier(spell))
}
Expand Down
Loading
Loading