Skip to content
Open
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
23 changes: 22 additions & 1 deletion src/perks/exotic_armor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use super::{
FlinchModifierResponse, HandlingModifierResponse, RangeModifierResponse, RefundResponse,
ReloadModifierResponse, ReloadOverrideResponse,
},
ModifierResponseInput, Perks,
ModifierResponseInput, Perks, add_edr,
};

pub fn exotic_armor() {
Expand Down Expand Up @@ -427,6 +427,27 @@ pub fn exotic_armor() {
),
);

add_edr(
Perks::NecroticGrips,
Box::new(
|_input: ModifierResponseInput| -> ExtraDamageResponse {
let dmg = if _input.pvp { 5.0 } else {34.0 }; // pvp value uncertain, no scaling for the pve damage ( should increase by 7.7% per tick)
let delay = if _input.pvp { 0.7 } else { 0.5 };
let total_ticks = if _input.pvp { 19 } else { 19 }; // value is unknown for pvp
ExtraDamageResponse {
additive_damage: dmg,
time_for_additive_damage: delay * total_ticks as f64,
increment_total_time: false,
times_to_hit: total_ticks,
hit_at_same_time: false,
is_dot: true,
weapon_scale: true, // this may be wrong, idk exactly what it does
crit_scale: false,
combatant_scale: false
}
}),
);

add_sbr(
Perks::BootsOfTheAssembler,
Box::new(
Expand Down
109 changes: 109 additions & 0 deletions src/perks/exotic_perks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -875,6 +875,97 @@ pub fn exotic_perks() {
);


add_edr(Perks::MarkOfTheDevourer, Box::new(|_input| -> ExtraDamageResponse {
let dmg = if _input.pvp { 0.4 } else { 8.5 };
let dmg_modifier = if _input.value > 0 && _input.pvp { 17.5 } else if _input.value > 0 { 2.0 } else { 1.0 };
ExtraDamageResponse {
additive_damage: dmg * dmg_modifier,
time_for_additive_damage: (0.5 * 4 as f64) + 0.05,
increment_total_time: false,
times_to_hit: 4,
hit_at_same_time: false,
is_dot: true,
weapon_scale: true,
crit_scale: false,
combatant_scale: true
}
}),
);

add_edr(Perks::ToxicOverload, Box::new(|_input| -> ExtraDamageResponse {
let dmg = if _input.pvp { 5.0 } else {34.0 }; // pvp value uncertain, no scaling for the pve damage ( should increase by 7.7% per tick)
let delay = if _input.pvp { 0.7 } else { 0.5 };
let total_ticks = if _input.pvp { 19 } else { 19 }; // value is unknown for pvp
ExtraDamageResponse {
additive_damage: dmg,
time_for_additive_damage: delay * total_ticks as f64,
increment_total_time: false,
times_to_hit: total_ticks,
hit_at_same_time: false,
is_dot: true,
weapon_scale: true,
crit_scale: false,
combatant_scale: true
}
}),
);

add_edr(Perks::PoisonArrows, Box::new(|_input| -> ExtraDamageResponse {
let dmg = if _input.pvp { 1.88 } else { 29.0 };
ExtraDamageResponse {
additive_damage: dmg,
time_for_additive_damage: 0.5 * 6 as f64,
increment_total_time: false,
times_to_hit: 6,
hit_at_same_time: false,
is_dot: true,
weapon_scale: true,
crit_scale: false,
combatant_scale: true
}
}),
);

add_edr(Perks::PerfectFith, Box::new(|_input| -> ExtraDamageResponse {
let dmg = if _input.pvp { 78.0 } else { 101.0 };
ExtraDamageResponse {
additive_damage: dmg,
time_for_additive_damage: 0.0,
increment_total_time: false,
times_to_hit: 1,
hit_at_same_time: true,
is_dot: false,
weapon_scale: true,
crit_scale: false,
combatant_scale: true
}
}),
);

// Outbreak, will do later because of all the nanite shenenigans
// 12 precision hits within 2.5 seconds = 2 - 4 nanites "Deterministic outcomes in Destiny? Impossible" - fps (I LOVE A RANDOM AMOUNT OF NANITES)
// precision kill = 9 nanites
// nanites increasing outbreak dmg and other nanite damage
// catalyst = +4 nanites on each nanite death, each deal 7 dmg.
// WHY SO COMPLICATED BUGNO PLS

// add_edr(Perks::CorruptionSpreads, Box::new(|_input| -> ExtraDamageResponse {
// let dmg = if _input.pvp { 42 } else { 42 }; // pvp value unknown
// let nanites = if _input.value > 0 { }
// ExtraDamageResponse {
// additive_damage: dmg,
// time_for_additive_damage: 0.5 * 6 as f64,
// increment_total_time: false,
// times_to_hit: nanites,
// hit_at_same_time: false,
// is_dot: true, // is it though? idk
// weapon_scale: true,
// crit_scale: false, // can nanites crit with div?
// combatant_scale: true
// }
// }),
// );

add_sbr(
Perks::CranialSpike,
Box::new(|_input: ModifierResponseInput| -> HashMap<u32, i32> {
Expand Down Expand Up @@ -929,4 +1020,22 @@ pub fn exotic_perks() {
}
}),
);

add_edr(Perks::ArcTraps,
Box::new(|_input: ModifierResponseInput| -> ExtraDamageResponse {
let dmg = if _input.pvp { 67.5 } else { 145.0 };
let modifier = if _input.value > 0 { 2.0 } else { 1.0 };
ExtraDamageResponse {
additive_damage: dmg * modifier,
time_for_additive_damage: 10.0,
increment_total_time: false,
times_to_hit: 20,
hit_at_same_time: false,
is_dot: true,
weapon_scale: true,
crit_scale: false,
combatant_scale: true,
}
}))

}
4 changes: 4 additions & 0 deletions src/perks/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -388,9 +388,12 @@ pub enum Perks {
Roadborn = 3413860062,
MarkovChain = 2814973067,
MementoMori = 647617635,
MarkOfTheDevourer = 1863355414,
ToxicOverload = 4015745376,

//energy exotic
LagragianSight = 2881100038,
PoisonArrows = 2186532310,
IgnitionTrigger = 961505134,
GuidanceRing = 2226793914,
FirstGlance = 3174300811,
Expand Down Expand Up @@ -420,6 +423,7 @@ pub enum Perks {
TargetAquired = 939227542,
SleeperCatalyst = 2142466730,
TractorCannon = 1210807262,
ArcTraps = 389268985,

#[num_enum(default)]
Ignore = 69420,
Expand Down