From b56f88bf5abda1767637487f710efedeea86ae4a Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Mon, 22 Apr 2024 05:11:30 -0700 Subject: [PATCH 1/9] Add Burning Fists (Wormgod Caress) weapon damage scalars --- src/perks/buff_perks.rs | 26 ++++++++++++++++++++++++++ src/perks/mod.rs | 1 + src/perks/perk_options_handler.rs | 1 + 3 files changed, 28 insertions(+) diff --git a/src/perks/buff_perks.rs b/src/perks/buff_perks.rs index 201c9ca..a86d2cb 100644 --- a/src/perks/buff_perks.rs +++ b/src/perks/buff_perks.rs @@ -398,4 +398,30 @@ pub fn buff_perks() { } }), ); + add_dmr( + Perks::BurningFists, + Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { + if _input.value == 0 { + return DamageModifierResponse::default(); + } + let buffs = match _input.value { + 1 => (1.0, 1.0), + 2 => (1.2, 1.0), + 3 => (1.25, 1.2), + 4 => (1.3, 1.25), + 5 => (1.35, 1.25), + _ => (1.35, 1.25) + }; + let weapon_buff = if _input.pvp { + emp_buff(_input.cached_data, buffs.1) + } else { + emp_buff(_input.cached_data, buffs.0) + }; + DamageModifierResponse { + impact_dmg_scale: weapon_buff, + explosive_dmg_scale: weapon_buff, + ..Default::default() + } + }), + ); } diff --git a/src/perks/mod.rs b/src/perks/mod.rs index 35e0968..3fba59a 100644 --- a/src/perks/mod.rs +++ b/src/perks/mod.rs @@ -152,6 +152,7 @@ pub enum Perks { TritonVice = 187957397, GlacialGuard = 185514250, DoomFang = 1155472387, + BurningFists = 384759955, //parts ImpactCasing = 3796465595, diff --git a/src/perks/perk_options_handler.rs b/src/perks/perk_options_handler.rs index 00a725f..78ed922 100644 --- a/src/perks/perk_options_handler.rs +++ b/src/perks/perk_options_handler.rs @@ -450,6 +450,7 @@ fn hash_to_perk_option_data(_hash: u32) -> Option { Perks::StringTheory => Some(PerkOptionData::static_()), Perks::Judgment => Some(PerkOptionData::toggle()), Perks::DoomFang => Some(PerkOptionData::stacking(4)), + Perks::BurningFists => Some(PerkOptionData::stacking(5)), //misc Perks::UmbralSharpening => Some(PerkOptionData::stacking(5)), From 0b8ed8af5f4a079aec8cfc246250a41ac367ecfc Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Sun, 21 Apr 2024 04:30:17 -0700 Subject: [PATCH 2/9] feat: Initial implementation of Melee damage as a stat on weapons (for glaives) Adds melee and pve_melee to FiringData Adds melee and pve_melee (with default 0) to SubFamJson Adds melee_dmg_scale to DamageModifierResponse and basic_dmg_mod Adds melee_dmg to DamageProfile Adds Wasm bindings for melee damage --- build.rs | 8 ++++++++ src/perks/lib.rs | 5 ++++- src/types/js_types.rs | 6 ++++++ src/types/rs_types.rs | 5 +++++ src/weapons/stat_calc.rs | 9 +++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/build.rs b/build.rs index b7da8fa..6b4c7df 100644 --- a/build.rs +++ b/build.rs @@ -672,8 +672,10 @@ fn default_i32_1() -> i32 { pub struct FiringData { pub damage: f64, pub crit_mult: f64, + pub melee: f64, pub pve_damage: f64, pub pve_crit_mult: f64, + pub pve_melee: f64, pub burst_delay: f64, pub inner_burst_delay: f64, #[serde(default)] @@ -691,8 +693,10 @@ impl From for FiringData { FiringData { damage: value.damage, crit_mult: (value.crit_mult) / 51.0 + 1.5, + melee: value.melee, pve_damage: value.pve_damage, pve_crit_mult: (value.pve_crit_mult) / 51.0 + 1.5, + pve_melee: value.pve_melee, burst_delay: value.burst_delay / 30.0, inner_burst_delay: value.inner_burst_delay / 30.0, burst_size: value.burst_size, @@ -778,8 +782,12 @@ struct RangeJson { struct SubFamJson { damage: f64, crit_mult: f64, + #[serde(default)] + melee: f64, pve_damage: f64, pve_crit_mult: f64, + #[serde(default)] + pve_melee: f64, burst_delay: f64, #[serde(default = "default_i32_1")] burst_size: i32, diff --git a/src/perks/lib.rs b/src/perks/lib.rs index 150f263..98eb61d 100644 --- a/src/perks/lib.rs +++ b/src/perks/lib.rs @@ -141,6 +141,7 @@ pub struct DamageModifierResponse { pub impact_dmg_scale: f64, pub explosive_dmg_scale: f64, pub crit_scale: f64, + pub melee_dmg_scale: f64, } impl Default for DamageModifierResponse { fn default() -> Self { @@ -148,6 +149,7 @@ impl Default for DamageModifierResponse { impact_dmg_scale: 1.0, explosive_dmg_scale: 1.0, crit_scale: 1.0, + melee_dmg_scale: 1.0, } } } @@ -157,7 +159,7 @@ impl DamageModifierResponse { Self { impact_dmg_scale: modifier, explosive_dmg_scale: modifier, - // pending: melee_dmg_scale + melee_dmg_scale: modifier, ..Default::default() } } @@ -423,4 +425,5 @@ pub struct DamageProfile { pub explosion_dmg: f64, pub crit_mult: f64, pub damage_delay: f64, + pub melee_dmg: f64, } diff --git a/src/types/js_types.rs b/src/types/js_types.rs index dfaaf8d..cc5d674 100644 --- a/src/types/js_types.rs +++ b/src/types/js_types.rs @@ -237,6 +237,8 @@ pub struct JsFiringResponse { pub pvp_explosion_damage: f64, #[wasm_bindgen(js_name = "pvpCritMult", readonly)] pub pvp_crit_mult: f64, + #[wasm_bindgen(js_name = "pvpMeleeDamage", readonly)] + pub pvp_melee_damage: f64, #[wasm_bindgen(js_name = "pveImpactDamage", readonly)] pub pve_impact_damage: f64, @@ -244,6 +246,8 @@ pub struct JsFiringResponse { pub pve_explosion_damage: f64, #[wasm_bindgen(js_name = "pveCritMult", readonly)] pub pve_crit_mult: f64, + #[wasm_bindgen(js_name = "pveMeleeDamage", readonly)] + pub pve_melee_damage: f64, #[wasm_bindgen(js_name = "burstDelay", readonly)] pub burst_delay: f64, @@ -262,9 +266,11 @@ impl From for JsFiringResponse { pvp_impact_damage: firing.pvp_impact_damage, pvp_explosion_damage: firing.pvp_explosion_damage, pvp_crit_mult: firing.pvp_crit_mult, + pvp_melee_damage: firing.pvp_melee_damage, pve_impact_damage: firing.pve_impact_damage, pve_explosion_damage: firing.pve_explosion_damage, pve_crit_mult: firing.pve_crit_mult, + pve_melee_damage: firing.pve_melee_damage, burst_delay: firing.burst_delay, inner_burst_delay: firing.inner_burst_delay, burst_size: firing.burst_size, diff --git a/src/types/rs_types.rs b/src/types/rs_types.rs index 0fccd9e..5b124fe 100644 --- a/src/types/rs_types.rs +++ b/src/types/rs_types.rs @@ -21,8 +21,10 @@ pub struct WeaponPath(pub u32, pub u32); pub struct FiringData { pub damage: f64, pub crit_mult: f64, + pub melee: f64, pub pve_damage: f64, pub pve_crit_mult: f64, + pub pve_melee: f64, pub burst_delay: f64, pub inner_burst_delay: f64, pub burst_size: i32, @@ -196,10 +198,12 @@ pub struct FiringResponse { pub pvp_impact_damage: f64, pub pvp_explosion_damage: f64, pub pvp_crit_mult: f64, + pub pvp_melee_damage: f64, pub pve_impact_damage: f64, pub pve_explosion_damage: f64, pub pve_crit_mult: f64, + pub pve_melee_damage: f64, pub burst_delay: f64, pub inner_burst_delay: f64, @@ -227,5 +231,6 @@ impl FiringResponse { ); self.pve_impact_damage *= _rpl_mult * _gpl_mult * _pve_mult * _combatant_mult; self.pve_explosion_damage *= _rpl_mult * _gpl_mult * _pve_mult * _combatant_mult; + self.pve_melee_damage *= _rpl_mult * _gpl_mult * _pve_mult * _combatant_mult; } } diff --git a/src/weapons/stat_calc.rs b/src/weapons/stat_calc.rs index 3085a36..4e84a5a 100644 --- a/src/weapons/stat_calc.rs +++ b/src/weapons/stat_calc.rs @@ -329,6 +329,7 @@ impl Weapon { let impact_dmg = tmp_dmg_prof.impact_dmg; let explosion_dmg = tmp_dmg_prof.explosion_dmg; let crit_mult = tmp_dmg_prof.crit_mult; + let melee_dmg = tmp_dmg_prof.melee_dmg; let fd = self.firing_data; let extra_charge_delay = if self.weapon_type == WeaponType::FUSIONRIFLE { @@ -357,10 +358,12 @@ impl Weapon { pvp_impact_damage: impact_dmg * pvp_damage_modifiers.impact_dmg_scale, pvp_explosion_damage: explosion_dmg * pvp_damage_modifiers.explosive_dmg_scale, pvp_crit_mult: crit_mult * pvp_damage_modifiers.crit_scale, + pvp_melee_damage: melee_dmg * pvp_damage_modifiers.melee_dmg_scale, pve_impact_damage: impact_dmg * pve_damage_modifiers.impact_dmg_scale, pve_explosion_damage: explosion_dmg * pve_damage_modifiers.explosive_dmg_scale, pve_crit_mult: crit_mult * pve_damage_modifiers.crit_scale, + pve_melee_damage: melee_dmg * pve_damage_modifiers.melee_dmg_scale, burst_delay, burst_size, @@ -387,6 +390,11 @@ impl Weapon { self.firing_data.pve_crit_mult }; let mut delay = 0.0; + let melee: f64 = if _pvp { + self.firing_data.melee + } else { + self.firing_data.pve_melee + }; let epr = get_explosion_data(self.list_perks(), &self.static_calc_input(), _pvp); if epr.percent > 0.0 { @@ -403,6 +411,7 @@ impl Weapon { explosion_dmg: explosion, crit_mult: crit, damage_delay: delay, + melee_dmg: melee } } } From 834c923c3481d3ff61c0a34d79959a97a2831cb6 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Sun, 21 Apr 2024 04:34:02 -0700 Subject: [PATCH 3/9] Add Close to Melee modifier --- src/perks/year_5_perks.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/perks/year_5_perks.rs b/src/perks/year_5_perks.rs index defbb5f..74b325f 100644 --- a/src/perks/year_5_perks.rs +++ b/src/perks/year_5_perks.rs @@ -543,4 +543,17 @@ pub fn year_5_perks() { } }), ); + + add_dmr( + Perks::CloseToMelee, + Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { + if _input.value == 0 { + return DamageModifierResponse::default(); + } + DamageModifierResponse { + melee_dmg_scale: 1.3, + ..Default::default() + } + }), + ); } From ad307f7799324c1683d655622cd56ffee9a59498 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Sun, 21 Apr 2024 04:36:53 -0700 Subject: [PATCH 4/9] Add Vexcalibur and Winterbite perks Also involves converting Winterbite's damage entirely to Explosive damage (there is no impact damage for the shot) --- src/perks/exotic_perks.rs | 41 ++++++++++++++++++++++++++++--- src/perks/mod.rs | 3 +++ src/perks/perk_options_handler.rs | 3 +++ 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/perks/exotic_perks.rs b/src/perks/exotic_perks.rs index ae81c2e..3c63b1b 100644 --- a/src/perks/exotic_perks.rs +++ b/src/perks/exotic_perks.rs @@ -9,9 +9,10 @@ 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, lib::{ - CalculationInput, DamageModifierResponse, ExtraDamageResponse, FiringModifierResponse, - HandlingModifierResponse, InventoryModifierResponse, MagazineModifierResponse, - RangeModifierResponse, RefundResponse, ReloadModifierResponse, ReloadOverrideResponse, + CalculationInput, DamageModifierResponse, ExplosivePercentResponse, ExtraDamageResponse, + FiringModifierResponse, HandlingModifierResponse, InventoryModifierResponse, + MagazineModifierResponse, RangeModifierResponse, RefundResponse, ReloadModifierResponse, + ReloadOverrideResponse, }, ModifierResponseInput, Perks, }; @@ -1232,6 +1233,40 @@ pub fn exotic_perks() { }), ); + add_dmr( + Perks::PerpetualLoophole, + Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { + if _input.value == 0 { + return DamageModifierResponse::default(); + } + DamageModifierResponse { + melee_dmg_scale: 1.2, + ..Default::default() + } + }), + ); + add_epr( + Perks::BigFrigidGlaive, + Box::new(|_input: ModifierResponseInput| -> ExplosivePercentResponse { + ExplosivePercentResponse { + percent: 1.0, + ..Default::default() + } + }), + ); + add_dmr( + Perks::WeightedEdge, + Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { + if _input.value == 0 { + return DamageModifierResponse::default(); + } + DamageModifierResponse { + melee_dmg_scale: 1.5, + ..Default::default() + } + }), + ); + add_dmr( Perks::InverseRelationship, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { diff --git a/src/perks/mod.rs b/src/perks/mod.rs index 3fba59a..ab57033 100644 --- a/src/perks/mod.rs +++ b/src/perks/mod.rs @@ -514,6 +514,7 @@ pub enum Perks { Unrepentant = 2641107734, ArcConductor = 2516532331, VoidLeech = 3441203855, + PerpetualLoophole = 2171805903, InverseRelationship = 1833111001, Spindle = 1180907940, TheRightChoice = 34498892, @@ -539,6 +540,8 @@ pub enum Perks { TargetAquired = 939227542, TractorCannon = 1210807262, MarksmanSights = 1408087975, + BigFrigidGlaive = 1207608520, + WeightedEdge = 75282108, #[num_enum(default)] Ignore = 69420, diff --git a/src/perks/perk_options_handler.rs b/src/perks/perk_options_handler.rs index 78ed922..732f59f 100644 --- a/src/perks/perk_options_handler.rs +++ b/src/perks/perk_options_handler.rs @@ -407,6 +407,9 @@ fn hash_to_perk_option_data(_hash: u32) -> Option { Perks::Unrepentant => Some(PerkOptionData::toggle()), Perks::ArcConductor => Some(PerkOptionData::toggle()), Perks::VoidLeech => Some(PerkOptionData::toggle()), + Perks::PerpetualLoophole => Some(PerkOptionData::toggle()), + Perks::BigFrigidGlaive => Some(PerkOptionData::static_()), + Perks::WeightedEdge => Some(PerkOptionData::toggle()), Perks::InverseRelationship => Some(PerkOptionData::stacking(3)), Perks::Spindle => Some(PerkOptionData::stacking(25)), Perks::TheRightChoice => Some(PerkOptionData::static_()), From c7e49ab9e4747d71f22beca59581387f0ff2144d Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Mon, 22 Apr 2024 05:09:22 -0700 Subject: [PATCH 5/9] Add Triton Vice melee damage scalar --- src/perks/exotic_armor.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/perks/exotic_armor.rs b/src/perks/exotic_armor.rs index 2ac2a43..e45b1e8 100644 --- a/src/perks/exotic_armor.rs +++ b/src/perks/exotic_armor.rs @@ -544,5 +544,17 @@ pub fn exotic_armor() { } stats }), - ) + ); + add_dmr( + Perks::TritonVice, + Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { + if _input.value == 0 || _input.calc_data.weapon_type != &WeaponType::GLAIVE { + return DamageModifierResponse::default(); + } + DamageModifierResponse { + melee_dmg_scale: 2.0, + ..Default::default() + } + }), + ); } From 0212d3514ff4d38b9dd4deb18678094483915b97 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Mon, 22 Apr 2024 05:11:30 -0700 Subject: [PATCH 6/9] Add Burning Fists (Wormgod Caress) melee damage scalars --- src/perks/buff_perks.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/perks/buff_perks.rs b/src/perks/buff_perks.rs index a86d2cb..822abfd 100644 --- a/src/perks/buff_perks.rs +++ b/src/perks/buff_perks.rs @@ -405,21 +405,27 @@ pub fn buff_perks() { return DamageModifierResponse::default(); } let buffs = match _input.value { - 1 => (1.0, 1.0), - 2 => (1.2, 1.0), - 3 => (1.25, 1.2), - 4 => (1.3, 1.25), - 5 => (1.35, 1.25), - _ => (1.35, 1.25) + 1 => (1.0, 1.0, 1.55, 1.4), + 2 => (1.2, 1.0, 2.10, 1.8), + 3 => (1.25, 1.2, 2.65, 2.2), + 4 => (1.3, 1.25, 3.2, 2.6), + 5 => (1.35, 1.25, 3.75, 3.0), + _ => (1.35, 1.25, 3.75, 3.0) }; let weapon_buff = if _input.pvp { emp_buff(_input.cached_data, buffs.1) } else { emp_buff(_input.cached_data, buffs.0) }; + let melee_buff = if _input.calc_data.weapon_type == &WeaponType::GLAIVE { + buffs.3 + } else { + buffs.2 + }; DamageModifierResponse { impact_dmg_scale: weapon_buff, explosive_dmg_scale: weapon_buff, + melee_dmg_scale: melee_buff, ..Default::default() } }), From e87e0e571e0eb474ff9e3b04989ee20b0a4056e9 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Mon, 22 Apr 2024 05:17:58 -0700 Subject: [PATCH 7/9] Add Warlord's Sigil (Winter's Guile) melee damage scalar --- src/perks/exotic_armor.rs | 20 ++++++++++++++++++++ src/perks/mod.rs | 1 + src/perks/perk_options_handler.rs | 1 + 3 files changed, 22 insertions(+) diff --git a/src/perks/exotic_armor.rs b/src/perks/exotic_armor.rs index e45b1e8..b377448 100644 --- a/src/perks/exotic_armor.rs +++ b/src/perks/exotic_armor.rs @@ -557,4 +557,24 @@ pub fn exotic_armor() { } }), ); + add_dmr( + Perks::WarlordsSigil, + Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { + if _input.value == 0 { + return DamageModifierResponse::default(); + } + let melee_buff = match _input.value { + 1 => 1.55, + 2 => 2.10, + 3 => 2.65, + 4 => 3.2, + 5 => 3.75, + _ => 3.75 + }; + DamageModifierResponse { + melee_dmg_scale: melee_buff, + ..Default::default() + } + }), + ); } diff --git a/src/perks/mod.rs b/src/perks/mod.rs index ab57033..a156692 100644 --- a/src/perks/mod.rs +++ b/src/perks/mod.rs @@ -153,6 +153,7 @@ pub enum Perks { GlacialGuard = 185514250, DoomFang = 1155472387, BurningFists = 384759955, + WarlordsSigil = 2731901709, //parts ImpactCasing = 3796465595, diff --git a/src/perks/perk_options_handler.rs b/src/perks/perk_options_handler.rs index 732f59f..d1e1288 100644 --- a/src/perks/perk_options_handler.rs +++ b/src/perks/perk_options_handler.rs @@ -454,6 +454,7 @@ fn hash_to_perk_option_data(_hash: u32) -> Option { Perks::Judgment => Some(PerkOptionData::toggle()), Perks::DoomFang => Some(PerkOptionData::stacking(4)), Perks::BurningFists => Some(PerkOptionData::stacking(5)), + Perks::WarlordsSigil => Some(PerkOptionData::stacking(5)), //misc Perks::UmbralSharpening => Some(PerkOptionData::stacking(5)), From b766e4f1f6f8e3b3242de04cfe71fe82dc40be90 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Mon, 22 Apr 2024 05:32:40 -0700 Subject: [PATCH 8/9] Add Banner of War melee damage scalar --- src/perks/mod.rs | 1 + src/perks/other_perks.rs | 15 +++++++++++++++ src/perks/perk_options_handler.rs | 1 + 3 files changed, 17 insertions(+) diff --git a/src/perks/mod.rs b/src/perks/mod.rs index a156692..032253c 100644 --- a/src/perks/mod.rs +++ b/src/perks/mod.rs @@ -448,6 +448,7 @@ pub enum Perks { Tempering = 362132290, ThreadOfAscent = 4208512216, Amplified = 880704824, + BannerOfWar = 988980154, //kinetic exotic CranialSpike = 1319823571, diff --git a/src/perks/other_perks.rs b/src/perks/other_perks.rs index 6a37733..66576d8 100644 --- a/src/perks/other_perks.rs +++ b/src/perks/other_perks.rs @@ -567,6 +567,21 @@ pub fn other_perks() { } }), ); + + add_dmr( + Perks::BannerOfWar, + Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { + if _input.value == 0 { + return DamageModifierResponse::default(); + } + // TODO for glaives handle syntho/wormgod reducing this to 1.125/1.05 respectively + DamageModifierResponse { + melee_dmg_scale: 1.25, + ..Default::default() + } + }), + ); + add_dmr( Perks::SupportFrame, Box::new(|_input: ModifierResponseInput| -> DamageModifierResponse { diff --git a/src/perks/perk_options_handler.rs b/src/perks/perk_options_handler.rs index d1e1288..ac947f0 100644 --- a/src/perks/perk_options_handler.rs +++ b/src/perks/perk_options_handler.rs @@ -391,6 +391,7 @@ fn hash_to_perk_option_data(_hash: u32) -> Option { Perks::HeatRises => Some(PerkOptionData::toggle()), Perks::FlowState => Some(PerkOptionData::toggle()), Perks::ThreadOfAscent => Some(PerkOptionData::toggle()), + Perks::BannerOfWar => Some(PerkOptionData::stacking(4)), Perks::WellOfRadiance => Some(PerkOptionData::static_()), Perks::Amplified => Some(PerkOptionData::static_()), Perks::Radiant => Some(PerkOptionData::static_()), From 34158d695d8208f73278f61a5327d50cda7852d3 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Mon, 22 Apr 2024 05:33:56 -0700 Subject: [PATCH 9/9] Add melee/pve_melee values to weapon_formulas for Glaives Add Winterbite as its own entry --- build_resources/weapon_formulas.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/build_resources/weapon_formulas.json b/build_resources/weapon_formulas.json index 7772ef3..f361dfe 100644 --- a/build_resources/weapon_formulas.json +++ b/build_resources/weapon_formulas.json @@ -1235,7 +1235,7 @@ "2898674462": {"name": "Vexcaliber", "cat": "default", "subFam": "Lightweight", "magProf": "default", "pve": 1.25}, "2898674457": {"name": "Vexcaliber", "cat": "default", "subFam": "Vexcaliber", "magProf": "default", "pve": 1.25}, "1956005708": {"name": "Rapid-Fire Glaive", "cat": "default", "subFam": "Lightweight", "magProf": "default", "pve": 1.25}, - "1207608520": {"name": "Winterbite", "cat": "zero", "subFam": "zero", "magProf": "winterbite"}, + "1207608520": {"name": "Winterbite", "cat": "zero", "subFam": "Winterbite", "magProf": "winterbite"}, "cat": { "default": { "range": {"vpp_start": 0.0546,"offset_start": 15.0,"vpp_end": 0.198,"offset_end": 30.33, "floor_percent": 0.33}, @@ -1259,11 +1259,12 @@ } }, "subFam": { - "Lightweight": {"damage":120.769, "crit_mult":-25.5, "pve_damage":108.07, "pve_crit_mult":-25.5, "burst_delay":22.0, "burst_size":1, "inner_burst_delay":0}, - "Aggressive": {"damage":147.538, "crit_mult":-25.5, "pve_damage":133.75, "pve_crit_mult":-25.5, "burst_delay":30.0, "burst_size":1, "inner_burst_delay":0}, - "Adaptive": {"damage":136.462, "crit_mult":-25.5, "pve_damage":120.91, "pve_crit_mult":-25.5, "burst_delay":27.0, "burst_size":1, "inner_burst_delay":0}, - "Vexcaliber": {"damage":32.962, "crit_mult":-25.5, "pve_damage":30.87, "pve_crit_mult":-25.5, "burst_delay":22.0, "burst_size":5, "inner_burst_delay":0, "one_ammo":true}, - "zero": {"damage":0.0, "crit_mult":0.0, "pve_damage":0.0, "pve_crit_mult":0.0, "burst_delay":0.0, "burst_size":1, "inner_burst_delay":0} + "Lightweight": {"damage":120.899, "crit_mult":-25.5, "melee": 84, "pve_damage":107.801, "pve_crit_mult":-25.5, "pve_melee": 70, "burst_delay":22.0, "burst_size":1, "inner_burst_delay":0}, + "Aggressive": {"damage":147.457, "crit_mult":-25.5, "melee": 84, "pve_damage":131.483, "pve_crit_mult":-25.5, "pve_melee": 70, "burst_delay":30.0, "burst_size":1, "inner_burst_delay":0}, + "Adaptive": {"damage":136.577, "crit_mult":-25.5, "melee": 84, "pve_damage":121.781, "pve_crit_mult":-25.5, "pve_melee": 70, "burst_delay":27.0, "burst_size":1, "inner_burst_delay":0}, + "Vexcaliber": {"damage":33.231, "crit_mult":-25.5, "melee": 84, "pve_damage":36.596, "pve_crit_mult":-25.5, "pve_melee": 70, "burst_delay":22.0, "burst_size":5, "inner_burst_delay":0, "one_ammo":true}, + "Winterbite": {"damage":570, "crit_mult":-25.5, "melee": 84, "pve_damage":508.25, "pve_crit_mult":-25.5, "pve_melee": 70, "burst_delay":30.0, "burst_size":1, "inner_burst_delay":0}, + "zero": {"damage":0.0, "crit_mult":0.0, "melee": 0.0, "pve_damage":0.0, "pve_crit_mult":0.0, "pve_melee": 0.0, "burst_delay":0.0, "burst_size":1, "inner_burst_delay":0} }, "magProf": {