feat: added armour passives
This commit is contained in:
parent
cfe2631578
commit
451efd2bb7
17 changed files with 654 additions and 318 deletions
191
src/log.rs
191
src/log.rs
|
|
@ -3,9 +3,10 @@ use std::sync::Mutex;
|
|||
use bevy_ecs::{prelude::*, query::QuerySingleError, system::SystemParam};
|
||||
use proxisim_models::bundle::{
|
||||
stat::{
|
||||
AdditiveBonus, BaselineStat, ClipSize, Clips, CritRate, DamageBonus, Defence, Dexterity,
|
||||
EffectiveStat, MultiplicativeBonus, SimpleStatBaseline, SimpleStatBonus,
|
||||
SimpleStatEffective, SimpleStatMarker, Speed, StatMarker, Strength, WeaponAccuracy,
|
||||
AdditiveBonus, ArmourBonusValue, BaselineStat, ClipSize, Clips, CritRate, DamageBonus,
|
||||
Defence, Dexterity, EffectiveStat, MultiplicativeBonus, SimpleStatBaseline,
|
||||
SimpleStatBonus, SimpleStatEffective, SimpleStatMarker, Speed, StatMarker, Strength,
|
||||
WeaponAccuracy,
|
||||
},
|
||||
weapon::WeaponVerb,
|
||||
};
|
||||
|
|
@ -124,7 +125,12 @@ where
|
|||
V: Into<LogValue>,
|
||||
{
|
||||
fn from(value: Vec<(&'static str, V)>) -> Self {
|
||||
LogValue::Map(value.into_iter().map(|(k, v)| (k, v.into())).collect())
|
||||
LogValue::Array(
|
||||
value
|
||||
.into_iter()
|
||||
.map(|(k, v)| LogValue::Array(vec![LogValue::String(k.to_string()), v.into()]))
|
||||
.collect(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -256,182 +262,6 @@ impl std::fmt::Display for Log {
|
|||
}
|
||||
}
|
||||
|
||||
/* impl std::fmt::Display for Log {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
for entry in &self.entries {
|
||||
match entry {
|
||||
LogEntry::Hit {
|
||||
actor,
|
||||
recipient,
|
||||
weapon,
|
||||
dmg,
|
||||
rounds,
|
||||
crit,
|
||||
part,
|
||||
} => {
|
||||
let actor_info = self.player_registry.get(actor).unwrap();
|
||||
let recipient_info = self.player_registry.get(recipient).unwrap();
|
||||
let weapon_info = self.weapon_registry.get(weapon).unwrap();
|
||||
|
||||
write!(f, "{} ", actor_info.name)?;
|
||||
|
||||
match weapon_info.verb {
|
||||
WeaponVerb::Fired => {
|
||||
write!(
|
||||
f,
|
||||
"fired {} rounds from of their {} ",
|
||||
rounds.unwrap(),
|
||||
weapon_info.name
|
||||
)?;
|
||||
if *crit {
|
||||
write!(f, "critically ")?;
|
||||
}
|
||||
writeln!(
|
||||
f,
|
||||
"hitting {} in the {} for {}",
|
||||
recipient_info.name, part, dmg
|
||||
)?;
|
||||
}
|
||||
WeaponVerb::Hit => {
|
||||
if *crit {
|
||||
write!(f, "critically ")?;
|
||||
}
|
||||
|
||||
// TODO: Pronouns and weapon verbs
|
||||
writeln!(
|
||||
f,
|
||||
"hit {} with their {} in the {} for {}",
|
||||
recipient_info.name, weapon_info.name, part, dmg
|
||||
)?;
|
||||
}
|
||||
WeaponVerb::Exploded => {
|
||||
writeln!(
|
||||
f,
|
||||
"{} threw a {} at {}, it exploded for {}",
|
||||
actor_info.name, weapon_info.name, recipient_info.name, dmg
|
||||
)?;
|
||||
}
|
||||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
LogEntry::Miss {
|
||||
actor,
|
||||
recipient,
|
||||
weapon,
|
||||
rounds,
|
||||
} => {
|
||||
let actor_info = self.player_registry.get(actor).unwrap();
|
||||
let recipient_info = self.player_registry.get(recipient).unwrap();
|
||||
let weapon_info = self.weapon_registry.get(weapon).unwrap();
|
||||
|
||||
match weapon_info.verb {
|
||||
WeaponVerb::Hit => {
|
||||
writeln!(
|
||||
f,
|
||||
"{} missed {} with their {}",
|
||||
actor_info.name, recipient_info.name, weapon_info.name
|
||||
)?;
|
||||
}
|
||||
WeaponVerb::Fired => {
|
||||
writeln!(
|
||||
f,
|
||||
"{} fired {} rounds of their {} missing {}",
|
||||
actor_info.name,
|
||||
rounds.unwrap(),
|
||||
weapon_info.name,
|
||||
recipient_info.name
|
||||
)?;
|
||||
}
|
||||
_ => todo!(),
|
||||
}
|
||||
}
|
||||
LogEntry::Defeat { actor, recipient } => {
|
||||
let actor_info = self.player_registry.get(actor).unwrap();
|
||||
let recipient_info = self.player_registry.get(recipient).unwrap();
|
||||
|
||||
writeln!(f, "{} defeated {}", actor_info.name, recipient_info.name)?;
|
||||
}
|
||||
LogEntry::Stalemate { actor, recipient } => {
|
||||
let actor_info = self.player_registry.get(actor).unwrap();
|
||||
let recipient_info = self.player_registry.get(recipient).unwrap();
|
||||
|
||||
writeln!(
|
||||
f,
|
||||
"{} stalemated against {}",
|
||||
actor_info.name, recipient_info.name
|
||||
)?;
|
||||
}
|
||||
LogEntry::Loss { actor, recipient } => {
|
||||
let actor_info = self.player_registry.get(actor).unwrap();
|
||||
let recipient_info = self.player_registry.get(recipient).unwrap();
|
||||
|
||||
writeln!(
|
||||
f,
|
||||
"{} lost against {}",
|
||||
recipient_info.name, actor_info.name
|
||||
)?;
|
||||
}
|
||||
LogEntry::Reload { actor, weapon } => {
|
||||
let actor_info = self.player_registry.get(actor).unwrap();
|
||||
let weapon_info = self.weapon_registry.get(weapon).unwrap();
|
||||
|
||||
writeln!(f, "{} reloaded their {}", actor_info.name, weapon_info.name)?;
|
||||
}
|
||||
LogEntry::UsedDebuffTemp {
|
||||
actor,
|
||||
recipient,
|
||||
temp,
|
||||
weapon,
|
||||
immune,
|
||||
} => {
|
||||
let actor_info = self.player_registry.get(actor).unwrap();
|
||||
let recipient_info = self.player_registry.get(recipient).unwrap();
|
||||
let weapon_info = self.weapon_registry.get(weapon).unwrap();
|
||||
|
||||
match temp {
|
||||
DebuffingTemp::SmokeGrenade => {
|
||||
write!(
|
||||
f,
|
||||
"{} threw a Smoke Grenade, smoke clouds around {}",
|
||||
actor_info.name, recipient_info.name
|
||||
)?;
|
||||
}
|
||||
DebuffingTemp::TearGas => {
|
||||
write!(
|
||||
f,
|
||||
"{} threw a Tear Gas Grenade near {}",
|
||||
actor_info.name, recipient_info.name
|
||||
)?;
|
||||
}
|
||||
DebuffingTemp::PepperSpray => {
|
||||
write!(
|
||||
f,
|
||||
"{} sprayed Pepper Spray in {}'s face",
|
||||
actor_info.name, recipient_info.name
|
||||
)?;
|
||||
}
|
||||
_ => {
|
||||
write!(
|
||||
f,
|
||||
"{} threw a {} at {}",
|
||||
actor_info.name, recipient_info.name, weapon_info.name
|
||||
)?;
|
||||
}
|
||||
}
|
||||
|
||||
if *immune {
|
||||
writeln!(f, " but it was ineffective")?;
|
||||
} else {
|
||||
writeln!(f)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
} */
|
||||
|
||||
#[derive(SystemParam)]
|
||||
pub struct Logger<'w> {
|
||||
event_writer: MessageWriter<'w, LogEvent>,
|
||||
|
|
@ -603,6 +433,7 @@ pub(crate) fn configure(stages: &mut Stages) {
|
|||
log_simple_stat_changes::<DamageBonus>,
|
||||
log_simple_stat_changes::<Clips>,
|
||||
log_simple_stat_changes::<ClipSize>,
|
||||
log_simple_stat_changes::<ArmourBonusValue>,
|
||||
)
|
||||
.run_if(logging_enabled),
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue