Merge branch 'crabman/earthsplitter-nerf' into 'master'

earthsplitter nerf

See merge request veloren/veloren!4264
This commit is contained in:
Samuel Keiffer 2024-01-20 18:30:55 +00:00
commit 3224bc5147
40 changed files with 282 additions and 230 deletions

View File

@ -99,6 +99,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Make cave entrances easier to follow
- Renamed Twiggy Shoulders to match the Twig Armor set
- No longer stack buffs of the same kind with equal attributes, this could lead to a DoS if ie. an entity stayed long enough in lava.
- Nerfed Earthsplitter
## [0.15.0] - 2023-07-01

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 8.0,
energy_regen: 0.0,
),
scaled: Some(Stab(
damage: 16.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Stab(
damage: 16.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 45.0,
),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Slash(
damage: 20,
poise: 5,
knockback: 0,
energy_regen: 15,
)),
scaled: Some((
kind: Slash(
damage: 20,
poise: 5,
knockback: 0,
energy_regen: 15,
))),
range: 4.5,
angle: 10.0,
),
@ -22,4 +23,4 @@ ChargedMelee(
hit_timing: 0.2,
recover_duration: 0.2,
additional_combo: 4,
)
)

View File

@ -9,11 +9,12 @@ FinisherMelee(
poise: 0,
pull: 0,
),
scaled: Some(Hook(
damage: 2,
poise: 3,
pull: 1,
)),
scaled: Some((
kind: Hook(
damage: 2,
poise: 3,
pull: 1,
))),
range: 6.0,
angle: 30.0,
),
@ -24,4 +25,4 @@ FinisherMelee(
max_factor: 20,
)),
combo_consumption: Half,
)
)

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 10.0,
energy_regen: 0.0,
),
scaled: Some(Stab(
damage: 120.0,
poise: 45.0,
knockback: 25.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Stab(
damage: 120.0,
poise: 45.0,
knockback: 25.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 90.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 4.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 36.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 36.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
))),
range: 2.5,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 6.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 30.0,
poise: 100.0,
knockback: 12.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 30.0,
poise: 100.0,
knockback: 12.0,
energy_regen: 0.0,
))),
range: 2.0,
angle: 20.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 16.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 10.0,
poise: 0.0,
knockback: 20.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 10.0,
poise: 0.0,
knockback: 20.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 45.0,
damage_effect: Some(Buff((

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 4.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 6.0,
poise: 20.0,
knockback: 6.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 6.0,
poise: 20.0,
knockback: 6.0,
energy_regen: 0.0,
))),
range: 4,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 2.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 36.0,
poise: 60.0,
knockback: 5.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 36.0,
poise: 60.0,
knockback: 5.0,
energy_regen: 0.0,
))),
range: 6.0,
angle: 90.0,
multi_target: Some(Normal),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 4.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 30.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 30.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
))),
range: 4,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 2.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 36.0,
poise: 38.6,
knockback: 3.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 36.0,
poise: 38.6,
knockback: 3.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 90.0,
multi_target: Some(Normal),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 10.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 40.0,
poise: 80.0,
knockback: 20.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 40.0,
poise: 80.0,
knockback: 20.0,
energy_regen: 0.0,
))),
range: 6.0,
angle: 90.0,
multi_target: Some(Normal),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 90.0,
poise: 150.0,
knockback: 0.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 90.0,
poise: 150.0,
knockback: 0.0,
energy_regen: 0.0,
))),
range: 3.5,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 10.0,
energy_regen: 0.0,
),
scaled: Some(Stab(
damage: 90.0,
poise: 100.0,
knockback: 30.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Stab(
damage: 90.0,
poise: 100.0,
knockback: 30.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 90.0,
damage_effect: Some(Buff((

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0.0,
energy_regen: 0.0,
),
scaled: Some(Slash(
damage: 45.0,
poise: 105.0,
knockback: 0.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Slash(
damage: 45.0,
poise: 105.0,
knockback: 0.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 45.0,
multi_target: Some(Normal),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 8.0,
energy_regen: 0.0,
),
scaled: Some(Slash(
damage: 32.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Slash(
damage: 32.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
))),
range: 2.0,
angle: 15.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 4.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 30.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 30.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
))),
range: 2.5,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 2.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 16.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 16.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
))),
range: 2.0,
angle: 45.0,
),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 10.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 40.0,
poise: 80.0,
knockback: 20.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 40.0,
poise: 80.0,
knockback: 20.0,
energy_regen: 0.0,
))),
range: 6.0,
angle: 90.0,
multi_target: Some(Normal),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 8.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 65.0,
poise: 35.0,
knockback: 14.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 65.0,
poise: 35.0,
knockback: 14.0,
energy_regen: 0.0,
))),
range: 2.5,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 3.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 4.0,
poise: 28.0,
knockback: 7.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 4.0,
poise: 28.0,
knockback: 7.0,
energy_regen: 0.0,
))),
range: 2.0,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 8.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 65.0,
poise: 35.0,
knockback: 14.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 65.0,
poise: 35.0,
knockback: 14.0,
energy_regen: 0.0,
))),
range: 2.5,
angle: 45.0,
),
@ -24,4 +25,4 @@ DashMelee(
recover_duration: 2.2,
ori_modifier: 0.3,
charge_through: false,
)
)

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 8.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 25.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 25.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
))),
range: 4.0,
angle: 45.0,
),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 10.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 12.5,
poise: 40.0,
knockback: 30.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 12.5,
poise: 40.0,
knockback: 30.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 90.0,
multi_target: Some(Normal),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0.0,
energy_regen: 0.0,
),
scaled: Some(Stab(
damage: 90.0,
poise: 150.0,
knockback: 0.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Stab(
damage: 90.0,
poise: 150.0,
knockback: 0.0,
energy_regen: 0.0,
))),
range: 3.5,
angle: 45.0,
),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 5.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 20.0,
poise: 30.0,
knockback: 20.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 20.0,
poise: 30.0,
knockback: 20.0,
energy_regen: 0.0,
))),
range: 3.5,
angle: 30.0,
multi_target: Some(Normal),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 8.0,
energy_regen: 0.0,
),
scaled: Some(Stab(
damage: 9.0,
poise: 25.0,
knockback: 7.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Stab(
damage: 9.0,
poise: 25.0,
knockback: 7.0,
energy_regen: 0.0,
))),
range: 3.0,
angle: 20.0,
),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Stab(
damage: 15,
poise: 5,
knockback: 0,
energy_regen: 15,
)),
scaled: Some((
kind: Stab(
damage: 15,
poise: 5,
knockback: 0,
energy_regen: 15,
))),
range: 4.5,
angle: 10.0,
),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Slash(
damage: 7,
poise: 10,
knockback: 0,
energy_regen: 10,
)),
scaled: Some((
kind: Slash(
damage: 7,
poise: 10,
knockback: 0,
energy_regen: 10,
))),
range: 3.0,
angle: 360.0,
multi_target: Some(Normal),
@ -23,4 +24,4 @@ ChargedMelee(
swing_duration: 0.2,
hit_timing: 0.2,
recover_duration: 0.3,
)
)

