Skip to content
Merged
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
134 changes: 22 additions & 112 deletions src/perks/buff_perks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ fn gbl_debuff(_cached_data: &mut HashMap<String, f64>, _desired_buff: f64) -> f6
}
}

//surge mod dmr is in meta_perks.rs

//
// BUFFS
//
Expand All @@ -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_buff(buff)
}),
);

Expand All @@ -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_buff(buff)
}),
);

Expand All @@ -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_buff(buff)
}),
);

Expand All @@ -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_buff(buff)
}),
);

Expand All @@ -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_buff(buff)
}),
);

Expand All @@ -135,23 +113,15 @@ 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_buff(buff)
}),
);

add_dmr(
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_buff(buff)
}),
);

Expand All @@ -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_buff(buff)
}),
);

Expand Down Expand Up @@ -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_buff(buff)
}),
);

Expand Down Expand Up @@ -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_buff(debuff)
}),
);

Expand All @@ -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_buff(debuff)
}),
);

Expand All @@ -253,35 +207,23 @@ 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_buff(debuff)
}),
);
add_dmr(
Perks::DeadFall,
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_buff(debuff)
}),
);
add_dmr(
Perks::Felwinters,
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_buff(debuff)
} else {
DamageModifierResponse::default()
}
Expand All @@ -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_buff(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_buff(damage_mod)
}),
);
add_sbr(
Expand All @@ -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_buff(damage_mod)
}),
);

Expand All @@ -351,11 +281,7 @@ pub fn buff_perks() {
} else {
1.0
};
DamageModifierResponse {
impact_dmg_scale: buff,
explosive_dmg_scale: buff,
..Default::default()
}
DamageModifierResponse::surge_buff(buff)
}),
);
add_dmr(
Expand All @@ -370,11 +296,7 @@ pub fn buff_perks() {
} else {
1.0
};
DamageModifierResponse {
impact_dmg_scale: buff,
explosive_dmg_scale: buff,
..Default::default()
}
DamageModifierResponse::surge_buff(buff)
}),
);
add_dmr(
Expand All @@ -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_buff(buff)
}),
);
add_dmr(
Expand All @@ -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_buff(mult)
}),
);
add_dmr(
Expand All @@ -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_buff(mult)
}),
);
add_dmr(
Expand Down
6 changes: 1 addition & 5 deletions src/perks/exotic_armor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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_buff(modifier)
}),
);

Expand Down
19 changes: 19 additions & 0 deletions src/perks/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,25 @@ impl Default for DamageModifierResponse {
}
}
}
impl DamageModifierResponse {
// damage modifier that affects all damage types
pub fn basic_dmg_buff(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_buff(modifier: f64) -> Self {
Self {
impact_dmg_scale: modifier,
explosive_dmg_scale: modifier,
..Default::default()
}
}
}

#[derive(Debug, Clone, PartialEq)]
pub struct ExtraDamageResponse {
Expand Down