Addressed playtesting feedback.

This commit is contained in:
Sam
2020-10-12 17:55:55 -05:00
parent 0cc203bbb1
commit fbd91918e7
10 changed files with 25 additions and 17 deletions

View File

@ -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. - 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. - 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 - Moved hammer leap attack to skillbar
- Reworked fire staff
### Removed ### Removed

View File

@ -290,7 +290,7 @@ void main() {
); );
} else if (inst_mode == FLAMETHROWER) { } else if (inst_mode == FLAMETHROWER) {
attr = Attr( 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), 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), 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) spin_in_axis(vec3(rand6, rand7, rand8), lifetime / inst_lifespan * 10 + 3 * rand9)

View File

@ -187,6 +187,7 @@ pub enum CharacterAbility {
damage: u32, damage: u32,
knockback: f32, knockback: f32,
shockwave_angle: f32, shockwave_angle: f32,
shockwave_vertical_angle: f32,
shockwave_speed: f32, shockwave_speed: f32,
shockwave_duration: Duration, shockwave_duration: Duration,
requires_ground: bool, requires_ground: bool,
@ -631,6 +632,7 @@ impl From<&CharacterAbility> for CharacterState {
damage, damage,
knockback, knockback,
shockwave_angle, shockwave_angle,
shockwave_vertical_angle,
shockwave_speed, shockwave_speed,
shockwave_duration, shockwave_duration,
requires_ground, requires_ground,
@ -643,6 +645,7 @@ impl From<&CharacterAbility> for CharacterState {
damage: *damage, damage: *damage,
knockback: *knockback, knockback: *knockback,
shockwave_angle: *shockwave_angle, shockwave_angle: *shockwave_angle,
shockwave_vertical_angle: *shockwave_vertical_angle,
shockwave_speed: *shockwave_speed, shockwave_speed: *shockwave_speed,
shockwave_duration: *shockwave_duration, shockwave_duration: *shockwave_duration,
requires_ground: *requires_ground, requires_ground: *requires_ground,

View File

@ -427,15 +427,15 @@ impl Tool {
Staff(_) => vec![ Staff(_) => vec![
BasicRanged { BasicRanged {
energy_cost: 0, energy_cost: 0,
holdable: true, holdable: false,
prepare_duration: Duration::from_millis(800), prepare_duration: Duration::from_millis(500),
recover_duration: Duration::from_millis(50), recover_duration: Duration::from_millis(350),
projectile: Projectile { projectile: Projectile {
hit_solid: vec![ hit_solid: vec![
projectile::Effect::Explode(Explosion { projectile::Effect::Explode(Explosion {
radius: 5.0, radius: 5.0,
max_damage: (80.0 * self.base_power()) as u32, max_damage: (100.0 * self.base_power()) as u32,
min_damage: (20.0 * self.base_power()) as u32, min_damage: 0,
max_heal: 0, max_heal: 0,
min_heal: 0, min_heal: 0,
terrain_destruction_power: 0.0, terrain_destruction_power: 0.0,
@ -446,8 +446,8 @@ impl Tool {
hit_entity: vec![ hit_entity: vec![
projectile::Effect::Explode(Explosion { projectile::Effect::Explode(Explosion {
radius: 5.0, radius: 5.0,
max_damage: (80.0 * self.base_power()) as u32, max_damage: (100.0 * self.base_power()) as u32,
min_damage: (20.0 * self.base_power()) as u32, min_damage: 0,
max_heal: 0, max_heal: 0,
min_heal: 0, min_heal: 0,
terrain_destruction_power: 0.0, terrain_destruction_power: 0.0,
@ -473,14 +473,14 @@ impl Tool {
recover_duration: Duration::from_millis(250), recover_duration: Duration::from_millis(250),
beam_duration: Duration::from_millis(500), beam_duration: Duration::from_millis(500),
base_hps: 0, 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, tick_rate: 3.0,
range: 15.0, range: 15.0,
max_angle: 22.5, max_angle: 22.5,
lifesteal_eff: 0.0, lifesteal_eff: 0.0,
energy_regen: 0, energy_regen: 0,
energy_cost: 0, energy_cost: 0,
energy_drain: 400, energy_drain: 350,
ability_key: AbilityKey::Mouse2, ability_key: AbilityKey::Mouse2,
}, },
Shockwave { Shockwave {
@ -491,10 +491,11 @@ impl Tool {
damage: (200.0 * self.base_power()) as u32, damage: (200.0 * self.base_power()) as u32,
knockback: 25.0, knockback: 25.0,
shockwave_angle: 360.0, shockwave_angle: 360.0,
shockwave_vertical_angle: 90.0,
shockwave_speed: 20.0, shockwave_speed: 20.0,
shockwave_duration: Duration::from_millis(500), shockwave_duration: Duration::from_millis(500),
requires_ground: false, requires_ground: false,
move_efficiency: 0.8, move_efficiency: 0.1,
}, },
], ],
Shield(_) => vec![ Shield(_) => vec![
@ -529,6 +530,7 @@ impl Tool {
damage: 500, damage: 500,
knockback: -40.0, knockback: -40.0,
shockwave_angle: 90.0, shockwave_angle: 90.0,
shockwave_vertical_angle: 15.0,
shockwave_speed: 20.0, shockwave_speed: 20.0,
shockwave_duration: Duration::from_millis(2000), shockwave_duration: Duration::from_millis(2000),
requires_ground: true, requires_ground: true,

View File

@ -7,6 +7,7 @@ use std::time::Duration;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Properties { pub struct Properties {
pub angle: f32, pub angle: f32,
pub vertical_angle: f32,
pub speed: f32, pub speed: f32,
pub damage: u32, pub damage: u32,
pub knockback: f32, pub knockback: f32,

View File

@ -100,7 +100,7 @@ impl CharacterBehavior for Data {
timer: Duration::default(), timer: Duration::default(),
stage_section: StageSection::Cast, stage_section: StageSection::Cast,
particle_ori: Some(*data.inputs.look_dir), particle_ori: Some(*data.inputs.look_dir),
offset: eye_height * 0.9, offset: eye_height * 0.55,
}); });
} }
}, },

View File

@ -22,6 +22,8 @@ pub struct StaticData {
pub knockback: f32, pub knockback: f32,
/// Angle of the shockwave /// Angle of the shockwave
pub shockwave_angle: f32, pub shockwave_angle: f32,
/// Vertical angle of the shockwave
pub shockwave_vertical_angle: f32,
/// Speed of the shockwave /// Speed of the shockwave
pub shockwave_speed: f32, pub shockwave_speed: f32,
/// How long the shockwave travels for /// How long the shockwave travels for
@ -65,6 +67,7 @@ impl CharacterBehavior for Data {
// Attack // Attack
let properties = shockwave::Properties { let properties = shockwave::Properties {
angle: self.static_data.shockwave_angle, angle: self.static_data.shockwave_angle,
vertical_angle: self.static_data.shockwave_vertical_angle,
speed: self.static_data.shockwave_speed, speed: self.static_data.shockwave_speed,
duration: self.static_data.shockwave_duration, duration: self.static_data.shockwave_duration,
damage: self.static_data.damage, damage: self.static_data.damage,

View File

@ -170,7 +170,7 @@ impl<'a> System<'a> for Sys {
// Angle checks // Angle checks
let pos_b_ground = Vec3::new(pos_b.0.x, pos_b.0.y, pos.0.z); 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 // See if entities are in the same group
let same_group = group let same_group = group

View File

@ -496,9 +496,7 @@ pub fn handle_explosion(
let ecs = &server.state.ecs(); let ecs = &server.state.ecs();
let outcome_power = if explosion.max_heal > explosion.max_damage { let outcome_power = if explosion.max_heal > explosion.max_damage {
-explosion (-explosion.terrain_destruction_power).min(explosion.max_heal as f32 / -100.0)
.terrain_destruction_power
.min(explosion.max_heal as f32 / -100.0)
} else { } else {
explosion explosion
.terrain_destruction_power .terrain_destruction_power

View File

@ -78,7 +78,7 @@ impl ParticleMgr {
); );
} else { } else {
self.particles.resize_with( self.particles.resize_with(
self.particles.len() + (50.0 * power.abs()) as usize, self.particles.len() + (200.0 * power.abs()) as usize,
|| { || {
Particle::new( Particle::new(
Duration::from_secs(1), Duration::from_secs(1),