View File

@ -12,13 +12,16 @@ DiveMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Slash(
damage: 15,
poise: 10,
knockback: 0,
energy_regen: 0,
scaled: Some((
kind: Slash(
damage: 4,
poise: 5,
knockback: 4,
energy_regen: 0,
),
range: 1.0,
)),
range: 4.0,
range: 2.0,
angle: 360.0,
multi_target: Some(Normal),
),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Slash(
damage: 10,
poise: 10,
knockback: 0,
energy_regen: 10,
)),
scaled: Some((
kind: Slash(
damage: 10,
poise: 10,
knockback: 0,
energy_regen: 10,
))),
range: 3.0,
angle: 360.0,
multi_target: Some(Normal),
@ -22,4 +23,4 @@ ChargedMelee(
swing_duration: 0.2,
hit_timing: 0.2,
recover_duration: 0.3,
)
)

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Slash(
damage: 15,
poise: 5,
knockback: 0,
energy_regen: 10,
)),
scaled: Some((
kind: Slash(
damage: 15,
poise: 5,
knockback: 0,
energy_regen: 10,
))),
damage_effect: Some(BuffsVulnerable(0.5, Bleeding)),
range: 4.5,
angle: 10.0,

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Stab(
damage: 12,
poise: 5,
knockback: 0,
energy_regen: 15,
)),
scaled: Some((
kind: Stab(
damage: 12,
poise: 5,
knockback: 0,
energy_regen: 15,
))),
range: 4.5,
angle: 10.0,
damage_effect: Some(BuffsVulnerable(0.75, Parried)),

