Skip to content
Draft
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
14 changes: 10 additions & 4 deletions build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,10 @@ fn main() {
} else {
let file_res = std::fs::File::open(build_cache_path);
if file_res.is_err() {
println!("cargo:warning=error opening cached build file: {}", file_res.err().unwrap());
println!(
"cargo:warning=error opening cached build file: {}",
file_res.err().unwrap()
);
cached_data = CachedBuildData::default();
} else {
let file = file_res.unwrap();
Expand Down Expand Up @@ -431,9 +434,11 @@ fn main() {
panic!("cargo:warning=error initializing ron serializer");
} else {
#[allow(unused_variables)]
let cd: CachedBuildData = ron::de::from_str(&res.clone().unwrap()).expect("cargo:warning=error deserializing");
let cd: CachedBuildData = ron::de::from_str(&res.clone().unwrap())
.expect("cargo:warning=error deserializing");
}
file.write_all(res.unwrap().as_bytes()).expect("cargo:warning=error writing cached build file");
file.write_all(res.unwrap().as_bytes())
.expect("cargo:warning=error writing cached build file");
}
}

Expand Down Expand Up @@ -856,11 +861,12 @@ fn construct_enhance_perk_mapping(formula_file: &mut File, cached: &mut CachedBu
(902, vec!["VEIST Rapid-Fire", "Rapid-Fire Frame"]),
(903, vec!["Adaptive Frame", "Adaptive Glaive"]),
(904, vec!["Aggressive Frame", "Aggressive Glaive"]),
(905, vec!["Lightweight Frame", "MIDA Synergy"]),
(905, vec!["Lightweight Frame"]),
(906, vec!["Precision Frame", "Häkke Precision Frame"]),
(907, vec!["Double Fire"]),
(908, vec!["Wave Frame"]),
(911, vec!["Legacy PR-55 Frame"]),
(912, vec!["MIDA Synergy"]),
]);
let content_paths = manifest_json["Response"]["jsonWorldComponentContentPaths"]
["en"]
Expand Down
10 changes: 5 additions & 5 deletions build_resources/cached_build.ron
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@
(1034287523, 906),
(1045795938, 906),
(1052350088, 906),
(1057935015, 905),
(1057935015, 912),
(1063261332, 904),
(1069611115, 904),
(1206996986, 906),
Expand Down Expand Up @@ -249,7 +249,7 @@
(1831499663, 904),
(1875323682, 901),
(1886418605, 902),
(1891876363, 905),
(1891876363, 912),
(1894749743, 902),
(1900989425, 903),
(1946568256, 901),
Expand All @@ -269,7 +269,7 @@
(2164888232, 902),
(2178772051, 903),
(2189829540, 903),
(2213377102, 905),
(2213377102, 912),
(2213429699, 907),
(2260949877, 902),
(2263539715, 902),
Expand All @@ -278,15 +278,15 @@
(2409208302, 906),
(2444870733, 907),
(2458294492, 906),
(2470575005, 905),
(2470575005, 912),
(2490530085, 903),
(2516075140, 901),
(2518716062, 904),
(2552875793, 904),
(2563509458, 906),
(2617324347, 901),
(2662827496, 904),
(2670025099, 905),
(2670025099, 912),
(2696719570, 903),
(2725422375, 906),
(2743098132, 906),
Expand Down
2 changes: 1 addition & 1 deletion src/perks/buff_perks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ pub fn buff_perks() {
);

add_dmr(
Perks::TractorCannon,
Perks::RepulsorForce,
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);
Expand Down
55 changes: 53 additions & 2 deletions src/perks/exotic_armor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ use crate::{
};

use super::{
add_dmr, add_epr, add_flmr, add_fmr, add_hmr, add_mmr, add_rmr, add_rsmr, add_sbr, add_vmr,
add_dmr, add_epr, add_flmr, add_fmr, add_hmr, add_mmr, add_rmr, add_rsmr, add_sbr, add_vmr, add_msmr,
clamp,
lib::{
CalculationInput, DamageModifierResponse, ExtraDamageResponse, FiringModifierResponse,
FlinchModifierResponse, HandlingModifierResponse, RangeModifierResponse, RefundResponse,
ReloadModifierResponse, ReloadOverrideResponse,
ReloadModifierResponse, ReloadOverrideResponse, MovementSpeedModifierResponse,
},
ModifierResponseInput, Perks,
};
Expand Down Expand Up @@ -559,4 +559,55 @@ pub fn exotic_armor() {
RangeModifierResponse::default()
}),
);

add_msmr(
Perks::Transversives,
Box::new(|_input: ModifierResponseInput| -> MovementSpeedModifierResponse {
MovementSpeedModifierResponse {
sprint_speed: 0.5,
crouch_speed: 4.0,
slide_distance_mult: 1.33,
..Default::default()
}
}),
);

add_msmr(
Perks::Stompees,
Box::new(|_input: ModifierResponseInput| -> MovementSpeedModifierResponse {
MovementSpeedModifierResponse {
sprint_speed: 0.5,
slide_distance_mult: 1.33,
..Default::default()
}
}),
);

add_msmr(
Perks::Dunemarchers,
Box::new(|_input: ModifierResponseInput| -> MovementSpeedModifierResponse {
MovementSpeedModifierResponse {
sprint_speed: 0.5,
slide_distance_mult: 1.33,
..Default::default()
}
})
);

