From a2ee421b48a19fbbf218c3c76747d8b3fa07413f Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Mon, 22 Apr 2024 03:27:38 -0700 Subject: [PATCH 1/2] chore: Add helpers for standard damage modifiers + surge damage modifiers basic_dmg_mod buffs impact, explosive, and melee surge_mod buffs just impact and explosive --- src/perks/buff_perks.rs | 134 +++++++------------------------------- src/perks/exotic_armor.rs | 6 +- src/perks/lib.rs | 19 ++++++ 3 files changed, 42 insertions(+), 117 deletions(-) diff --git a/src/perks/buff_perks.rs b/src/perks/buff_perks.rs index 33b8d960..3baaf4aa 100644 --- a/src/perks/buff_perks.rs +++ b/src/perks/buff_perks.rs @@ -54,8 +54,6 @@ fn gbl_debuff(_cached_data: &mut HashMap, _desired_buff: f64) -> f6 } } -//surge mod dmr is in meta_perks.rs - // // BUFFS // @@ -64,11 +62,7 @@ pub fn buff_perks() { Perks::WellOfRadiance, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let buff = emp_buff(_input.cached_data, 1.25); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -80,11 +74,7 @@ pub fn buff_perks() { } let des_buff = if _input.pvp { 1.15 } else { 1.35 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -94,11 +84,7 @@ pub fn buff_perks() { let des_buff = if _input.pvp { 1.1 } else { 1.25 }; let buff = emp_buff(_input.cached_data, des_buff); _input.cached_data.insert("radiant".to_string(), 1.0); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -109,11 +95,7 @@ pub fn buff_perks() { return DamageModifierResponse::default(); } let buff = surge_buff(_input.cached_data, _input.value, _input.pvp); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::surge_mod(buff) }), ); @@ -122,11 +104,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_buff = if _input.pvp { 1.35 } else { 1.4 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -135,11 +113,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_buff = if _input.pvp { 1.15 } else { 1.2 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -147,11 +121,7 @@ pub fn buff_perks() { Perks::WardOfDawn, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let buff = emp_buff(_input.cached_data, 1.25); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -160,11 +130,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_buff = if _input.pvp { 1.0 } else { 1.35 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -195,11 +161,7 @@ pub fn buff_perks() { pve_values[clamp(_input.value, 0, 3) as usize] }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(buff) }), ); @@ -227,11 +189,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.075 } else { 1.15 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse { - impact_dmg_scale: debuff, - explosive_dmg_scale: debuff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(debuff) }), ); @@ -240,11 +198,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.5 } else { 1.3 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse { - impact_dmg_scale: debuff, - explosive_dmg_scale: debuff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(debuff) }), ); @@ -253,11 +207,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.5 } else { 1.3 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse { - impact_dmg_scale: debuff, - explosive_dmg_scale: debuff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(debuff) }), ); add_dmr( @@ -265,11 +215,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.5 } else { 1.3 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse { - impact_dmg_scale: debuff, - explosive_dmg_scale: debuff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(debuff) }), ); add_dmr( @@ -277,11 +223,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { if _input.value > 0 { let debuff = gbl_debuff(_input.cached_data, 1.3); - DamageModifierResponse { - impact_dmg_scale: debuff, - explosive_dmg_scale: debuff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(debuff) } else { DamageModifierResponse::default() } @@ -298,22 +240,14 @@ pub fn buff_perks() { pve_values[clamp(_input.value, 0, 4) as usize] }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse { - impact_dmg_scale: debuff, - explosive_dmg_scale: debuff, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(debuff) }), ); add_dmr( Perks::SurgeMod, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let damage_mod = surge_buff(_input.cached_data, _input.value, _input.pvp); - DamageModifierResponse { - explosive_dmg_scale: damage_mod, - impact_dmg_scale: damage_mod, - ..Default::default() - } + DamageModifierResponse::surge_mod(damage_mod) }), ); add_sbr( @@ -335,11 +269,7 @@ pub fn buff_perks() { Perks::EternalWarrior, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let damage_mod = surge_buff(_input.cached_data, _input.value, _input.pvp); - DamageModifierResponse { - explosive_dmg_scale: damage_mod, - impact_dmg_scale: damage_mod, - ..Default::default() - } + DamageModifierResponse::surge_mod(damage_mod) }), ); @@ -351,11 +281,7 @@ pub fn buff_perks() { } else { 1.0 }; - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::surge_mod(buff) }), ); add_dmr( @@ -370,11 +296,7 @@ pub fn buff_perks() { } else { 1.0 }; - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::surge_mod(buff) }), ); add_dmr( @@ -386,11 +308,7 @@ pub fn buff_perks() { let buff = surge_buff(_input.cached_data, 2, _input.pvp); - DamageModifierResponse { - impact_dmg_scale: buff, - explosive_dmg_scale: buff, - ..Default::default() - } + DamageModifierResponse::surge_mod(buff) }), ); add_dmr( @@ -400,11 +318,7 @@ pub fn buff_perks() { return DamageModifierResponse::default(); } let mult = surge_buff(_input.cached_data, 4, _input.pvp); - DamageModifierResponse { - impact_dmg_scale: mult, - explosive_dmg_scale: mult, - ..Default::default() - } + DamageModifierResponse::surge_mod(mult) }), ); add_dmr( @@ -414,11 +328,7 @@ pub fn buff_perks() { return DamageModifierResponse::default(); } let mult = surge_buff(_input.cached_data, 4, _input.pvp); - DamageModifierResponse { - impact_dmg_scale: mult, - explosive_dmg_scale: mult, - ..Default::default() - } + DamageModifierResponse::surge_mod(mult) }), ); add_dmr( diff --git a/src/perks/exotic_armor.rs b/src/perks/exotic_armor.rs index a62ae237..0fe5b055 100644 --- a/src/perks/exotic_armor.rs +++ b/src/perks/exotic_armor.rs @@ -101,11 +101,7 @@ pub fn exotic_armor() { return DamageModifierResponse::default(); } let modifier = 1.0 + (0.3 - health_percent); - DamageModifierResponse { - impact_dmg_scale: modifier, - explosive_dmg_scale: modifier, - ..Default::default() - } + DamageModifierResponse::basic_dmg_mod(modifier) }), ); diff --git a/src/perks/lib.rs b/src/perks/lib.rs index ac8175a6..05087da6 100644 --- a/src/perks/lib.rs +++ b/src/perks/lib.rs @@ -159,6 +159,25 @@ impl Default for DamageModifierResponse { } } } +impl DamageModifierResponse { + // damage modifier that affects all damage types + pub fn basic_dmg_mod(modifier: f64) -> Self { + Self { + impact_dmg_scale: modifier, + explosive_dmg_scale: modifier, + // pending: melee_dmg_scale + ..Default::default() + } + } + // damage modifier that does not affect melee damage + pub fn surge_mod(modifier: f64) -> Self { + Self { + impact_dmg_scale: modifier, + explosive_dmg_scale: modifier, + ..Default::default() + } + } +} #[derive(Debug, Clone, PartialEq)] pub struct ExtraDamageResponse { From 4fc57ab2773a51379242f6d68ca86187b57a34f2 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Tue, 14 May 2024 16:07:59 -0700 Subject: [PATCH 2/2] Rename _mod -> _buff to differentiate from armor mods --- src/perks/buff_perks.rs | 44 +++++++++++++++++++-------------------- src/perks/exotic_armor.rs | 2 +- src/perks/lib.rs | 4 ++-- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/perks/buff_perks.rs b/src/perks/buff_perks.rs index 3baaf4aa..f63dbeba 100644 --- a/src/perks/buff_perks.rs +++ b/src/perks/buff_perks.rs @@ -62,7 +62,7 @@ pub fn buff_perks() { Perks::WellOfRadiance, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let buff = emp_buff(_input.cached_data, 1.25); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -74,7 +74,7 @@ pub fn buff_perks() { } let des_buff = if _input.pvp { 1.15 } else { 1.35 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -84,7 +84,7 @@ pub fn buff_perks() { let des_buff = if _input.pvp { 1.1 } else { 1.25 }; let buff = emp_buff(_input.cached_data, des_buff); _input.cached_data.insert("radiant".to_string(), 1.0); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -95,7 +95,7 @@ pub fn buff_perks() { return DamageModifierResponse::default(); } let buff = surge_buff(_input.cached_data, _input.value, _input.pvp); - DamageModifierResponse::surge_mod(buff) + DamageModifierResponse::surge_buff(buff) }), ); @@ -104,7 +104,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_buff = if _input.pvp { 1.35 } else { 1.4 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -113,7 +113,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_buff = if _input.pvp { 1.15 } else { 1.2 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -121,7 +121,7 @@ pub fn buff_perks() { Perks::WardOfDawn, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let buff = emp_buff(_input.cached_data, 1.25); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -130,7 +130,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_buff = if _input.pvp { 1.0 } else { 1.35 }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -161,7 +161,7 @@ pub fn buff_perks() { pve_values[clamp(_input.value, 0, 3) as usize] }; let buff = emp_buff(_input.cached_data, des_buff); - DamageModifierResponse::basic_dmg_mod(buff) + DamageModifierResponse::basic_dmg_buff(buff) }), ); @@ -189,7 +189,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.075 } else { 1.15 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse::basic_dmg_mod(debuff) + DamageModifierResponse::basic_dmg_buff(debuff) }), ); @@ -198,7 +198,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.5 } else { 1.3 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse::basic_dmg_mod(debuff) + DamageModifierResponse::basic_dmg_buff(debuff) }), ); @@ -207,7 +207,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.5 } else { 1.3 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse::basic_dmg_mod(debuff) + DamageModifierResponse::basic_dmg_buff(debuff) }), ); add_dmr( @@ -215,7 +215,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let des_debuff = if _input.pvp { 1.5 } else { 1.3 }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse::basic_dmg_mod(debuff) + DamageModifierResponse::basic_dmg_buff(debuff) }), ); add_dmr( @@ -223,7 +223,7 @@ pub fn buff_perks() { Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { if _input.value > 0 { let debuff = gbl_debuff(_input.cached_data, 1.3); - DamageModifierResponse::basic_dmg_mod(debuff) + DamageModifierResponse::basic_dmg_buff(debuff) } else { DamageModifierResponse::default() } @@ -240,14 +240,14 @@ pub fn buff_perks() { pve_values[clamp(_input.value, 0, 4) as usize] }; let debuff = gbl_debuff(_input.cached_data, des_debuff); - DamageModifierResponse::basic_dmg_mod(debuff) + DamageModifierResponse::basic_dmg_buff(debuff) }), ); add_dmr( Perks::SurgeMod, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let damage_mod = surge_buff(_input.cached_data, _input.value, _input.pvp); - DamageModifierResponse::surge_mod(damage_mod) + DamageModifierResponse::surge_buff(damage_mod) }), ); add_sbr( @@ -269,7 +269,7 @@ pub fn buff_perks() { Perks::EternalWarrior, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { let damage_mod = surge_buff(_input.cached_data, _input.value, _input.pvp); - DamageModifierResponse::surge_mod(damage_mod) + DamageModifierResponse::surge_buff(damage_mod) }), ); @@ -281,7 +281,7 @@ pub fn buff_perks() { } else { 1.0 }; - DamageModifierResponse::surge_mod(buff) + DamageModifierResponse::surge_buff(buff) }), ); add_dmr( @@ -296,7 +296,7 @@ pub fn buff_perks() { } else { 1.0 }; - DamageModifierResponse::surge_mod(buff) + DamageModifierResponse::surge_buff(buff) }), ); add_dmr( @@ -308,7 +308,7 @@ pub fn buff_perks() { let buff = surge_buff(_input.cached_data, 2, _input.pvp); - DamageModifierResponse::surge_mod(buff) + DamageModifierResponse::surge_buff(buff) }), ); add_dmr( @@ -318,7 +318,7 @@ pub fn buff_perks() { return DamageModifierResponse::default(); } let mult = surge_buff(_input.cached_data, 4, _input.pvp); - DamageModifierResponse::surge_mod(mult) + DamageModifierResponse::surge_buff(mult) }), ); add_dmr( @@ -328,7 +328,7 @@ pub fn buff_perks() { return DamageModifierResponse::default(); } let mult = surge_buff(_input.cached_data, 4, _input.pvp); - DamageModifierResponse::surge_mod(mult) + DamageModifierResponse::surge_buff(mult) }), ); add_dmr( diff --git a/src/perks/exotic_armor.rs b/src/perks/exotic_armor.rs index 0fe5b055..319452d3 100644 --- a/src/perks/exotic_armor.rs +++ b/src/perks/exotic_armor.rs @@ -101,7 +101,7 @@ pub fn exotic_armor() { return DamageModifierResponse::default(); } let modifier = 1.0 + (0.3 - health_percent); - DamageModifierResponse::basic_dmg_mod(modifier) + DamageModifierResponse::basic_dmg_buff(modifier) }), ); diff --git a/src/perks/lib.rs b/src/perks/lib.rs index 05087da6..471d305e 100644 --- a/src/perks/lib.rs +++ b/src/perks/lib.rs @@ -161,7 +161,7 @@ impl Default for DamageModifierResponse { } impl DamageModifierResponse { // damage modifier that affects all damage types - pub fn basic_dmg_mod(modifier: f64) -> Self { + pub fn basic_dmg_buff(modifier: f64) -> Self { Self { impact_dmg_scale: modifier, explosive_dmg_scale: modifier, @@ -170,7 +170,7 @@ impl DamageModifierResponse { } } // damage modifier that does not affect melee damage - pub fn surge_mod(modifier: f64) -> Self { + pub fn surge_buff(modifier: f64) -> Self { Self { impact_dmg_scale: modifier, explosive_dmg_scale: modifier,