View File

@ -12,12 +12,13 @@ DiveMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Slash(
damage: 10,
poise: 10,
knockback: 0,
energy_regen: 0,
)),
scaled: Some((
kind: Slash(
damage: 10,
poise: 10,
knockback: 0,
energy_regen: 0,
))),
range: 2.0,
angle: 45.0,
multi_target: Some(Normal),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 0,
energy_regen: 0,
),
scaled: Some(Slash(
damage: 20,
poise: 30,
knockback: 0,
energy_regen: 30,
)),
scaled: Some((
kind: Slash(
damage: 20,
poise: 30,
knockback: 0,
energy_regen: 30,
))),
range: 4.5,
angle: 10.0,
damage_effect: Some(StunnedVulnerable(0.5)),

View File

@ -7,12 +7,13 @@ DashMelee(
knockback: 8.0,
energy_regen: 0.0,
),
scaled: Some(Stab(
damage: 16.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Stab(
damage: 16.0,
poise: 0.0,
knockback: 7.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 45.0,
),

View File

@ -8,12 +8,13 @@ ChargedMelee(
knockback: 30.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 0.1,
poise: 1.0,
knockback: 60.0,
energy_regen: 0.0,
)),
scaled: Some((
kind: Bash(
damage: 0.1,
poise: 1.0,
knockback: 60.0,
energy_regen: 0.0,
))),
range: 5.0,
angle: 30.0,
),

View File

@ -1919,7 +1919,7 @@ impl CharacterAbility {
ref mut damage,
ref mut knockback,
..
}) = melee_constructor.scaled
}) = melee_constructor.scaled.as_mut().map(|scaled| scaled.kind)
{
if let Ok(level) = skillset.skill_level(Hammer(CDamage)) {
*damage *= modifiers.scaled_damage.powi(level.into());

View File

@ -53,6 +53,15 @@ impl Component for Melee {
fn default_simultaneous_hits() -> u32 { 1 }
fn default_combo_gain() -> i32 { 1 }
#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Scaled {
pub kind: MeleeConstructorKind,
#[serde(default)]
pub range: f32,
#[serde(default)]
pub angle: f32,
}
#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MeleeConstructor {
@ -60,7 +69,7 @@ pub struct MeleeConstructor {
/// This multiplied by a fraction is added to what is specified in `kind`.
///
/// Note, that this must be the same variant as what is specified in `kind`.
pub scaled: Option<MeleeConstructorKind>,
pub scaled: Option<Scaled>,
pub range: f32,
pub angle: f32,
pub multi_target: Option<MultiTarget>,
@ -371,7 +380,7 @@ impl MeleeConstructor {
if let Some(max_scale) = self.scaled {
use MeleeConstructorKind::*;
let scaled = match (self.kind, max_scale) {
let scaled = match (self.kind, max_scale.kind) {
(
Slash {
damage: a_damage,
@ -486,6 +495,8 @@ impl MeleeConstructor {
},
};
self.kind = scaled;
self.range = scale_values(self.range, max_scale.range);
self.angle = scale_values(self.angle, max_scale.angle);
self.scaled = None;
} else {
dev_panic!("Attempted to scale on a melee attack that had no provided scaling value.")
@ -498,7 +509,8 @@ impl MeleeConstructor {
self.range *= stats.range;
self.kind = self.kind.adjusted_by_stats(stats);
if let Some(ref mut scaled) = &mut self.scaled {
*scaled = scaled.adjusted_by_stats(stats);
scaled.kind = scaled.kind.adjusted_by_stats(stats);
scaled.range *= stats.range;
}
self.damage_effect = self.damage_effect.map(|de| de.adjusted_by_stats(stats));
self