mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Addressed playtesting feedback.
This commit is contained in:
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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),
|
||||||
|
Reference in New Issue
Block a user