Admin armor now provides immunity to debuffs.

This commit is contained in:
Sam
2020-10-25 13:42:42 -05:00
parent 5d0fd3d9bc
commit e8f6338eb0
2 changed files with 17 additions and 11 deletions

9
Cargo.lock generated
View File

@ -2037,15 +2037,6 @@ dependencies = [
"lazy_static", "lazy_static",
] ]
[[package]]
name = "inline_tweak"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7033e97b20277cc0d043226d1940fa7719ff08d2305d1fc7421e53066d00eb4b"
dependencies = [
"lazy_static",
]
[[package]] [[package]]
name = "inotify" name = "inotify"
version = "0.8.3" version = "0.8.3"

View File

@ -1,7 +1,7 @@
use crate::{ use crate::{
comp::{ comp::{
BuffCategory, BuffChange, BuffEffect, BuffId, BuffSource, Buffs, HealthChange, BuffCategory, BuffChange, BuffEffect, BuffId, BuffSource, Buffs, HealthChange,
HealthSource, ModifierKind, Stats, HealthSource, Loadout, ModifierKind, Stats,
}, },
event::{EventBus, ServerEvent}, event::{EventBus, ServerEvent},
state::DeltaTime, state::DeltaTime,
@ -18,11 +18,15 @@ impl<'a> System<'a> for Sys {
Read<'a, DeltaTime>, Read<'a, DeltaTime>,
Read<'a, EventBus<ServerEvent>>, Read<'a, EventBus<ServerEvent>>,
ReadStorage<'a, Uid>, ReadStorage<'a, Uid>,
ReadStorage<'a, Loadout>,
WriteStorage<'a, Stats>, WriteStorage<'a, Stats>,
WriteStorage<'a, Buffs>, WriteStorage<'a, Buffs>,
); );
fn run(&mut self, (entities, dt, server_bus, uids, mut stats, mut buffs): Self::SystemData) { fn run(
&mut self,
(entities, dt, server_bus, uids, loadouts, mut stats, mut buffs): Self::SystemData,
) {
let mut server_emitter = server_bus.emitter(); let mut server_emitter = server_bus.emitter();
// Set to false to avoid spamming server // Set to false to avoid spamming server
buffs.set_event_emission(false); buffs.set_event_emission(false);
@ -47,6 +51,17 @@ impl<'a> System<'a> for Sys {
} }
} }
if let Some(loadout) = loadouts.get(entity) {
let damage_reduction = loadout.get_damage_reduction();
if (damage_reduction - 1.0).abs() < f32::EPSILON {
for (id, buff) in buff_comp.buffs.iter() {
if !buff.kind.is_buff() {
expired_buffs.push(*id);
}
}
}
}
// Call to reset stats to base values // Call to reset stats to base values
stat.health.reset_max(); stat.health.reset_max();