add_msmr(
Perks::Peacekeepers,
Box::new(|_input: ModifierResponseInput| -> MovementSpeedModifierResponse {
if _input.calc_data.weapon_type == &WeaponType::SUBMACHINEGUN {
MovementSpeedModifierResponse {
sprint_speed: 0.5,
slide_distance_mult: 1.33,
strafe_speed_mult: 1.09,
..Default::default()
}
}
else {
MovementSpeedModifierResponse::default()
}
}),
);
}
61 changes: 58 additions & 3 deletions src/perks/exotic_perks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ use std::collections::HashMap;
use crate::{d2_enums::StatHashes, enemies::EnemyType, weapons::Stat};

use super::{
add_dmr, add_edr, add_epr, add_fmr, add_hmr, add_mmr, add_rmr, add_rr, add_rsmr, add_sbr,
add_vmr, clamp,
add_dmr, add_edr, add_epr, add_fmr, add_hmr, add_mmr, add_msmr, add_rmr, add_rr, add_rsmr,
add_sbr, add_vmr, clamp,
lib::{
CalculationInput, DamageModifierResponse, ExtraDamageResponse, FiringModifierResponse,
HandlingModifierResponse, InventoryModifierResponse, MagazineModifierResponse,
RangeModifierResponse, RefundResponse, ReloadModifierResponse, ReloadOverrideResponse,
MovementSpeedModifierResponse, RangeModifierResponse, RefundResponse,
ReloadModifierResponse, ReloadOverrideResponse,
},
ModifierResponseInput, Perks,
};
Expand Down Expand Up @@ -934,4 +935,58 @@ pub fn exotic_perks() {
}
}),
);

add_msmr(
Perks::RepulsorForce,
Box::new(
|_input: ModifierResponseInput| -> MovementSpeedModifierResponse {
MovementSpeedModifierResponse {
sprint_speed: 1.0,
..Default::default()
}
},
),
);

add_msmr(
Perks::MidaMT,
Box::new(
|_input: ModifierResponseInput| -> MovementSpeedModifierResponse {
MovementSpeedModifierResponse {
sprint_speed: 0.8,
..Default::default()
}
},
),
);

add_msmr(Perks::HarshTruths,
Box::new(|_input: ModifierResponseInput| -> MovementSpeedModifierResponse {
if _input.value > 0 {
MovementSpeedModifierResponse {
sprint_speed: 0.5,
slide_distance_mult: 1.33,
extra_mobility: 20,
..Default::default()
}
}
else {
MovementSpeedModifierResponse::default()
}
}),
);

add_rsmr(Perks::LastStand,
Box::new(|_input: ModifierResponseInput| -> ReloadModifierResponse {
if _input.value > 0 {
ReloadModifierResponse {
reload_stat_add: 30,
..Default::default()
}
}
else {
ReloadModifierResponse::default()
}
}),
);
}
29 changes: 29 additions & 0 deletions src/perks/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,33 @@ impl Default for DamageResistModifierResponse {
}
}

#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct MovementSpeedModifierResponse {
// if mult isn't in the var name its additive
// exception for the crouch speed since all things
// that affect crouch speed just set it to a value as far as I could tell
pub sprint_speed: f64,
pub crouch_speed: f64,
pub slide_distance_mult: f64,
pub base_jump_height_mult: f64,
pub strafe_speed_mult: f64,
pub extra_mobility: i32,
pub ads_scalar: f64,
}
impl Default for MovementSpeedModifierResponse {
fn default() -> Self {
Self {
sprint_speed: 0.0,
crouch_speed: 0.0,
slide_distance_mult: 1.0,
base_jump_height_mult: 1.0,
strafe_speed_mult: 1.0,
extra_mobility: 0,
ads_scalar: 1.0,
}
}
}

#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ModifierResponseSummary {
pub rmr: Option<RangeModifierResponse>,
Expand All @@ -401,6 +428,7 @@ pub struct ModifierResponseSummary {
pub imr: Option<InventoryModifierResponse>,
pub drmr: Option<DamageResistModifierResponse>,
pub statbump: Option<HashMap<BungieHash, StatBump>>,
pub msmr: Option<MovementSpeedModifierResponse>,
}

impl Default for ModifierResponseSummary {
Expand All @@ -416,6 +444,7 @@ impl Default for ModifierResponseSummary {
imr: None,
drmr: None,
statbump: None,
msmr: None,
}
}
}
4 changes: 2 additions & 2 deletions src/perks/meta_perks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ use crate::{

use super::{
add_dmr, add_epr, add_flmr, add_fmr, add_hmr, add_imr, add_mmr, add_rmr, add_rsmr, add_sbr,
add_vmr, clamp,
add_vmr, add_msmr, clamp,
lib::{
CalculationInput, DamageModifierResponse, ExplosivePercentResponse, ExtraDamageResponse,
FiringModifierResponse, FlinchModifierResponse, HandlingModifierResponse,
InventoryModifierResponse, MagazineModifierResponse, RangeModifierResponse, RefundResponse,
ReloadModifierResponse,
ReloadModifierResponse, MovementSpeedModifierResponse,
},
ModifierResponseInput, Perks,
};
Expand Down
Loading