Merge branch 'juliancoffee/remove_post_armor_crit' into 'master'

Remove post-armor crit damage

See merge request veloren/veloren!2531
This commit is contained in:
Samuel Keiffer 2021-06-30 00:58:12 +00:00
commit 07abf65bd6
2 changed files with 7 additions and 70 deletions

View File

@ -31,6 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Removed ### Removed
- Enemies no more spawn in dungeon boss room - Enemies no more spawn in dungeon boss room
- Melee critical hit no more applies after reduction by armour
### Fixed ### Fixed

View File

@ -587,74 +587,17 @@ impl Damage {
damage_modifier: f32, damage_modifier: f32,
) -> HealthChange { ) -> HealthChange {
let mut damage = self.value * damage_modifier; let mut damage = self.value * damage_modifier;
// Critical hit damage (to be applied post-armor for melee, and pre-armor for
// other damage kinds
let critdamage = if is_crit { let critdamage = if is_crit {
damage * (crit_mult - 1.0) damage * (crit_mult - 1.0)
} else { } else {
0.0 0.0
}; };
match self.source { match self.source {
DamageSource::Melee => { DamageSource::Melee
// Armor | DamageSource::Projectile
damage *= 1.0 - damage_reduction; | DamageSource::Explosion
| DamageSource::Shockwave
// Critical damage applies after armor for melee | DamageSource::Energy => {
if (damage_reduction - 1.0).abs() > f32::EPSILON {
damage += critdamage;
}
HealthChange {
amount: -damage as i32,
cause: HealthSource::Damage {
kind: self.source,
by: uid,
},
}
},
DamageSource::Projectile => {
// Critical hit
damage += critdamage;
// Armor
damage *= 1.0 - damage_reduction;
HealthChange {
amount: -damage as i32,
cause: HealthSource::Damage {
kind: self.source,
by: uid,
},
}
},
DamageSource::Explosion => {
// Critical hit
damage += critdamage;
// Armor
damage *= 1.0 - damage_reduction;
HealthChange {
amount: -damage as i32,
cause: HealthSource::Damage {
kind: self.source,
by: uid,
},
}
},
DamageSource::Shockwave => {
// Critical hit
damage += critdamage;
// Armor
damage *= 1.0 - damage_reduction;
HealthChange {
amount: -damage as i32,
cause: HealthSource::Damage {
kind: self.source,
by: uid,
},
}
},
DamageSource::Energy => {
// Critical hit // Critical hit
damage += critdamage; damage += critdamage;
// Armor // Armor
@ -678,14 +621,7 @@ impl Damage {
cause: HealthSource::World, cause: HealthSource::World,
} }
}, },
DamageSource::Buff(_) => HealthChange { DamageSource::Buff(_) | DamageSource::Other => HealthChange {
amount: -damage as i32,
cause: HealthSource::Damage {
kind: self.source,
by: uid,
},
},
DamageSource::Other => HealthChange {
amount: -damage as i32, amount: -damage as i32,
cause: HealthSource::Damage { cause: HealthSource::Damage {
kind: self.source, kind: self.source,