Addressed playtesting feedback.

This commit is contained in:
Sam 2020-10-12 17:55:55 -05:00
parent 6f3f6996a6
commit 14e4af7ab6
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.
- 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

View File

@ -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)

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,
});
}
},

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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),