From 14e4af7ab600f90df43b85a09a6a43a9cc333d37 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 12 Oct 2020 17:55:55 -0500 Subject: [PATCH] Addressed playtesting feedback. --- CHANGELOG.md | 1 + assets/voxygen/shaders/particle-vert.glsl | 2 +- common/src/comp/ability.rs | 3 +++ common/src/comp/inventory/item/tool.rs | 22 ++++++++++++---------- common/src/comp/shockwave.rs | 1 + common/src/states/basic_beam.rs | 2 +- common/src/states/shockwave.rs | 3 +++ common/src/sys/shockwave.rs | 2 +- server/src/events/entity_manipulation.rs | 4 +--- voxygen/src/scene/particle.rs | 2 +- 10 files changed, 25 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bdf975a3f1..6d1d0be784 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Split out the sections of the server settings that can be edited and saved by the server. - Revamped structure of where settings, logs, and game saves are stored so that almost everything is in one place. - Moved hammer leap attack to skillbar +- Reworked fire staff ### Removed diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index 90cc7097ba..cf7565909a 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -290,7 +290,7 @@ void main() { ); } else if (inst_mode == FLAMETHROWER) { attr = Attr( - (inst_dir * lifetime / inst_lifespan) + vec3(rand0, rand1, rand2) * 0.3, + (inst_dir * lifetime / inst_lifespan) + vec3(rand0, rand1, rand2) * (lifetime * 5 + 0.25), vec3(0.6 + rand3 * 0.5 + lifetime / inst_lifespan * 5), vec4(1, 0.6 + rand5 * 0.3 - 0.6 * lifetime / inst_lifespan, 0, 0.8 - 0.6 * lifetime / inst_lifespan), spin_in_axis(vec3(rand6, rand7, rand8), lifetime / inst_lifespan * 10 + 3 * rand9) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 721076901c..6529fa800e 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -187,6 +187,7 @@ pub enum CharacterAbility { damage: u32, knockback: f32, shockwave_angle: f32, + shockwave_vertical_angle: f32, shockwave_speed: f32, shockwave_duration: Duration, requires_ground: bool, @@ -631,6 +632,7 @@ impl From<&CharacterAbility> for CharacterState { damage, knockback, shockwave_angle, + shockwave_vertical_angle, shockwave_speed, shockwave_duration, requires_ground, @@ -643,6 +645,7 @@ impl From<&CharacterAbility> for CharacterState { damage: *damage, knockback: *knockback, shockwave_angle: *shockwave_angle, + shockwave_vertical_angle: *shockwave_vertical_angle, shockwave_speed: *shockwave_speed, shockwave_duration: *shockwave_duration, requires_ground: *requires_ground, diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index ddc6399d9a..b08da37c3e 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -427,15 +427,15 @@ impl Tool { Staff(_) => vec![ BasicRanged { energy_cost: 0, - holdable: true, - prepare_duration: Duration::from_millis(800), - recover_duration: Duration::from_millis(50), + holdable: false, + prepare_duration: Duration::from_millis(500), + recover_duration: Duration::from_millis(350), projectile: Projectile { hit_solid: vec![ projectile::Effect::Explode(Explosion { radius: 5.0, - max_damage: (80.0 * self.base_power()) as u32, - min_damage: (20.0 * self.base_power()) as u32, + max_damage: (100.0 * self.base_power()) as u32, + min_damage: 0, max_heal: 0, min_heal: 0, terrain_destruction_power: 0.0, @@ -446,8 +446,8 @@ impl Tool { hit_entity: vec![ projectile::Effect::Explode(Explosion { radius: 5.0, - max_damage: (80.0 * self.base_power()) as u32, - min_damage: (20.0 * self.base_power()) as u32, + max_damage: (100.0 * self.base_power()) as u32, + min_damage: 0, max_heal: 0, min_heal: 0, terrain_destruction_power: 0.0, @@ -473,14 +473,14 @@ impl Tool { recover_duration: Duration::from_millis(250), beam_duration: Duration::from_millis(500), base_hps: 0, - base_dps: (200.0 * self.base_power()) as u32, + base_dps: (150.0 * self.base_power()) as u32, tick_rate: 3.0, range: 15.0, max_angle: 22.5, lifesteal_eff: 0.0, energy_regen: 0, energy_cost: 0, - energy_drain: 400, + energy_drain: 350, ability_key: AbilityKey::Mouse2, }, Shockwave { @@ -491,10 +491,11 @@ impl Tool { damage: (200.0 * self.base_power()) as u32, knockback: 25.0, shockwave_angle: 360.0, + shockwave_vertical_angle: 90.0, shockwave_speed: 20.0, shockwave_duration: Duration::from_millis(500), requires_ground: false, - move_efficiency: 0.8, + move_efficiency: 0.1, }, ], Shield(_) => vec![ @@ -529,6 +530,7 @@ impl Tool { damage: 500, knockback: -40.0, shockwave_angle: 90.0, + shockwave_vertical_angle: 15.0, shockwave_speed: 20.0, shockwave_duration: Duration::from_millis(2000), requires_ground: true, diff --git a/common/src/comp/shockwave.rs b/common/src/comp/shockwave.rs index 26ff9e8fa8..78e38e44bf 100644 --- a/common/src/comp/shockwave.rs +++ b/common/src/comp/shockwave.rs @@ -7,6 +7,7 @@ use std::time::Duration; #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct Properties { pub angle: f32, + pub vertical_angle: f32, pub speed: f32, pub damage: u32, pub knockback: f32, diff --git a/common/src/states/basic_beam.rs b/common/src/states/basic_beam.rs index cf2c991a11..e215fae41f 100644 --- a/common/src/states/basic_beam.rs +++ b/common/src/states/basic_beam.rs @@ -100,7 +100,7 @@ impl CharacterBehavior for Data { timer: Duration::default(), stage_section: StageSection::Cast, particle_ori: Some(*data.inputs.look_dir), - offset: eye_height * 0.9, + offset: eye_height * 0.55, }); } }, diff --git a/common/src/states/shockwave.rs b/common/src/states/shockwave.rs index f6c22f5063..fc2f72e10c 100644 --- a/common/src/states/shockwave.rs +++ b/common/src/states/shockwave.rs @@ -22,6 +22,8 @@ pub struct StaticData { pub knockback: f32, /// Angle of the shockwave pub shockwave_angle: f32, + /// Vertical angle of the shockwave + pub shockwave_vertical_angle: f32, /// Speed of the shockwave pub shockwave_speed: f32, /// How long the shockwave travels for @@ -65,6 +67,7 @@ impl CharacterBehavior for Data { // Attack let properties = shockwave::Properties { angle: self.static_data.shockwave_angle, + vertical_angle: self.static_data.shockwave_vertical_angle, speed: self.static_data.shockwave_speed, duration: self.static_data.shockwave_duration, damage: self.static_data.damage, diff --git a/common/src/sys/shockwave.rs b/common/src/sys/shockwave.rs index 294f67f813..1dbf0530cb 100644 --- a/common/src/sys/shockwave.rs +++ b/common/src/sys/shockwave.rs @@ -170,7 +170,7 @@ impl<'a> System<'a> for Sys { // Angle checks let pos_b_ground = Vec3::new(pos_b.0.x, pos_b.0.y, pos.0.z); - let max_angle = 15.0_f32.to_radians(); + let max_angle = shockwave.vertical_angle.to_radians(); // See if entities are in the same group let same_group = group diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 9868b37027..53d059a77e 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -496,9 +496,7 @@ pub fn handle_explosion( let ecs = &server.state.ecs(); let outcome_power = if explosion.max_heal > explosion.max_damage { - -explosion - .terrain_destruction_power - .min(explosion.max_heal as f32 / -100.0) + (-explosion.terrain_destruction_power).min(explosion.max_heal as f32 / -100.0) } else { explosion .terrain_destruction_power diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 267dcf006b..e9002961a5 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -78,7 +78,7 @@ impl ParticleMgr { ); } else { self.particles.resize_with( - self.particles.len() + (50.0 * power.abs()) as usize, + self.particles.len() + (200.0 * power.abs()) as usize, || { Particle::new( Duration::from_secs(1),