From 7e091dddc6d4ecb8c9906b801632ab4b4453a712 Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Sun, 20 Sep 2020 21:16:52 -0700 Subject: [PATCH 01/23] Add 3rd skill for hammer, bow, and axe minus skillbar UI stuff --- common/src/comp/ability.rs | 106 ++++++++++++ common/src/comp/character_state.rs | 10 ++ common/src/comp/inventory/item/tool.rs | 55 ++++++- common/src/states/charged_melee.rs | 171 ++++++++++++++++++++ common/src/states/leap_melee.rs | 44 ++++- common/src/states/mod.rs | 2 + common/src/states/repeater_ranged.rs | 153 ++++++++++++++++++ common/src/sys/character_behavior.rs | 4 + common/src/sys/stats.rs | 2 + voxygen/src/anim/src/character/charge.rs | 16 ++ voxygen/src/anim/src/character/leapmelee.rs | 141 ++++++++++++++-- voxygen/src/hud/skillbar.rs | 15 ++ 12 files changed, 698 insertions(+), 21 deletions(-) create mode 100644 common/src/states/charged_melee.rs create mode 100644 common/src/states/repeater_ranged.rs diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 345ad6997b..c07beab4a0 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -18,6 +18,7 @@ pub enum CharacterAbilityType { BasicMelee, BasicRanged, Boost, + ChargedMelee, ChargedRanged, DashMelee, BasicBlock, @@ -26,6 +27,7 @@ pub enum CharacterAbilityType { SpinMelee, GroundShockwave, BasicBeam, + RepeaterRanged, } impl From<&CharacterState> for CharacterAbilityType { @@ -39,9 +41,11 @@ impl From<&CharacterState> for CharacterAbilityType { CharacterState::LeapMelee(_) => Self::LeapMelee, CharacterState::ComboMelee(data) => Self::ComboMelee(data.stage_section, data.stage), CharacterState::SpinMelee(_) => Self::SpinMelee, + CharacterState::ChargedMelee(_) => Self::ChargedMelee, CharacterState::ChargedRanged(_) => Self::ChargedRanged, CharacterState::GroundShockwave(_) => Self::ChargedRanged, CharacterState::BasicBeam(_) => Self::BasicBeam, + CharacterState::RepeaterRanged(_) => Self::RepeaterRanged, _ => Self::BasicMelee, } } @@ -69,6 +73,20 @@ pub enum CharacterAbility { projectile_gravity: Option<Gravity>, projectile_speed: f32, }, + RepeaterRanged { + movement_duration: Duration, + energy_cost: u32, + holdable: bool, + prepare_duration: Duration, + recover_duration: Duration, + projectile: Projectile, + projectile_body: Body, + projectile_light: Option<LightEmitter>, + projectile_gravity: Option<Gravity>, + projectile_speed: f32, + repetitions: u32, + current_rep: u32, + }, Boost { duration: Duration, only_up: bool, @@ -107,6 +125,10 @@ pub enum CharacterAbility { buildup_duration: Duration, recover_duration: Duration, base_damage: u32, + range: f32, + max_angle: f32, + leap_speed: f32, + leap_vert_speed: f32, }, SpinMelee { buildup_duration: Duration, @@ -122,6 +144,19 @@ pub enum CharacterAbility { forward_speed: f32, num_spins: u32, }, + ChargedMelee { + energy_cost: u32, + energy_drain: u32, + initial_damage: u32, + max_damage: u32, + initial_knockback: f32, + max_knockback: f32, + prepare_duration: Duration, + charge_duration: Duration, + recover_duration: Duration, + range: f32, + max_angle: f32, + }, ChargedRanged { energy_cost: u32, energy_drain: u32, @@ -203,6 +238,14 @@ impl CharacterAbility { .energy .try_change_by(-(*energy_cost as i32), EnergySource::Ability) .is_ok(), + CharacterAbility::ChargedMelee { energy_cost, .. } => update + .energy + .try_change_by(-(*energy_cost as i32), EnergySource::Ability) + .is_ok(), + CharacterAbility::RepeaterRanged { energy_cost, .. } => update + .energy + .try_change_by(-(*energy_cost as i32), EnergySource::Ability) + .is_ok(), CharacterAbility::GroundShockwave { energy_cost, .. } => update .energy .try_change_by(-(*energy_cost as i32), EnergySource::Ability) @@ -424,6 +467,10 @@ impl From<&CharacterAbility> for CharacterState { buildup_duration, recover_duration, base_damage, + range, + max_angle, + leap_speed, + leap_vert_speed, } => CharacterState::LeapMelee(leap_melee::Data { initialize: true, exhausted: false, @@ -431,6 +478,10 @@ impl From<&CharacterAbility> for CharacterState { buildup_duration: *buildup_duration, recover_duration: *recover_duration, base_damage: *base_damage, + range: *range, + max_angle: *max_angle, + leap_speed: *leap_speed, + leap_vert_speed: *leap_vert_speed, }), CharacterAbility::SpinMelee { buildup_duration, @@ -465,6 +516,32 @@ impl From<&CharacterAbility> for CharacterState { stage_section: StageSection::Buildup, exhausted: false, }), + CharacterAbility::ChargedMelee { + energy_cost: _, + energy_drain, + initial_damage, + max_damage, + initial_knockback, + max_knockback, + prepare_duration, + charge_duration, + recover_duration, + range, + max_angle, + } => CharacterState::ChargedMelee(charged_melee::Data { + exhausted: false, + energy_drain: *energy_drain, + initial_damage: *initial_damage, + max_damage: *max_damage, + initial_knockback: *initial_knockback, + max_knockback: *max_knockback, + prepare_duration: *prepare_duration, + charge_duration: *charge_duration, + charge_timer: Duration::default(), + recover_duration: *recover_duration, + range: *range, + max_angle: *max_angle, + }), CharacterAbility::ChargedRanged { energy_cost: _, energy_drain, @@ -497,6 +574,35 @@ impl From<&CharacterAbility> for CharacterState { initial_projectile_speed: *initial_projectile_speed, max_projectile_speed: *max_projectile_speed, }), + CharacterAbility::RepeaterRanged { + energy_cost: _, + movement_duration, + holdable, + prepare_duration, + recover_duration, + projectile, + projectile_body, + projectile_light, + projectile_gravity, + projectile_speed, + repetitions, + current_rep, + } => CharacterState::RepeaterRanged(repeater_ranged::Data { + exhausted: false, + prepare_timer: Duration::default(), + holdable: *holdable, + movement_duration: *movement_duration, + prepare_duration: *prepare_duration, + recover_duration: *recover_duration, + projectile: projectile.clone(), + projectile_body: *projectile_body, + projectile_light: *projectile_light, + projectile_gravity: *projectile_gravity, + projectile_speed: *projectile_speed, + repetitions: *repetitions, + current_rep: *current_rep, + initialize: true, + }), CharacterAbility::GroundShockwave { energy_cost: _, buildup_duration, diff --git a/common/src/comp/character_state.rs b/common/src/comp/character_state.rs index 4e99d35469..4d68df5696 100644 --- a/common/src/comp/character_state.rs +++ b/common/src/comp/character_state.rs @@ -69,6 +69,10 @@ pub enum CharacterState { SpinMelee(spin_melee::Data), /// A charged ranged attack (e.g. bow) ChargedRanged(charged_ranged::Data), + /// A charged melee attack + ChargedMelee(charged_melee::Data), + /// A repeating ranged attack + RepeaterRanged(repeater_ranged::Data), /// A ground shockwave attack GroundShockwave(ground_shockwave::Data), /// A continuous attack that affects all creatures in a cone originating @@ -87,7 +91,9 @@ impl CharacterState { | CharacterState::BasicBlock | CharacterState::LeapMelee(_) | CharacterState::SpinMelee(_) + | CharacterState::ChargedMelee(_) | CharacterState::ChargedRanged(_) + | CharacterState::RepeaterRanged(_) | CharacterState::GroundShockwave(_) | CharacterState::BasicBeam(_) ) @@ -101,7 +107,9 @@ impl CharacterState { | CharacterState::ComboMelee(_) | CharacterState::LeapMelee(_) | CharacterState::SpinMelee(_) + | CharacterState::ChargedMelee(_) | CharacterState::ChargedRanged(_) + | CharacterState::RepeaterRanged(_) | CharacterState::GroundShockwave(_) | CharacterState::BasicBeam(_) ) @@ -115,7 +123,9 @@ impl CharacterState { | CharacterState::ComboMelee(_) | CharacterState::BasicBlock | CharacterState::LeapMelee(_) + | CharacterState::ChargedMelee(_) | CharacterState::ChargedRanged(_) + | CharacterState::RepeaterRanged(_) | CharacterState::GroundShockwave(_) | CharacterState::BasicBeam(_) ) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index c16bcd8061..2c9cde6b8a 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -226,6 +226,17 @@ impl Tool { forward_speed: 0.0, num_spins: 1, }, + LeapMelee { + energy_cost: 300, + movement_duration: Duration::from_millis(200), + buildup_duration: Duration::from_millis(1000), + recover_duration: Duration::from_millis(600), + base_damage: (170.0 * self.base_power()) as u32, + range: 3.5, + max_angle: 50.0, + leap_speed: 20.0, + leap_vert_speed: 16.0, + }, ], Hammer(_) => vec![ BasicMelee { @@ -237,12 +248,29 @@ impl Tool { range: 3.5, max_angle: 20.0, }, + ChargedMelee { + energy_cost: 0, + energy_drain: 300, + initial_damage: (20.0 * self.base_power()) as u32, + max_damage: (170.0 * self.base_power()) as u32, + initial_knockback: 12.0, + max_knockback: 60.0, + prepare_duration: Duration::from_millis(200), + charge_duration: Duration::from_millis(1200), + recover_duration: Duration::from_millis(500), + range: 3.5, + max_angle: 30.0, + }, LeapMelee { - energy_cost: 800, + energy_cost: 700, movement_duration: Duration::from_millis(500), buildup_duration: Duration::from_millis(1000), recover_duration: Duration::from_millis(100), base_damage: (240.0 * self.base_power()) as u32, + range: 4.5, + max_angle: 360.0, + leap_speed: 24.0, + leap_vert_speed: 8.0, }, ], Farming(_) => vec![BasicMelee { @@ -293,6 +321,31 @@ impl Tool { initial_projectile_speed: 100.0, max_projectile_speed: 500.0, }, + RepeaterRanged { + energy_cost: 400, + holdable: true, + movement_duration: Duration::from_millis(200), + prepare_duration: Duration::from_millis(1000), + recover_duration: Duration::from_millis(1000), + projectile: Projectile { + hit_solid: vec![projectile::Effect::Stick], + hit_entity: vec![ + projectile::Effect::Damage((-40.0 * self.base_power()) as i32), + projectile::Effect::Knockback(10.0), + projectile::Effect::RewardEnergy(50), + projectile::Effect::Vanish, + ], + time_left: Duration::from_secs(15), + owner: None, + ignore_group: true, + }, + projectile_body: Body::Object(object::Body::Arrow), + projectile_light: None, + projectile_gravity: Some(Gravity(0.2)), + projectile_speed: 100.0, + repetitions: 4, + current_rep: 0, + }, ], Dagger(_) => vec![BasicMelee { energy_cost: 0, diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs new file mode 100644 index 0000000000..68b35f4b5d --- /dev/null +++ b/common/src/states/charged_melee.rs @@ -0,0 +1,171 @@ +use crate::{ + comp::{Attacking, CharacterState, EnergySource, StateUpdate}, + states::utils::*, + sys::character_behavior::*, +}; +use serde::{Deserialize, Serialize}; +use std::time::Duration; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct Data { + /// Whether the attack fired already + pub exhausted: bool, + /// How much energy is drained per second when charging + pub energy_drain: u32, + /// How much damage is dealt with no charge + pub initial_damage: u32, + /// How much damage is dealt with max charge + pub max_damage: u32, + /// How much knockback there is with no charge + pub initial_knockback: f32, + /// How much knockback there is at max charge + pub max_knockback: f32, + /// How long the weapon needs to be prepared for + pub prepare_duration: Duration, + /// How long it takes to charge the weapon to max damage and knockback + pub charge_duration: Duration, + /// How long the state has been charging + pub charge_timer: Duration, + /// How long the state has until exiting + pub recover_duration: Duration, + /// Max range + pub range: f32, + /// Max angle (45.0 will give you a 90.0 angle window) + pub max_angle: f32, +} + +impl CharacterBehavior for Data { + fn behavior(&self, data: &JoinData) -> StateUpdate { + let mut update = StateUpdate::from(data); + + handle_move(data, &mut update, 0.3); + handle_jump(data, &mut update); + + if self.prepare_duration != Duration::default() { + // Prepare (draw the bow) + update.character = CharacterState::ChargedMelee(Data { + exhausted: self.exhausted, + energy_drain: self.energy_drain, + initial_damage: self.initial_damage, + max_damage: self.max_damage, + initial_knockback: self.initial_knockback, + max_knockback: self.max_knockback, + prepare_duration: self + .prepare_duration + .checked_sub(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + charge_duration: self.charge_duration, + charge_timer: self.charge_timer, + recover_duration: self.recover_duration, + range: self.range, + max_angle: self.max_angle, + }); + } else if data.inputs.secondary.is_pressed() + && self.charge_timer < self.charge_duration + && update.energy.current() > 0 + { + // Charge the attack + update.character = CharacterState::ChargedMelee(Data { + exhausted: self.exhausted, + energy_drain: self.energy_drain, + initial_damage: self.initial_damage, + max_damage: self.max_damage, + initial_knockback: self.initial_knockback, + max_knockback: self.max_knockback, + prepare_duration: self.prepare_duration, + charge_timer: self + .charge_timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + charge_duration: self.charge_duration, + recover_duration: self.recover_duration, + range: self.range, + max_angle: self.max_angle, + }); + + // Consumes energy if there's enough left and RMB is held down + update.energy.change_by( + -(self.energy_drain as f32 * data.dt.0) as i32, + EnergySource::Ability, + ); + } else if data.inputs.secondary.is_pressed() { + // Charge the attack + update.character = CharacterState::ChargedMelee(Data { + exhausted: self.exhausted, + energy_drain: self.energy_drain, + initial_damage: self.initial_damage, + max_damage: self.max_damage, + initial_knockback: self.initial_knockback, + max_knockback: self.max_knockback, + prepare_duration: self.prepare_duration, + charge_timer: self.charge_timer, + charge_duration: self.charge_duration, + recover_duration: self.recover_duration, + range: self.range, + max_angle: self.max_angle, + }); + + // Consumes energy if there's enough left and RMB is held down + update.energy.change_by( + -(self.energy_drain as f32 * data.dt.0 / 5.0) as i32, + EnergySource::Ability, + ); + } else if !self.exhausted { + let charge_amount = + (self.charge_timer.as_secs_f32() / self.charge_duration.as_secs_f32()).min(1.0); + let damage = self.initial_damage as f32 + (charge_amount * (self.max_damage - self.initial_damage) as f32); + // Hit attempt + data.updater.insert(data.entity, Attacking { + base_damage: damage as u32, + base_heal: 0, + range: self.range, + max_angle: self.max_angle.to_radians(), + applied: false, + hit_count: 0, + knockback: self.initial_knockback + + charge_amount * (self.max_knockback - self.initial_knockback), + }); + + update.character = CharacterState::ChargedMelee(Data { + exhausted: true, + energy_drain: self.energy_drain, + initial_damage: self.initial_damage, + max_damage: self.max_damage, + initial_knockback: self.initial_knockback, + max_knockback: self.max_knockback, + prepare_duration: self.prepare_duration, + charge_timer: self.charge_timer, + charge_duration: self.charge_duration, + recover_duration: self.recover_duration, + range: self.range, + max_angle: self.max_angle, + }); + } else if self.recover_duration != Duration::default() { + // Recovery + update.character = CharacterState::ChargedMelee(Data { + exhausted: self.exhausted, + energy_drain: self.energy_drain, + initial_damage: self.initial_damage, + max_damage: self.max_damage, + initial_knockback: self.initial_knockback, + max_knockback: self.max_knockback, + prepare_duration: self.prepare_duration, + charge_timer: self.charge_timer, + charge_duration: self.charge_duration, + recover_duration: self + .recover_duration + .checked_sub(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + range: self.range, + max_angle: self.max_angle, + }); + } else { + // Done + update.character = CharacterState::Wielding; + // Make sure attack component is removed + data.updater.remove::<Attacking>(data.entity); + } + + update + } +} diff --git a/common/src/states/leap_melee.rs b/common/src/states/leap_melee.rs index 5575c110b7..fbae6da4c0 100644 --- a/common/src/states/leap_melee.rs +++ b/common/src/states/leap_melee.rs @@ -7,9 +7,8 @@ use serde::{Deserialize, Serialize}; use std::time::Duration; use vek::Vec3; -const LEAP_SPEED: f32 = 24.0; - -#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)] +#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] +//#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)] pub struct Data { /// How long the state is moving pub movement_duration: Duration, @@ -21,6 +20,14 @@ pub struct Data { pub base_damage: u32, /// Whether the attack can deal more damage pub exhausted: bool, + /// Max range + pub range: f32, + /// Max angle (45.0 will give you a 90.0 angle window) + pub max_angle: f32, + /// Leap speed + pub leap_speed: f32, + /// Leap vertical speed? + pub leap_vert_speed: f32, pub initialize: bool, } @@ -37,13 +44,17 @@ impl CharacterBehavior for Data { if self.movement_duration != Duration::default() { // Jumping - update.vel.0 = Vec3::new(data.inputs.look_dir.x, data.inputs.look_dir.y, 8.0) - * ((self.movement_duration.as_millis() as f32) / 250.0) + //update.vel.0 = Vec3::new(data.inputs.look_dir.x, data.inputs.look_dir.y, 8.0) + update.vel.0 = Vec3::new( + data.inputs.look_dir.x, + data.inputs.look_dir.y, + self.leap_vert_speed, + ) * ((self.movement_duration.as_millis() as f32) / 250.0) + (update.vel.0 * Vec3::new(2.0, 2.0, 0.0) + 0.25 * data.inputs.move_dir.try_normalized().unwrap_or_default()) .try_normalized() .unwrap_or_default() - * LEAP_SPEED + * self.leap_speed * (1.0 - data.inputs.look_dir.z.abs()); update.character = CharacterState::LeapMelee(Data { @@ -55,6 +66,10 @@ impl CharacterBehavior for Data { recover_duration: self.recover_duration, base_damage: self.base_damage, exhausted: false, + range: self.range, + max_angle: self.max_angle, + leap_speed: self.leap_speed, + leap_vert_speed: self.leap_vert_speed, initialize: false, }); } else if self.buildup_duration != Duration::default() && !data.physics.on_ground { @@ -68,6 +83,10 @@ impl CharacterBehavior for Data { recover_duration: self.recover_duration, base_damage: self.base_damage, exhausted: false, + range: self.range, + max_angle: self.max_angle, + leap_speed: self.leap_speed, + leap_vert_speed: self.leap_vert_speed, initialize: false, }); } else if !self.exhausted { @@ -75,8 +94,9 @@ impl CharacterBehavior for Data { data.updater.insert(data.entity, Attacking { base_damage: self.base_damage, base_heal: 0, - range: 4.5, - max_angle: 360_f32.to_radians(), + range: self.range, + //range: 4.5, + max_angle: self.max_angle.to_radians(), applied: false, hit_count: 0, knockback: 25.0, @@ -88,6 +108,10 @@ impl CharacterBehavior for Data { recover_duration: self.recover_duration, base_damage: self.base_damage, exhausted: true, + range: self.range, + max_angle: self.max_angle, + leap_speed: self.leap_speed, + leap_vert_speed: self.leap_vert_speed, initialize: false, }); } else if self.recover_duration != Duration::default() { @@ -102,6 +126,10 @@ impl CharacterBehavior for Data { .unwrap_or_default(), base_damage: self.base_damage, exhausted: true, + range: self.range, + max_angle: self.max_angle, + leap_speed: self.leap_speed, + leap_vert_speed: self.leap_vert_speed, initialize: false, }); } else { diff --git a/common/src/states/mod.rs b/common/src/states/mod.rs index 85474faa90..a93df8c30c 100644 --- a/common/src/states/mod.rs +++ b/common/src/states/mod.rs @@ -3,6 +3,7 @@ pub mod basic_block; pub mod basic_melee; pub mod basic_ranged; pub mod boost; +pub mod charged_melee; pub mod charged_ranged; pub mod climb; pub mod combo_melee; @@ -14,6 +15,7 @@ pub mod glide_wield; pub mod ground_shockwave; pub mod idle; pub mod leap_melee; +pub mod repeater_ranged; pub mod roll; pub mod sit; pub mod sneak; diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs new file mode 100644 index 0000000000..25d321aa29 --- /dev/null +++ b/common/src/states/repeater_ranged.rs @@ -0,0 +1,153 @@ +use crate::{ + comp::{Body, CharacterState, Gravity, LightEmitter, Projectile, StateUpdate}, + event::ServerEvent, + states::utils::*, + sys::character_behavior::*, +}; +use serde::{Deserialize, Serialize}; +use std::time::Duration; +use vek::Vec3; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct Data { + /// How long the state is moving + pub movement_duration: Duration, + /// Can you hold the ability beyond the prepare duration + pub holdable: bool, + /// How long we have to prepare the weapon + pub prepare_duration: Duration, + /// How long we prepared the weapon already + pub prepare_timer: Duration, + /// How long the state has until exiting + pub recover_duration: Duration, + pub projectile: Projectile, + pub projectile_body: Body, + pub projectile_light: Option<LightEmitter>, + pub projectile_gravity: Option<Gravity>, + pub projectile_speed: f32, + /// Whether the attack fired already + pub exhausted: bool, + /// How many times to repeat + pub repetitions: u32, + /// Current repetition + pub current_rep: u32, + pub initialize: bool, +} + +impl CharacterBehavior for Data { + fn behavior(&self, data: &JoinData) -> StateUpdate { + let mut update = StateUpdate::from(data); + + handle_move(data, &mut update, 1.0); + handle_jump(data, &mut update); + + if !self.exhausted + && if self.holdable { + data.inputs.holding_ability_key() || self.prepare_timer < self.prepare_duration + } else { + self.prepare_timer < self.prepare_duration + } + { + // Prepare (draw the bow) + update.character = CharacterState::RepeaterRanged(Data { + movement_duration: self.movement_duration, + prepare_timer: self.prepare_timer + Duration::from_secs_f32(data.dt.0), + holdable: self.holdable, + prepare_duration: self.prepare_duration, + recover_duration: self.recover_duration, + projectile: self.projectile.clone(), + projectile_body: self.projectile_body, + projectile_light: self.projectile_light, + projectile_gravity: self.projectile_gravity, + projectile_speed: self.projectile_speed, + exhausted: false, + repetitions: self.repetitions, + current_rep: self.current_rep, + initialize: false, + }); + } else if self.movement_duration != Duration::default() { + // Jumping + update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 10.0); + + update.character = CharacterState::RepeaterRanged(Data { + movement_duration: self + .movement_duration + .checked_sub(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + prepare_timer: self.prepare_timer, + holdable: self.holdable, + prepare_duration: self.prepare_duration, + recover_duration: self.recover_duration, + projectile: self.projectile.clone(), + projectile_body: self.projectile_body, + projectile_light: self.projectile_light, + projectile_gravity: self.projectile_gravity, + projectile_speed: self.projectile_speed, + exhausted: false, + repetitions: self.repetitions, + current_rep: self.current_rep, + initialize: false, + }); + } else if !self.exhausted && self.current_rep < self.repetitions { + let mut projectile = self.projectile.clone(); + projectile.owner = Some(*data.uid); + update.server_events.push_front(ServerEvent::Shoot { + entity: data.entity, + dir: data.inputs.look_dir, + body: self.projectile_body, + projectile, + light: self.projectile_light, + gravity: self.projectile_gravity, + speed: self.projectile_speed, + }); + + update.character = CharacterState::RepeaterRanged(Data { + movement_duration: self.movement_duration, + prepare_timer: self.prepare_timer, + holdable: self.holdable, + prepare_duration: self.prepare_duration, + //recover_duration: self.recover_duration, + recover_duration: self + .recover_duration + .checked_sub(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + projectile: self.projectile.clone(), + projectile_body: self.projectile_body, + projectile_light: self.projectile_light, + projectile_gravity: self.projectile_gravity, + projectile_speed: self.projectile_speed, + exhausted: false, + repetitions: self.repetitions, + current_rep: self.current_rep + 1, + initialize: false, + }); + } else if self.recover_duration != Duration::default() { + // Recovery + update.character = CharacterState::RepeaterRanged(Data { + movement_duration: Duration::default(), + prepare_timer: self.prepare_timer, + holdable: self.holdable, + prepare_duration: self.prepare_duration, + recover_duration: self + .recover_duration + .checked_sub(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + projectile: self.projectile.clone(), + projectile_body: self.projectile_body, + projectile_light: self.projectile_light, + projectile_gravity: self.projectile_gravity, + projectile_speed: self.projectile_speed, + exhausted: true, + repetitions: self.repetitions, + current_rep: 0, + initialize: false, + }); + return update; + } else { + // Done + update.character = CharacterState::Wielding; + } + + update + } +} diff --git a/common/src/sys/character_behavior.rs b/common/src/sys/character_behavior.rs index 4ec197b19e..83aebf3912 100644 --- a/common/src/sys/character_behavior.rs +++ b/common/src/sys/character_behavior.rs @@ -261,7 +261,9 @@ impl<'a> System<'a> for Sys { CharacterState::DashMelee(data) => data.handle_event(&j, action), CharacterState::LeapMelee(data) => data.handle_event(&j, action), CharacterState::SpinMelee(data) => data.handle_event(&j, action), + CharacterState::ChargedMelee(data) => data.handle_event(&j, action), CharacterState::ChargedRanged(data) => data.handle_event(&j, action), + CharacterState::RepeaterRanged(data) => data.handle_event(&j, action), CharacterState::GroundShockwave(data) => data.handle_event(&j, action), CharacterState::BasicBeam(data) => data.handle_event(&j, action), }; @@ -291,7 +293,9 @@ impl<'a> System<'a> for Sys { CharacterState::DashMelee(data) => data.behavior(&j), CharacterState::LeapMelee(data) => data.behavior(&j), CharacterState::SpinMelee(data) => data.behavior(&j), + CharacterState::ChargedMelee(data) => data.behavior(&j), CharacterState::ChargedRanged(data) => data.behavior(&j), + CharacterState::RepeaterRanged(data) => data.behavior(&j), CharacterState::GroundShockwave(data) => data.behavior(&j), CharacterState::BasicBeam(data) => data.behavior(&j), }; diff --git a/common/src/sys/stats.rs b/common/src/sys/stats.rs index 9fe746effa..2590eb2f52 100644 --- a/common/src/sys/stats.rs +++ b/common/src/sys/stats.rs @@ -112,7 +112,9 @@ impl<'a> System<'a> for Sys { | CharacterState::SpinMelee { .. } | CharacterState::ComboMelee { .. } | CharacterState::BasicRanged { .. } + | CharacterState::ChargedMelee { .. } | CharacterState::ChargedRanged { .. } + | CharacterState::RepeaterRanged { .. } | CharacterState::GroundShockwave { .. } | CharacterState::BasicBeam { .. } => { if energy.get_unchecked().regen_rate != 0.0 { diff --git a/voxygen/src/anim/src/character/charge.rs b/voxygen/src/anim/src/character/charge.rs index 942bc0e2d8..df0a4dcdc4 100644 --- a/voxygen/src/anim/src/character/charge.rs +++ b/voxygen/src/anim/src/character/charge.rs @@ -147,6 +147,22 @@ impl Animation for ChargeAnimation { * Quaternion::rotation_z(stop * -0.6); next.control.scale = Vec3::one(); }, + Some(ToolKind::Hammer(_)) => { + next.l_hand.position = Vec3::new(-8.0, -2.0 + stop * -1.0, 13.0); + next.l_hand.orientation = Quaternion::rotation_x(2.1) + * Quaternion::rotation_y(0.7) + * Quaternion::rotation_z(-0.3); + next.l_hand.scale = Vec3::one() * 1.05; + next.r_hand.position = Vec3::new(-11.0, 2.0, 6.0); + next.r_hand.orientation = Quaternion::rotation_x(1.8) + * Quaternion::rotation_y(2.3) + * Quaternion::rotation_z(0.3); + next.r_hand.scale = Vec3::one() * 1.05; + next.main.position = Vec3::new(-12.0, 1.0, 4.0); + next.main.orientation = Quaternion::rotation_x(0.3) + * Quaternion::rotation_y(0.3) + * Quaternion::rotation_z(0.6); + }, _ => {}, } diff --git a/voxygen/src/anim/src/character/leapmelee.rs b/voxygen/src/anim/src/character/leapmelee.rs index dada5b978d..41d0739138 100644 --- a/voxygen/src/anim/src/character/leapmelee.rs +++ b/voxygen/src/anim/src/character/leapmelee.rs @@ -2,6 +2,7 @@ use super::{super::Animation, CharacterSkeleton, SkeletonAttr}; use common::comp::item::{Hands, ToolKind}; /* use std::f32::consts::PI; */ use super::super::vek::*; +use std::f32::consts::PI; pub struct LeapAnimation; @@ -31,6 +32,19 @@ impl Animation for LeapAnimation { .sqrt()) * ((anim_time as f32 * lab as f32 * 4.0).sin()); + // Spin stuff here + let foot = (((5.0) + / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 10.32).sin()); + + let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); + + let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); + let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); + + // end spin stuff + if let Some(ToolKind::Hammer(_)) = active_tool_kind { next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); @@ -94,16 +108,119 @@ impl Animation for LeapAnimation { * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); next.control.scale = Vec3::one(); + + next.lantern.position = Vec3::new( + skeleton_attr.lantern.0, + skeleton_attr.lantern.1, + skeleton_attr.lantern.2, + ); + next.glider.position = Vec3::new(0.0, 0.0, 10.0); + next.glider.scale = Vec3::one() * 0.0; + next.l_control.scale = Vec3::one(); + next.r_control.scale = Vec3::one(); + + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.torso.orientation = Quaternion::rotation_z(0.0); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + } else if let Some(ToolKind::Axe(_)) = active_tool_kind { + //INTENTION: SWORD + next.l_hand.position = Vec3::new(-0.75, -1.0, -2.5); + next.l_hand.orientation = Quaternion::rotation_x(1.27); + next.l_hand.scale = Vec3::one() * 1.04; + next.r_hand.position = Vec3::new(0.75, -1.5, -5.5); + next.r_hand.orientation = Quaternion::rotation_x(1.27); + next.r_hand.scale = Vec3::one() * 1.05; + //next.main.position = Vec3::new(0.0, 0.0, 10.0); + next.main.position = Vec3::new(0.0, 0.0, -5.0); + next.main.orientation = Quaternion::rotation_x(1.6) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(-0.4); + next.main.scale = Vec3::one(); + + next.control.position = Vec3::new(-4.5 + spinhalf * 4.0, 11.0, 8.0); + next.control.orientation = Quaternion::rotation_x(0.6 + spinhalf * -3.3) + * Quaternion::rotation_y(0.2 + spin * -2.0) + * Quaternion::rotation_z(1.4 + spin * 0.1); + next.control.scale = Vec3::one(); + next.head.position = Vec3::new( + 0.0, + -2.0 + skeleton_attr.head.0 + spin * -0.8, + skeleton_attr.head.1, + ); + next.head.orientation = Quaternion::rotation_z(spin * -0.25) + * Quaternion::rotation_x(0.0 + spin * -0.1) + * Quaternion::rotation_y(spin * -0.2); + next.chest.position = Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1); + next.chest.orientation = Quaternion::rotation_z(spin * 0.1) + * Quaternion::rotation_x(0.0 + spin * 0.1) + * Quaternion::rotation_y(decel * -0.2); + next.chest.scale = Vec3::one(); + + next.belt.position = Vec3::new(0.0, 0.0, -2.0); + next.belt.orientation = next.chest.orientation * -0.1; + next.belt.scale = Vec3::one(); + + next.shorts.position = Vec3::new(0.0, 0.0, -5.0); + next.belt.orientation = next.chest.orientation * -0.08; + next.shorts.scale = Vec3::one(); + next.torso.position = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; + next.torso.orientation = Quaternion::rotation_z((spin * 7.0).max(0.3)) + * Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(0.3); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + + // Stuff after the branch in the spin animation file + + next.l_foot.position = + Vec3::new(-skeleton_attr.foot.0, foot * 1.0, skeleton_attr.foot.2); + next.l_foot.orientation = Quaternion::rotation_x(foot * -1.2); + next.l_foot.scale = Vec3::one(); + + next.r_foot.position = + Vec3::new(skeleton_attr.foot.0, foot * -1.0, skeleton_attr.foot.2); + next.r_foot.orientation = Quaternion::rotation_x(foot * 1.2); + next.r_foot.scale = Vec3::one(); + + next.l_shoulder.position = Vec3::new(-5.0, 0.0, 4.7); + next.l_shoulder.orientation = Quaternion::rotation_x(0.0); + next.l_shoulder.scale = Vec3::one() * 1.1; + + next.r_shoulder.position = Vec3::new(5.0, 0.0, 4.7); + next.r_shoulder.orientation = Quaternion::rotation_x(0.0); + next.r_shoulder.scale = Vec3::one() * 1.1; + + next.glider.position = Vec3::new(0.0, 5.0, 0.0); + next.glider.orientation = Quaternion::rotation_y(0.0); + next.glider.scale = Vec3::one() * 0.0; + + next.lantern.position = Vec3::new( + skeleton_attr.lantern.0, + skeleton_attr.lantern.1, + skeleton_attr.lantern.2, + ); + next.lantern.orientation = + Quaternion::rotation_x(spin * -0.7 + 0.4) * Quaternion::rotation_y(spin * 0.4); + next.lantern.scale = Vec3::one() * 0.65; + next.hold.scale = Vec3::one() * 0.0; + + next.l_control.position = Vec3::new(0.0, 0.0, 0.0); + next.l_control.orientation = Quaternion::rotation_x(0.0); + next.l_control.scale = Vec3::one(); + + next.r_control.position = Vec3::new(0.0, 0.0, 0.0); + next.r_control.orientation = Quaternion::rotation_x(0.0); + next.r_control.scale = Vec3::one(); } - next.lantern.position = Vec3::new( - skeleton_attr.lantern.0, - skeleton_attr.lantern.1, - skeleton_attr.lantern.2, - ); - next.glider.position = Vec3::new(0.0, 0.0, 10.0); - next.glider.scale = Vec3::one() * 0.0; - next.l_control.scale = Vec3::one(); - next.r_control.scale = Vec3::one(); + + //next.lantern.position = Vec3::new( + // skeleton_attr.lantern.0, + // skeleton_attr.lantern.1, + // skeleton_attr.lantern.2, + //); + //next.glider.position = Vec3::new(0.0, 0.0, 10.0); + //next.glider.scale = Vec3::one() * 0.0; + //next.l_control.scale = Vec3::one(); + //next.r_control.scale = Vec3::one(); next.second.scale = match ( active_tool_kind.map(|tk| tk.hands()), @@ -113,9 +230,9 @@ impl Animation for LeapAnimation { (_, _) => Vec3::zero(), }; - next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.orientation = Quaternion::rotation_z(0.0); - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + //next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + //next.torso.orientation = Quaternion::rotation_z(0.0); + //next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; next } } diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index 899581ba4f..a3b00ce5bb 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -724,6 +724,13 @@ impl<'a> Widget for Skillbar<'a> { Color::Rgba(0.3, 0.3, 0.3, 0.8) } }, + Some(ToolKind::Axe(_)) => { + if self.energy.current() as f64 >= 100.0 { + Color::Rgba(1.0, 1.0, 1.0, 1.0) + } else { + Color::Rgba(0.3, 0.3, 0.3, 0.8) + } + }, _ => Color::Rgba(1.0, 1.0, 1.0, 1.0), }) .set(state.ids.m2_content, ui); @@ -785,6 +792,14 @@ impl<'a> Widget for Skillbar<'a> { .map(|i| i.item.kind()) .and_then(|kind| match kind { ItemKind::Tool(Tool { kind, .. }) => match kind { + ToolKind::Hammer(_) => Some(( + "Smash of Doom", + "\nAn AOE attack with knockback. \nLeaps to position of \ + cursor.", + )), + ToolKind::Axe(_) => { + Some(("Spin Leap", "\nA slashing running spin leap.")) + }, ToolKind::Staff(_) => Some(( "Firebomb", "\nWhirls a big fireball into the air. \nExplodes the ground \ From 7e5ced158b1fa4d8f5e6c782ce393e75c2d0ba2f Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Mon, 21 Sep 2020 13:45:50 -0700 Subject: [PATCH 02/23] Add skillbar stuff for 3rd skills --- .../element/icons/skill_axe_leap_slash.png | Bin 0 -> 789 bytes .../element/icons/skill_bow_jump_burst.png | Bin 0 -> 675 bytes .../element/icons/skill_hammergolf.png | Bin 0 -> 982 bytes common/src/comp/ability.rs | 3 + common/src/comp/inventory/item/tool.rs | 5 +- common/src/states/repeater_ranged.rs | 10 +++- voxygen/src/hud/hotbar.rs | 3 + voxygen/src/hud/img_ids.rs | 5 +- voxygen/src/hud/skillbar.rs | 7 ++- voxygen/src/hud/slots.rs | 33 +++++++++-- voxygen/src/scene/figure/mod.rs | 52 ++++++++++++++++++ 11 files changed, 109 insertions(+), 9 deletions(-) create mode 100644 assets/voxygen/element/icons/skill_axe_leap_slash.png create mode 100644 assets/voxygen/element/icons/skill_bow_jump_burst.png create mode 100644 assets/voxygen/element/icons/skill_hammergolf.png diff --git a/assets/voxygen/element/icons/skill_axe_leap_slash.png b/assets/voxygen/element/icons/skill_axe_leap_slash.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf85d48a98b35947cfcf97a9ed51059f1477f06 GIT binary patch literal 789 zcmV+w1M2*VP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkvmAkP!xv$riu?*94sQ@kfAzR5EXIMDionYs1;guFuCaqnlvOS zE{=k0!NJF3)xpJCR|i)?5PX0*IXWr2NQvhrg%&X$xZIEbp8x0Ga{-}VW}4M84rsb< zrV?>6lU)_NUeSXv0vG^fW*Kvml!R}6-BTykU5sb>_x)L6HD@s(AQI0q!?cMvh^IGg zgY!OdgcW6#_?&pmqze*1a$WKGjdQ_efoDd{bZVYBLM#^ASZQNcG&SNW;;5?WlrLmF zRyl8R*2-1ZyeEHQD5tM1bDh>O5?I6%B#2N@MG0lth|#W-Vj)H6aUcJX>zBx-kgEhn zjs;YpL3aJ%fAD*@R(^8AOA5t-&KJk|7y-I=fkw@7zK<QJaRLONfh)b`uhfB=Ptt2G zEqVm>Z37qAElt@2E_Z;zCqp)6R|?V+@_FF>jJ_!g^xp!#Yu?<N=Qw=;(lo2&4RCM> zj20++-RIri?Q{FLr#ZhL+Rt)oV4lr|00006VoOIv0PFx707(kgPBQ=i010qNS#tmY zE+YT{E+YYWr9XB6000McNliru<OvM{9swNxEam_J02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008YtL_t(I%dJ(x4Z|P|v=Iv+<-rOJkwr3KR_Fj3f(<Hu zY!LdWjI0X~s>Tu$T;S|GCxnTJg3pB>h?pF+COgbV>$%st1Y)B-W;VM{rUNlMB54t{ z66r9ro7Z!%Ys7V8{<k4$g%MCjPs(iAU;LWszQv75+#={DKg{-(jK<z|8|~5O?TlX| znHbYumTtDlyDxT3j`g=4ljGoXiOKOoM8Q*8-mi)gIl9~hdJ%jsGW4?%hUbl5NQHQC zgoz5ms<iYL$!M;5noZGO>I$@{y?az7GfF@U?w-qB2n$wq@dmtZRbDH5@)z&{e$C}2 TnuAt^00000NkvXXu0mjf!>3H@ literal 0 HcmV?d00001 diff --git a/assets/voxygen/element/icons/skill_bow_jump_burst.png b/assets/voxygen/element/icons/skill_bow_jump_burst.png new file mode 100644 index 0000000000000000000000000000000000000000..cc77937ec3f76328e291a0b11eb44e9589289180 GIT binary patch literal 675 zcmV;U0$lxxP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ>7{u2O~&vh)|s@h>AFB6^c+H)C#RSn2&xzlZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2EW9Gw(hq{ROvg%&X$9QWhhy~o`<fUB1k&FUBjG~G5+ ziMWu-t_q=7bYlQKA{dqw%a{|zBz(u$JpydKi?J;KbAOIrHD@V6Kp>t~4AUmwAfDc| z4aWP#yi$}@;&b9LlP*a7$aLA`H^v2*IhM(r>C`+iPb?JLSZ-sbXlle$#8Fk#DWA)D ztTNtWtd*-u^PcR5;hes*%ygPVNMI355FtQD6(y8mBSx!EiiH&I$9?<}*DsPwCRYgx zITlcX2Fdk<{lV{Ut^DMKmlTczoiC2_F#?2kfkw@7zK<QJaRLONfh)b`uhfB=Ptt2G zEqVm>Z37qAElu77E_Z;zCqptNR|?YP@_FF>jJ_!g^xpzKYhG{7eVjf3Y3eF@0~{Oz zqXo)d_jz|$dvE`qY4-O6dZKcwLLXl900006VoOIv0PFx707(kgPBQ=i010qNS#tmY zE+YT{E+YYWr9XB6000McNliru<OvlN91~J7A;$m!02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004VQL_t(I%VS^|*+5g`{eMc$V4}98Sa7-Y`U^ouWEz_~ zbh+y<1R0r#@#^&#f{fT`ba@mnqZ>*}cv2(maT-STNMRbZ>2L6Q8E2$uO1%FM!^jGe zX>4qCLz$2hCwhX#mB8__nW!C+7+xku6S_~Z=_T29RLySq007L}TMM}<!<hg8002ov JPDHLkV1lEa5_JFo literal 0 HcmV?d00001 diff --git a/assets/voxygen/element/icons/skill_hammergolf.png b/assets/voxygen/element/icons/skill_hammergolf.png new file mode 100644 index 0000000000000000000000000000000000000000..74bcf2fc32595d5584a189b6f4b628b867d25f78 GIT binary patch literal 982 zcmV;{11bE8P)<h;3K|Lk000e1NJLTq000yK000yS0ssI20_%!e0004lX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ%hAU4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0HIN3n$<N1Xu54? zQb{qFUlGHv=s^fk2#CwfGG-+y4d3x~j{slq5<JWQ+@GUQEm#Z)h{Q9@Fm2*>;;BvB z;Ji;9V`W(-J|`YE>4L<MTvt4P<6LrC;F&Qqo0%hy5sRe`RyvrKO^tYxIIe0s<qJ8F zRnA+SwQ7yE?#W*mDd@{fT&FpN6c(@u2_h8KP(c+o613{1Sjf<R(#JpO`XzEH<f?#? zV;&pOAiI9>Klt6PRh$_2k|IeU^x`-l!$5c!Xx1I)``B@sCqVESxYFDHjRr9NNqW7l z#gBmgZQ$a%ttorJ<qk0LWXPuMN<o@Ju?W1M(KqFR=q=E@>h;#z$LRx*rLNL9z`-Ff zQljiNpLch6_V(|YR)0SmfO3RCTdwK=000SaNLh0L04^f{04^f|c%?sf00007bV*G` z2jmF_69pU$+0;}3000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0005O zNkl<ZILm#LKTcyY5XOIwXjgiv!U+%sLP8v2ImBxt4nXhJ<Px+r6!a)^x^3M=j<kCN zhbARbQhZyCpP!ROJ906$XTJISIY~Ijw-N%t!vhkF1;BC%5F_vJz{U5TeP4|3?}2k0 zdjtfEQKr<B^U2i=VpPuKS4tOzz<ytlQsU-jKpo1Fc00(L%_zxBY`0up4cL-W(&3;G z)c0DgBnkBKA;~Y~7n1k#UJ{+?6r-FZi{z#N+VgK0Tqi)kcYwQ|RkMk?xhdMCUt5mH z(&QNN9^i0@YXB}U*=$ZwV-%f=fKpNj3PDooO-jYad*y67TiRF+R=K^J#3)Hxt*j$- zQqJ<eI!l^Z{I9t$N!D5Z#7*J$w!Z(_09Xmymx+i@{zq2MwS+b|n{d%per@u!rZpc! zDc2Ab!U)t<S9YaBlx5NgBrxaNj-o@eB(3CZy_NSR-8zECcrxsPD`&kfOY-^2@yK#H z(qNeFs4E14-rmYo>^iJ|iPMtg^|k6wm8&Mt&m#w0o}2}@bViD`bnAP)yqr)nMtQHc zM?m4q8G-+Ea@OOco}MHPt*fZ>`H5-Ue0%X;cX#Ie7dILYNpPW?i~s-t07*qoM6N<$ Eg8Y2IS^xk5 literal 0 HcmV?d00001 diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index c07beab4a0..4a29cd0434 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -86,6 +86,7 @@ pub enum CharacterAbility { projectile_speed: f32, repetitions: u32, current_rep: u32, + leap: bool, }, Boost { duration: Duration, @@ -587,6 +588,7 @@ impl From<&CharacterAbility> for CharacterState { projectile_speed, repetitions, current_rep, + leap, } => CharacterState::RepeaterRanged(repeater_ranged::Data { exhausted: false, prepare_timer: Duration::default(), @@ -602,6 +604,7 @@ impl From<&CharacterAbility> for CharacterState { repetitions: *repetitions, current_rep: *current_rep, initialize: true, + leap: *leap, }), CharacterAbility::GroundShockwave { energy_cost: _, diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 2c9cde6b8a..50ae1de5d3 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -322,10 +322,10 @@ impl Tool { max_projectile_speed: 500.0, }, RepeaterRanged { - energy_cost: 400, + energy_cost: 200, holdable: true, movement_duration: Duration::from_millis(200), - prepare_duration: Duration::from_millis(1000), + prepare_duration: Duration::from_millis(500), recover_duration: Duration::from_millis(1000), projectile: Projectile { hit_solid: vec![projectile::Effect::Stick], @@ -345,6 +345,7 @@ impl Tool { projectile_speed: 100.0, repetitions: 4, current_rep: 0, + leap: true, }, ], Dagger(_) => vec![BasicMelee { diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index 25d321aa29..26086e8762 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -32,6 +32,8 @@ pub struct Data { /// Current repetition pub current_rep: u32, pub initialize: bool, + /// Whether there should be a jump + pub leap: bool, } impl CharacterBehavior for Data { @@ -64,10 +66,13 @@ impl CharacterBehavior for Data { repetitions: self.repetitions, current_rep: self.current_rep, initialize: false, + leap: self.leap, }); } else if self.movement_duration != Duration::default() { // Jumping - update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 10.0); + if self.leap { + update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 10.0); + } update.character = CharacterState::RepeaterRanged(Data { movement_duration: self @@ -87,6 +92,7 @@ impl CharacterBehavior for Data { repetitions: self.repetitions, current_rep: self.current_rep, initialize: false, + leap: self.leap, }); } else if !self.exhausted && self.current_rep < self.repetitions { let mut projectile = self.projectile.clone(); @@ -120,6 +126,7 @@ impl CharacterBehavior for Data { repetitions: self.repetitions, current_rep: self.current_rep + 1, initialize: false, + leap: self.leap, }); } else if self.recover_duration != Duration::default() { // Recovery @@ -141,6 +148,7 @@ impl CharacterBehavior for Data { repetitions: self.repetitions, current_rep: 0, initialize: false, + leap: self.leap, }); return update; } else { diff --git a/voxygen/src/hud/hotbar.rs b/voxygen/src/hud/hotbar.rs index 321b6451d2..e17245c2a8 100644 --- a/voxygen/src/hud/hotbar.rs +++ b/voxygen/src/hud/hotbar.rs @@ -81,6 +81,9 @@ impl State { ToolKind::Staff(_) => true, ToolKind::Debug(kind) => kind == "Boost", ToolKind::Sword(_) => true, + ToolKind::Hammer(_) => true, + ToolKind::Axe(_) => true, + ToolKind::Bow(_) => true, _ => false, } } else { diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index 7dbe148a98..9279c52b21 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -140,7 +140,7 @@ image_ids! { flyingrod_m1: "voxygen.element.icons.debug_wand_m1", flyingrod_m2: "voxygen.element.icons.debug_wand_m2", sword_pierce: "voxygen.element.icons.skill_sword_pierce", - hammerleap: "voxygen.element.icons.skill_hammerleap", + hammergolf: "voxygen.element.icons.skill_hammergolf", axespin: "voxygen.element.icons.skill_axespin", // Skillbar @@ -277,6 +277,9 @@ image_ids! { heal_0: "voxygen.element.icons.heal_0", sword_whirlwind: "voxygen.element.icons.sword_whirlwind", heal_bomb: "voxygen.element.icons.heal_bomb", + hammerleap: "voxygen.element.icons.skill_hammerleap", + skill_axe_leap_slash: "voxygen.element.icons.skill_axe_leap_slash", + skill_bow_jump_burst: "voxygen.element.icons.skill_bow_jump_burst", // Buttons button: "voxygen.element.buttons.button", diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index a3b00ce5bb..064157c5e9 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -696,7 +696,8 @@ impl<'a> Widget for Skillbar<'a> { Some(ToolKind::Sword(_)) => self.imgs.twohsword_m2, Some(ToolKind::Dagger(_)) => self.imgs.onehdagger_m2, Some(ToolKind::Shield(_)) => self.imgs.onehshield_m2, - Some(ToolKind::Hammer(_)) => self.imgs.hammerleap, + //Some(ToolKind::Hammer(_)) => self.imgs.hammerleap, + Some(ToolKind::Hammer(_)) => self.imgs.hammergolf, Some(ToolKind::Axe(_)) => self.imgs.axespin, Some(ToolKind::Bow(_)) => self.imgs.bow_m2, Some(ToolKind::Sceptre(_)) => self.imgs.heal_bomb, @@ -809,6 +810,10 @@ impl<'a> Widget for Skillbar<'a> { "Whirlwind", "\nMove forward while spinning with \n your sword.", )), + ToolKind::Bow(_) => Some(( + "Burst", + "\nLaunches a burst of arrows at the top \nof a running leap.", + )), ToolKind::Debug(kind) => match kind.as_ref() { "Boost" => Some(( "Possessing Arrow", diff --git a/voxygen/src/hud/slots.rs b/voxygen/src/hud/slots.rs index f365cf8087..f03a758426 100644 --- a/voxygen/src/hud/slots.rs +++ b/voxygen/src/hud/slots.rs @@ -85,6 +85,9 @@ pub enum HotbarImage { Fireball, SnakeArrow, SwordWhirlwind, + HammerLeap, + AxeLeapSlash, + BowJumpBurst, } type HotbarSource<'a> = (&'a hotbar::State, &'a Inventory, &'a Loadout, &'a Energy); @@ -110,6 +113,9 @@ impl<'a> SlotKey<HotbarSource<'a>, HotbarImageSource<'a>> for HotbarSlot { match kind { ItemKind::Tool(Tool { kind, .. }) => match kind { ToolKind::Staff(_) => Some(HotbarImage::Fireball), + ToolKind::Hammer(_) => Some(HotbarImage::HammerLeap), + ToolKind::Axe(_) => Some(HotbarImage::AxeLeapSlash), + ToolKind::Bow(_) => Some(HotbarImage::BowJumpBurst), ToolKind::Debug(kind) => match kind.as_ref() { "Boost" => Some(HotbarImage::SnakeArrow), _ => None, @@ -119,11 +125,27 @@ impl<'a> SlotKey<HotbarSource<'a>, HotbarImageSource<'a>> for HotbarSlot { }, _ => None, } - .map(|image_key| { - ( + .map(|image_key| match image_key { + HotbarImage::Fireball => ( image_key, - (energy.current() < 500).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), - ) + (energy.current() < 450).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), + ), + HotbarImage::HammerLeap => ( + image_key, + (energy.current() < 700).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), + ), + HotbarImage::AxeLeapSlash => ( + image_key, + (energy.current() < 300).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), + ), + HotbarImage::BowJumpBurst => ( + image_key, + (energy.current() < 200).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), + ), + _ => ( + image_key, + (energy.current() < 1000).then_some(Color::Rgba(1.0, 1.0, 1.0, 1.0)), + ), }) }), }) @@ -146,6 +168,9 @@ impl<'a> SlotKey<HotbarSource<'a>, HotbarImageSource<'a>> for HotbarSlot { HotbarImage::SnakeArrow => imgs.snake_arrow_0, HotbarImage::Fireball => imgs.fire_spell_1, HotbarImage::SwordWhirlwind => imgs.sword_whirlwind, + HotbarImage::HammerLeap => imgs.hammerleap, + HotbarImage::AxeLeapSlash => imgs.skill_axe_leap_slash, + HotbarImage::BowJumpBurst => imgs.skill_bow_jump_burst, } } } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index b128ec0b3a..cac9a0bb0d 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -848,6 +848,32 @@ impl FigureMgr { ) } }, + CharacterState::ChargedMelee(data) => { + if data.exhausted { + anim::character::AlphaAnimation::update_skeleton( + &target_base, + (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + } else { + anim::character::ChargeAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + second_tool_kind, + vel.0.magnitude(), + ori, + state.last_ori, + time, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + } + }, CharacterState::ChargedRanged(data) => { if data.exhausted { anim::character::ShootAnimation::update_skeleton( @@ -874,6 +900,32 @@ impl FigureMgr { ) } }, + CharacterState::RepeaterRanged(data) => { + if data.exhausted { + anim::character::ShootAnimation::update_skeleton( + &target_base, + (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + } else { + anim::character::ChargeAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + second_tool_kind, + vel.0.magnitude(), + ori, + state.last_ori, + time, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + } + }, CharacterState::Sneak { .. } => { anim::character::SneakAnimation::update_skeleton( &CharacterSkeleton::default(), From 973f59da6efcc86a98828a101144f011d66d8bd0 Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Thu, 24 Sep 2020 22:51:26 -0700 Subject: [PATCH 03/23] Addressed comments --- common/src/comp/ability.rs | 5 +- common/src/comp/inventory/item/tool.rs | 26 +++++---- common/src/states/charged_melee.rs | 2 +- common/src/states/leap_melee.rs | 12 ++-- common/src/states/repeater_ranged.rs | 80 +++++++++++++++----------- common/src/util/mod.rs | 2 +- voxygen/src/hud/skillbar.rs | 1 - voxygen/src/hud/slots.rs | 2 +- voxygen/src/scene/figure/mod.rs | 2 +- 9 files changed, 77 insertions(+), 55 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 4a29cd0434..bc54eb2b82 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -128,6 +128,7 @@ pub enum CharacterAbility { base_damage: u32, range: f32, max_angle: f32, + knockback: f32, leap_speed: f32, leap_vert_speed: f32, }, @@ -470,6 +471,7 @@ impl From<&CharacterAbility> for CharacterState { base_damage, range, max_angle, + knockback, leap_speed, leap_vert_speed, } => CharacterState::LeapMelee(leap_melee::Data { @@ -481,6 +483,7 @@ impl From<&CharacterAbility> for CharacterState { base_damage: *base_damage, range: *range, max_angle: *max_angle, + knockback: *knockback, leap_speed: *leap_speed, leap_vert_speed: *leap_vert_speed, }), @@ -590,7 +593,6 @@ impl From<&CharacterAbility> for CharacterState { current_rep, leap, } => CharacterState::RepeaterRanged(repeater_ranged::Data { - exhausted: false, prepare_timer: Duration::default(), holdable: *holdable, movement_duration: *movement_duration, @@ -603,7 +605,6 @@ impl From<&CharacterAbility> for CharacterState { projectile_speed: *projectile_speed, repetitions: *repetitions, current_rep: *current_rep, - initialize: true, leap: *leap, }), CharacterAbility::GroundShockwave { diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 50ae1de5d3..219368083e 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -227,15 +227,18 @@ impl Tool { num_spins: 1, }, LeapMelee { - energy_cost: 300, + energy_cost: 450, movement_duration: Duration::from_millis(200), buildup_duration: Duration::from_millis(1000), recover_duration: Duration::from_millis(600), - base_damage: (170.0 * self.base_power()) as u32, + base_damage: (160.0 * self.base_power()) as u32, range: 3.5, - max_angle: 50.0, - leap_speed: 20.0, - leap_vert_speed: 16.0, + max_angle: 120.0, + knockback: 15.0, + //leap_speed: 20.0, + leap_speed: 16.0, + leap_vert_speed: 6.0, + //leap_vert_speed: 16.0, }, ], Hammer(_) => vec![ @@ -269,8 +272,11 @@ impl Tool { base_damage: (240.0 * self.base_power()) as u32, range: 4.5, max_angle: 360.0, + knockback: 25.0, leap_speed: 24.0, - leap_vert_speed: 8.0, + //leap_speed: 24.0, + leap_vert_speed: 4.0, + //leap_vert_speed: 8.0, }, ], Farming(_) => vec![BasicMelee { @@ -322,11 +328,11 @@ impl Tool { max_projectile_speed: 500.0, }, RepeaterRanged { - energy_cost: 200, + energy_cost: 10, holdable: true, movement_duration: Duration::from_millis(200), - prepare_duration: Duration::from_millis(500), - recover_duration: Duration::from_millis(1000), + prepare_duration: Duration::from_millis(50), + recover_duration: Duration::from_millis(500), projectile: Projectile { hit_solid: vec![projectile::Effect::Stick], hit_entity: vec![ @@ -343,7 +349,7 @@ impl Tool { projectile_light: None, projectile_gravity: Some(Gravity(0.2)), projectile_speed: 100.0, - repetitions: 4, + repetitions: 5, current_rep: 0, leap: true, }, diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index 68b35f4b5d..b7a9fce9c9 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -42,7 +42,7 @@ impl CharacterBehavior for Data { handle_jump(data, &mut update); if self.prepare_duration != Duration::default() { - // Prepare (draw the bow) + // Prepare (draw back weapon) update.character = CharacterState::ChargedMelee(Data { exhausted: self.exhausted, energy_drain: self.energy_drain, diff --git a/common/src/states/leap_melee.rs b/common/src/states/leap_melee.rs index fbae6da4c0..4eea14cef5 100644 --- a/common/src/states/leap_melee.rs +++ b/common/src/states/leap_melee.rs @@ -24,6 +24,8 @@ pub struct Data { pub range: f32, /// Max angle (45.0 will give you a 90.0 angle window) pub max_angle: f32, + /// Knockback + pub knockback: f32, /// Leap speed pub leap_speed: f32, /// Leap vertical speed? @@ -44,12 +46,11 @@ impl CharacterBehavior for Data { if self.movement_duration != Duration::default() { // Jumping - //update.vel.0 = Vec3::new(data.inputs.look_dir.x, data.inputs.look_dir.y, 8.0) update.vel.0 = Vec3::new( data.inputs.look_dir.x, data.inputs.look_dir.y, self.leap_vert_speed, - ) * ((self.movement_duration.as_millis() as f32) / 250.0) + ) * (2.0) + (update.vel.0 * Vec3::new(2.0, 2.0, 0.0) + 0.25 * data.inputs.move_dir.try_normalized().unwrap_or_default()) .try_normalized() @@ -68,6 +69,7 @@ impl CharacterBehavior for Data { exhausted: false, range: self.range, max_angle: self.max_angle, + knockback: self.knockback, leap_speed: self.leap_speed, leap_vert_speed: self.leap_vert_speed, initialize: false, @@ -85,6 +87,7 @@ impl CharacterBehavior for Data { exhausted: false, range: self.range, max_angle: self.max_angle, + knockback: self.knockback, leap_speed: self.leap_speed, leap_vert_speed: self.leap_vert_speed, initialize: false, @@ -95,11 +98,10 @@ impl CharacterBehavior for Data { base_damage: self.base_damage, base_heal: 0, range: self.range, - //range: 4.5, max_angle: self.max_angle.to_radians(), applied: false, hit_count: 0, - knockback: 25.0, + knockback: self.knockback, }); update.character = CharacterState::LeapMelee(Data { @@ -110,6 +112,7 @@ impl CharacterBehavior for Data { exhausted: true, range: self.range, max_angle: self.max_angle, + knockback: self.knockback, leap_speed: self.leap_speed, leap_vert_speed: self.leap_vert_speed, initialize: false, @@ -128,6 +131,7 @@ impl CharacterBehavior for Data { exhausted: true, range: self.range, max_angle: self.max_angle, + knockback: self.knockback, leap_speed: self.leap_speed, leap_vert_speed: self.leap_vert_speed, initialize: false, diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index 26086e8762..e6580841ab 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -3,6 +3,7 @@ use crate::{ event::ServerEvent, states::utils::*, sys::character_behavior::*, + util::dir::*, }; use serde::{Deserialize, Serialize}; use std::time::Duration; @@ -25,13 +26,10 @@ pub struct Data { pub projectile_light: Option<LightEmitter>, pub projectile_gravity: Option<Gravity>, pub projectile_speed: f32, - /// Whether the attack fired already - pub exhausted: bool, /// How many times to repeat pub repetitions: u32, /// Current repetition pub current_rep: u32, - pub initialize: bool, /// Whether there should be a jump pub leap: bool, } @@ -43,7 +41,7 @@ impl CharacterBehavior for Data { handle_move(data, &mut update, 1.0); handle_jump(data, &mut update); - if !self.exhausted + if self.current_rep <= self.repetitions && if self.holdable { data.inputs.holding_ability_key() || self.prepare_timer < self.prepare_duration } else { @@ -62,10 +60,8 @@ impl CharacterBehavior for Data { projectile_light: self.projectile_light, projectile_gravity: self.projectile_gravity, projectile_speed: self.projectile_speed, - exhausted: false, repetitions: self.repetitions, current_rep: self.current_rep, - initialize: false, leap: self.leap, }); } else if self.movement_duration != Duration::default() { @@ -88,18 +84,58 @@ impl CharacterBehavior for Data { projectile_light: self.projectile_light, projectile_gravity: self.projectile_gravity, projectile_speed: self.projectile_speed, - exhausted: false, repetitions: self.repetitions, current_rep: self.current_rep, - initialize: false, leap: self.leap, }); - } else if !self.exhausted && self.current_rep < self.repetitions { + } else if self.recover_duration != Duration::default() { + // Hover + update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 0.0); + + // Recovery + update.character = CharacterState::RepeaterRanged(Data { + movement_duration: Duration::default(), + prepare_timer: self.prepare_timer, + holdable: self.holdable, + prepare_duration: self.prepare_duration, + recover_duration: self + .recover_duration + .checked_sub(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + projectile: self.projectile.clone(), + projectile_body: self.projectile_body, + projectile_light: self.projectile_light, + projectile_gravity: self.projectile_gravity, + projectile_speed: self.projectile_speed, + repetitions: self.repetitions, + current_rep: self.current_rep, + leap: self.leap, + }); + } else if self.current_rep < self.repetitions { + // Hover + update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 0.0); + + // Fire let mut projectile = self.projectile.clone(); projectile.owner = Some(*data.uid); update.server_events.push_front(ServerEvent::Shoot { entity: data.entity, - dir: data.inputs.look_dir, + dir: Dir::from_unnormalized(Vec3::new( + data.inputs.look_dir[0] + + (if self.current_rep % 2 == 0 { + self.current_rep as f32 / 400.0 + } else { + -1.0 * self.current_rep as f32 / 400.0 + }), + data.inputs.look_dir[1] + + (if self.current_rep % 2 == 0 { + -1.0 * self.current_rep as f32 / 400.0 + } else { + self.current_rep as f32 / 400.0 + }), + data.inputs.look_dir[2], + )) + .expect("That didn't work"), body: self.projectile_body, projectile, light: self.projectile_light, @@ -122,32 +158,8 @@ impl CharacterBehavior for Data { projectile_light: self.projectile_light, projectile_gravity: self.projectile_gravity, projectile_speed: self.projectile_speed, - exhausted: false, repetitions: self.repetitions, current_rep: self.current_rep + 1, - initialize: false, - leap: self.leap, - }); - } else if self.recover_duration != Duration::default() { - // Recovery - update.character = CharacterState::RepeaterRanged(Data { - movement_duration: Duration::default(), - prepare_timer: self.prepare_timer, - holdable: self.holdable, - prepare_duration: self.prepare_duration, - recover_duration: self - .recover_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - projectile: self.projectile.clone(), - projectile_body: self.projectile_body, - projectile_light: self.projectile_light, - projectile_gravity: self.projectile_gravity, - projectile_speed: self.projectile_speed, - exhausted: true, - repetitions: self.repetitions, - current_rep: 0, - initialize: false, leap: self.leap, }); return update; diff --git a/common/src/util/mod.rs b/common/src/util/mod.rs index 8c4578d4e9..94f04ea02c 100644 --- a/common/src/util/mod.rs +++ b/common/src/util/mod.rs @@ -1,5 +1,5 @@ mod color; -mod dir; +pub mod dir; mod option; pub mod userdata_dir; diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index 064157c5e9..706142badd 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -696,7 +696,6 @@ impl<'a> Widget for Skillbar<'a> { Some(ToolKind::Sword(_)) => self.imgs.twohsword_m2, Some(ToolKind::Dagger(_)) => self.imgs.onehdagger_m2, Some(ToolKind::Shield(_)) => self.imgs.onehshield_m2, - //Some(ToolKind::Hammer(_)) => self.imgs.hammerleap, Some(ToolKind::Hammer(_)) => self.imgs.hammergolf, Some(ToolKind::Axe(_)) => self.imgs.axespin, Some(ToolKind::Bow(_)) => self.imgs.bow_m2, diff --git a/voxygen/src/hud/slots.rs b/voxygen/src/hud/slots.rs index f03a758426..03b9125df9 100644 --- a/voxygen/src/hud/slots.rs +++ b/voxygen/src/hud/slots.rs @@ -136,7 +136,7 @@ impl<'a> SlotKey<HotbarSource<'a>, HotbarImageSource<'a>> for HotbarSlot { ), HotbarImage::AxeLeapSlash => ( image_key, - (energy.current() < 300).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), + (energy.current() < 450).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), ), HotbarImage::BowJumpBurst => ( image_key, diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index cac9a0bb0d..f2e64cb4da 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -901,7 +901,7 @@ impl FigureMgr { } }, CharacterState::RepeaterRanged(data) => { - if data.exhausted { + if data.current_rep != 0 { anim::character::ShootAnimation::update_skeleton( &target_base, (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), From a84faedf171846c86265c14a4d109791dd07b112 Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Thu, 24 Sep 2020 23:25:56 -0700 Subject: [PATCH 04/23] Reducing the amount of data in character state --- common/src/comp/ability.rs | 9 +++---- common/src/comp/inventory/item/tool.rs | 3 +-- common/src/states/repeater_ranged.rs | 34 +++++++++++--------------- voxygen/src/scene/figure/mod.rs | 2 +- 4 files changed, 19 insertions(+), 29 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index bc54eb2b82..cae57558e5 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -84,8 +84,7 @@ pub enum CharacterAbility { projectile_light: Option<LightEmitter>, projectile_gravity: Option<Gravity>, projectile_speed: f32, - repetitions: u32, - current_rep: u32, + reps_remaining: u32, leap: bool, }, Boost { @@ -589,8 +588,7 @@ impl From<&CharacterAbility> for CharacterState { projectile_light, projectile_gravity, projectile_speed, - repetitions, - current_rep, + reps_remaining, leap, } => CharacterState::RepeaterRanged(repeater_ranged::Data { prepare_timer: Duration::default(), @@ -603,8 +601,7 @@ impl From<&CharacterAbility> for CharacterState { projectile_light: *projectile_light, projectile_gravity: *projectile_gravity, projectile_speed: *projectile_speed, - repetitions: *repetitions, - current_rep: *current_rep, + reps_remaining: *reps_remaining, leap: *leap, }), CharacterAbility::GroundShockwave { diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 219368083e..626d50a751 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -349,8 +349,7 @@ impl Tool { projectile_light: None, projectile_gravity: Some(Gravity(0.2)), projectile_speed: 100.0, - repetitions: 5, - current_rep: 0, + reps_remaining: 5, leap: true, }, ], diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index e6580841ab..b720a621f2 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -26,10 +26,8 @@ pub struct Data { pub projectile_light: Option<LightEmitter>, pub projectile_gravity: Option<Gravity>, pub projectile_speed: f32, - /// How many times to repeat - pub repetitions: u32, - /// Current repetition - pub current_rep: u32, + /// How many repetitions remaining + pub reps_remaining: u32, /// Whether there should be a jump pub leap: bool, } @@ -41,7 +39,7 @@ impl CharacterBehavior for Data { handle_move(data, &mut update, 1.0); handle_jump(data, &mut update); - if self.current_rep <= self.repetitions + if self.reps_remaining > 0 && if self.holdable { data.inputs.holding_ability_key() || self.prepare_timer < self.prepare_duration } else { @@ -60,8 +58,7 @@ impl CharacterBehavior for Data { projectile_light: self.projectile_light, projectile_gravity: self.projectile_gravity, projectile_speed: self.projectile_speed, - repetitions: self.repetitions, - current_rep: self.current_rep, + reps_remaining: self.reps_remaining, leap: self.leap, }); } else if self.movement_duration != Duration::default() { @@ -84,8 +81,7 @@ impl CharacterBehavior for Data { projectile_light: self.projectile_light, projectile_gravity: self.projectile_gravity, projectile_speed: self.projectile_speed, - repetitions: self.repetitions, - current_rep: self.current_rep, + reps_remaining: self.reps_remaining, leap: self.leap, }); } else if self.recover_duration != Duration::default() { @@ -107,11 +103,10 @@ impl CharacterBehavior for Data { projectile_light: self.projectile_light, projectile_gravity: self.projectile_gravity, projectile_speed: self.projectile_speed, - repetitions: self.repetitions, - current_rep: self.current_rep, + reps_remaining: self.reps_remaining, leap: self.leap, }); - } else if self.current_rep < self.repetitions { + } else if self.reps_remaining > 0 { // Hover update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 0.0); @@ -122,16 +117,16 @@ impl CharacterBehavior for Data { entity: data.entity, dir: Dir::from_unnormalized(Vec3::new( data.inputs.look_dir[0] - + (if self.current_rep % 2 == 0 { - self.current_rep as f32 / 400.0 + + (if self.reps_remaining % 2 == 0 { + self.reps_remaining as f32 / 400.0 } else { - -1.0 * self.current_rep as f32 / 400.0 + -1.0 * self.reps_remaining as f32 / 400.0 }), data.inputs.look_dir[1] - + (if self.current_rep % 2 == 0 { - -1.0 * self.current_rep as f32 / 400.0 + + (if self.reps_remaining % 2 == 0 { + -1.0 * self.reps_remaining as f32 / 400.0 } else { - self.current_rep as f32 / 400.0 + self.reps_remaining as f32 / 400.0 }), data.inputs.look_dir[2], )) @@ -158,8 +153,7 @@ impl CharacterBehavior for Data { projectile_light: self.projectile_light, projectile_gravity: self.projectile_gravity, projectile_speed: self.projectile_speed, - repetitions: self.repetitions, - current_rep: self.current_rep + 1, + reps_remaining: self.reps_remaining - 1, leap: self.leap, }); return update; diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index f2e64cb4da..8c8053d355 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -901,7 +901,7 @@ impl FigureMgr { } }, CharacterState::RepeaterRanged(data) => { - if data.current_rep != 0 { + if data.reps_remaining > 0 { anim::character::ShootAnimation::update_skeleton( &target_base, (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), From a16046c598185e966522c77f0aa62b12788cb2fd Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Thu, 24 Sep 2020 23:46:26 -0700 Subject: [PATCH 05/23] Fix what broke during rebase --- voxygen/src/scene/figure/mod.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 8c8053d355..98b9099f78 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -852,7 +852,13 @@ impl FigureMgr { if data.exhausted { anim::character::AlphaAnimation::update_skeleton( &target_base, - (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), + ( + active_tool_kind, + second_tool_kind, + vel.0.magnitude(), + time, + None, + ), state.state_time, &mut state_animation_rate, skeleton_attr, From 90e93e63bd71d410a05e408529404e77de464ae7 Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Fri, 25 Sep 2020 09:29:10 -0700 Subject: [PATCH 06/23] Made bow leap more graceful and set energy costs and removed jitter for no leap --- common/src/comp/inventory/item/tool.rs | 8 ++------ common/src/states/repeater_ranged.rs | 12 ++++++++---- voxygen/src/hud/slots.rs | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 626d50a751..f47ea2ab7f 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -233,12 +233,10 @@ impl Tool { recover_duration: Duration::from_millis(600), base_damage: (160.0 * self.base_power()) as u32, range: 3.5, - max_angle: 120.0, + max_angle: 100.0, knockback: 15.0, - //leap_speed: 20.0, leap_speed: 16.0, leap_vert_speed: 6.0, - //leap_vert_speed: 16.0, }, ], Hammer(_) => vec![ @@ -274,9 +272,7 @@ impl Tool { max_angle: 360.0, knockback: 25.0, leap_speed: 24.0, - //leap_speed: 24.0, leap_vert_speed: 4.0, - //leap_vert_speed: 8.0, }, ], Farming(_) => vec![BasicMelee { @@ -328,7 +324,7 @@ impl Tool { max_projectile_speed: 500.0, }, RepeaterRanged { - energy_cost: 10, + energy_cost: 450, holdable: true, movement_duration: Duration::from_millis(200), prepare_duration: Duration::from_millis(50), diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index b720a621f2..e151da3ca2 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -85,8 +85,10 @@ impl CharacterBehavior for Data { leap: self.leap, }); } else if self.recover_duration != Duration::default() { - // Hover - update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 0.0); + if self.leap { + // Hover + update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], data.vel.0[2] + 0.5); + } // Recovery update.character = CharacterState::RepeaterRanged(Data { @@ -107,8 +109,10 @@ impl CharacterBehavior for Data { leap: self.leap, }); } else if self.reps_remaining > 0 { - // Hover - update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 0.0); + if self.leap { + // Hover + update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], data.vel.0[2] + 0.5); + } // Fire let mut projectile = self.projectile.clone(); diff --git a/voxygen/src/hud/slots.rs b/voxygen/src/hud/slots.rs index 03b9125df9..fe8bd3445e 100644 --- a/voxygen/src/hud/slots.rs +++ b/voxygen/src/hud/slots.rs @@ -140,7 +140,7 @@ impl<'a> SlotKey<HotbarSource<'a>, HotbarImageSource<'a>> for HotbarSlot { ), HotbarImage::BowJumpBurst => ( image_key, - (energy.current() < 200).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), + (energy.current() < 450).then_some(Color::Rgba(0.3, 0.3, 0.3, 0.8)), ), _ => ( image_key, From 05091687df818cf6ba8cc9fc8d06443a7ffd9cb9 Mon Sep 17 00:00:00 2001 From: Sam <samuelkeiffer@gmail.com> Date: Sun, 27 Sep 2020 20:58:49 -0500 Subject: [PATCH 07/23] Added keyframes to charged melee. --- common/src/comp/ability.rs | 34 +-- common/src/comp/inventory/item/tool.rs | 6 +- common/src/states/charged_melee.rs | 291 ++++++++++++++----------- 3 files changed, 180 insertions(+), 151 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index cae57558e5..4d44a8bb9b 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -152,11 +152,11 @@ pub enum CharacterAbility { max_damage: u32, initial_knockback: f32, max_knockback: f32, - prepare_duration: Duration, - charge_duration: Duration, - recover_duration: Duration, range: f32, max_angle: f32, + charge_duration: Duration, + swing_duration: Duration, + recover_duration: Duration, }, ChargedRanged { energy_cost: u32, @@ -526,24 +526,28 @@ impl From<&CharacterAbility> for CharacterState { max_damage, initial_knockback, max_knockback, - prepare_duration, charge_duration, + swing_duration, recover_duration, range, max_angle, } => CharacterState::ChargedMelee(charged_melee::Data { + static_data: charged_melee::StaticData { + energy_drain: *energy_drain, + initial_damage: *initial_damage, + max_damage: *max_damage, + initial_knockback: *initial_knockback, + max_knockback: *max_knockback, + range: *range, + max_angle: *max_angle, + charge_duration: *charge_duration, + swing_duration: *swing_duration, + recover_duration: *recover_duration, + }, + stage_section: StageSection::Buildup, + timer: Duration::default(), exhausted: false, - energy_drain: *energy_drain, - initial_damage: *initial_damage, - max_damage: *max_damage, - initial_knockback: *initial_knockback, - max_knockback: *max_knockback, - prepare_duration: *prepare_duration, - charge_duration: *charge_duration, - charge_timer: Duration::default(), - recover_duration: *recover_duration, - range: *range, - max_angle: *max_angle, + charge_amount: 0.0, }), CharacterAbility::ChargedRanged { energy_cost: _, diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index f47ea2ab7f..a7a29cba21 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -256,11 +256,11 @@ impl Tool { max_damage: (170.0 * self.base_power()) as u32, initial_knockback: 12.0, max_knockback: 60.0, - prepare_duration: Duration::from_millis(200), - charge_duration: Duration::from_millis(1200), - recover_duration: Duration::from_millis(500), range: 3.5, max_angle: 30.0, + charge_duration: Duration::from_millis(1200), + swing_duration: Duration::from_millis(100), + recover_duration: Duration::from_millis(500), }, LeapMelee { energy_cost: 700, diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index b7a9fce9c9..c022659254 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -1,15 +1,14 @@ use crate::{ comp::{Attacking, CharacterState, EnergySource, StateUpdate}, - states::utils::*, + states::utils::{StageSection, *}, sys::character_behavior::*, }; use serde::{Deserialize, Serialize}; use std::time::Duration; -#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] -pub struct Data { - /// Whether the attack fired already - pub exhausted: bool, +#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] +/// Separated out to condense update portions of character state +pub struct StaticData { /// How much energy is drained per second when charging pub energy_drain: u32, /// How much damage is dealt with no charge @@ -20,18 +19,31 @@ pub struct Data { pub initial_knockback: f32, /// How much knockback there is at max charge pub max_knockback: f32, - /// How long the weapon needs to be prepared for - pub prepare_duration: Duration, - /// How long it takes to charge the weapon to max damage and knockback - pub charge_duration: Duration, - /// How long the state has been charging - pub charge_timer: Duration, - /// How long the state has until exiting - pub recover_duration: Duration, /// Max range pub range: f32, /// Max angle (45.0 will give you a 90.0 angle window) pub max_angle: f32, + /// How long it takes to charge the weapon to max damage and knockback + pub charge_duration: Duration, + /// How long the weapon is swinging for + pub swing_duration: Duration, + /// How long the state has until exiting + pub recover_duration: Duration, +} + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct Data { + /// Struct containing data that does not change over the course of the + /// character state + pub static_data: StaticData, + /// Checks what section a stage is in + pub stage_section: StageSection, + /// Timer for each stage + pub timer: Duration, + /// Whether the attack fired already + pub exhausted: bool, + /// How much the attack charged by + pub charge_amount: f32, } impl CharacterBehavior for Data { @@ -41,129 +53,142 @@ impl CharacterBehavior for Data { handle_move(data, &mut update, 0.3); handle_jump(data, &mut update); - if self.prepare_duration != Duration::default() { - // Prepare (draw back weapon) - update.character = CharacterState::ChargedMelee(Data { - exhausted: self.exhausted, - energy_drain: self.energy_drain, - initial_damage: self.initial_damage, - max_damage: self.max_damage, - initial_knockback: self.initial_knockback, - max_knockback: self.max_knockback, - prepare_duration: self - .prepare_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - charge_duration: self.charge_duration, - charge_timer: self.charge_timer, - recover_duration: self.recover_duration, - range: self.range, - max_angle: self.max_angle, - }); - } else if data.inputs.secondary.is_pressed() - && self.charge_timer < self.charge_duration - && update.energy.current() > 0 - { - // Charge the attack - update.character = CharacterState::ChargedMelee(Data { - exhausted: self.exhausted, - energy_drain: self.energy_drain, - initial_damage: self.initial_damage, - max_damage: self.max_damage, - initial_knockback: self.initial_knockback, - max_knockback: self.max_knockback, - prepare_duration: self.prepare_duration, - charge_timer: self - .charge_timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - charge_duration: self.charge_duration, - recover_duration: self.recover_duration, - range: self.range, - max_angle: self.max_angle, - }); + match self.stage_section { + StageSection::Charge => { + if data.inputs.secondary.is_pressed() + && self.timer < self.static_data.charge_duration + && update.energy.current() > 0 + { + let charge = (self.timer.as_secs_f32() + / self.static_data.charge_duration.as_secs_f32()) + .min(1.0); - // Consumes energy if there's enough left and RMB is held down - update.energy.change_by( - -(self.energy_drain as f32 * data.dt.0) as i32, - EnergySource::Ability, - ); - } else if data.inputs.secondary.is_pressed() { - // Charge the attack - update.character = CharacterState::ChargedMelee(Data { - exhausted: self.exhausted, - energy_drain: self.energy_drain, - initial_damage: self.initial_damage, - max_damage: self.max_damage, - initial_knockback: self.initial_knockback, - max_knockback: self.max_knockback, - prepare_duration: self.prepare_duration, - charge_timer: self.charge_timer, - charge_duration: self.charge_duration, - recover_duration: self.recover_duration, - range: self.range, - max_angle: self.max_angle, - }); + // Charge the attack + update.character = CharacterState::ChargedMelee(Data { + static_data: self.static_data, + stage_section: self.stage_section, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + exhausted: self.exhausted, + charge_amount: charge, + }); - // Consumes energy if there's enough left and RMB is held down - update.energy.change_by( - -(self.energy_drain as f32 * data.dt.0 / 5.0) as i32, - EnergySource::Ability, - ); - } else if !self.exhausted { - let charge_amount = - (self.charge_timer.as_secs_f32() / self.charge_duration.as_secs_f32()).min(1.0); - let damage = self.initial_damage as f32 + (charge_amount * (self.max_damage - self.initial_damage) as f32); - // Hit attempt - data.updater.insert(data.entity, Attacking { - base_damage: damage as u32, - base_heal: 0, - range: self.range, - max_angle: self.max_angle.to_radians(), - applied: false, - hit_count: 0, - knockback: self.initial_knockback - + charge_amount * (self.max_knockback - self.initial_knockback), - }); + // Consumes energy if there's enough left and RMB is held down + update.energy.change_by( + -(self.static_data.energy_drain as f32 * data.dt.0) as i32, + EnergySource::Ability, + ); + } else if data.inputs.secondary.is_pressed() { + // Maintains charge + update.character = CharacterState::ChargedMelee(Data { + static_data: self.static_data, + stage_section: self.stage_section, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + exhausted: self.exhausted, + charge_amount: self.charge_amount, + }); - update.character = CharacterState::ChargedMelee(Data { - exhausted: true, - energy_drain: self.energy_drain, - initial_damage: self.initial_damage, - max_damage: self.max_damage, - initial_knockback: self.initial_knockback, - max_knockback: self.max_knockback, - prepare_duration: self.prepare_duration, - charge_timer: self.charge_timer, - charge_duration: self.charge_duration, - recover_duration: self.recover_duration, - range: self.range, - max_angle: self.max_angle, - }); - } else if self.recover_duration != Duration::default() { - // Recovery - update.character = CharacterState::ChargedMelee(Data { - exhausted: self.exhausted, - energy_drain: self.energy_drain, - initial_damage: self.initial_damage, - max_damage: self.max_damage, - initial_knockback: self.initial_knockback, - max_knockback: self.max_knockback, - prepare_duration: self.prepare_duration, - charge_timer: self.charge_timer, - charge_duration: self.charge_duration, - recover_duration: self - .recover_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - range: self.range, - max_angle: self.max_angle, - }); - } else { - // Done - update.character = CharacterState::Wielding; - // Make sure attack component is removed - data.updater.remove::<Attacking>(data.entity); + // Consumes energy if there's enough left and RMB is held down + update.energy.change_by( + -(self.static_data.energy_drain as f32 * data.dt.0 / 5.0) as i32, + EnergySource::Ability, + ); + } else { + // Transitions to swing + update.character = CharacterState::ChargedMelee(Data { + static_data: self.static_data, + stage_section: StageSection::Swing, + timer: Duration::default(), + exhausted: self.exhausted, + charge_amount: self.charge_amount, + }); + } + }, + StageSection::Swing => { + if !self.exhausted { + let damage = self.static_data.initial_damage + + ((self.static_data.max_damage - self.static_data.initial_damage) as f32 + * self.charge_amount) as u32; + let knockback = self.static_data.initial_knockback + + (self.static_data.max_knockback - self.static_data.initial_knockback) + * self.charge_amount; + + // Hit attempt + data.updater.insert(data.entity, Attacking { + base_damage: damage as u32, + base_heal: 0, + range: self.static_data.range, + max_angle: self.static_data.max_angle.to_radians(), + applied: false, + hit_count: 0, + knockback, + }); + + // Starts swinging + update.character = CharacterState::ChargedMelee(Data { + static_data: self.static_data, + stage_section: self.stage_section, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + exhausted: true, + charge_amount: self.charge_amount, + }); + } else if self.timer < self.static_data.swing_duration { + // Swings + update.character = CharacterState::ChargedMelee(Data { + static_data: self.static_data, + stage_section: self.stage_section, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + exhausted: self.exhausted, + charge_amount: self.charge_amount, + }); + } else { + // Transitions to recover + update.character = CharacterState::ChargedMelee(Data { + static_data: self.static_data, + stage_section: StageSection::Recover, + timer: Duration::default(), + exhausted: self.exhausted, + charge_amount: self.charge_amount, + }); + } + }, + StageSection::Recover => { + if self.timer < self.static_data.recover_duration { + // Recovers + update.character = CharacterState::ChargedMelee(Data { + static_data: self.static_data, + stage_section: self.stage_section, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + exhausted: self.exhausted, + charge_amount: self.charge_amount, + }); + } else { + // Done + update.character = CharacterState::Wielding; + // Make sure attack component is removed + data.updater.remove::<Attacking>(data.entity); + } + }, + _ => { + // If it somehow ends up in an incorrect stage section + update.character = CharacterState::Wielding; + // Make sure attack component is removed + data.updater.remove::<Attacking>(data.entity); + }, } update From b2501a5b5dc0222d04ff1abe99fe59e5399d6f31 Mon Sep 17 00:00:00 2001 From: Sam <samuelkeiffer@gmail.com> Date: Sun, 27 Sep 2020 21:38:23 -0500 Subject: [PATCH 08/23] Added keyframes to repeater ranged. --- common/src/comp/ability.rs | 39 ++-- common/src/comp/inventory/item/tool.rs | 6 +- common/src/states/repeater_ranged.rs | 304 ++++++++++++++----------- common/src/states/utils.rs | 2 + 4 files changed, 195 insertions(+), 156 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 4d44a8bb9b..9879bbf0de 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -74,18 +74,18 @@ pub enum CharacterAbility { projectile_speed: f32, }, RepeaterRanged { - movement_duration: Duration, energy_cost: u32, - holdable: bool, - prepare_duration: Duration, + movement_duration: Duration, + buildup_duration: Duration, + shoot_duration: Duration, recover_duration: Duration, + leap: Option<f32>, projectile: Projectile, projectile_body: Body, projectile_light: Option<LightEmitter>, projectile_gravity: Option<Gravity>, projectile_speed: f32, reps_remaining: u32, - leap: bool, }, Boost { duration: Duration, @@ -584,29 +584,32 @@ impl From<&CharacterAbility> for CharacterState { CharacterAbility::RepeaterRanged { energy_cost: _, movement_duration, - holdable, - prepare_duration, + buildup_duration, + shoot_duration, recover_duration, + leap, projectile, projectile_body, projectile_light, projectile_gravity, projectile_speed, reps_remaining, - leap, } => CharacterState::RepeaterRanged(repeater_ranged::Data { - prepare_timer: Duration::default(), - holdable: *holdable, - movement_duration: *movement_duration, - prepare_duration: *prepare_duration, - recover_duration: *recover_duration, - projectile: projectile.clone(), - projectile_body: *projectile_body, - projectile_light: *projectile_light, - projectile_gravity: *projectile_gravity, - projectile_speed: *projectile_speed, + static_data: repeater_ranged::StaticData { + movement_duration: *movement_duration, + buildup_duration: *buildup_duration, + shoot_duration: *shoot_duration, + recover_duration: *recover_duration, + leap: *leap, + projectile: projectile.clone(), + projectile_body: *projectile_body, + projectile_light: *projectile_light, + projectile_gravity: *projectile_gravity, + projectile_speed: *projectile_speed, + }, + timer: Duration::default(), + stage_section: StageSection::Movement, reps_remaining: *reps_remaining, - leap: *leap, }), CharacterAbility::GroundShockwave { energy_cost: _, diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index a7a29cba21..2e00935896 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -325,10 +325,11 @@ impl Tool { }, RepeaterRanged { energy_cost: 450, - holdable: true, movement_duration: Duration::from_millis(200), - prepare_duration: Duration::from_millis(50), + buildup_duration: Duration::from_millis(100), + shoot_duration: Duration::from_millis(100), recover_duration: Duration::from_millis(500), + leap: Some(10.0), projectile: Projectile { hit_solid: vec![projectile::Effect::Stick], hit_entity: vec![ @@ -346,7 +347,6 @@ impl Tool { projectile_gravity: Some(Gravity(0.2)), projectile_speed: 100.0, reps_remaining: 5, - leap: true, }, ], Dagger(_) => vec![BasicMelee { diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index e151da3ca2..fcd7e5b119 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -1,7 +1,7 @@ use crate::{ comp::{Body, CharacterState, Gravity, LightEmitter, Projectile, StateUpdate}, event::ServerEvent, - states::utils::*, + states::utils::{StageSection, *}, sys::character_behavior::*, util::dir::*, }; @@ -10,26 +10,37 @@ use std::time::Duration; use vek::Vec3; #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] -pub struct Data { - /// How long the state is moving +/// Separated out to condense update portions of character state +pub struct StaticData { + /// How long the state is in movement pub movement_duration: Duration, - /// Can you hold the ability beyond the prepare duration - pub holdable: bool, - /// How long we have to prepare the weapon - pub prepare_duration: Duration, - /// How long we prepared the weapon already - pub prepare_timer: Duration, + /// How long we've readied the weapon + pub buildup_duration: Duration, + /// How long the state is shooting + pub shoot_duration: Duration, /// How long the state has until exiting pub recover_duration: Duration, + /// Whether there should be a jump and how strong the leap is + pub leap: Option<f32>, + /// Projectile options pub projectile: Projectile, pub projectile_body: Body, pub projectile_light: Option<LightEmitter>, pub projectile_gravity: Option<Gravity>, pub projectile_speed: f32, +} + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct Data { + /// Struct containing data that does not change over the course of the + /// character state + pub static_data: StaticData, + /// Timer for each stage + pub timer: Duration, + /// What section the character stage is in + pub stage_section: StageSection, /// How many repetitions remaining pub reps_remaining: u32, - /// Whether there should be a jump - pub leap: bool, } impl CharacterBehavior for Data { @@ -39,131 +50,154 @@ impl CharacterBehavior for Data { handle_move(data, &mut update, 1.0); handle_jump(data, &mut update); - if self.reps_remaining > 0 - && if self.holdable { - data.inputs.holding_ability_key() || self.prepare_timer < self.prepare_duration - } else { - self.prepare_timer < self.prepare_duration - } - { - // Prepare (draw the bow) - update.character = CharacterState::RepeaterRanged(Data { - movement_duration: self.movement_duration, - prepare_timer: self.prepare_timer + Duration::from_secs_f32(data.dt.0), - holdable: self.holdable, - prepare_duration: self.prepare_duration, - recover_duration: self.recover_duration, - projectile: self.projectile.clone(), - projectile_body: self.projectile_body, - projectile_light: self.projectile_light, - projectile_gravity: self.projectile_gravity, - projectile_speed: self.projectile_speed, - reps_remaining: self.reps_remaining, - leap: self.leap, - }); - } else if self.movement_duration != Duration::default() { - // Jumping - if self.leap { - update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], 10.0); - } + match self.stage_section { + StageSection::Movement => { + // Jumping + if let Some(leap_strength) = self.static_data.leap { + update.vel.0 = Vec3::new(data.vel.0.x, data.vel.0.y, leap_strength); + } + if self.timer < self.static_data.movement_duration { + // Do movement + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else { + // Transition to buildup + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: Duration::default(), + stage_section: StageSection::Buildup, + reps_remaining: self.reps_remaining, + }); + } + }, + StageSection::Buildup => { + // Aim gliding + if self.static_data.leap.is_some() { + update.vel.0 = Vec3::new(data.vel.0.x, data.vel.0.y, 0.0); + } + if self.timer < self.static_data.buildup_duration { + // Buildup to attack + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else { + // Transition to shoot + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: Duration::default(), + stage_section: StageSection::Buildup, + reps_remaining: self.reps_remaining, + }); + } + }, + StageSection::Shoot => { + // Aim gliding + if self.static_data.leap.is_some() { + update.vel.0 = Vec3::new(data.vel.0.x, data.vel.0.y, 0.0); + } + if self.reps_remaining > 0 { + // Fire + let mut projectile = self.static_data.projectile.clone(); + projectile.owner = Some(*data.uid); + update.server_events.push_front(ServerEvent::Shoot { + entity: data.entity, + // Provides slight variation to projectile direction + dir: Dir::from_unnormalized(Vec3::new( + data.inputs.look_dir[0] + + (if self.reps_remaining % 2 == 0 { + self.reps_remaining as f32 / 400.0 + } else { + -1.0 * self.reps_remaining as f32 / 400.0 + }), + data.inputs.look_dir[1] + + (if self.reps_remaining % 2 == 0 { + -1.0 * self.reps_remaining as f32 / 400.0 + } else { + self.reps_remaining as f32 / 400.0 + }), + data.inputs.look_dir[2], + )) + .unwrap_or(data.inputs.look_dir), + body: self.static_data.projectile_body, + projectile, + light: self.static_data.projectile_light, + gravity: self.static_data.projectile_gravity, + speed: self.static_data.projectile_speed, + }); - update.character = CharacterState::RepeaterRanged(Data { - movement_duration: self - .movement_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - prepare_timer: self.prepare_timer, - holdable: self.holdable, - prepare_duration: self.prepare_duration, - recover_duration: self.recover_duration, - projectile: self.projectile.clone(), - projectile_body: self.projectile_body, - projectile_light: self.projectile_light, - projectile_gravity: self.projectile_gravity, - projectile_speed: self.projectile_speed, - reps_remaining: self.reps_remaining, - leap: self.leap, - }); - } else if self.recover_duration != Duration::default() { - if self.leap { - // Hover - update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], data.vel.0[2] + 0.5); - } - - // Recovery - update.character = CharacterState::RepeaterRanged(Data { - movement_duration: Duration::default(), - prepare_timer: self.prepare_timer, - holdable: self.holdable, - prepare_duration: self.prepare_duration, - recover_duration: self - .recover_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - projectile: self.projectile.clone(), - projectile_body: self.projectile_body, - projectile_light: self.projectile_light, - projectile_gravity: self.projectile_gravity, - projectile_speed: self.projectile_speed, - reps_remaining: self.reps_remaining, - leap: self.leap, - }); - } else if self.reps_remaining > 0 { - if self.leap { - // Hover - update.vel.0 = Vec3::new(data.vel.0[0], data.vel.0[1], data.vel.0[2] + 0.5); - } - - // Fire - let mut projectile = self.projectile.clone(); - projectile.owner = Some(*data.uid); - update.server_events.push_front(ServerEvent::Shoot { - entity: data.entity, - dir: Dir::from_unnormalized(Vec3::new( - data.inputs.look_dir[0] - + (if self.reps_remaining % 2 == 0 { - self.reps_remaining as f32 / 400.0 - } else { - -1.0 * self.reps_remaining as f32 / 400.0 - }), - data.inputs.look_dir[1] - + (if self.reps_remaining % 2 == 0 { - -1.0 * self.reps_remaining as f32 / 400.0 - } else { - self.reps_remaining as f32 / 400.0 - }), - data.inputs.look_dir[2], - )) - .expect("That didn't work"), - body: self.projectile_body, - projectile, - light: self.projectile_light, - gravity: self.projectile_gravity, - speed: self.projectile_speed, - }); - - update.character = CharacterState::RepeaterRanged(Data { - movement_duration: self.movement_duration, - prepare_timer: self.prepare_timer, - holdable: self.holdable, - prepare_duration: self.prepare_duration, - //recover_duration: self.recover_duration, - recover_duration: self - .recover_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - projectile: self.projectile.clone(), - projectile_body: self.projectile_body, - projectile_light: self.projectile_light, - projectile_gravity: self.projectile_gravity, - projectile_speed: self.projectile_speed, - reps_remaining: self.reps_remaining - 1, - leap: self.leap, - }); - return update; - } else { - // Done - update.character = CharacterState::Wielding; + // Shoot projectiles + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining - 1, + }); + } else if self.timer < self.static_data.shoot_duration { + // Finish shooting + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else { + // Transition to recover + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: Duration::default(), + stage_section: StageSection::Buildup, + reps_remaining: self.reps_remaining, + }); + } + }, + StageSection::Recover => { + if !data.physics.on_ground { + // Lands + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self.timer, + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else if self.timer < self.static_data.recover_duration { + // Recovers from attack + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else { + // Done + update.character = CharacterState::Wielding; + } + }, + _ => { + // If it somehow ends up in an incorrect stage section + update.character = CharacterState::Wielding; + }, } update diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index a61e49c1ac..ffae9f9697 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -365,4 +365,6 @@ pub enum StageSection { Recover, Charge, Cast, + Shoot, + Movement, } From 30b45fc079f04dfe2816f2ca892d35f917c0ddb2 Mon Sep 17 00:00:00 2001 From: Sam <samuelkeiffer@gmail.com> Date: Mon, 28 Sep 2020 18:55:38 -0500 Subject: [PATCH 09/23] Added keyframes to leap melee. --- common/src/comp/ability.rs | 40 ++-- common/src/comp/inventory/item/tool.rs | 18 +- common/src/states/leap_melee.rs | 278 +++++++++++++++---------- common/src/states/repeater_ranged.rs | 5 +- 4 files changed, 202 insertions(+), 139 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 9879bbf0de..0bfb26dfad 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -121,15 +121,16 @@ pub enum CharacterAbility { }, LeapMelee { energy_cost: u32, - movement_duration: Duration, buildup_duration: Duration, + movement_duration: Duration, + swing_duration: Duration, recover_duration: Duration, base_damage: u32, range: f32, max_angle: f32, knockback: f32, - leap_speed: f32, - leap_vert_speed: f32, + forward_leap_strength: f32, + vertical_leap_strength: f32, }, SpinMelee { buildup_duration: Duration, @@ -464,27 +465,32 @@ impl From<&CharacterAbility> for CharacterState { }), CharacterAbility::LeapMelee { energy_cost: _, - movement_duration, buildup_duration, + movement_duration, + swing_duration, recover_duration, base_damage, + knockback, range, max_angle, - knockback, - leap_speed, - leap_vert_speed, + forward_leap_strength, + vertical_leap_strength, } => CharacterState::LeapMelee(leap_melee::Data { - initialize: true, + static_data: leap_melee::StaticData { + buildup_duration: *buildup_duration, + movement_duration: *movement_duration, + swing_duration: *swing_duration, + recover_duration: *recover_duration, + base_damage: *base_damage, + knockback: *knockback, + range: *range, + max_angle: *max_angle, + forward_leap_strength: *forward_leap_strength, + vertical_leap_strength: *vertical_leap_strength, + }, + timer: Duration::default(), + stage_section: StageSection::Buildup, exhausted: false, - movement_duration: *movement_duration, - buildup_duration: *buildup_duration, - recover_duration: *recover_duration, - base_damage: *base_damage, - range: *range, - max_angle: *max_angle, - knockback: *knockback, - leap_speed: *leap_speed, - leap_vert_speed: *leap_vert_speed, }), CharacterAbility::SpinMelee { buildup_duration, diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 2e00935896..af9466e9b7 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -228,15 +228,16 @@ impl Tool { }, LeapMelee { energy_cost: 450, + buildup_duration: Duration::from_millis(100), movement_duration: Duration::from_millis(200), - buildup_duration: Duration::from_millis(1000), + swing_duration: Duration::from_millis(100), recover_duration: Duration::from_millis(600), base_damage: (160.0 * self.base_power()) as u32, + knockback: 15.0, range: 3.5, max_angle: 100.0, - knockback: 15.0, - leap_speed: 16.0, - leap_vert_speed: 6.0, + forward_leap_strength: 16.0, + vertical_leap_strength: 6.0, }, ], Hammer(_) => vec![ @@ -264,15 +265,16 @@ impl Tool { }, LeapMelee { energy_cost: 700, + buildup_duration: Duration::from_millis(100), movement_duration: Duration::from_millis(500), - buildup_duration: Duration::from_millis(1000), + swing_duration: Duration::from_millis(100), recover_duration: Duration::from_millis(100), base_damage: (240.0 * self.base_power()) as u32, + knockback: 25.0, range: 4.5, max_angle: 360.0, - knockback: 25.0, - leap_speed: 24.0, - leap_vert_speed: 4.0, + forward_leap_strength: 24.0, + vertical_leap_strength: 4.0, }, ], Farming(_) => vec![BasicMelee { diff --git a/common/src/states/leap_melee.rs b/common/src/states/leap_melee.rs index 4eea14cef5..bbd844f630 100644 --- a/common/src/states/leap_melee.rs +++ b/common/src/states/leap_melee.rs @@ -1,146 +1,198 @@ use crate::{ comp::{Attacking, CharacterState, StateUpdate}, - states::utils::*, + states::utils::{StageSection, *}, sys::character_behavior::{CharacterBehavior, JoinData}, }; use serde::{Deserialize, Serialize}; use std::time::Duration; use vek::Vec3; +/// Separated out to condense update portions of character state #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] -//#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)] -pub struct Data { +pub struct StaticData { /// How long the state is moving pub movement_duration: Duration, /// How long until state should deal damage pub buildup_duration: Duration, + /// How long the weapon swings + pub swing_duration: Duration, /// How long the state has until exiting pub recover_duration: Duration, /// Base damage pub base_damage: u32, - /// Whether the attack can deal more damage - pub exhausted: bool, + /// Knockback + pub knockback: f32, /// Max range pub range: f32, /// Max angle (45.0 will give you a 90.0 angle window) pub max_angle: f32, - /// Knockback - pub knockback: f32, - /// Leap speed - pub leap_speed: f32, - /// Leap vertical speed? - pub leap_vert_speed: f32, - pub initialize: bool, + /// Affects how far forward the player leaps + pub forward_leap_strength: f32, + /// Affects how high the player leaps + pub vertical_leap_strength: f32, +} + +#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] +//#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)] +pub struct Data { + /// Struct containing data that does not change over the course of the + /// character state + pub static_data: StaticData, + /// Timer for each stage + pub timer: Duration, + /// What section the character stage is in + pub stage_section: StageSection, + /// Whether the attack can deal more damage + pub exhausted: bool, } impl CharacterBehavior for Data { fn behavior(&self, data: &JoinData) -> StateUpdate { let mut update = StateUpdate::from(data); - if self.initialize { - update.vel.0 = *data.inputs.look_dir * 20.0; - if let Some(dir) = Vec3::from(data.inputs.look_dir.xy()).try_normalized() { - update.ori.0 = dir.into(); - } - } + handle_move(data, &mut update, 0.3); + handle_jump(data, &mut update); - if self.movement_duration != Duration::default() { - // Jumping - update.vel.0 = Vec3::new( - data.inputs.look_dir.x, - data.inputs.look_dir.y, - self.leap_vert_speed, - ) * (2.0) - + (update.vel.0 * Vec3::new(2.0, 2.0, 0.0) - + 0.25 * data.inputs.move_dir.try_normalized().unwrap_or_default()) - .try_normalized() - .unwrap_or_default() - * self.leap_speed - * (1.0 - data.inputs.look_dir.z.abs()); + match self.stage_section { + StageSection::Buildup => { + if self.timer < self.static_data.buildup_duration { + // Buildup + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + exhausted: self.exhausted, + }); + } else { + // Transitions to leap portion of state + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: Duration::default(), + stage_section: StageSection::Movement, + exhausted: self.exhausted, + }); + } + }, + StageSection::Movement => { + // Jumping + update.vel.0 = Vec3::new( + data.inputs.look_dir.x, + data.inputs.look_dir.y, + self.static_data.vertical_leap_strength, + ) * 2.0 + * (1.0 + - self.timer.as_secs_f32() + / self.static_data.movement_duration.as_secs_f32()) + + (update.vel.0 * Vec3::new(2.0, 2.0, 0.0) + + 0.25 * data.inputs.move_dir.try_normalized().unwrap_or_default()) + .try_normalized() + .unwrap_or_default() + * self.static_data.forward_leap_strength + * (1.0 - data.inputs.look_dir.z.abs()); - update.character = CharacterState::LeapMelee(Data { - movement_duration: self - .movement_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - buildup_duration: self.buildup_duration, - recover_duration: self.recover_duration, - base_damage: self.base_damage, - exhausted: false, - range: self.range, - max_angle: self.max_angle, - knockback: self.knockback, - leap_speed: self.leap_speed, - leap_vert_speed: self.leap_vert_speed, - initialize: false, - }); - } else if self.buildup_duration != Duration::default() && !data.physics.on_ground { - // Falling - update.character = CharacterState::LeapMelee(Data { - movement_duration: Duration::default(), - buildup_duration: self - .buildup_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - recover_duration: self.recover_duration, - base_damage: self.base_damage, - exhausted: false, - range: self.range, - max_angle: self.max_angle, - knockback: self.knockback, - leap_speed: self.leap_speed, - leap_vert_speed: self.leap_vert_speed, - initialize: false, - }); - } else if !self.exhausted { - // Hit attempt - data.updater.insert(data.entity, Attacking { - base_damage: self.base_damage, - base_heal: 0, - range: self.range, - max_angle: self.max_angle.to_radians(), - applied: false, - hit_count: 0, - knockback: self.knockback, - }); + if self.timer < self.static_data.movement_duration { + // Movement duration + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + exhausted: self.exhausted, + }); + } else { + // Transitions to swing portion of state + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: Duration::default(), + stage_section: StageSection::Swing, + exhausted: self.exhausted, + }); + } + }, + StageSection::Swing => { + if self.timer < self.static_data.swing_duration { + // Swings weapons + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + exhausted: self.exhausted, + }); + } else { + // Transitions to recover portion + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: Duration::default(), + stage_section: StageSection::Recover, + exhausted: self.exhausted, + }); + } + }, + StageSection::Recover => { + if !data.physics.on_ground { + // Falls + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + exhausted: self.exhausted, + }); + } else if !self.exhausted { + // Hit attempt + data.updater.insert(data.entity, Attacking { + base_damage: self.static_data.base_damage, + base_heal: 0, + range: self.static_data.range, + max_angle: self.static_data.max_angle.to_radians(), + applied: false, + hit_count: 0, + knockback: self.static_data.knockback, + }); - update.character = CharacterState::LeapMelee(Data { - movement_duration: self.movement_duration, - buildup_duration: Duration::default(), - recover_duration: self.recover_duration, - base_damage: self.base_damage, - exhausted: true, - range: self.range, - max_angle: self.max_angle, - knockback: self.knockback, - leap_speed: self.leap_speed, - leap_vert_speed: self.leap_vert_speed, - initialize: false, - }); - } else if self.recover_duration != Duration::default() { - // Recovery - handle_move(data, &mut update, 0.7); - update.character = CharacterState::LeapMelee(Data { - movement_duration: self.movement_duration, - buildup_duration: self.buildup_duration, - recover_duration: self - .recover_duration - .checked_sub(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - base_damage: self.base_damage, - exhausted: true, - range: self.range, - max_angle: self.max_angle, - knockback: self.knockback, - leap_speed: self.leap_speed, - leap_vert_speed: self.leap_vert_speed, - initialize: false, - }); - } else { - // Done - update.character = CharacterState::Wielding; - // Make sure attack component is removed - data.updater.remove::<Attacking>(data.entity); + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + exhausted: true, + }); + } else if self.timer < self.static_data.recover_duration { + // Recovers + update.character = CharacterState::LeapMelee(Data { + static_data: self.static_data, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + exhausted: self.exhausted, + }); + } else { + // Done + update.character = CharacterState::Wielding; + // Make sure attack component is removed + data.updater.remove::<Attacking>(data.entity); + } + }, + _ => { + // If it somehow ends up in an incorrect stage section + update.character = CharacterState::Wielding; + // Make sure attack component is removed + data.updater.remove::<Attacking>(data.entity); + }, } update diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index fcd7e5b119..85768cb17f 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -174,7 +174,10 @@ impl CharacterBehavior for Data { // Lands update.character = CharacterState::RepeaterRanged(Data { static_data: self.static_data.clone(), - timer: self.timer, + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), stage_section: self.stage_section, reps_remaining: self.reps_remaining, }); From 197755c2333883c6abf080ae1e4edab04b5a66ce Mon Sep 17 00:00:00 2001 From: Sam <samuelkeiffer@gmail.com> Date: Mon, 28 Sep 2020 19:38:35 -0500 Subject: [PATCH 10/23] Fixed errors from transitioning some states to keyframes. --- common/src/comp/ability.rs | 2 +- common/src/states/repeater_ranged.rs | 4 ++-- common/src/states/wielding.rs | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 0bfb26dfad..10b4e4a25b 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -550,7 +550,7 @@ impl From<&CharacterAbility> for CharacterState { swing_duration: *swing_duration, recover_duration: *recover_duration, }, - stage_section: StageSection::Buildup, + stage_section: StageSection::Charge, timer: Duration::default(), exhausted: false, charge_amount: 0.0, diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index 85768cb17f..a95f860c51 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -98,7 +98,7 @@ impl CharacterBehavior for Data { update.character = CharacterState::RepeaterRanged(Data { static_data: self.static_data.clone(), timer: Duration::default(), - stage_section: StageSection::Buildup, + stage_section: StageSection::Shoot, reps_remaining: self.reps_remaining, }); } @@ -164,7 +164,7 @@ impl CharacterBehavior for Data { update.character = CharacterState::RepeaterRanged(Data { static_data: self.static_data.clone(), timer: Duration::default(), - stage_section: StageSection::Buildup, + stage_section: StageSection::Recover, reps_remaining: self.reps_remaining, }); } diff --git a/common/src/states/wielding.rs b/common/src/states/wielding.rs index f64ae9c77f..e1d5e64e97 100644 --- a/common/src/states/wielding.rs +++ b/common/src/states/wielding.rs @@ -18,6 +18,7 @@ impl CharacterBehavior for Data { handle_ability3_input(&data, &mut update); handle_dodge_input(&data, &mut update); + update } From b5d3cd09e68bf0b632d22f2b8934758dc7bd792f Mon Sep 17 00:00:00 2001 From: jshipsey <jshipsey18@gmail.com> Date: Tue, 29 Sep 2020 02:16:52 -0400 Subject: [PATCH 11/23] hammer leap melee anim --- common/src/comp/inventory/item/tool.rs | 10 +- voxygen/src/anim/src/character/leapmelee.rs | 276 ++++++++++++++------ voxygen/src/scene/figure/mod.rs | 37 ++- 3 files changed, 236 insertions(+), 87 deletions(-) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index af9466e9b7..c47c997fa5 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -230,7 +230,7 @@ impl Tool { energy_cost: 450, buildup_duration: Duration::from_millis(100), movement_duration: Duration::from_millis(200), - swing_duration: Duration::from_millis(100), + swing_duration: Duration::from_millis(300), recover_duration: Duration::from_millis(600), base_damage: (160.0 * self.base_power()) as u32, knockback: 15.0, @@ -264,10 +264,10 @@ impl Tool { recover_duration: Duration::from_millis(500), }, LeapMelee { - energy_cost: 700, - buildup_duration: Duration::from_millis(100), + energy_cost: 0, + buildup_duration: Duration::from_millis(200), movement_duration: Duration::from_millis(500), - swing_duration: Duration::from_millis(100), + swing_duration: Duration::from_millis(150), recover_duration: Duration::from_millis(100), base_damage: (240.0 * self.base_power()) as u32, knockback: 25.0, @@ -326,7 +326,7 @@ impl Tool { max_projectile_speed: 500.0, }, RepeaterRanged { - energy_cost: 450, + energy_cost: 0, movement_duration: Duration::from_millis(200), buildup_duration: Duration::from_millis(100), shoot_duration: Duration::from_millis(100), diff --git a/voxygen/src/anim/src/character/leapmelee.rs b/voxygen/src/anim/src/character/leapmelee.rs index 41d0739138..e79f6c23de 100644 --- a/voxygen/src/anim/src/character/leapmelee.rs +++ b/voxygen/src/anim/src/character/leapmelee.rs @@ -1,13 +1,22 @@ -use super::{super::Animation, CharacterSkeleton, SkeletonAttr}; -use common::comp::item::{Hands, ToolKind}; -/* use std::f32::consts::PI; */ -use super::super::vek::*; +use super::{ + super::{vek::*, Animation}, + CharacterSkeleton, SkeletonAttr, +}; +use common::{ + comp::item::{Hands, ToolKind}, + states::utils::StageSection, +}; use std::f32::consts::PI; - pub struct LeapAnimation; impl Animation for LeapAnimation { - type Dependency = (Option<ToolKind>, Option<ToolKind>, Vec3<f32>, f64); + type Dependency = ( + Option<ToolKind>, + Option<ToolKind>, + Vec3<f32>, + f64, + Option<StageSection>, + ); type Skeleton = CharacterSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,7 +26,7 @@ impl Animation for LeapAnimation { #[allow(clippy::approx_constant)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, second_tool_kind, _velocity, _global_time): Self::Dependency, + (active_tool_kind, second_tool_kind, _velocity, _global_time, stage_section): Self::Dependency, anim_time: f64, rate: &mut f32, skeleton_attr: &SkeletonAttr, @@ -26,11 +35,6 @@ impl Animation for LeapAnimation { let mut next = (*skeleton).clone(); let lab = 1.0; - let slowersmooth = (anim_time as f32 * lab as f32 * 4.0).sin(); - let slower = (((1.0) - / (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 4.0).sin()); // Spin stuff here let foot = (((5.0) @@ -45,83 +49,197 @@ impl Animation for LeapAnimation { // end spin stuff + let movement = (anim_time as f32 * 1.0).min(1.0); + if let Some(ToolKind::Hammer(_)) = active_tool_kind { next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); + next.l_hand.orientation = Quaternion::rotation_x(PI) * Quaternion::rotation_y(0.0); next.l_hand.scale = Vec3::one() * 1.08; - next.r_hand.position = Vec3::new(3.0, 0.0, 0.0); - next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); + next.r_hand.position = Vec3::new(2.0, 0.0, 0.0); + next.r_hand.orientation = Quaternion::rotation_x(PI) * Quaternion::rotation_y(0.0); next.r_hand.scale = Vec3::one() * 1.06; next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(-1.57) - * Quaternion::rotation_z(1.57); + next.main.orientation = Quaternion::rotation_y(-1.57) * Quaternion::rotation_z(1.57); - next.head.position = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0 + slower * -1.0, - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_z(slower * 0.05) - * Quaternion::rotation_x((slowersmooth * -0.25 + slower * 0.55).max(-0.2)) - * Quaternion::rotation_y(slower * 0.05); - next.head.scale = Vec3::one() * skeleton_attr.head_scale; - - next.chest.position = Vec3::new(0.0, 0.0, 7.0); - next.chest.orientation = Quaternion::rotation_z(slower * 0.08 + slowersmooth * 0.15) - * Quaternion::rotation_x(-0.3 + slower * 0.45 + slowersmooth * 0.26) - * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); - - next.belt.position = Vec3::new(0.0, 0.0, -2.0 + slower * -0.7); - next.belt.orientation = Quaternion::rotation_z(slower * -0.16 + slowersmooth * -0.12) - * Quaternion::rotation_x(0.0 + slower * -0.06) - * Quaternion::rotation_y(slower * -0.05); - - next.shorts.position = Vec3::new(0.0, 0.0, -5.0 + slower * -0.7); - next.shorts.orientation = Quaternion::rotation_z(slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_x(0.0 + slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_y(slower * -0.07); - - next.lantern.orientation = - Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); - next.hold.scale = Vec3::one() * 0.0; - - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0, - slower * 3.0 + slowersmooth * -6.0 - 2.0, - skeleton_attr.foot.2, - ); - next.l_foot.orientation = - Quaternion::rotation_x(slower * -0.2 + slowersmooth * -0.3 - 0.2); - - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0, - slower * 2.0 + slowersmooth * -4.0 - 1.0, - -2.0 + skeleton_attr.foot.2, - ); - next.r_foot.orientation = - Quaternion::rotation_x(slower * -0.4 + slowersmooth * -0.6 - 1.0); - - next.control.scale = Vec3::one(); - next.control.position = Vec3::new(-7.0, 7.0, 1.0); - next.control.orientation = Quaternion::rotation_x(-0.7 + slower * 1.5) + next.control.position = Vec3::new(6.0, 7.0, 1.0); + next.control.orientation = Quaternion::rotation_x(0.3) * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); + * Quaternion::rotation_z(0.0); next.control.scale = Vec3::one(); - next.lantern.position = Vec3::new( - skeleton_attr.lantern.0, - skeleton_attr.lantern.1, - skeleton_attr.lantern.2, - ); - next.glider.position = Vec3::new(0.0, 0.0, 10.0); - next.glider.scale = Vec3::one() * 0.0; - next.l_control.scale = Vec3::one(); - next.r_control.scale = Vec3::one(); + next.head.position = Vec3::new(0.0, -2.0 + skeleton_attr.head.0, skeleton_attr.head.1); - next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.orientation = Quaternion::rotation_z(0.0); - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + if let Some(stage_section) = stage_section { + match stage_section { + StageSection::Buildup => { + next.control.position = Vec3::new(6.0, 7.0, 1.0); + next.control.orientation = Quaternion::rotation_x(0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(movement * 0.5); + next.chest.orientation = Quaternion::rotation_x(movement * 0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(movement * 0.5); + + next.head.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(movement * -0.4); + }, + + StageSection::Movement => { + next.control.position = Vec3::new( + 6.0 + movement * -10.0, + 7.0 + movement * 5.0, + 1.0 + movement * 5.0, + ); + next.control.orientation = Quaternion::rotation_x(0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.5 + movement * 0.5); + next.chest.orientation = Quaternion::rotation_x(0.3 + movement * 0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.5 + movement * 0.2); + next.head.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(movement * -0.1) + * Quaternion::rotation_z(-0.4 + movement * -0.2); + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1 - 5.0, + skeleton_attr.foot.2, + ); + next.l_foot.orientation = Quaternion::rotation_x(-0.8); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.r_foot.orientation = Quaternion::rotation_x(0.9); + }, + StageSection::Swing => { + next.control.position = + Vec3::new(-4.0, 12.0 + movement * 13.0, 6.0 + movement * -7.0); + next.control.orientation = Quaternion::rotation_x(0.3 + movement * -3.0) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(1.0 + movement * 0.5); + next.chest.orientation = Quaternion::rotation_x(0.6 + movement * -0.9) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.7 + movement * -0.7); + next.head.orientation = Quaternion::rotation_x(movement * 0.2) + * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_z(-0.6 + movement * 0.6); + + next.l_hand.position = Vec3::new(-12.0 + movement * 10.0, 0.0, 0.0); + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 - 5.0, + ); + next.l_foot.orientation = Quaternion::rotation_x(0.9); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 - 5.0, + skeleton_attr.foot.2, + ); + next.r_foot.orientation = Quaternion::rotation_x(-0.8); + }, + StageSection::Recover => { + next.control.position = Vec3::new(-4.0, 25.0, -1.0); + next.control.orientation = Quaternion::rotation_x(-2.7) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(1.5); + next.chest.orientation = Quaternion::rotation_x(-0.3 + movement * 0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + next.head.orientation = Quaternion::rotation_x(0.2) + * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_z(0.0); + + next.l_hand.position = Vec3::new(-2.0, 0.0, 0.0); + }, + _ => {}, + } + } + + /* if let Some(ToolKind::Hammer(_)) = active_tool_kind { + next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); + next.l_hand.scale = Vec3::one() * 1.08; + next.r_hand.position = Vec3::new(3.0, 0.0, 0.0); + next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); + next.r_hand.scale = Vec3::one() * 1.06; + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(-1.57) + * Quaternion::rotation_z(1.57); + + next.head.position = Vec3::new( + 0.0, + -2.0 + skeleton_attr.head.0 + slower * -1.0, + skeleton_attr.head.1, + ); + next.head.orientation = Quaternion::rotation_z(slower * 0.05) + * Quaternion::rotation_x((slowersmooth * -0.25 + slower * 0.55).max(-0.2)) + * Quaternion::rotation_y(slower * 0.05); + next.head.scale = Vec3::one() * skeleton_attr.head_scale; + + next.chest.position = Vec3::new(0.0, 0.0, 7.0); + next.chest.orientation = Quaternion::rotation_z(slower * 0.08 + slowersmooth * 0.15) + * Quaternion::rotation_x(-0.3 + slower * 0.45 + slowersmooth * 0.26) + * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); + + next.belt.position = Vec3::new(0.0, 0.0, -2.0 + slower * -0.7); + next.belt.orientation = Quaternion::rotation_z(slower * -0.16 + slowersmooth * -0.12) + * Quaternion::rotation_x(0.0 + slower * -0.06) + * Quaternion::rotation_y(slower * -0.05); + + next.shorts.position = Vec3::new(0.0, 0.0, -5.0 + slower * -0.7); + next.shorts.orientation = Quaternion::rotation_z(slower * -0.08 + slowersmooth * -0.08) + * Quaternion::rotation_x(0.0 + slower * -0.08 + slowersmooth * -0.08) + * Quaternion::rotation_y(slower * -0.07); + + next.lantern.orientation = + Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); + next.hold.scale = Vec3::one() * 0.0; + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + slower * 3.0 + slowersmooth * -6.0 - 2.0, + skeleton_attr.foot.2, + ); + next.l_foot.orientation = + Quaternion::rotation_x(slower * -0.2 + slowersmooth * -0.3 - 0.2); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + slower * 2.0 + slowersmooth * -4.0 - 1.0, + -2.0 + skeleton_attr.foot.2, + ); + next.r_foot.orientation = + Quaternion::rotation_x(slower * -0.4 + slowersmooth * -0.6 - 1.0); + + next.control.scale = Vec3::one(); + next.control.position = Vec3::new(-7.0, 7.0, 1.0); + next.control.orientation = Quaternion::rotation_x(-0.7 + slower * 1.5) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); + next.control.scale = Vec3::one(); + + next.lantern.position = Vec3::new( + skeleton_attr.lantern.0, + skeleton_attr.lantern.1, + skeleton_attr.lantern.2, + ); + next.glider.position = Vec3::new(0.0, 0.0, 10.0); + next.glider.scale = Vec3::one() * 0.0; + next.l_control.scale = Vec3::one(); + next.r_control.scale = Vec3::one(); + + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.torso.orientation = Quaternion::rotation_z(0.0); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + */ } else if let Some(ToolKind::Axe(_)) = active_tool_kind { //INTENTION: SWORD next.l_hand.position = Vec3::new(-0.75, -1.0, -2.5); diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 98b9099f78..b516c56b47 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -986,11 +986,42 @@ impl FigureMgr { skeleton_attr, ) }, - CharacterState::LeapMelee(_) => { + CharacterState::LeapMelee(s) => { + let stage_progress = match active_tool_kind { + Some(ToolKind::Axe(_) | ToolKind::Hammer(_)) => { + let stage_time = s.timer.as_secs_f64(); + match s.stage_section { + StageSection::Buildup => { + stage_time + / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Movement => { + stage_time + / s.static_data.movement_duration.as_secs_f64() + }, + StageSection::Swing => { + stage_time / s.static_data.swing_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time + / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + } + }, + _ => state.state_time, + }; + anim::character::LeapAnimation::update_skeleton( &target_base, - (active_tool_kind, second_tool_kind, vel.0, time), - state.state_time, + ( + active_tool_kind, + second_tool_kind, + vel.0, + time, + Some(s.stage_section), + ), + stage_progress, &mut state_animation_rate, skeleton_attr, ) From 1f02048058faed4dd1e2906f1fd52a5fcdda0470 Mon Sep 17 00:00:00 2001 From: Sam <samuelkeiffer@gmail.com> Date: Wed, 30 Sep 2020 13:20:50 -0500 Subject: [PATCH 12/23] Slight tweaks to leap --- common/src/comp/inventory/item/tool.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index c47c997fa5..198a294621 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -227,17 +227,17 @@ impl Tool { num_spins: 1, }, LeapMelee { - energy_cost: 450, + energy_cost: 600, buildup_duration: Duration::from_millis(100), - movement_duration: Duration::from_millis(200), - swing_duration: Duration::from_millis(300), - recover_duration: Duration::from_millis(600), - base_damage: (160.0 * self.base_power()) as u32, - knockback: 15.0, - range: 3.5, - max_angle: 100.0, - forward_leap_strength: 16.0, - vertical_leap_strength: 6.0, + movement_duration: Duration::from_millis(600), + swing_duration: Duration::from_millis(100), + recover_duration: Duration::from_millis(100), + base_damage: (240.0 * self.base_power()) as u32, + knockback: 12.0, + range: 4.5, + max_angle: 30.0, + forward_leap_strength: 20.0, + vertical_leap_strength: 8.0, }, ], Hammer(_) => vec![ @@ -266,15 +266,15 @@ impl Tool { LeapMelee { energy_cost: 0, buildup_duration: Duration::from_millis(200), - movement_duration: Duration::from_millis(500), + movement_duration: Duration::from_millis(650), swing_duration: Duration::from_millis(150), recover_duration: Duration::from_millis(100), base_damage: (240.0 * self.base_power()) as u32, knockback: 25.0, range: 4.5, max_angle: 360.0, - forward_leap_strength: 24.0, - vertical_leap_strength: 4.0, + forward_leap_strength: 28.0, + vertical_leap_strength: 8.0, }, ], Farming(_) => vec![BasicMelee { From 46508875ea770e225a1046e4f21dd9cac053fa80 Mon Sep 17 00:00:00 2001 From: jshipsey <jshipsey18@gmail.com> Date: Sat, 3 Oct 2020 01:43:34 -0400 Subject: [PATCH 13/23] anims --- common/src/comp/inventory/item/tool.rs | 12 +- common/src/states/utils.rs | 2 +- voxygen/src/anim/src/character/chargeswing.rs | 288 ++++++++++++++++ voxygen/src/anim/src/character/mod.rs | 6 +- voxygen/src/anim/src/character/repeater.rs | 318 ++++++++++++++++++ voxygen/src/scene/figure/mod.rs | 124 ++++--- 6 files changed, 685 insertions(+), 65 deletions(-) create mode 100644 voxygen/src/anim/src/character/chargeswing.rs create mode 100644 voxygen/src/anim/src/character/repeater.rs diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 198a294621..3f63d2ac2a 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -260,8 +260,8 @@ impl Tool { range: 3.5, max_angle: 30.0, charge_duration: Duration::from_millis(1200), - swing_duration: Duration::from_millis(100), - recover_duration: Duration::from_millis(500), + swing_duration: Duration::from_millis(400), + recover_duration: Duration::from_millis(600), }, LeapMelee { energy_cost: 0, @@ -327,10 +327,10 @@ impl Tool { }, RepeaterRanged { energy_cost: 0, - movement_duration: Duration::from_millis(200), - buildup_duration: Duration::from_millis(100), - shoot_duration: Duration::from_millis(100), - recover_duration: Duration::from_millis(500), + movement_duration: Duration::from_millis(300), + buildup_duration: Duration::from_millis(200), + shoot_duration: Duration::from_millis(200), + recover_duration: Duration::from_millis(800), leap: Some(10.0), projectile: Projectile { hit_solid: vec![projectile::Effect::Stick], diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index ffae9f9697..afaf37f25d 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -107,7 +107,7 @@ pub fn forward_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32, pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) { // Set direction based on move direction - let ori_dir = if update.character.is_attack() | update.character.is_block() { + let ori_dir = if update.character.is_block() { data.inputs.look_dir.xy() } else if !data.inputs.move_dir.is_approx_zero() { data.inputs.move_dir diff --git a/voxygen/src/anim/src/character/chargeswing.rs b/voxygen/src/anim/src/character/chargeswing.rs new file mode 100644 index 0000000000..b995fb1496 --- /dev/null +++ b/voxygen/src/anim/src/character/chargeswing.rs @@ -0,0 +1,288 @@ +use super::{ + super::{vek::*, Animation}, + CharacterSkeleton, SkeletonAttr, +}; +use common::{ + comp::item::{Hands, ToolKind}, + states::utils::StageSection, +}; +use std::f32::consts::PI; +pub struct ChargeswingAnimation; + +impl Animation for ChargeswingAnimation { + type Dependency = ( + Option<ToolKind>, + Option<ToolKind>, + Vec3<f32>, + f64, + Option<StageSection>, + ); + type Skeleton = CharacterSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"character_chargeswing\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "character_chargeswing")] + #[allow(clippy::approx_constant)] // TODO: Pending review in #587 + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (active_tool_kind, second_tool_kind, velocity, _global_time, stage_section): Self::Dependency, + anim_time: f64, + rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + *rate = 1.0; + let mut next = (*skeleton).clone(); + let speed = Vec2::<f32>::from(velocity).magnitude(); + + let lab = 1.0; + + // Spin stuff here + let foot = (((5.0) + / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 10.32).sin()); + + let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); + + let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); + let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); + let short = (((5.0) + / (1.5 + + 3.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 8.0).sin()); + // end spin stuff + + let movement = (anim_time as f32 * 1.0); + let fire = (anim_time as f32 * 18.0 * lab as f32).sin(); + + let foothoril = (anim_time as f32 * 8.0 * lab as f32 + PI * 1.45).sin(); + let foothorir = (anim_time as f32 * 8.0 * lab as f32 + PI * (0.45)).sin(); + + let footvertl = (anim_time as f32 * 8.0 * lab as f32).sin(); + let footvertr = (anim_time as f32 * 8.0 * lab as f32 + PI).sin(); + let footrotl = (((1.0) + / (0.5 + + (0.5) + * ((anim_time as f32 * 8.0 * lab as f32 + PI * 1.4).sin()) + .powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 8.0 * lab as f32 + PI * 1.4).sin()); + + let footrotr = (((1.0) + / (0.5 + + (0.5) + * ((anim_time as f32 * 8.0 * lab as f32 + PI * 0.4).sin()) + .powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 8.0* lab as f32 + PI * 0.4).sin()); + if let Some(ToolKind::Hammer(_)) = active_tool_kind { + next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); + next.l_hand.orientation = + Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); + next.l_hand.scale = Vec3::one() * 1.08; + next.r_hand.position = Vec3::new(2.0, 0.0, 0.0); + next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); + next.r_hand.scale = Vec3::one() * 1.06; + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = + Quaternion::rotation_y(-1.57) * Quaternion::rotation_z(1.57); + + next.control.position = Vec3::new(6.0, 7.0, 1.0); + next.control.orientation = Quaternion::rotation_x(0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + next.control.scale = Vec3::one(); + if let Some(stage_section) = stage_section { + match stage_section { + StageSection::Charge => { + next.control.position = Vec3::new(6.0+(movement*-4.0).max(-8.0), 7.0+(movement*2.0).min(2.0), 1.0); + next.control.orientation = Quaternion::rotation_x(0.3) + * Quaternion::rotation_y(0.0+(movement*0.7).min(0.7)+fire*0.1*(anim_time as f32).min(2.0)) + * Quaternion::rotation_z(0.0+(movement*0.2).min(0.5)); + + next.chest.position = Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1); + next.chest.orientation = Quaternion::rotation_z((movement*2.0).min(PI/2.0)); + next.shorts.orientation = Quaternion::rotation_z((short*0.25+movement*-1.0).max(-PI/4.0)); + + next.head.position = Vec3::new(0.0, skeleton_attr.head.0-2.0+(movement*2.0).min(2.0), skeleton_attr.head.1); + + next.head.orientation = Quaternion::rotation_z((movement*-1.8).max(PI/-2.0)); + next.shorts.orientation = + Quaternion::rotation_z(short * 0.25); + //next.l_foot.orientation = + //Quaternion::rotation_x((movement*-0.2).max(-0.5))*Quaternion::rotation_z((movement*0.7).min(0.7)); + //next.r_foot.orientation = + //Quaternion::rotation_x((movement*-0.2).max(-0.5))*Quaternion::rotation_z((movement*0.7).min(0.7)); +if speed > 0.5{ + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + -1.5 + skeleton_attr.foot.1 + foothoril * -3.5-2.0, + 2.0 + skeleton_attr.foot.2 + ((footvertl * -1.7).max(-1.0)), + ); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + -1.5 + skeleton_attr.foot.1 + foothorir * -3.5+5.0, + 2.0 + skeleton_attr.foot.2 + ((footvertr * -1.7).max(-1.0)), + ); + + next.l_foot.orientation = Quaternion::rotation_x(-0.4 + footrotl * -0.2) + * Quaternion::rotation_z((movement*0.5).min(0.5)); + next.l_foot.scale = Vec3::one(); + + next.r_foot.orientation = Quaternion::rotation_x(-0.4 + footrotr * -0.2) + * Quaternion::rotation_z((movement*0.5).min(0.5)); +} +else{ + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1-5.0, + skeleton_attr.foot.2, + ); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1+7.0, + skeleton_attr.foot.2, + ); + + next.l_foot.orientation = Quaternion::rotation_x(-0.2); + + next.r_foot.orientation = Quaternion::rotation_x(0.2); + + +}; + + }, + + StageSection::Swing => { + next.chest.orientation = Quaternion::rotation_z(-0.5); + next.control.position = Vec3::new(6.0, 7.0, 1.0+3.0); + next.control.orientation = Quaternion::rotation_x(PI/2.0) + * Quaternion::rotation_y(-1.6) + * Quaternion::rotation_z(-0.1); + next.head.orientation = Quaternion::rotation_z(0.4); + + }, + StageSection::Recover => { + next.chest.orientation = Quaternion::rotation_z(-0.5+movement*0.5); + next.control.position = Vec3::new(6.0, 7.0, 1.0+3.0+movement*-3.0); + next.control.orientation = Quaternion::rotation_x(PI/2.0) + * Quaternion::rotation_y(-1.6+movement*1.6) + * Quaternion::rotation_z(-0.1+movement*0.1); + next.head.orientation = Quaternion::rotation_z(0.4+movement*-0.4); + + }, + _ => {}, + } + } + } + + /* if let Some(ToolKind::Hammer(_)) = active_tool_kind { + next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); + next.l_hand.scale = Vec3::one() * 1.08; + next.r_hand.position = Vec3::new(3.0, 0.0, 0.0); + next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); + next.r_hand.scale = Vec3::one() * 1.06; + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(-1.57) + * Quaternion::rotation_z(1.57); + + next.head.position = Vec3::new( + 0.0, + -2.0 + skeleton_attr.head.0 + slower * -1.0, + skeleton_attr.head.1, + ); + next.head.orientation = Quaternion::rotation_z(slower * 0.05) + * Quaternion::rotation_x((slowersmooth * -0.25 + slower * 0.55).max(-0.2)) + * Quaternion::rotation_y(slower * 0.05); + next.head.scale = Vec3::one() * skeleton_attr.head_scale; + + next.chest.position = Vec3::new(0.0, 0.0, 7.0); + next.chest.orientation = Quaternion::rotation_z(slower * 0.08 + slowersmooth * 0.15) + * Quaternion::rotation_x(-0.3 + slower * 0.45 + slowersmooth * 0.26) + * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); + + next.belt.position = Vec3::new(0.0, 0.0, -2.0 + slower * -0.7); + next.belt.orientation = Quaternion::rotation_z(slower * -0.16 + slowersmooth * -0.12) + * Quaternion::rotation_x(0.0 + slower * -0.06) + * Quaternion::rotation_y(slower * -0.05); + + next.shorts.position = Vec3::new(0.0, 0.0, -5.0 + slower * -0.7); + next.shorts.orientation = Quaternion::rotation_z(slower * -0.08 + slowersmooth * -0.08) + * Quaternion::rotation_x(0.0 + slower * -0.08 + slowersmooth * -0.08) + * Quaternion::rotation_y(slower * -0.07); + + next.lantern.orientation = + Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); + next.hold.scale = Vec3::one() * 0.0; + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + slower * 3.0 + slowersmooth * -6.0 - 2.0, + skeleton_attr.foot.2, + ); + next.l_foot.orientation = + Quaternion::rotation_x(slower * -0.2 + slowersmooth * -0.3 - 0.2); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + slower * 2.0 + slowersmooth * -4.0 - 1.0, + -2.0 + skeleton_attr.foot.2, + ); + next.r_foot.orientation = + Quaternion::rotation_x(slower * -0.4 + slowersmooth * -0.6 - 1.0); + + next.control.scale = Vec3::one(); + next.control.position = Vec3::new(-7.0, 7.0, 1.0); + next.control.orientation = Quaternion::rotation_x(-0.7 + slower * 1.5) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); + next.control.scale = Vec3::one(); + + next.lantern.position = Vec3::new( + skeleton_attr.lantern.0, + skeleton_attr.lantern.1, + skeleton_attr.lantern.2, + ); + next.glider.position = Vec3::new(0.0, 0.0, 10.0); + next.glider.scale = Vec3::one() * 0.0; + next.l_control.scale = Vec3::one(); + next.r_control.scale = Vec3::one(); + + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.torso.orientation = Quaternion::rotation_z(0.0); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + */ + + + //next.lantern.position = Vec3::new( + // skeleton_attr.lantern.0, + // skeleton_attr.lantern.1, + // skeleton_attr.lantern.2, + //); + //next.glider.position = Vec3::new(0.0, 0.0, 10.0); + //next.glider.scale = Vec3::one() * 0.0; + //next.l_control.scale = Vec3::one(); + //next.r_control.scale = Vec3::one(); + + next.second.scale = match ( + active_tool_kind.map(|tk| tk.hands()), + second_tool_kind.map(|tk| tk.hands()), + ) { + (Some(Hands::OneHand), Some(Hands::OneHand)) => Vec3::one(), + (_, _) => Vec3::zero(), + }; + + //next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + //next.torso.orientation = Quaternion::rotation_z(0.0); + //next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + next + } +} diff --git a/voxygen/src/anim/src/character/mod.rs b/voxygen/src/anim/src/character/mod.rs index b6ef304af9..18751b0d62 100644 --- a/voxygen/src/anim/src/character/mod.rs +++ b/voxygen/src/anim/src/character/mod.rs @@ -3,6 +3,7 @@ pub mod beta; pub mod block; pub mod blockidle; pub mod charge; +pub mod chargeswing; pub mod climb; pub mod dance; pub mod dash; @@ -12,6 +13,7 @@ pub mod gliding; pub mod idle; pub mod jump; pub mod leapmelee; +pub mod repeater; pub mod roll; pub mod run; pub mod shoot; @@ -27,10 +29,10 @@ pub mod wield; // Reexports pub use self::{ alpha::AlphaAnimation, beta::BetaAnimation, block::BlockAnimation, - blockidle::BlockIdleAnimation, charge::ChargeAnimation, climb::ClimbAnimation, + blockidle::BlockIdleAnimation, charge::ChargeAnimation, chargeswing::ChargeswingAnimation, climb::ClimbAnimation, dance::DanceAnimation, dash::DashAnimation, equip::EquipAnimation, glidewield::GlideWieldAnimation, gliding::GlidingAnimation, idle::IdleAnimation, - jump::JumpAnimation, leapmelee::LeapAnimation, roll::RollAnimation, run::RunAnimation, + jump::JumpAnimation, leapmelee::LeapAnimation, repeater::RepeaterAnimation, roll::RollAnimation, run::RunAnimation, shoot::ShootAnimation, sit::SitAnimation, sneak::SneakAnimation, spin::SpinAnimation, spinmelee::SpinMeleeAnimation, stand::StandAnimation, swim::SwimAnimation, swimwield::SwimWieldAnimation, wield::WieldAnimation, diff --git a/voxygen/src/anim/src/character/repeater.rs b/voxygen/src/anim/src/character/repeater.rs new file mode 100644 index 0000000000..22e6500ff5 --- /dev/null +++ b/voxygen/src/anim/src/character/repeater.rs @@ -0,0 +1,318 @@ +use super::{ + super::{vek::*, Animation}, + CharacterSkeleton, SkeletonAttr, +}; +use common::{ + comp::item::{Hands, ToolKind}, + states::utils::StageSection, +}; +use std::f32::consts::PI; +pub struct RepeaterAnimation; + +impl Animation for RepeaterAnimation { + type Dependency = ( + Option<ToolKind>, + Option<ToolKind>, + Vec3<f32>, + f64, + Option<StageSection>, + ); + type Skeleton = CharacterSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"character_repeater\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "character_repeater")] + #[allow(clippy::approx_constant)] // TODO: Pending review in #587 + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (active_tool_kind, second_tool_kind, _velocity, _global_time, stage_section): Self::Dependency, + anim_time: f64, + rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + *rate = 1.0; + let mut next = (*skeleton).clone(); + + let lab = 1.0; + + // Spin stuff here + let foot = (((5.0) + / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 10.32).sin()); + + let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); + + let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); + let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); + + // end spin stuff + + let movement = (anim_time as f32 * 1.0).min(1.0); + let fire = (anim_time as f32 * 18.0 * lab as f32).sin(); + + + if let Some(ToolKind::Bow(_)) = active_tool_kind { + next.l_hand.position = Vec3::new(2.0, 1.5, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(1.20) + * Quaternion::rotation_y(-0.6) + * Quaternion::rotation_z(-0.3); + next.l_hand.scale = Vec3::one() * 1.05; + next.r_hand.position = Vec3::new(5.9, 4.5, -5.0); + next.r_hand.orientation = Quaternion::rotation_x(1.20) + * Quaternion::rotation_y(-0.6) + * Quaternion::rotation_z(-0.3); + next.r_hand.scale = Vec3::one() * 1.05; + next.main.position = Vec3::new(3.0, 2.0, -13.0); + next.main.orientation = Quaternion::rotation_x(-0.3) + * Quaternion::rotation_y(0.3) + * Quaternion::rotation_z(-0.6); + + next.hold.position = Vec3::new(1.2, -1.0, -5.2); + next.hold.orientation = Quaternion::rotation_x(-1.7) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(-0.1); + next.hold.scale = Vec3::one() * 1.0; + + next.control.position = Vec3::new(-7.0, 6.0, 6.0); + next.control.orientation = + Quaternion::rotation_x(0.0) * Quaternion::rotation_z(0.0); + next.control.scale = Vec3::one(); + if let Some(stage_section) = stage_section { + match stage_section { + StageSection::Movement => { + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0+movement*-1.5-1.5, + skeleton_attr.foot.1+movement*4.0+4.0, + skeleton_attr.foot.2+movement*2.5+2.5, + ); + next.l_foot.orientation = + Quaternion::rotation_x(movement*0.75+0.75)*Quaternion::rotation_z(movement*0.3+0.3); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0+movement*1.5+1.5, + skeleton_attr.foot.1+movement*4.0+4.0, + skeleton_attr.foot.2+movement*2.5+2.5, + ); + next.r_foot.orientation = + Quaternion::rotation_x(movement*0.75+0.75)*Quaternion::rotation_z(movement*-0.3-0.3); + next.shorts.position = Vec3::new( + 0.0, + skeleton_attr.shorts.0+movement*4.0, + skeleton_attr.shorts.1+movement*1.0, + ); + next.shorts.orientation = + Quaternion::rotation_x(movement*0.6); + next.belt.position = Vec3::new( + 0.0, + skeleton_attr.belt.0+movement*2.0, + skeleton_attr.belt.1, + ); + next.belt.orientation = + Quaternion::rotation_x(movement*0.2); + next.control.position = Vec3::new(-7.0+movement*5.0, 6.0+movement*3.0, 6.0+movement*1.0); + next.control.orientation = + Quaternion::rotation_x(movement*0.4)*Quaternion::rotation_y(movement*0.8); + next.head.orientation = + Quaternion::rotation_y(movement*0.15); + next.torso.orientation = + Quaternion::rotation_x(movement*0.1) + }, + + StageSection::Buildup => { + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0-3.0, + skeleton_attr.foot.1+8.0, + skeleton_attr.foot.2+5.0, + ); + next.l_foot.orientation = + Quaternion::rotation_x(1.5+movement*-0.2)*Quaternion::rotation_z(0.6); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0+3.0, + skeleton_attr.foot.1+8.0, + skeleton_attr.foot.2+5.0, + ); + next.r_foot.orientation = + Quaternion::rotation_x(1.5+movement*-0.2)*Quaternion::rotation_z(-0.6); + next.shorts.position = Vec3::new( + 0.0, + skeleton_attr.shorts.0+4.0, + skeleton_attr.shorts.1+1.0, + ); + next.shorts.orientation = + Quaternion::rotation_x(0.6); + next.belt.position = Vec3::new( + 0.0, + skeleton_attr.belt.0+2.0, + skeleton_attr.belt.1, + ); + next.belt.orientation = + Quaternion::rotation_x(0.2); + next.control.position = Vec3::new(-2.0, 9.0, 7.0); + next.control.orientation = + Quaternion::rotation_x(0.4)*Quaternion::rotation_y(0.8); + next.head.orientation = + Quaternion::rotation_y(0.15+movement*0.05); + next.torso.orientation = + Quaternion::rotation_x(0.1+movement*0.1); + }, + + StageSection::Shoot => { + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0-3.0, + skeleton_attr.foot.1+8.0, + skeleton_attr.foot.2+5.0, + ); + next.l_foot.orientation = + Quaternion::rotation_x(1.3)*Quaternion::rotation_z(0.6); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0+3.0, + skeleton_attr.foot.1+8.0, + skeleton_attr.foot.2+5.0, + ); + next.r_foot.orientation = + Quaternion::rotation_x(1.3)*Quaternion::rotation_z(-0.6); + next.shorts.position = Vec3::new( + 0.0, + skeleton_attr.shorts.0+4.0, + skeleton_attr.shorts.1+1.0, + ); + next.shorts.orientation = + Quaternion::rotation_x(0.6); + next.belt.position = Vec3::new( + 0.0, + skeleton_attr.belt.0+2.0, + skeleton_attr.belt.1, + ); + next.belt.orientation = + Quaternion::rotation_x(0.2); + next.control.position = Vec3::new(-2.0, 9.0, 7.0); + next.control.orientation = + Quaternion::rotation_x(0.4)*Quaternion::rotation_y(0.8); + next.head.orientation = + Quaternion::rotation_y(0.2); + next.torso.orientation = + Quaternion::rotation_x(0.2+movement*0.15); + + + next.l_hand.position = Vec3::new(2.0+fire*-6.0-3.0, 1.5+fire*-6.0-3.0, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(1.20) + * Quaternion::rotation_y(-0.6) + * Quaternion::rotation_z(-0.3); + next.hold.scale = Vec3::one() * 0.0; + + }, + StageSection::Recover => { + }, + _ => {}, + } + } + } + + /* if let Some(ToolKind::Hammer(_)) = active_tool_kind { + next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); + next.l_hand.scale = Vec3::one() * 1.08; + next.r_hand.position = Vec3::new(3.0, 0.0, 0.0); + next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); + next.r_hand.scale = Vec3::one() * 1.06; + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(-1.57) + * Quaternion::rotation_z(1.57); + + next.head.position = Vec3::new( + 0.0, + -2.0 + skeleton_attr.head.0 + slower * -1.0, + skeleton_attr.head.1, + ); + next.head.orientation = Quaternion::rotation_z(slower * 0.05) + * Quaternion::rotation_x((slowersmooth * -0.25 + slower * 0.55).max(-0.2)) + * Quaternion::rotation_y(slower * 0.05); + next.head.scale = Vec3::one() * skeleton_attr.head_scale; + + next.chest.position = Vec3::new(0.0, 0.0, 7.0); + next.chest.orientation = Quaternion::rotation_z(slower * 0.08 + slowersmooth * 0.15) + * Quaternion::rotation_x(-0.3 + slower * 0.45 + slowersmooth * 0.26) + * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); + + next.belt.position = Vec3::new(0.0, 0.0, -2.0 + slower * -0.7); + next.belt.orientation = Quaternion::rotation_z(slower * -0.16 + slowersmooth * -0.12) + * Quaternion::rotation_x(0.0 + slower * -0.06) + * Quaternion::rotation_y(slower * -0.05); + + next.shorts.position = Vec3::new(0.0, 0.0, -5.0 + slower * -0.7); + next.shorts.orientation = Quaternion::rotation_z(slower * -0.08 + slowersmooth * -0.08) + * Quaternion::rotation_x(0.0 + slower * -0.08 + slowersmooth * -0.08) + * Quaternion::rotation_y(slower * -0.07); + + next.lantern.orientation = + Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); + next.hold.scale = Vec3::one() * 0.0; + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + slower * 3.0 + slowersmooth * -6.0 - 2.0, + skeleton_attr.foot.2, + ); + next.l_foot.orientation = + Quaternion::rotation_x(slower * -0.2 + slowersmooth * -0.3 - 0.2); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + slower * 2.0 + slowersmooth * -4.0 - 1.0, + -2.0 + skeleton_attr.foot.2, + ); + next.r_foot.orientation = + Quaternion::rotation_x(slower * -0.4 + slowersmooth * -0.6 - 1.0); + + next.control.scale = Vec3::one(); + next.control.position = Vec3::new(-7.0, 7.0, 1.0); + next.control.orientation = Quaternion::rotation_x(-0.7 + slower * 1.5) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); + next.control.scale = Vec3::one(); + + next.lantern.position = Vec3::new( + skeleton_attr.lantern.0, + skeleton_attr.lantern.1, + skeleton_attr.lantern.2, + ); + next.glider.position = Vec3::new(0.0, 0.0, 10.0); + next.glider.scale = Vec3::one() * 0.0; + next.l_control.scale = Vec3::one(); + next.r_control.scale = Vec3::one(); + + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.torso.orientation = Quaternion::rotation_z(0.0); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + */ + + + //next.lantern.position = Vec3::new( + // skeleton_attr.lantern.0, + // skeleton_attr.lantern.1, + // skeleton_attr.lantern.2, + //); + //next.glider.position = Vec3::new(0.0, 0.0, 10.0); + //next.glider.scale = Vec3::one() * 0.0; + //next.l_control.scale = Vec3::one(); + //next.r_control.scale = Vec3::one(); + + next.second.scale = match ( + active_tool_kind.map(|tk| tk.hands()), + second_tool_kind.map(|tk| tk.hands()), + ) { + (Some(Hands::OneHand), Some(Hands::OneHand)) => Vec3::one(), + (_, _) => Vec3::zero(), + }; + + //next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + //next.torso.orientation = Quaternion::rotation_z(0.0); + //next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + next + } +} diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index b516c56b47..062a977092 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -848,37 +848,38 @@ impl FigureMgr { ) } }, - CharacterState::ChargedMelee(data) => { - if data.exhausted { - anim::character::AlphaAnimation::update_skeleton( - &target_base, - ( - active_tool_kind, - second_tool_kind, - vel.0.magnitude(), - time, - None, - ), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ) - } else { - anim::character::ChargeAnimation::update_skeleton( - &target_base, - ( - active_tool_kind, - second_tool_kind, - vel.0.magnitude(), - ori, - state.last_ori, - time, - ), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ) - } + CharacterState::ChargedMelee(s) => { + let stage_time = s.timer.as_secs_f64(); + + let stage_progress = match s.stage_section { + StageSection::Charge => { + stage_time + / s.static_data.charge_duration.as_secs_f64() + }, + StageSection::Swing => { + stage_time + / s.static_data.swing_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + _ => state.state_time, + }; + + anim::character::ChargeswingAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + second_tool_kind, + vel.0, + time, + Some(s.stage_section), + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) }, CharacterState::ChargedRanged(data) => { if data.exhausted { @@ -906,31 +907,42 @@ impl FigureMgr { ) } }, - CharacterState::RepeaterRanged(data) => { - if data.reps_remaining > 0 { - anim::character::ShootAnimation::update_skeleton( - &target_base, - (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ) - } else { - anim::character::ChargeAnimation::update_skeleton( - &target_base, - ( - active_tool_kind, - second_tool_kind, - vel.0.magnitude(), - ori, - state.last_ori, - time, - ), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ) - } + CharacterState::RepeaterRanged(s) => { + let stage_time = s.timer.as_secs_f64(); + + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time + / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Movement => { + stage_time + / s.static_data.movement_duration.as_secs_f64() + }, + StageSection::Shoot => { + stage_time / s.static_data.shoot_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time + / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + _ => state.state_time, + }; + + anim::character::RepeaterAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + second_tool_kind, + vel.0, + time, + Some(s.stage_section), + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) }, CharacterState::Sneak { .. } => { anim::character::SneakAnimation::update_skeleton( From 296037d2342ccdaec0fe98c02bd495840c0b8288 Mon Sep 17 00:00:00 2001 From: jshipsey <jshipsey18@gmail.com> Date: Sat, 3 Oct 2020 02:19:43 -0400 Subject: [PATCH 14/23] cleanup --- common/src/states/utils.rs | 2 +- voxygen/src/anim/src/character/chargeswing.rs | 281 +++++--------- voxygen/src/anim/src/character/leapmelee.rs | 79 ---- voxygen/src/anim/src/character/mod.rs | 13 +- voxygen/src/anim/src/character/repeater.rs | 360 ++++++------------ voxygen/src/scene/figure/mod.rs | 53 ++- 6 files changed, 245 insertions(+), 543 deletions(-) diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index afaf37f25d..ffae9f9697 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -107,7 +107,7 @@ pub fn forward_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32, pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) { // Set direction based on move direction - let ori_dir = if update.character.is_block() { + let ori_dir = if update.character.is_attack() | update.character.is_block() { data.inputs.look_dir.xy() } else if !data.inputs.move_dir.is_approx_zero() { data.inputs.move_dir diff --git a/voxygen/src/anim/src/character/chargeswing.rs b/voxygen/src/anim/src/character/chargeswing.rs index b995fb1496..ce7d30cdd6 100644 --- a/voxygen/src/anim/src/character/chargeswing.rs +++ b/voxygen/src/anim/src/character/chargeswing.rs @@ -37,24 +37,13 @@ impl Animation for ChargeswingAnimation { let lab = 1.0; - // Spin stuff here - let foot = (((5.0) - / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 10.32).sin()); - - let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); - - let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); - let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); let short = (((5.0) - / (1.5 - + 3.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32))) + / (1.5 + 3.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32))) .sqrt()) * ((anim_time as f32 * lab as f32 * 8.0).sin()); // end spin stuff - let movement = (anim_time as f32 * 1.0); + let movement = anim_time as f32 * 1.0; let fire = (anim_time as f32 * 18.0 * lab as f32).sin(); let foothoril = (anim_time as f32 * 8.0 * lab as f32 + PI * 1.45).sin(); @@ -65,213 +54,131 @@ impl Animation for ChargeswingAnimation { let footrotl = (((1.0) / (0.5 + (0.5) - * ((anim_time as f32 * 8.0 * lab as f32 + PI * 1.4).sin()) - .powf(2.0 as f32))) + * ((anim_time as f32 * 8.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) .sqrt()) * ((anim_time as f32 * 8.0 * lab as f32 + PI * 1.4).sin()); let footrotr = (((1.0) / (0.5 + (0.5) - * ((anim_time as f32 * 8.0 * lab as f32 + PI * 0.4).sin()) - .powf(2.0 as f32))) + * ((anim_time as f32 * 8.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) .sqrt()) - * ((anim_time as f32 * 8.0* lab as f32 + PI * 0.4).sin()); + * ((anim_time as f32 * 8.0 * lab as f32 + PI * 0.4).sin()); if let Some(ToolKind::Hammer(_)) = active_tool_kind { - next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); - next.l_hand.orientation = - Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); - next.l_hand.scale = Vec3::one() * 1.08; - next.r_hand.position = Vec3::new(2.0, 0.0, 0.0); - next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); - next.r_hand.scale = Vec3::one() * 1.06; - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = - Quaternion::rotation_y(-1.57) * Quaternion::rotation_z(1.57); + next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); + next.l_hand.scale = Vec3::one() * 1.08; + next.r_hand.position = Vec3::new(2.0, 0.0, 0.0); + next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); + next.r_hand.scale = Vec3::one() * 1.06; + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_y(-1.57) * Quaternion::rotation_z(1.57); - next.control.position = Vec3::new(6.0, 7.0, 1.0); - next.control.orientation = Quaternion::rotation_x(0.3) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); - next.control.scale = Vec3::one(); + next.control.position = Vec3::new(6.0, 7.0, 1.0); + next.control.orientation = Quaternion::rotation_x(0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + next.control.scale = Vec3::one(); if let Some(stage_section) = stage_section { match stage_section { StageSection::Charge => { - next.control.position = Vec3::new(6.0+(movement*-4.0).max(-8.0), 7.0+(movement*2.0).min(2.0), 1.0); - next.control.orientation = Quaternion::rotation_x(0.3) - * Quaternion::rotation_y(0.0+(movement*0.7).min(0.7)+fire*0.1*(anim_time as f32).min(2.0)) - * Quaternion::rotation_z(0.0+(movement*0.2).min(0.5)); + next.control.position = Vec3::new( + 6.0 + (movement * -4.0).max(-8.0), + 7.0 + (movement * 2.0).min(2.0), + 1.0, + ); + next.control.orientation = Quaternion::rotation_x(0.3) + * Quaternion::rotation_y( + 0.0 + (movement * 0.7).min(0.7) + + fire * 0.1 * (anim_time as f32).min(2.0), + ) + * Quaternion::rotation_z(0.0 + (movement * 0.2).min(0.5)); - next.chest.position = Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1); - next.chest.orientation = Quaternion::rotation_z((movement*2.0).min(PI/2.0)); - next.shorts.orientation = Quaternion::rotation_z((short*0.25+movement*-1.0).max(-PI/4.0)); + next.chest.position = + Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1); + next.chest.orientation = + Quaternion::rotation_z((movement * 2.0).min(PI / 2.0)); + next.belt.orientation = + Quaternion::rotation_z((short * 0.08 + movement * -1.0).max(-PI / 5.0)); + next.shorts.orientation = + Quaternion::rotation_z((short * 0.15 + movement * -1.0).max(-PI / 4.0)); - next.head.position = Vec3::new(0.0, skeleton_attr.head.0-2.0+(movement*2.0).min(2.0), skeleton_attr.head.1); + next.head.position = Vec3::new( + 0.0, + skeleton_attr.head.0 - 2.0 + (movement * 2.0).min(2.0), + skeleton_attr.head.1, + ); - next.head.orientation = Quaternion::rotation_z((movement*-1.8).max(PI/-2.0)); - next.shorts.orientation = - Quaternion::rotation_z(short * 0.25); - //next.l_foot.orientation = - //Quaternion::rotation_x((movement*-0.2).max(-0.5))*Quaternion::rotation_z((movement*0.7).min(0.7)); - //next.r_foot.orientation = - //Quaternion::rotation_x((movement*-0.2).max(-0.5))*Quaternion::rotation_z((movement*0.7).min(0.7)); -if speed > 0.5{ + next.head.orientation = + Quaternion::rotation_z((movement * -1.8).max(PI / -2.0)); + next.belt.orientation = Quaternion::rotation_z(short * 0.05); - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0, - -1.5 + skeleton_attr.foot.1 + foothoril * -3.5-2.0, - 2.0 + skeleton_attr.foot.2 + ((footvertl * -1.7).max(-1.0)), - ); + next.shorts.orientation = Quaternion::rotation_z(short * 0.15); + if speed > 0.5 { + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1 + foothoril * -2.5 - 3.5, + 2.0 + skeleton_attr.foot.2 + ((footvertl * -1.2).max(-1.0)), + ); - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0, - -1.5 + skeleton_attr.foot.1 + foothorir * -3.5+5.0, - 2.0 + skeleton_attr.foot.2 + ((footvertr * -1.7).max(-1.0)), - ); + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 + foothorir * -2.5 + 6.0, + 2.0 + skeleton_attr.foot.2 + ((footvertr * -1.2).max(-1.0)), + ); - next.l_foot.orientation = Quaternion::rotation_x(-0.4 + footrotl * -0.2) - * Quaternion::rotation_z((movement*0.5).min(0.5)); - next.l_foot.scale = Vec3::one(); + next.l_foot.orientation = + Quaternion::rotation_x(-0.4 + footrotl * -0.2) + * Quaternion::rotation_z((movement * 0.5).min(0.5)); + next.l_foot.scale = Vec3::one(); - next.r_foot.orientation = Quaternion::rotation_x(-0.4 + footrotr * -0.2) - * Quaternion::rotation_z((movement*0.5).min(0.5)); -} -else{ + next.r_foot.orientation = + Quaternion::rotation_x(-0.4 + footrotr * -0.2) + * Quaternion::rotation_z((movement * 0.5).min(0.5)); + } else { + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1 - 5.0, + skeleton_attr.foot.2, + ); - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0, - skeleton_attr.foot.1-5.0, - skeleton_attr.foot.2, - ); + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 + 7.0, + skeleton_attr.foot.2, + ); - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0, - skeleton_attr.foot.1+7.0, - skeleton_attr.foot.2, - ); - - next.l_foot.orientation = Quaternion::rotation_x(-0.2); - - next.r_foot.orientation = Quaternion::rotation_x(0.2); - - -}; + next.l_foot.orientation = + Quaternion::rotation_x(-0.2) * Quaternion::rotation_z(0.5); + next.r_foot.orientation = + Quaternion::rotation_x(0.2) * Quaternion::rotation_z(0.5); + }; }, StageSection::Swing => { - next.chest.orientation = Quaternion::rotation_z(-0.5); - next.control.position = Vec3::new(6.0, 7.0, 1.0+3.0); - next.control.orientation = Quaternion::rotation_x(PI/2.0) - * Quaternion::rotation_y(-1.6) - * Quaternion::rotation_z(-0.1); - next.head.orientation = Quaternion::rotation_z(0.4); - + next.chest.orientation = Quaternion::rotation_z(-0.5); + next.control.position = Vec3::new(6.0, 7.0, 1.0 + 3.0); + next.control.orientation = Quaternion::rotation_x(PI / 2.0) + * Quaternion::rotation_y(-1.6) + * Quaternion::rotation_z(-0.1); + next.head.orientation = Quaternion::rotation_z(0.8); + next.l_hand.position = Vec3::new(-3.0, 0.0, 0.0); }, StageSection::Recover => { - next.chest.orientation = Quaternion::rotation_z(-0.5+movement*0.5); - next.control.position = Vec3::new(6.0, 7.0, 1.0+3.0+movement*-3.0); - next.control.orientation = Quaternion::rotation_x(PI/2.0) - * Quaternion::rotation_y(-1.6+movement*1.6) - * Quaternion::rotation_z(-0.1+movement*0.1); - next.head.orientation = Quaternion::rotation_z(0.4+movement*-0.4); - + next.chest.orientation = Quaternion::rotation_z(-0.5 + movement * 0.5); + next.control.position = Vec3::new(6.0, 7.0, 1.0 + 3.0 + movement * -3.0); + next.control.orientation = Quaternion::rotation_x(PI / 2.0) + * Quaternion::rotation_y(-1.6 + movement * 1.6) + * Quaternion::rotation_z(-0.1 + movement * 0.1); + next.head.orientation = Quaternion::rotation_z(0.8 + movement * -0.8); + next.l_hand.position = Vec3::new(-3.0 + movement * -9.0, 0.0, 0.0); }, _ => {}, } } } - /* if let Some(ToolKind::Hammer(_)) = active_tool_kind { - next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); - next.l_hand.scale = Vec3::one() * 1.08; - next.r_hand.position = Vec3::new(3.0, 0.0, 0.0); - next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); - next.r_hand.scale = Vec3::one() * 1.06; - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(-1.57) - * Quaternion::rotation_z(1.57); - - next.head.position = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0 + slower * -1.0, - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_z(slower * 0.05) - * Quaternion::rotation_x((slowersmooth * -0.25 + slower * 0.55).max(-0.2)) - * Quaternion::rotation_y(slower * 0.05); - next.head.scale = Vec3::one() * skeleton_attr.head_scale; - - next.chest.position = Vec3::new(0.0, 0.0, 7.0); - next.chest.orientation = Quaternion::rotation_z(slower * 0.08 + slowersmooth * 0.15) - * Quaternion::rotation_x(-0.3 + slower * 0.45 + slowersmooth * 0.26) - * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); - - next.belt.position = Vec3::new(0.0, 0.0, -2.0 + slower * -0.7); - next.belt.orientation = Quaternion::rotation_z(slower * -0.16 + slowersmooth * -0.12) - * Quaternion::rotation_x(0.0 + slower * -0.06) - * Quaternion::rotation_y(slower * -0.05); - - next.shorts.position = Vec3::new(0.0, 0.0, -5.0 + slower * -0.7); - next.shorts.orientation = Quaternion::rotation_z(slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_x(0.0 + slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_y(slower * -0.07); - - next.lantern.orientation = - Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); - next.hold.scale = Vec3::one() * 0.0; - - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0, - slower * 3.0 + slowersmooth * -6.0 - 2.0, - skeleton_attr.foot.2, - ); - next.l_foot.orientation = - Quaternion::rotation_x(slower * -0.2 + slowersmooth * -0.3 - 0.2); - - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0, - slower * 2.0 + slowersmooth * -4.0 - 1.0, - -2.0 + skeleton_attr.foot.2, - ); - next.r_foot.orientation = - Quaternion::rotation_x(slower * -0.4 + slowersmooth * -0.6 - 1.0); - - next.control.scale = Vec3::one(); - next.control.position = Vec3::new(-7.0, 7.0, 1.0); - next.control.orientation = Quaternion::rotation_x(-0.7 + slower * 1.5) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); - next.control.scale = Vec3::one(); - - next.lantern.position = Vec3::new( - skeleton_attr.lantern.0, - skeleton_attr.lantern.1, - skeleton_attr.lantern.2, - ); - next.glider.position = Vec3::new(0.0, 0.0, 10.0); - next.glider.scale = Vec3::one() * 0.0; - next.l_control.scale = Vec3::one(); - next.r_control.scale = Vec3::one(); - - next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.orientation = Quaternion::rotation_z(0.0); - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; - */ - - - //next.lantern.position = Vec3::new( - // skeleton_attr.lantern.0, - // skeleton_attr.lantern.1, - // skeleton_attr.lantern.2, - //); - //next.glider.position = Vec3::new(0.0, 0.0, 10.0); - //next.glider.scale = Vec3::one() * 0.0; - //next.l_control.scale = Vec3::one(); - //next.r_control.scale = Vec3::one(); - next.second.scale = match ( active_tool_kind.map(|tk| tk.hands()), second_tool_kind.map(|tk| tk.hands()), diff --git a/voxygen/src/anim/src/character/leapmelee.rs b/voxygen/src/anim/src/character/leapmelee.rs index e79f6c23de..1c3a90efe3 100644 --- a/voxygen/src/anim/src/character/leapmelee.rs +++ b/voxygen/src/anim/src/character/leapmelee.rs @@ -161,85 +161,6 @@ impl Animation for LeapAnimation { _ => {}, } } - - /* if let Some(ToolKind::Hammer(_)) = active_tool_kind { - next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); - next.l_hand.scale = Vec3::one() * 1.08; - next.r_hand.position = Vec3::new(3.0, 0.0, 0.0); - next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); - next.r_hand.scale = Vec3::one() * 1.06; - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(-1.57) - * Quaternion::rotation_z(1.57); - - next.head.position = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0 + slower * -1.0, - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_z(slower * 0.05) - * Quaternion::rotation_x((slowersmooth * -0.25 + slower * 0.55).max(-0.2)) - * Quaternion::rotation_y(slower * 0.05); - next.head.scale = Vec3::one() * skeleton_attr.head_scale; - - next.chest.position = Vec3::new(0.0, 0.0, 7.0); - next.chest.orientation = Quaternion::rotation_z(slower * 0.08 + slowersmooth * 0.15) - * Quaternion::rotation_x(-0.3 + slower * 0.45 + slowersmooth * 0.26) - * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); - - next.belt.position = Vec3::new(0.0, 0.0, -2.0 + slower * -0.7); - next.belt.orientation = Quaternion::rotation_z(slower * -0.16 + slowersmooth * -0.12) - * Quaternion::rotation_x(0.0 + slower * -0.06) - * Quaternion::rotation_y(slower * -0.05); - - next.shorts.position = Vec3::new(0.0, 0.0, -5.0 + slower * -0.7); - next.shorts.orientation = Quaternion::rotation_z(slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_x(0.0 + slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_y(slower * -0.07); - - next.lantern.orientation = - Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); - next.hold.scale = Vec3::one() * 0.0; - - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0, - slower * 3.0 + slowersmooth * -6.0 - 2.0, - skeleton_attr.foot.2, - ); - next.l_foot.orientation = - Quaternion::rotation_x(slower * -0.2 + slowersmooth * -0.3 - 0.2); - - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0, - slower * 2.0 + slowersmooth * -4.0 - 1.0, - -2.0 + skeleton_attr.foot.2, - ); - next.r_foot.orientation = - Quaternion::rotation_x(slower * -0.4 + slowersmooth * -0.6 - 1.0); - - next.control.scale = Vec3::one(); - next.control.position = Vec3::new(-7.0, 7.0, 1.0); - next.control.orientation = Quaternion::rotation_x(-0.7 + slower * 1.5) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); - next.control.scale = Vec3::one(); - - next.lantern.position = Vec3::new( - skeleton_attr.lantern.0, - skeleton_attr.lantern.1, - skeleton_attr.lantern.2, - ); - next.glider.position = Vec3::new(0.0, 0.0, 10.0); - next.glider.scale = Vec3::one() * 0.0; - next.l_control.scale = Vec3::one(); - next.r_control.scale = Vec3::one(); - - next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.orientation = Quaternion::rotation_z(0.0); - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; - */ } else if let Some(ToolKind::Axe(_)) = active_tool_kind { //INTENTION: SWORD next.l_hand.position = Vec3::new(-0.75, -1.0, -2.5); diff --git a/voxygen/src/anim/src/character/mod.rs b/voxygen/src/anim/src/character/mod.rs index 18751b0d62..e10c3aeb4e 100644 --- a/voxygen/src/anim/src/character/mod.rs +++ b/voxygen/src/anim/src/character/mod.rs @@ -29,13 +29,14 @@ pub mod wield; // Reexports pub use self::{ alpha::AlphaAnimation, beta::BetaAnimation, block::BlockAnimation, - blockidle::BlockIdleAnimation, charge::ChargeAnimation, chargeswing::ChargeswingAnimation, climb::ClimbAnimation, - dance::DanceAnimation, dash::DashAnimation, equip::EquipAnimation, + blockidle::BlockIdleAnimation, charge::ChargeAnimation, chargeswing::ChargeswingAnimation, + climb::ClimbAnimation, dance::DanceAnimation, dash::DashAnimation, equip::EquipAnimation, glidewield::GlideWieldAnimation, gliding::GlidingAnimation, idle::IdleAnimation, - jump::JumpAnimation, leapmelee::LeapAnimation, repeater::RepeaterAnimation, roll::RollAnimation, run::RunAnimation, - shoot::ShootAnimation, sit::SitAnimation, sneak::SneakAnimation, spin::SpinAnimation, - spinmelee::SpinMeleeAnimation, stand::StandAnimation, swim::SwimAnimation, - swimwield::SwimWieldAnimation, wield::WieldAnimation, + jump::JumpAnimation, leapmelee::LeapAnimation, repeater::RepeaterAnimation, + roll::RollAnimation, run::RunAnimation, shoot::ShootAnimation, sit::SitAnimation, + sneak::SneakAnimation, spin::SpinAnimation, spinmelee::SpinMeleeAnimation, + stand::StandAnimation, swim::SwimAnimation, swimwield::SwimWieldAnimation, + wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; diff --git a/voxygen/src/anim/src/character/repeater.rs b/voxygen/src/anim/src/character/repeater.rs index 22e6500ff5..227e5610ee 100644 --- a/voxygen/src/anim/src/character/repeater.rs +++ b/voxygen/src/anim/src/character/repeater.rs @@ -6,7 +6,6 @@ use common::{ comp::item::{Hands, ToolKind}, states::utils::StageSection, }; -use std::f32::consts::PI; pub struct RepeaterAnimation; impl Animation for RepeaterAnimation { @@ -36,272 +35,153 @@ impl Animation for RepeaterAnimation { let lab = 1.0; - // Spin stuff here - let foot = (((5.0) - / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 10.32).sin()); - - let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); - - let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); - let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); - // end spin stuff let movement = (anim_time as f32 * 1.0).min(1.0); let fire = (anim_time as f32 * 18.0 * lab as f32).sin(); - if let Some(ToolKind::Bow(_)) = active_tool_kind { - next.l_hand.position = Vec3::new(2.0, 1.5, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(1.20) - * Quaternion::rotation_y(-0.6) - * Quaternion::rotation_z(-0.3); - next.l_hand.scale = Vec3::one() * 1.05; - next.r_hand.position = Vec3::new(5.9, 4.5, -5.0); - next.r_hand.orientation = Quaternion::rotation_x(1.20) - * Quaternion::rotation_y(-0.6) - * Quaternion::rotation_z(-0.3); - next.r_hand.scale = Vec3::one() * 1.05; - next.main.position = Vec3::new(3.0, 2.0, -13.0); - next.main.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(0.3) - * Quaternion::rotation_z(-0.6); + next.l_hand.position = Vec3::new(2.0, 1.5, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(1.20) + * Quaternion::rotation_y(-0.6) + * Quaternion::rotation_z(-0.3); + next.l_hand.scale = Vec3::one() * 1.05; + next.r_hand.position = Vec3::new(5.9, 4.5, -5.0); + next.r_hand.orientation = Quaternion::rotation_x(1.20) + * Quaternion::rotation_y(-0.6) + * Quaternion::rotation_z(-0.3); + next.r_hand.scale = Vec3::one() * 1.05; + next.main.position = Vec3::new(3.0, 2.0, -13.0); + next.main.orientation = Quaternion::rotation_x(-0.3) + * Quaternion::rotation_y(0.3) + * Quaternion::rotation_z(-0.6); - next.hold.position = Vec3::new(1.2, -1.0, -5.2); - next.hold.orientation = Quaternion::rotation_x(-1.7) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(-0.1); - next.hold.scale = Vec3::one() * 1.0; + next.hold.position = Vec3::new(1.2, -1.0, -5.2); + next.hold.orientation = Quaternion::rotation_x(-1.7) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(-0.1); + next.hold.scale = Vec3::one() * 1.0; - next.control.position = Vec3::new(-7.0, 6.0, 6.0); - next.control.orientation = - Quaternion::rotation_x(0.0) * Quaternion::rotation_z(0.0); - next.control.scale = Vec3::one(); + next.control.position = Vec3::new(-7.0, 6.0, 6.0); + next.control.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_z(0.0); + next.control.scale = Vec3::one(); if let Some(stage_section) = stage_section { match stage_section { StageSection::Movement => { - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0+movement*-1.5-1.5, - skeleton_attr.foot.1+movement*4.0+4.0, - skeleton_attr.foot.2+movement*2.5+2.5, - ); - next.l_foot.orientation = - Quaternion::rotation_x(movement*0.75+0.75)*Quaternion::rotation_z(movement*0.3+0.3); + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0 + movement * -1.5 - 1.5, + skeleton_attr.foot.1 + movement * 4.0 + 4.0, + skeleton_attr.foot.2 + movement * 2.5 + 2.5, + ); + next.l_foot.orientation = Quaternion::rotation_x(movement * 0.75 + 0.75) + * Quaternion::rotation_z(movement * 0.3 + 0.3); - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0+movement*1.5+1.5, - skeleton_attr.foot.1+movement*4.0+4.0, - skeleton_attr.foot.2+movement*2.5+2.5, - ); - next.r_foot.orientation = - Quaternion::rotation_x(movement*0.75+0.75)*Quaternion::rotation_z(movement*-0.3-0.3); - next.shorts.position = Vec3::new( - 0.0, - skeleton_attr.shorts.0+movement*4.0, - skeleton_attr.shorts.1+movement*1.0, - ); - next.shorts.orientation = - Quaternion::rotation_x(movement*0.6); - next.belt.position = Vec3::new( - 0.0, - skeleton_attr.belt.0+movement*2.0, - skeleton_attr.belt.1, - ); - next.belt.orientation = - Quaternion::rotation_x(movement*0.2); - next.control.position = Vec3::new(-7.0+movement*5.0, 6.0+movement*3.0, 6.0+movement*1.0); - next.control.orientation = - Quaternion::rotation_x(movement*0.4)*Quaternion::rotation_y(movement*0.8); - next.head.orientation = - Quaternion::rotation_y(movement*0.15); - next.torso.orientation = - Quaternion::rotation_x(movement*0.1) + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0 + movement * 1.5 + 1.5, + skeleton_attr.foot.1 + movement * 4.0 + 4.0, + skeleton_attr.foot.2 + movement * 2.5 + 2.5, + ); + next.r_foot.orientation = Quaternion::rotation_x(movement * 0.75 + 0.75) + * Quaternion::rotation_z(movement * -0.3 - 0.3); + next.shorts.position = Vec3::new( + 0.0, + skeleton_attr.shorts.0 + movement * 4.0, + skeleton_attr.shorts.1 + movement * 1.0, + ); + next.shorts.orientation = Quaternion::rotation_x(movement * 0.6); + next.belt.position = Vec3::new( + 0.0, + skeleton_attr.belt.0 + movement * 2.0, + skeleton_attr.belt.1, + ); + next.belt.orientation = Quaternion::rotation_x(movement * 0.2); + next.control.position = Vec3::new( + -7.0 + movement * 5.0, + 6.0 + movement * 3.0, + 6.0 + movement * 1.0, + ); + next.control.orientation = Quaternion::rotation_x(movement * 0.4) + * Quaternion::rotation_y(movement * 0.8); + next.head.orientation = Quaternion::rotation_y(movement * 0.15); + next.torso.orientation = Quaternion::rotation_x(movement * 0.1) }, StageSection::Buildup => { - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0-3.0, - skeleton_attr.foot.1+8.0, - skeleton_attr.foot.2+5.0, - ); - next.l_foot.orientation = - Quaternion::rotation_x(1.5+movement*-0.2)*Quaternion::rotation_z(0.6); + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0 - 3.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.l_foot.orientation = Quaternion::rotation_x(1.5 + movement * -0.2) + * Quaternion::rotation_z(0.6); - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0+3.0, - skeleton_attr.foot.1+8.0, - skeleton_attr.foot.2+5.0, - ); - next.r_foot.orientation = - Quaternion::rotation_x(1.5+movement*-0.2)*Quaternion::rotation_z(-0.6); - next.shorts.position = Vec3::new( - 0.0, - skeleton_attr.shorts.0+4.0, - skeleton_attr.shorts.1+1.0, - ); - next.shorts.orientation = - Quaternion::rotation_x(0.6); - next.belt.position = Vec3::new( - 0.0, - skeleton_attr.belt.0+2.0, - skeleton_attr.belt.1, - ); - next.belt.orientation = - Quaternion::rotation_x(0.2); - next.control.position = Vec3::new(-2.0, 9.0, 7.0); - next.control.orientation = - Quaternion::rotation_x(0.4)*Quaternion::rotation_y(0.8); - next.head.orientation = - Quaternion::rotation_y(0.15+movement*0.05); - next.torso.orientation = - Quaternion::rotation_x(0.1+movement*0.1); + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0 + 3.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.r_foot.orientation = Quaternion::rotation_x(1.5 + movement * -0.2) + * Quaternion::rotation_z(-0.6); + next.shorts.position = Vec3::new( + 0.0, + skeleton_attr.shorts.0 + 4.0, + skeleton_attr.shorts.1 + 1.0, + ); + next.shorts.orientation = Quaternion::rotation_x(0.6); + next.belt.position = + Vec3::new(0.0, skeleton_attr.belt.0 + 2.0, skeleton_attr.belt.1); + next.belt.orientation = Quaternion::rotation_x(0.2); + next.control.position = Vec3::new(-2.0, 9.0, 7.0); + next.control.orientation = + Quaternion::rotation_x(0.4) * Quaternion::rotation_y(0.8); + next.head.orientation = Quaternion::rotation_y(0.15 + movement * 0.05); + next.torso.orientation = Quaternion::rotation_x(0.1 + movement * 0.1); }, StageSection::Shoot => { - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0-3.0, - skeleton_attr.foot.1+8.0, - skeleton_attr.foot.2+5.0, - ); - next.l_foot.orientation = - Quaternion::rotation_x(1.3)*Quaternion::rotation_z(0.6); + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0 - 3.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.l_foot.orientation = + Quaternion::rotation_x(1.3) * Quaternion::rotation_z(0.6); - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0+3.0, - skeleton_attr.foot.1+8.0, - skeleton_attr.foot.2+5.0, - ); - next.r_foot.orientation = - Quaternion::rotation_x(1.3)*Quaternion::rotation_z(-0.6); - next.shorts.position = Vec3::new( - 0.0, - skeleton_attr.shorts.0+4.0, - skeleton_attr.shorts.1+1.0, - ); - next.shorts.orientation = - Quaternion::rotation_x(0.6); - next.belt.position = Vec3::new( - 0.0, - skeleton_attr.belt.0+2.0, - skeleton_attr.belt.1, - ); - next.belt.orientation = - Quaternion::rotation_x(0.2); - next.control.position = Vec3::new(-2.0, 9.0, 7.0); - next.control.orientation = - Quaternion::rotation_x(0.4)*Quaternion::rotation_y(0.8); - next.head.orientation = - Quaternion::rotation_y(0.2); - next.torso.orientation = - Quaternion::rotation_x(0.2+movement*0.15); - - - next.l_hand.position = Vec3::new(2.0+fire*-6.0-3.0, 1.5+fire*-6.0-3.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(1.20) - * Quaternion::rotation_y(-0.6) - * Quaternion::rotation_z(-0.3); - next.hold.scale = Vec3::one() * 0.0; + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0 + 3.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.r_foot.orientation = + Quaternion::rotation_x(1.3) * Quaternion::rotation_z(-0.6); + next.shorts.position = Vec3::new( + 0.0, + skeleton_attr.shorts.0 + 4.0, + skeleton_attr.shorts.1 + 1.0, + ); + next.shorts.orientation = Quaternion::rotation_x(0.6); + next.belt.position = + Vec3::new(0.0, skeleton_attr.belt.0 + 2.0, skeleton_attr.belt.1); + next.belt.orientation = Quaternion::rotation_x(0.2); + next.control.position = Vec3::new(-2.0, 9.0, 7.0); + next.control.orientation = + Quaternion::rotation_x(0.4) * Quaternion::rotation_y(0.8); + next.head.orientation = Quaternion::rotation_y(0.2); + next.torso.orientation = Quaternion::rotation_x(0.2 + movement * 0.15); + next.l_hand.position = + Vec3::new(2.0 + fire * -6.0 - 3.0, 1.5 + fire * -6.0 - 3.0, 0.0); + next.l_hand.orientation = Quaternion::rotation_x(1.20) + * Quaternion::rotation_y(-0.6) + * Quaternion::rotation_z(-0.3); + next.hold.scale = Vec3::one() * 0.0; }, - StageSection::Recover => { - }, + StageSection::Recover => {}, _ => {}, } } } - /* if let Some(ToolKind::Hammer(_)) = active_tool_kind { - next.l_hand.position = Vec3::new(-12.0, 0.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(-0.0) * Quaternion::rotation_y(0.0); - next.l_hand.scale = Vec3::one() * 1.08; - next.r_hand.position = Vec3::new(3.0, 0.0, 0.0); - next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); - next.r_hand.scale = Vec3::one() * 1.06; - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(-1.57) - * Quaternion::rotation_z(1.57); - - next.head.position = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0 + slower * -1.0, - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_z(slower * 0.05) - * Quaternion::rotation_x((slowersmooth * -0.25 + slower * 0.55).max(-0.2)) - * Quaternion::rotation_y(slower * 0.05); - next.head.scale = Vec3::one() * skeleton_attr.head_scale; - - next.chest.position = Vec3::new(0.0, 0.0, 7.0); - next.chest.orientation = Quaternion::rotation_z(slower * 0.08 + slowersmooth * 0.15) - * Quaternion::rotation_x(-0.3 + slower * 0.45 + slowersmooth * 0.26) - * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); - - next.belt.position = Vec3::new(0.0, 0.0, -2.0 + slower * -0.7); - next.belt.orientation = Quaternion::rotation_z(slower * -0.16 + slowersmooth * -0.12) - * Quaternion::rotation_x(0.0 + slower * -0.06) - * Quaternion::rotation_y(slower * -0.05); - - next.shorts.position = Vec3::new(0.0, 0.0, -5.0 + slower * -0.7); - next.shorts.orientation = Quaternion::rotation_z(slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_x(0.0 + slower * -0.08 + slowersmooth * -0.08) - * Quaternion::rotation_y(slower * -0.07); - - next.lantern.orientation = - Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); - next.hold.scale = Vec3::one() * 0.0; - - next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0, - slower * 3.0 + slowersmooth * -6.0 - 2.0, - skeleton_attr.foot.2, - ); - next.l_foot.orientation = - Quaternion::rotation_x(slower * -0.2 + slowersmooth * -0.3 - 0.2); - - next.r_foot.position = Vec3::new( - skeleton_attr.foot.0, - slower * 2.0 + slowersmooth * -4.0 - 1.0, - -2.0 + skeleton_attr.foot.2, - ); - next.r_foot.orientation = - Quaternion::rotation_x(slower * -0.4 + slowersmooth * -0.6 - 1.0); - - next.control.scale = Vec3::one(); - next.control.position = Vec3::new(-7.0, 7.0, 1.0); - next.control.orientation = Quaternion::rotation_x(-0.7 + slower * 1.5) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(1.4 + slowersmooth * -0.4 + slower * 0.2); - next.control.scale = Vec3::one(); - - next.lantern.position = Vec3::new( - skeleton_attr.lantern.0, - skeleton_attr.lantern.1, - skeleton_attr.lantern.2, - ); - next.glider.position = Vec3::new(0.0, 0.0, 10.0); - next.glider.scale = Vec3::one() * 0.0; - next.l_control.scale = Vec3::one(); - next.r_control.scale = Vec3::one(); - - next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.orientation = Quaternion::rotation_z(0.0); - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; - */ - - - //next.lantern.position = Vec3::new( - // skeleton_attr.lantern.0, - // skeleton_attr.lantern.1, - // skeleton_attr.lantern.2, - //); - //next.glider.position = Vec3::new(0.0, 0.0, 10.0); - //next.glider.scale = Vec3::one() * 0.0; - //next.l_control.scale = Vec3::one(); - //next.r_control.scale = Vec3::one(); - next.second.scale = match ( active_tool_kind.map(|tk| tk.hands()), second_tool_kind.map(|tk| tk.hands()), diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 062a977092..bf1d0b21a1 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -852,19 +852,16 @@ impl FigureMgr { let stage_time = s.timer.as_secs_f64(); let stage_progress = match s.stage_section { - StageSection::Charge => { - stage_time - / s.static_data.charge_duration.as_secs_f64() - }, - StageSection::Swing => { - stage_time - / s.static_data.swing_duration.as_secs_f64() - }, - StageSection::Recover => { - stage_time / s.static_data.recover_duration.as_secs_f64() - }, - _ => 0.0, - _ => state.state_time, + StageSection::Charge => { + stage_time / s.static_data.charge_duration.as_secs_f64() + }, + StageSection::Swing => { + stage_time / s.static_data.swing_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, }; anim::character::ChargeswingAnimation::update_skeleton( @@ -911,23 +908,19 @@ impl FigureMgr { let stage_time = s.timer.as_secs_f64(); let stage_progress = match s.stage_section { - StageSection::Buildup => { - stage_time - / s.static_data.buildup_duration.as_secs_f64() - }, - StageSection::Movement => { - stage_time - / s.static_data.movement_duration.as_secs_f64() - }, - StageSection::Shoot => { - stage_time / s.static_data.shoot_duration.as_secs_f64() - }, - StageSection::Recover => { - stage_time - / s.static_data.recover_duration.as_secs_f64() - }, - _ => 0.0, - _ => state.state_time, + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Movement => { + stage_time / s.static_data.movement_duration.as_secs_f64() + }, + StageSection::Shoot => { + stage_time / s.static_data.shoot_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, }; anim::character::RepeaterAnimation::update_skeleton( From 163e76ac37eadcff2a9e11bf5037abbfb581053e Mon Sep 17 00:00:00 2001 From: Snowram <robin.gilh@gmail.com> Date: Sat, 3 Oct 2020 16:33:09 +0200 Subject: [PATCH 15/23] Axe MeleeLeap character animation --- voxygen/src/anim/src/character/leapmelee.rs | 212 ++++++++++++-------- 1 file changed, 124 insertions(+), 88 deletions(-) diff --git a/voxygen/src/anim/src/character/leapmelee.rs b/voxygen/src/anim/src/character/leapmelee.rs index 1c3a90efe3..6bb76d6bf1 100644 --- a/voxygen/src/anim/src/character/leapmelee.rs +++ b/voxygen/src/anim/src/character/leapmelee.rs @@ -34,21 +34,6 @@ impl Animation for LeapAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let lab = 1.0; - - // Spin stuff here - let foot = (((5.0) - / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 10.32).sin()); - - let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); - - let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); - let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); - - // end spin stuff - let movement = (anim_time as f32 * 1.0).min(1.0); if let Some(ToolKind::Hammer(_)) = active_tool_kind { @@ -162,93 +147,144 @@ impl Animation for LeapAnimation { } } } else if let Some(ToolKind::Axe(_)) = active_tool_kind { - //INTENTION: SWORD - next.l_hand.position = Vec3::new(-0.75, -1.0, -2.5); - next.l_hand.orientation = Quaternion::rotation_x(1.27); - next.l_hand.scale = Vec3::one() * 1.04; - next.r_hand.position = Vec3::new(0.75, -1.5, -5.5); - next.r_hand.orientation = Quaternion::rotation_x(1.27); - next.r_hand.scale = Vec3::one() * 1.05; - //next.main.position = Vec3::new(0.0, 0.0, 10.0); - next.main.position = Vec3::new(0.0, 0.0, -5.0); - next.main.orientation = Quaternion::rotation_x(1.6) + next.l_hand.position = Vec3::new(-0.5, 0.0, 4.0); + next.l_hand.orientation = Quaternion::rotation_x(PI / 2.0) + * Quaternion::rotation_z(0.0) + * Quaternion::rotation_y(0.0); + next.l_hand.scale = Vec3::one() * 1.08; + next.r_hand.position = Vec3::new(0.5, 0.0, -2.5); + next.r_hand.orientation = Quaternion::rotation_x(PI / 2.0) + * Quaternion::rotation_z(0.0) + * Quaternion::rotation_y(0.0); + next.r_hand.scale = Vec3::one() * 1.06; + next.main.position = Vec3::new(-0.0, -2.0, -1.0); + next.main.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(-0.4); - next.main.scale = Vec3::one(); + * Quaternion::rotation_z(0.0); - next.control.position = Vec3::new(-4.5 + spinhalf * 4.0, 11.0, 8.0); - next.control.orientation = Quaternion::rotation_x(0.6 + spinhalf * -3.3) - * Quaternion::rotation_y(0.2 + spin * -2.0) - * Quaternion::rotation_z(1.4 + spin * 0.1); + next.control.position = Vec3::new(-3.0, 11.0, 3.0); + next.control.orientation = Quaternion::rotation_x(1.8) + * Quaternion::rotation_y(-0.5) + * Quaternion::rotation_z(PI - 0.2); next.control.scale = Vec3::one(); - next.head.position = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0 + spin * -0.8, - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_z(spin * -0.25) - * Quaternion::rotation_x(0.0 + spin * -0.1) - * Quaternion::rotation_y(spin * -0.2); - next.chest.position = Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1); - next.chest.orientation = Quaternion::rotation_z(spin * 0.1) - * Quaternion::rotation_x(0.0 + spin * 0.1) - * Quaternion::rotation_y(decel * -0.2); - next.chest.scale = Vec3::one(); - next.belt.position = Vec3::new(0.0, 0.0, -2.0); - next.belt.orientation = next.chest.orientation * -0.1; - next.belt.scale = Vec3::one(); + next.head.position = Vec3::new(0.0, -2.0 + skeleton_attr.head.0, skeleton_attr.head.1); - next.shorts.position = Vec3::new(0.0, 0.0, -5.0); - next.belt.orientation = next.chest.orientation * -0.08; - next.shorts.scale = Vec3::one(); - next.torso.position = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.orientation = Quaternion::rotation_z((spin * 7.0).max(0.3)) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.3); - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + if let Some(stage_section) = stage_section { + match stage_section { + StageSection::Buildup => { + next.control.position = Vec3::new( + - 10.0 + movement * 5.0, + 11.0 + movement * - 26.0, + 3.0 + movement * 6.0 + ); + next.control.orientation = Quaternion::rotation_x(1.8 + movement * -1.4) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(PI); + next.chest.orientation = Quaternion::rotation_x(movement * -0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(movement * 0.5); - // Stuff after the branch in the spin animation file + next.head.orientation = Quaternion::rotation_x(0.0 + movement * -0.4) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(movement * -0.4); - next.l_foot.position = - Vec3::new(-skeleton_attr.foot.0, foot * 1.0, skeleton_attr.foot.2); - next.l_foot.orientation = Quaternion::rotation_x(foot * -1.2); - next.l_foot.scale = Vec3::one(); + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 + 8.0 - movement * 6.0, + skeleton_attr.foot.2 + 6.0 - movement * 6.0, + ); + next.r_foot.orientation = Quaternion::rotation_x(0.6 + movement * -0.4); - next.r_foot.position = - Vec3::new(skeleton_attr.foot.0, foot * -1.0, skeleton_attr.foot.2); - next.r_foot.orientation = Quaternion::rotation_x(foot * 1.2); - next.r_foot.scale = Vec3::one(); + next.belt.orientation = Quaternion::rotation_x(movement * 0.22); + next.shorts.orientation = Quaternion::rotation_x(movement * 0.3); + }, - next.l_shoulder.position = Vec3::new(-5.0, 0.0, 4.7); - next.l_shoulder.orientation = Quaternion::rotation_x(0.0); - next.l_shoulder.scale = Vec3::one() * 1.1; + StageSection::Movement => { + next.control.position = Vec3::new( + 0.0, + -15.0 + movement * 5.0, //11 + 9.0 - movement * 5.0, + ); + next.control.orientation = Quaternion::rotation_x(0.4) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(PI); + next.chest.orientation = Quaternion::rotation_x((-0.3 + movement * 6.0).min(0.3)) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + next.head.orientation = Quaternion::rotation_x(-0.4 + movement * 0.4) + * Quaternion::rotation_y(movement * -0.1) + * Quaternion::rotation_z(movement * 0.4); - next.r_shoulder.position = Vec3::new(5.0, 0.0, 4.7); - next.r_shoulder.orientation = Quaternion::rotation_x(0.0); - next.r_shoulder.scale = Vec3::one() * 1.1; + next.l_foot.position = Vec3::new( + - skeleton_attr.foot.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.l_foot.orientation = Quaternion::rotation_x(0.9); - next.glider.position = Vec3::new(0.0, 5.0, 0.0); - next.glider.orientation = Quaternion::rotation_y(0.0); - next.glider.scale = Vec3::one() * 0.0; + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.r_foot.orientation = Quaternion::rotation_x(0.9); - next.lantern.position = Vec3::new( - skeleton_attr.lantern.0, - skeleton_attr.lantern.1, - skeleton_attr.lantern.2, - ); - next.lantern.orientation = - Quaternion::rotation_x(spin * -0.7 + 0.4) * Quaternion::rotation_y(spin * 0.4); - next.lantern.scale = Vec3::one() * 0.65; - next.hold.scale = Vec3::one() * 0.0; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.torso.orientation = Quaternion::rotation_x(movement * - 1.8 * PI); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; - next.l_control.position = Vec3::new(0.0, 0.0, 0.0); - next.l_control.orientation = Quaternion::rotation_x(0.0); - next.l_control.scale = Vec3::one(); + next.belt.orientation = Quaternion::rotation_x(0.22 + movement * 0.1); + next.shorts.orientation = Quaternion::rotation_x(0.3 + movement * 0.1); + }, + StageSection::Swing => { + next.control.position = + Vec3::new(0.0, 12.0 + movement * 8.0, 6.0 + movement * -6.0); + next.control.orientation = Quaternion::rotation_x(0.3 + movement * -3.0) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(PI); + next.chest.orientation = Quaternion::rotation_x(0.6 + movement * -0.9) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.7 + movement * -0.7); + next.head.orientation = Quaternion::rotation_x(movement * 0.2) + * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_z(-0.6 + movement * 0.6); - next.r_control.position = Vec3::new(0.0, 0.0, 0.0); - next.r_control.orientation = Quaternion::rotation_x(0.0); - next.r_control.scale = Vec3::one(); + next.l_hand.position = Vec3::new(-12.0 + movement * 8.0, 0.0, 0.0); + + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 - 5.0, + ); + next.l_foot.orientation = Quaternion::rotation_x(0.9); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 - 5.0, + skeleton_attr.foot.2, + ); + next.r_foot.orientation = Quaternion::rotation_x(-0.8); + + next.torso.orientation = Quaternion::rotation_x(-1.9 * PI - movement * 0.3 * PI); + }, + StageSection::Recover => { + next.control.position = Vec3::new(-4.0, 20.0, 0.0); + next.control.orientation = Quaternion::rotation_x(-2.7) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(PI); + next.chest.orientation = Quaternion::rotation_x(-0.3 + movement * 0.3) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + next.head.orientation = Quaternion::rotation_x(0.2) + * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_z(0.0); + + next.l_hand.position = Vec3::new(-2.0, 0.0, 0.0); + }, + _ => {}, + } + } } //next.lantern.position = Vec3::new( From 4093d4f8086b1570cb0572023cc84a369017a4c2 Mon Sep 17 00:00:00 2001 From: jshipsey <jshipsey18@gmail.com> Date: Sat, 3 Oct 2020 17:54:40 -0400 Subject: [PATCH 16/23] adjustments to chargedmelee, repeater --- common/src/comp/inventory/item/tool.rs | 6 +-- common/src/states/utils.rs | 2 +- voxygen/src/anim/src/character/chargeswing.rs | 4 +- voxygen/src/anim/src/character/leapmelee.rs | 53 ++++++++++--------- voxygen/src/anim/src/character/repeater.rs | 24 ++++----- 5 files changed, 45 insertions(+), 44 deletions(-) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 3f63d2ac2a..f8fcfc9a7f 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -227,10 +227,10 @@ impl Tool { num_spins: 1, }, LeapMelee { - energy_cost: 600, + energy_cost: 0, buildup_duration: Duration::from_millis(100), - movement_duration: Duration::from_millis(600), - swing_duration: Duration::from_millis(100), + movement_duration: Duration::from_millis(900), + swing_duration: Duration::from_millis(200), recover_duration: Duration::from_millis(100), base_damage: (240.0 * self.base_power()) as u32, knockback: 12.0, diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index ffae9f9697..afaf37f25d 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -107,7 +107,7 @@ pub fn forward_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32, pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) { // Set direction based on move direction - let ori_dir = if update.character.is_attack() | update.character.is_block() { + let ori_dir = if update.character.is_block() { data.inputs.look_dir.xy() } else if !data.inputs.move_dir.is_approx_zero() { data.inputs.move_dir diff --git a/voxygen/src/anim/src/character/chargeswing.rs b/voxygen/src/anim/src/character/chargeswing.rs index ce7d30cdd6..e98b5c0e03 100644 --- a/voxygen/src/anim/src/character/chargeswing.rs +++ b/voxygen/src/anim/src/character/chargeswing.rs @@ -161,7 +161,7 @@ impl Animation for ChargeswingAnimation { next.control.position = Vec3::new(6.0, 7.0, 1.0 + 3.0); next.control.orientation = Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-1.6) - * Quaternion::rotation_z(-0.1); + * Quaternion::rotation_z(0.3 - movement * 2.5); next.head.orientation = Quaternion::rotation_z(0.8); next.l_hand.position = Vec3::new(-3.0, 0.0, 0.0); }, @@ -170,7 +170,7 @@ impl Animation for ChargeswingAnimation { next.control.position = Vec3::new(6.0, 7.0, 1.0 + 3.0 + movement * -3.0); next.control.orientation = Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-1.6 + movement * 1.6) - * Quaternion::rotation_z(-0.1 + movement * 0.1); + * Quaternion::rotation_z(-2.2 + movement * 2.2); next.head.orientation = Quaternion::rotation_z(0.8 + movement * -0.8); next.l_hand.position = Vec3::new(-3.0 + movement * -9.0, 0.0, 0.0); }, diff --git a/voxygen/src/anim/src/character/leapmelee.rs b/voxygen/src/anim/src/character/leapmelee.rs index 6bb76d6bf1..bbb97ced74 100644 --- a/voxygen/src/anim/src/character/leapmelee.rs +++ b/voxygen/src/anim/src/character/leapmelee.rs @@ -164,8 +164,8 @@ impl Animation for LeapAnimation { next.control.position = Vec3::new(-3.0, 11.0, 3.0); next.control.orientation = Quaternion::rotation_x(1.8) - * Quaternion::rotation_y(-0.5) - * Quaternion::rotation_z(PI - 0.2); + * Quaternion::rotation_y(-0.5) + * Quaternion::rotation_z(PI - 0.2); next.control.scale = Vec3::one(); next.head.position = Vec3::new(0.0, -2.0 + skeleton_attr.head.0, skeleton_attr.head.1); @@ -174,13 +174,13 @@ impl Animation for LeapAnimation { match stage_section { StageSection::Buildup => { next.control.position = Vec3::new( - - 10.0 + movement * 5.0, - 11.0 + movement * - 26.0, - 3.0 + movement * 6.0 + -3.0 + movement * 3.0, + 11.0 + movement * 1.0, + 3.0 + movement * 12.0, ); - next.control.orientation = Quaternion::rotation_x(1.8 + movement * -1.4) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(PI); + next.control.orientation = Quaternion::rotation_x(1.8 + movement * -1.0) + * Quaternion::rotation_y(-0.5 + movement * 0.5) + * Quaternion::rotation_z(PI + 0.2 - movement * 0.2); next.chest.orientation = Quaternion::rotation_x(movement * -0.3) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(movement * 0.5); @@ -202,26 +202,26 @@ impl Animation for LeapAnimation { StageSection::Movement => { next.control.position = Vec3::new( - 0.0, - -15.0 + movement * 5.0, //11 - 9.0 - movement * 5.0, + 0.0, 12.0, //11 + 15.0, ); - next.control.orientation = Quaternion::rotation_x(0.4) + next.control.orientation = Quaternion::rotation_x(0.8 + movement * -0.5) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(PI); - next.chest.orientation = Quaternion::rotation_x((-0.3 + movement * 6.0).min(0.3)) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); + next.chest.orientation = + Quaternion::rotation_x((-0.3 + movement * 6.0).min(0.3)) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); next.head.orientation = Quaternion::rotation_x(-0.4 + movement * 0.4) * Quaternion::rotation_y(movement * -0.1) * Quaternion::rotation_z(movement * 0.4); next.l_foot.position = Vec3::new( - - skeleton_attr.foot.0, - skeleton_attr.foot.1 + 8.0, - skeleton_attr.foot.2 + 5.0, - ); - next.l_foot.orientation = Quaternion::rotation_x(0.9); + -skeleton_attr.foot.0, + skeleton_attr.foot.1 + 8.0, + skeleton_attr.foot.2 + 5.0, + ); + next.l_foot.orientation = Quaternion::rotation_x(0.9); next.r_foot.position = Vec3::new( skeleton_attr.foot.0, @@ -231,7 +231,7 @@ impl Animation for LeapAnimation { next.r_foot.orientation = Quaternion::rotation_x(0.9); next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.orientation = Quaternion::rotation_x(movement * - 1.8 * PI); + next.torso.orientation = Quaternion::rotation_x(movement * -1.8 * PI); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; next.belt.orientation = Quaternion::rotation_x(0.22 + movement * 0.1); @@ -239,11 +239,11 @@ impl Animation for LeapAnimation { }, StageSection::Swing => { next.control.position = - Vec3::new(0.0, 12.0 + movement * 8.0, 6.0 + movement * -6.0); - next.control.orientation = Quaternion::rotation_x(0.3 + movement * -3.0) + Vec3::new(0.0, 12.0 + movement * 3.0, 15.0 + movement * -15.0); + next.control.orientation = Quaternion::rotation_x(0.3 + movement * -1.2) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(PI); - next.chest.orientation = Quaternion::rotation_x(0.6 + movement * -0.9) + next.chest.orientation = Quaternion::rotation_x(0.6 + movement * -0.2) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.7 + movement * -0.7); next.head.orientation = Quaternion::rotation_x(movement * 0.2) @@ -266,11 +266,12 @@ impl Animation for LeapAnimation { ); next.r_foot.orientation = Quaternion::rotation_x(-0.8); - next.torso.orientation = Quaternion::rotation_x(-1.9 * PI - movement * 0.3 * PI); + next.torso.orientation = + Quaternion::rotation_x(-1.9 * PI - movement * 0.3 * PI); }, StageSection::Recover => { next.control.position = Vec3::new(-4.0, 20.0, 0.0); - next.control.orientation = Quaternion::rotation_x(-2.7) + next.control.orientation = Quaternion::rotation_x(-0.9) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(PI); next.chest.orientation = Quaternion::rotation_x(-0.3 + movement * 0.3) diff --git a/voxygen/src/anim/src/character/repeater.rs b/voxygen/src/anim/src/character/repeater.rs index 227e5610ee..8fe7adf235 100644 --- a/voxygen/src/anim/src/character/repeater.rs +++ b/voxygen/src/anim/src/character/repeater.rs @@ -69,19 +69,19 @@ impl Animation for RepeaterAnimation { match stage_section { StageSection::Movement => { next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0 + movement * -1.5 - 1.5, + -skeleton_attr.foot.0 + movement * -0.75 - 0.75, skeleton_attr.foot.1 + movement * 4.0 + 4.0, skeleton_attr.foot.2 + movement * 2.5 + 2.5, ); - next.l_foot.orientation = Quaternion::rotation_x(movement * 0.75 + 0.75) + next.l_foot.orientation = Quaternion::rotation_x(movement * 0.6 + 0.6) * Quaternion::rotation_z(movement * 0.3 + 0.3); next.r_foot.position = Vec3::new( - skeleton_attr.foot.0 + movement * 1.5 + 1.5, + skeleton_attr.foot.0 + movement * 0.75 + 0.75, skeleton_attr.foot.1 + movement * 4.0 + 4.0, skeleton_attr.foot.2 + movement * 2.5 + 2.5, ); - next.r_foot.orientation = Quaternion::rotation_x(movement * 0.75 + 0.75) + next.r_foot.orientation = Quaternion::rotation_x(movement * 0.6 + 0.6) * Quaternion::rotation_z(movement * -0.3 - 0.3); next.shorts.position = Vec3::new( 0.0, @@ -108,19 +108,19 @@ impl Animation for RepeaterAnimation { StageSection::Buildup => { next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0 - 3.0, + -skeleton_attr.foot.0 - 1.5, skeleton_attr.foot.1 + 8.0, skeleton_attr.foot.2 + 5.0, ); - next.l_foot.orientation = Quaternion::rotation_x(1.5 + movement * -0.2) + next.l_foot.orientation = Quaternion::rotation_x(1.2 + movement * -0.2) * Quaternion::rotation_z(0.6); next.r_foot.position = Vec3::new( - skeleton_attr.foot.0 + 3.0, + skeleton_attr.foot.0 + 1.5, skeleton_attr.foot.1 + 8.0, skeleton_attr.foot.2 + 5.0, ); - next.r_foot.orientation = Quaternion::rotation_x(1.5 + movement * -0.2) + next.r_foot.orientation = Quaternion::rotation_x(1.2 + movement * -0.2) * Quaternion::rotation_z(-0.6); next.shorts.position = Vec3::new( 0.0, @@ -140,20 +140,20 @@ impl Animation for RepeaterAnimation { StageSection::Shoot => { next.l_foot.position = Vec3::new( - -skeleton_attr.foot.0 - 3.0, + -skeleton_attr.foot.0 - 1.5, skeleton_attr.foot.1 + 8.0, skeleton_attr.foot.2 + 5.0, ); next.l_foot.orientation = - Quaternion::rotation_x(1.3) * Quaternion::rotation_z(0.6); + Quaternion::rotation_x(1.0) * Quaternion::rotation_z(0.6); next.r_foot.position = Vec3::new( - skeleton_attr.foot.0 + 3.0, + skeleton_attr.foot.0 + 1.5, skeleton_attr.foot.1 + 8.0, skeleton_attr.foot.2 + 5.0, ); next.r_foot.orientation = - Quaternion::rotation_x(1.3) * Quaternion::rotation_z(-0.6); + Quaternion::rotation_x(1.0) * Quaternion::rotation_z(-0.6); next.shorts.position = Vec3::new( 0.0, skeleton_attr.shorts.0 + 4.0, From bdf7d96833d49cecbc429b8420b634a125d3653f Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Sat, 3 Oct 2020 19:06:31 -0700 Subject: [PATCH 17/23] Smoother leap and recovery leap handling --- common/src/states/repeater_ranged.rs | 78 +++++++++++++++++++--------- common/src/states/utils.rs | 2 +- 2 files changed, 54 insertions(+), 26 deletions(-) diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index a95f860c51..1c33566075 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -54,7 +54,14 @@ impl CharacterBehavior for Data { StageSection::Movement => { // Jumping if let Some(leap_strength) = self.static_data.leap { - update.vel.0 = Vec3::new(data.vel.0.x, data.vel.0.y, leap_strength); + update.vel.0 = Vec3::new( + data.vel.0.x, + data.vel.0.y, + leap_strength + * (1.0 + - self.timer.as_secs_f32() + / self.static_data.movement_duration.as_secs_f32()), + ); } if self.timer < self.static_data.movement_duration { // Do movement @@ -170,31 +177,52 @@ impl CharacterBehavior for Data { } }, StageSection::Recover => { - if !data.physics.on_ground { - // Lands - update.character = CharacterState::RepeaterRanged(Data { - static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - stage_section: self.stage_section, - reps_remaining: self.reps_remaining, - }); - } else if self.timer < self.static_data.recover_duration { - // Recovers from attack - update.character = CharacterState::RepeaterRanged(Data { - static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - stage_section: self.stage_section, - reps_remaining: self.reps_remaining, - }); + if self.static_data.leap == None { + if !data.physics.on_ground { + // Lands + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else if self.timer < self.static_data.recover_duration { + // Recovers from attack + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else { + // Done + update.character = CharacterState::Wielding; + } } else { - // Done - update.character = CharacterState::Wielding; + if data.physics.on_ground { + // Done + update.character = CharacterState::Wielding; + } else if self.timer < self.static_data.recover_duration { + // Recovers from attack + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); + } else { + // Done + update.character = CharacterState::Wielding; + } } }, _ => { diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index afaf37f25d..4578548d5d 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -107,7 +107,7 @@ pub fn forward_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32, pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) { // Set direction based on move direction - let ori_dir = if update.character.is_block() { + let ori_dir = if update.character.is_block() || update.character.is_attack() { data.inputs.look_dir.xy() } else if !data.inputs.move_dir.is_approx_zero() { data.inputs.move_dir From 724331a6fdf148d247edeed14d33e9b296af33c1 Mon Sep 17 00:00:00 2001 From: jshipsey <jshipsey18@gmail.com> Date: Sun, 4 Oct 2020 01:42:44 -0400 Subject: [PATCH 18/23] axeleap tweaks --- common/src/states/wielding.rs | 1 - voxygen/src/anim/src/character/chargeswing.rs | 4 +- voxygen/src/anim/src/character/leapmelee.rs | 127 +++++++++++------- 3 files changed, 84 insertions(+), 48 deletions(-) diff --git a/common/src/states/wielding.rs b/common/src/states/wielding.rs index e1d5e64e97..f64ae9c77f 100644 --- a/common/src/states/wielding.rs +++ b/common/src/states/wielding.rs @@ -18,7 +18,6 @@ impl CharacterBehavior for Data { handle_ability3_input(&data, &mut update); handle_dodge_input(&data, &mut update); - update } diff --git a/voxygen/src/anim/src/character/chargeswing.rs b/voxygen/src/anim/src/character/chargeswing.rs index e98b5c0e03..7f719b4f10 100644 --- a/voxygen/src/anim/src/character/chargeswing.rs +++ b/voxygen/src/anim/src/character/chargeswing.rs @@ -118,13 +118,13 @@ impl Animation for ChargeswingAnimation { next.l_foot.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1 + foothoril * -2.5 - 3.5, - 2.0 + skeleton_attr.foot.2 + ((footvertl * -1.2).max(-1.0)), + skeleton_attr.foot.2 + ((footvertl * -1.2).max(-1.0)), ); next.r_foot.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1 + foothorir * -2.5 + 6.0, - 2.0 + skeleton_attr.foot.2 + ((footvertr * -1.2).max(-1.0)), + skeleton_attr.foot.2 + ((footvertr * -1.2).max(-1.0)), ); next.l_foot.orientation = diff --git a/voxygen/src/anim/src/character/leapmelee.rs b/voxygen/src/anim/src/character/leapmelee.rs index bbb97ced74..3f96bfe8e2 100644 --- a/voxygen/src/anim/src/character/leapmelee.rs +++ b/voxygen/src/anim/src/character/leapmelee.rs @@ -102,7 +102,7 @@ impl Animation for LeapAnimation { }, StageSection::Swing => { next.control.position = - Vec3::new(-4.0, 12.0 + movement * 13.0, 6.0 + movement * -7.0); + Vec3::new(-4.0, 12.0 + movement * 5.0, 6.0 + movement * -7.0); next.control.orientation = Quaternion::rotation_x(0.3 + movement * -3.0) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(1.0 + movement * 0.5); @@ -130,7 +130,7 @@ impl Animation for LeapAnimation { next.r_foot.orientation = Quaternion::rotation_x(-0.8); }, StageSection::Recover => { - next.control.position = Vec3::new(-4.0, 25.0, -1.0); + next.control.position = Vec3::new(-4.0, 17.0, -1.0); next.control.orientation = Quaternion::rotation_x(-2.7) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(1.5); @@ -185,19 +185,31 @@ impl Animation for LeapAnimation { * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(movement * 0.5); - next.head.orientation = Quaternion::rotation_x(0.0 + movement * -0.4) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(movement * -0.4); + next.head.orientation = Quaternion::rotation_x(0.0 + movement * -0.4); + + next.l_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2 - 8.0, + ); next.r_foot.position = Vec3::new( skeleton_attr.foot.0, - skeleton_attr.foot.1 + 8.0 - movement * 6.0, - skeleton_attr.foot.2 + 6.0 - movement * 6.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2 - 8.0, ); - next.r_foot.orientation = Quaternion::rotation_x(0.6 + movement * -0.4); + + next.l_foot.orientation = Quaternion::rotation_x(movement * 0.9); + + next.r_foot.orientation = Quaternion::rotation_x(movement * 0.9); next.belt.orientation = Quaternion::rotation_x(movement * 0.22); next.shorts.orientation = Quaternion::rotation_x(movement * 0.3); + + next.chest.position = + Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1 - 8.0); + next.torso.position = + Vec3::new(0.0, 0.0, 0.0 + 8.0) * skeleton_attr.scaler / 11.0; }, StageSection::Movement => { @@ -205,83 +217,108 @@ impl Animation for LeapAnimation { 0.0, 12.0, //11 15.0, ); + + next.chest.position = + Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1 - 8.0); + next.torso.position = Vec3::new(0.0, 0.0, 0.0 + 8.0) * skeleton_attr.scaler; next.control.orientation = Quaternion::rotation_x(0.8 + movement * -0.5) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(PI); - next.chest.orientation = - Quaternion::rotation_x((-0.3 + movement * 6.0).min(0.3)) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); - next.head.orientation = Quaternion::rotation_x(-0.4 + movement * 0.4) - * Quaternion::rotation_y(movement * -0.1) - * Quaternion::rotation_z(movement * 0.4); + next.torso.orientation = Quaternion::rotation_x(-0.3 + movement * 6.0) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + next.head.orientation = Quaternion::rotation_x(-0.4 + movement * 0.4); next.l_foot.position = Vec3::new( -skeleton_attr.foot.0, - skeleton_attr.foot.1 + 8.0, - skeleton_attr.foot.2 + 5.0, + skeleton_attr.foot.1 + movement * 4.0, + skeleton_attr.foot.2 - 8.0 + movement * 3.0, ); next.l_foot.orientation = Quaternion::rotation_x(0.9); next.r_foot.position = Vec3::new( skeleton_attr.foot.0, - skeleton_attr.foot.1 + 8.0, - skeleton_attr.foot.2 + 5.0, + skeleton_attr.foot.1 + movement * 4.0, + skeleton_attr.foot.2 - 8.0 + movement * 3.0, ); next.r_foot.orientation = Quaternion::rotation_x(0.9); - - next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.chest.position = + Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1 - 8.0); + next.torso.position = + Vec3::new(0.0, 0.0, 0.0 + 8.0) * skeleton_attr.scaler / 11.0; next.torso.orientation = Quaternion::rotation_x(movement * -1.8 * PI); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; next.belt.orientation = Quaternion::rotation_x(0.22 + movement * 0.1); next.shorts.orientation = Quaternion::rotation_x(0.3 + movement * 0.1); + + next.chest.position = + Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1 - 8.0); + next.torso.position = + Vec3::new(0.0, 0.0, 0.0 + 8.0) * skeleton_attr.scaler / 11.0; }, StageSection::Swing => { next.control.position = Vec3::new(0.0, 12.0 + movement * 3.0, 15.0 + movement * -15.0); - next.control.orientation = Quaternion::rotation_x(0.3 + movement * -1.2) + next.control.orientation = Quaternion::rotation_x(0.3 + movement * -1.0) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(PI); - next.chest.orientation = Quaternion::rotation_x(0.6 + movement * -0.2) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.7 + movement * -0.7); - next.head.orientation = Quaternion::rotation_x(movement * 0.2) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(-0.6 + movement * 0.6); - next.l_hand.position = Vec3::new(-12.0 + movement * 8.0, 0.0, 0.0); + next.head.orientation = Quaternion::rotation_x(movement * 0.2); + + next.l_hand.position = Vec3::new(-0.5, 0.0, 4.0); next.l_foot.position = Vec3::new( -skeleton_attr.foot.0, - skeleton_attr.foot.1 + 8.0, - skeleton_attr.foot.2 - 5.0, + skeleton_attr.foot.1 + 4.0 + movement * -8.0, + skeleton_attr.foot.2 - 5.0 + movement * -3.0, ); - next.l_foot.orientation = Quaternion::rotation_x(0.9); + next.l_foot.orientation = Quaternion::rotation_x(0.9 - movement * 1.8); next.r_foot.position = Vec3::new( skeleton_attr.foot.0, - skeleton_attr.foot.1 - 5.0, - skeleton_attr.foot.2, + skeleton_attr.foot.1 + 4.0 + movement * -8.0, + skeleton_attr.foot.2 - 5.0 + movement * -3.0, ); - next.r_foot.orientation = Quaternion::rotation_x(-0.8); + next.r_foot.orientation = Quaternion::rotation_x(0.9 - movement * 1.8); next.torso.orientation = - Quaternion::rotation_x(-1.9 * PI - movement * 0.3 * PI); + Quaternion::rotation_x(-1.9 * PI - movement * 0.2 * PI); + + next.chest.position = + Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1 - 8.0); + next.torso.position = + Vec3::new(0.0, 0.0, 0.0 + 8.0) * skeleton_attr.scaler / 11.0; }, StageSection::Recover => { - next.control.position = Vec3::new(-4.0, 20.0, 0.0); - next.control.orientation = Quaternion::rotation_x(-0.9) + next.control.position = Vec3::new(0.0, 15.0, 0.0); + next.control.orientation = Quaternion::rotation_x(-0.7) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(PI); - next.chest.orientation = Quaternion::rotation_x(-0.3 + movement * 0.3) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); - next.head.orientation = Quaternion::rotation_x(0.2) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(0.0); - next.l_hand.position = Vec3::new(-2.0, 0.0, 0.0); + next.head.orientation = Quaternion::rotation_x(0.2); + + next.l_hand.position = Vec3::new(-0.5, 0.0, 4.0); + + next.chest.position = + Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1 - 8.0); + next.torso.position = + Vec3::new(0.0, 0.0, 0.0 + 8.0) * skeleton_attr.scaler / 11.0; + next.torso.orientation = + Quaternion::rotation_x(-6.7 + movement * -0.1 * PI); + next.l_foot.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1 - 4.0, + skeleton_attr.foot.2 - 8.0, + ); + next.l_foot.orientation = Quaternion::rotation_x(-0.9); + + next.r_foot.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1 - 4.0, + skeleton_attr.foot.2 - 8.0, + ); + next.r_foot.orientation = Quaternion::rotation_x(-0.9); }, _ => {}, } From 40da71bfaf6aaa0b0926af89cfdbe2491f346a42 Mon Sep 17 00:00:00 2001 From: jshipsey <jshipsey18@gmail.com> Date: Sun, 4 Oct 2020 14:09:44 -0400 Subject: [PATCH 19/23] energy values, remove hotload --- common/src/comp/inventory/item/tool.rs | 6 +++--- voxygen/src/anim/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index f8fcfc9a7f..5c49693408 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -227,7 +227,7 @@ impl Tool { num_spins: 1, }, LeapMelee { - energy_cost: 0, + energy_cost: 450, buildup_duration: Duration::from_millis(100), movement_duration: Duration::from_millis(900), swing_duration: Duration::from_millis(200), @@ -264,7 +264,7 @@ impl Tool { recover_duration: Duration::from_millis(600), }, LeapMelee { - energy_cost: 0, + energy_cost: 700, buildup_duration: Duration::from_millis(200), movement_duration: Duration::from_millis(650), swing_duration: Duration::from_millis(150), @@ -326,7 +326,7 @@ impl Tool { max_projectile_speed: 500.0, }, RepeaterRanged { - energy_cost: 0, + energy_cost: 450, movement_duration: Duration::from_millis(300), buildup_duration: Duration::from_millis(200), shoot_duration: Duration::from_millis(200), diff --git a/voxygen/src/anim/Cargo.toml b/voxygen/src/anim/Cargo.toml index 10869c6cc3..75bb0ecbe3 100644 --- a/voxygen/src/anim/Cargo.toml +++ b/voxygen/src/anim/Cargo.toml @@ -8,7 +8,7 @@ version = "0.7.0" name = "voxygen_anim" # Uncomment to use animation hot reloading # Note: this breaks `cargo test` -crate-type = ["lib", "cdylib"] +# crate-type = ["lib", "cdylib"] [features] be-dyn-lib = [] From f6ce3f19577ba0a26fe57a3cc92748ed10488c87 Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Mon, 5 Oct 2020 22:21:22 -0700 Subject: [PATCH 20/23] Responded to testing feedback --- common/src/comp/ability.rs | 6 +++++- common/src/comp/inventory/item/tool.rs | 23 ++++++++++++----------- common/src/states/charged_melee.rs | 23 ++++++++++++++++++++--- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 10b4e4a25b..251570e3b2 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -158,6 +158,7 @@ pub enum CharacterAbility { charge_duration: Duration, swing_duration: Duration, recover_duration: Duration, + is_interruptible: bool, }, ChargedRanged { energy_cost: u32, @@ -526,7 +527,7 @@ impl From<&CharacterAbility> for CharacterState { exhausted: false, }), CharacterAbility::ChargedMelee { - energy_cost: _, + energy_cost, energy_drain, initial_damage, max_damage, @@ -537,8 +538,10 @@ impl From<&CharacterAbility> for CharacterState { recover_duration, range, max_angle, + is_interruptible, } => CharacterState::ChargedMelee(charged_melee::Data { static_data: charged_melee::StaticData { + energy_cost: *energy_cost, energy_drain: *energy_drain, initial_damage: *initial_damage, max_damage: *max_damage, @@ -549,6 +552,7 @@ impl From<&CharacterAbility> for CharacterState { charge_duration: *charge_duration, swing_duration: *swing_duration, recover_duration: *recover_duration, + is_interruptible: *is_interruptible, }, stage_section: StageSection::Charge, timer: Duration::default(), diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 5c49693408..9eb029f563 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -228,15 +228,15 @@ impl Tool { }, LeapMelee { energy_cost: 450, - buildup_duration: Duration::from_millis(100), - movement_duration: Duration::from_millis(900), + buildup_duration: Duration::from_millis(200), + movement_duration: Duration::from_millis(200), swing_duration: Duration::from_millis(200), - recover_duration: Duration::from_millis(100), + recover_duration: Duration::from_millis(200), base_damage: (240.0 * self.base_power()) as u32, knockback: 12.0, range: 4.5, max_angle: 30.0, - forward_leap_strength: 20.0, + forward_leap_strength: 28.0, vertical_leap_strength: 8.0, }, ], @@ -251,24 +251,25 @@ impl Tool { max_angle: 20.0, }, ChargedMelee { - energy_cost: 0, + energy_cost: 1, energy_drain: 300, - initial_damage: (20.0 * self.base_power()) as u32, + initial_damage: (10.0 * self.base_power()) as u32, max_damage: (170.0 * self.base_power()) as u32, - initial_knockback: 12.0, + initial_knockback: 10.0, max_knockback: 60.0, range: 3.5, max_angle: 30.0, charge_duration: Duration::from_millis(1200), swing_duration: Duration::from_millis(400), - recover_duration: Duration::from_millis(600), + recover_duration: Duration::from_millis(100), + is_interruptible: false, }, LeapMelee { energy_cost: 700, - buildup_duration: Duration::from_millis(200), - movement_duration: Duration::from_millis(650), + buildup_duration: Duration::from_millis(100), + movement_duration: Duration::from_millis(800), swing_duration: Duration::from_millis(150), - recover_duration: Duration::from_millis(100), + recover_duration: Duration::from_millis(200), base_damage: (240.0 * self.base_power()) as u32, knockback: 25.0, range: 4.5, diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index c022659254..e92e5e6b44 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -11,6 +11,8 @@ use std::time::Duration; pub struct StaticData { /// How much energy is drained per second when charging pub energy_drain: u32, + /// Energy cost per attack + pub energy_cost: u32, /// How much damage is dealt with no charge pub initial_damage: u32, /// How much damage is dealt with max charge @@ -29,6 +31,8 @@ pub struct StaticData { pub swing_duration: Duration, /// How long the state has until exiting pub recover_duration: Duration, + /// Whether the state can be interrupted by other abilities + pub is_interruptible: bool, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] @@ -50,14 +54,25 @@ impl CharacterBehavior for Data { fn behavior(&self, data: &JoinData) -> StateUpdate { let mut update = StateUpdate::from(data); - handle_move(data, &mut update, 0.3); + handle_move(data, &mut update, 0.7); handle_jump(data, &mut update); + // Allows for other states to interrupt this state + if self.static_data.is_interruptible && !data.inputs.ability3.is_pressed() { + handle_interrupt(data, &mut update); + match update.character { + CharacterState::ChargedMelee(_) => {}, + _ => { + return update; + }, + } + } + match self.stage_section { StageSection::Charge => { if data.inputs.secondary.is_pressed() + && update.energy.current() >= self.static_data.energy_cost && self.timer < self.static_data.charge_duration - && update.energy.current() > 0 { let charge = (self.timer.as_secs_f32() / self.static_data.charge_duration.as_secs_f32()) @@ -80,7 +95,9 @@ impl CharacterBehavior for Data { -(self.static_data.energy_drain as f32 * data.dt.0) as i32, EnergySource::Ability, ); - } else if data.inputs.secondary.is_pressed() { + } else if data.inputs.secondary.is_pressed() + && update.energy.current() >= self.static_data.energy_cost + { // Maintains charge update.character = CharacterState::ChargedMelee(Data { static_data: self.static_data, From 76e63840ec8671ccd424e007fddb6671d1bb14c5 Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Wed, 14 Oct 2020 12:46:20 -0700 Subject: [PATCH 21/23] Skill icons with proper rotation --- assets/voxygen/element/icons/2hhammer_m1.png | Bin 597 -> 430 bytes .../element/icons/skill_axe_leap_slash.png | Bin 789 -> 501 bytes .../element/icons/skill_bow_jump_burst.png | Bin 675 -> 248 bytes .../element/icons/skill_hammergolf.png | Bin 982 -> 410 bytes .../element/icons/skill_hammerleap.png | Bin 1015 -> 987 bytes .../voxygen/element/icons/sword_whirlwind.png | Bin 533 -> 444 bytes common/src/comp/ability.rs | 3 - common/src/comp/inventory/item/tool.rs | 1 - common/src/states/charged_melee.rs | 13 - common/src/states/leap_melee.rs | 1 - .../singleplayer/server_config/admins.ron | 1 + .../singleplayer/server_config/banlist.ron | 1 + .../server_config/description.ron | 1 + .../singleplayer/server_config/whitelist.ron | 1 + userdata/voxygen/logs/voxygen.log.2020-10-12 | 885 ++++++++++++++++++ userdata/voxygen/profile.ron | 18 + 16 files changed, 907 insertions(+), 18 deletions(-) create mode 100644 userdata/singleplayer/server_config/admins.ron create mode 100644 userdata/singleplayer/server_config/banlist.ron create mode 100644 userdata/singleplayer/server_config/description.ron create mode 100644 userdata/singleplayer/server_config/whitelist.ron create mode 100644 userdata/voxygen/logs/voxygen.log.2020-10-12 create mode 100644 userdata/voxygen/profile.ron diff --git a/assets/voxygen/element/icons/2hhammer_m1.png b/assets/voxygen/element/icons/2hhammer_m1.png index 17994cdea69006877e1645b590192949239229e0..43eaf3fc2e27e23ea77ddbfd85fc818673543cd2 100644 GIT binary patch literal 430 zcmV;f0a5;mP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00004b3#c}2nYxW zd<bNS0004HNkl<ZIE}58v5LY#5Qe`w;%i)?ot>2+DQwi2$ODM2z2fz0Lmoiz8BQAu zIS>x6v$MI^xWHTycin6@MvnVoAv>9T{4=vz0aR51VD?5$`*kf;)UyES0CJ}}dIH=8 z4Fj9NPe307LtqCQbg9#gHVIJ59+#SK$^~})cng~p0OeV#*W;-UegKRrWxcNu5w6FR z4IeINyBCqND$^wqBCqs2(19H;XD0n2hs&AM$CphBf^W}8FaG3u<JiJnnOJWelOzdw zmX=^u$CYuoUjr)u@+_q{jw@wP`a=NbizP{t5RV2G=T(PBBB(0!#nL);OE=C8EFKM7 zfU1ZHyDltWv5rE{9y%;M*rzixQ+^1x-EM<JiJ|~3{VpdcBIH?Woi@QL$EFEpdTNeH zn=?C#T^9|({NCQT)%X7Y9Qm-qNsgf6v<(KgDTiR@gTjHf!2pEYjqSt!Dxth3{zV<& Y7d&r62J#t+S^xk507*qoM6N<$f-Cp0O#lD@ literal 597 zcmV-b0;>IqP)<h;3K|Lk000e1NJLTq001Tc001Tk1^@s6s6FYf00001b5ch_0Itp) z=>Px%4@pEpR9J=W);~+bKo|z_Cn6#hwHCD+OOd1C<{;wWsPqdsh(kVrD2Th8AUL`x zet=GH>KN=`K^&x?pcE7hR7ER7=vD{0cuB5p?oXo>A1LK6DgE*0y~_cAG{$fJaltg3 z!8yxuJWs4J9_FoH_l<X4*8pOIwF9M+N#B^_`r|;f1JOBl4A<3HF$zi#4u-DP8VxRh zhopU`3=4wt)oSP-n-CAjhJ~_?4*=4SvK8p)U^{ege(yMhYli|PDi#HlBQpSiO7+Q` z+vVU|p#Xu3iGV1I2aJM>3}aD25Q||E!Fdr>WEhKT1)``{RTDu8!Du$tR`C2<?|dUV zSFK(8q<_ie;j!i$vprR*KKU9yO0~4XvYE7R%r?CYN((GlEgBV+7Fafu<~~XlloV`i zbeN0Ni2@{6<-l|vbFlIL@fo^Sye{MJyd>k0gISJa6il;e69U8F7r<JY$K=S67F1+d z5El&ZM4=j?9<v<Bs5Kg3Ki!IOkFm|%>9nd6EgNh%@(&Y@^qIe4noW8XI@w(H=5NX` zAhQYVpWVj0^T!pfuu8=R08FLSH(D*Q@nix3kjs64Z=GI&w-Jj(Tg51jjmk@08b;p& zHX&F)yu?NE-g}ffqOD@f3lrY=$>u6bi<7V%2R0#1nKwl5uS(iux*n$%80|CQXJx8x j8A>p^0NC(WXHVq|Sz;tNVXTYC00000NkvXXu0mjftq%h@ diff --git a/assets/voxygen/element/icons/skill_axe_leap_slash.png b/assets/voxygen/element/icons/skill_axe_leap_slash.png index 4cf85d48a98b35947cfcf97a9ed51059f1477f06..f1674e15cc1b7af1e5da490a994b0a94ed34558a 100644 GIT binary patch delta 475 zcmV<10VMvF2K57wB!9X|L_t(IPnDIiN&`U<hIbJwK@dr!wihsBm55*!t3)3mF_ogA z4`7ulRUW`Xuu9A;NUW0HbYhC6HB}T*v=UkQ2mWI=?8S4Nz1+@z`~Nd@8*7Yl&N=hC zerPxri!1WD-07IFc3Ym8YBkf(X5*O9!~S?|?91AL!{X}XPJf`B3B}q%xttnm-zydO z-GB2A)KIAWs8(Yr0v{TUM5O|xJ#AatCsd~(32Ko*C<sAA_6beOsr_uV92N<MeSq|U za^w^+4iqZ{6(ECtx?S01t@VKD0u22g@7Mv_zF5|+flb4~zyszA1^L}9<z&9RAEMU; z2$h%#wY?~E#edPr>o-7euCHYC$=QWD+RB*ijf{DGp31x1r>Ov`ns7h`h=rYcJywNN zX-~rdr8*5mETCxo7>Iz7QrLttDug-?q-Hapm&1cVLV0=!##A6?FTa}(h!Y88&M<3O zDj+O}V6dYLMa##h=bl}0#-hxFF$I6wje%)kx;Ie>T~uX#tx01i+0>hKr?aJ4S#J#& z>}&yaAl2(lZ0gX3Yn!E<oBaZ20|C`z-p!3$z~O5^!}g-c+xXuf_zU<2y@y`1)YzWq R00000NkvXXu0mjf001a);-3Hj delta 765 zcmV<Z0s{T@1C<7lB!7fyLqkwWLqi~Na&Km7Y-IodD3N`UJ4nM&6o&t%iVs>GEF$8N zp*mR*6>-!m6rn<>6<T#Lx#<g<G$bi5j)H5!!N+3N!Nplu2UkH5e1JGPIw`tHiRUJT z7BL>U+>igB|L5Lw0ij-In$<B5Xu55t5^*t;T@|}t(StAo7=Hj{W*Kvml!R}6-BTyk zU5sb>_x)L6HD@s(AQI0q!?cMvh^IGggY!OdgcW6#_?&pmqze*1a$WKGjdQ_efoDd{ zbZVYBLM#^ASZQNcG&SNW;;5?WlrLmFRyl8R*2-1ZyeEHQD5tM1bDh>O5?I6%B#2N@ zMG0lth|#W-Vt*k;=W!qZkn5MorI4!xMvetkph0&1;D7LYwpM;}!b=LpfzB7l`4|DZ zc7aCCalVfor*Q%VpMfjA<*(F%nNQMdEiHNk^lbwd*DX!i11@)f!6!pDWmgK)67qTA z{fxdT3-sRty=&gwn&&uu0Maz8<PC6e2#gjed)?>V-GA+K`?se#zaQGqa%y0n&4mB} z00v@9M??VZ02%;E3f4|D00009a7bBm001r{001r{0eGc9b^rhX2XskIMF->w4FMhj z9RDol0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN?MXyIR5;76 zRlyCzAb$+B5ep#Y!3qqKMKWMk=l~gl4Jv+Y5c;T$tP2pT#u5@-;Osjmgo%iP&xIa{ zm>jbvJIqGwx!1V_Vxv7~HoH!y12H=yX%Vy%=`gdK*K@CH#C2l+w;^bS5l}`?%52zQ z{F>>$#f?bZBIqSQ%=VRx#@=-s?a}A$j9(*}7<SWLmTtDlyDxT3j`g=4ljGoXiOKOo zM8Q*8-mi)gIl9~hdJ%jsGW4?%hUbl5NQHQCgoz5ms<iYL$!M;5noZGO>I$@{y?az7 vGfF@U?w-qB2n$wq@dmtZRbDH5@)z&{e$C}2nuAt^00000NkvXXu0mjf!T3$i diff --git a/assets/voxygen/element/icons/skill_bow_jump_burst.png b/assets/voxygen/element/icons/skill_bow_jump_burst.png index cc77937ec3f76328e291a0b11eb44e9589289180..50466fafcc621e1c1dac8e0928e250962da76eeb 100644 GIT binary patch delta 232 zcmZ3?`h#(TL_G^L0|P_-at1pf#aJBV?!<WWq)t7M!&%@FS<Jw|Eeyhp4727)00o5t zd_r7-^nO*<H&UKo7A^Y!|Nr)l>-O61hyaS#d%8G=RLsdecaZal0|#pW^E=yHjpxD^ zh$$3upHTg~eUsOrd15T`hv)ZiSgEyf`r8A7%MxEVyKOK!&736>5!z|aTrKBxdFkdC zk+O2vZ2zycUu3%_uQ_klUC{~GD@{H-bzI+5wLUF!-sJiDzK>tD70gYZ#<2U7bZbOH f@}f|uE%l5H77Bhh7atS{x`n~h)z4*}Q$iB}NQYYQ delta 663 zcmV;I0%-mC0iy+w7=H)`0001ui5(3900D$)LqkwWLqi~Na&Km7Y-IodD3N`UJxIeq z9K~N#r79H%BS>+GP@OD@ia2T&iclfc3avVrkA6Xuh9t$sQE)9d__0`ZaB<ev!Br3h zKR}!uofKW9#Q!CQ7BL<i_v78Y$K5-CtCtnc>KF$!-8NH+xPOqzt_q=7bYlQKA{dqw z%a{|zBz(u$JpydKi?J;KbAOIrHD@V6Kp>t~4AUmwAfDc|4aWP#yi$}@;&b9LlP*a7 z$aLA`H^v2*IhM(r>C`+iPb?JLSZ-sbXlle$#8Fk#DWA)DtTNtWtd*-u^PcR5;hes* z%ygPVNMI355Pu;+MinKLVIxMXPKt#T?Z<um5!Wx0OD0zd3ON=~fd<L-gZ;tpZms;} zgqIYK1D!99^DzR1c7aCCalVfor*Q%VpMfjA<*(F%nNQMdEiHNk^lbwd*DX!n11@)f z!6!p9C07d4<nnpo{fxdT3-sRtJ!@WX&3&9c0BPzfd4B^O90H>S%3k+*cUOCF|DI{~ z_XB#Oa;icfUh@C|00v@9M??VZ02%;E3f4|D00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF->w6%-s3QZOOM0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht z7XSbNdw)qpK~y-)V_+EBKvUxVe@e|@qPC-0aJlsQ3qeL?8k;(Fx$7?k8JURj>h%|b zjM!*&c@!_B8%j!eQX}kf8b<X<VH&jQZ}55<XQXIKy#Eiw$O@5ZY;1HxnUE7FdV<B3 x!11w}s2!0QUM5Bpx=*m_CE0aU&2IPr0L<H43lO;}!<hg8002ovPDHLkV1lvW6hr_3 diff --git a/assets/voxygen/element/icons/skill_hammergolf.png b/assets/voxygen/element/icons/skill_hammergolf.png index 74bcf2fc32595d5584a189b6f4b628b867d25f78..af1a8499624cc4427f5b44ab186bfda03742680f 100644 GIT binary patch delta 395 zcmV;60d)S>2bu$r8Gi-<0051N9Sr~g00eVFNmK|32nc)#WQYI&0Z~arK~y-6rIRsk z!axv3-=Lg=f*VjGA<~hSih56Anc7_nI_g-QfSQUHx*#M<Za~2`CWY6_j=d&?e95vs zw%@*4?+Ty*ORBsBAAqWY2<_zdR=>ifh#(4zDkAa(v>SG>fqyEfsw$vMf9xxB^$*m9 zT)R>k270%tM5fi)iO7PUEeNX0r@#FM_I_^4^$LL7?qJ|8rZMa=tp~X64s5Sy=7SOa z+0>fK0)V&lFw$x>hCNCzS@p2G&H4<my`DoY4Cw9Bh7l~!3U0eY0G*DP@Y;MZYAzz6 zYyhJ+^Q^!*M}L1drChH}t7Z-(JKJ&uE7vQWbBrfLoO9$^5kTE38!bma;&i+)o(#ho ztZCb>3>e$8`Ma(K&9j2JpVOvU8u$eCZkJx%Ppm@=-E5Ly+&@k3lsb*YU6s1+eg}GJ p)BbhC7n0t3{{cR3;BOJ&2kradS_Kf*;s5{u07*qoL<FuvV1jglwPFAO delta 971 zcmV;+12p`a1J(zS8Gix*0008(idp~w0fT8nLr_UWLm+T+Z)Rz1WdHyuk$sUpNW(xJ z#a~lPRVohcAmWgrI$01Eanvdlp+cw?T6HkF^b498k`xz5!L{Jv$70pN#aUMeS3wZ` z0C943Qgo3L|Cbb6#CUMrk9YSTckck9QDvIdH3n$9ZDvwQF@Kj|5yP+OK?qR@h|A0} zW+f>N-|=;i0AKGCJj?&wpQBGLSPTe=#52q=ZQ^y}sZHD9yiXisWmzRYCmuEFg2azp zS3G{>Tyk09nK3h)nIn!7i=_@$I+&GBjd+qcu4+2v3ptNf&Rd+dYK^t-$zK>L=*vr7 zr#XZa7O)5jB7YRrP(c+o613{1Sjf<R(#JpO`XzEH<f?#?V;&pOAiI9>Klt6PRh$_2 zk|IeU^x`-l!$5c!Xx1I)``B@sCqVESxYFDHjRr9NNqW7l#gBmgZQ$a%ttorJ<qk0L zWXPuMN<o@Ju?W1M(KqFR=q=E@>h;#z$LRx*rLNL9z<<FZFjAuIHJ^8PclP%0nO1*4 z8-Q|zKU=Qq00009a7bBm001r{001r{0eGc9b^rhX2XskIMF->w1rr4v4B6CF0000P zbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbO!AV3xR5;6hlRr*lF%ZUo zj%ZhUsei%=5CuX)9AP=cYa<Ro@6_ZHv@{g-C~~@O-9(PGdjp3iB~ns+Ta2HdlSMmn zF}7#E`TIFZILEgV0>Hxq5{m`EatRP4@9)6H_nv)UjPCD&a~pdE1d36n)RXhc)eK@( z&f`}~7lgomUyxGb=4L=0%8_<E$ePV4$xCdvTz_2+*pgDx;h+%I_gbwa3H0$H$uHy= zlK1jn5}oK2qnsp*<fZ`H^KTbiCqTb<fV-Ymvx&L6DcYl7TaL%l<QVZD;Bbg*04^`t zY)(*P6rGBIQc?&CK~m{WO2x)|<!m`y+E@)%xxJdiC`nqatRr+%&hoxGOPW~xuemQt z)_+<4#7*J$w!Z(_09Xmymx+i@{zq2MwS+b|n{d%per@u!rZpc!Dc2Ab!U)t<S9YaB zlx5NgBrxaNj-o@eB(3CZy_NSR-8zECcrxsPD`&kfOY-^2@yK#H(qNeFs4E14-rmYo z>^iJ|iPMtg^|k6wm8&Mt&m#w0o}2}@bVNpqwRG!yy}X=IGDdl?wnsqW${B(Gb8^<> tqn@554XvxF^ZAKs+kAWRUUzrq{1-PG4@q#Ln~VSe002ovPDHLkV1l9}!z};+ diff --git a/assets/voxygen/element/icons/skill_hammerleap.png b/assets/voxygen/element/icons/skill_hammerleap.png index 600bd24e66b9422216a4878bf3ed5b94211cb3eb..658625848e855324f51fe7607b4c5862f01fd826 100644 GIT binary patch literal 987 zcmV<110?*3P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ;Sln4i*t{$WWau6cusQDionYs1;guFu8t0lZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2EW9Gw(hq{ROvg%&X$9QWhhy~o`<KxkB$YIel{RkMs# zA}(gKt77*ng6Km4gNVt@)aN8A3D5C$4<BFeqCCs{+@GU2mp2*U6NzV;Zdk+{#M7IW z&Uv3W%t~^O_?&p$pbHW|a$RxxjdRgqfoFz|bZVYBOe_{VSm|I^GF0Lz;z&-_C|}69 zoa4O3S*_Gq>z@3Dp}e-T%ypV0NMI35kRU=q4P{hdAxf)8iis5M$36VRj$a~|Las6x zITlcb3fb|4|H1EW&BEk_n-q!zffw8U7zMg_fo9#dzmILZc>?&Kfh(=;uQq_0Ptxmc zEpi0(Zvz+CZB5w&E_Z;TCtWsVNAlAY3I*W(jJ_!g4BP_2HMh6cK29HiG<B7{0S*p< zu_9%!d%U}+v$ucGwEFu2VOnya@WKTP00006VoOIv08juV02JiTPW1o)010qNS#tmY zE+YT{E+YYWr9XB6000McNliru<O&W27!HUA>k|L~02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00FZ}L_t(I%bk-wOJhM4hM#l2+a!XrNiMjt@go<O#bzZe ztWC;nY^=q!{scRJgnz-pVt+ueGu6W4M-#BPh&Bd6jq8G@5jhq*<K%wn?hDh*ne&|Y zoS6}TzpJYXaJ0YA|LAMI4#33Dj(7%^r$!Xfh@v;ad$pQ+W6frwQXD2Ch)62b&8cs0 z;scB|n>_CBX2RCKQ~(eWRF!TRCe9jTUa{RC*+_G_FkN9`x{~S6<QCg)yg{{vf##`q zewDiK!UokAURp5jvUh%!aG2H!@C<Za=Cz*J>Y&;Jc)paZHryGyEyv>thiP)>8lPY8 z%&$NFP_tB3@3yy9RTaox?pal}4FC4SJ(CZ`k?JDC@xejvt(!M#?!dO}!d(42{GGX< z6$9`~{f@0LsJ1BeI{=)Wo{Sv)zWB|8+?eaG)bHST!;nTlN(4>f%<Q~%7BAw00J>p_ z?A2;&{%w3lc{1}eGXLA((mw$FT>1>a_~ggbgt#`AmjJlCy#e6jg(EBTWt%w_lt-X% z$-*wLUoR!lA(v9HfvKQu557k(EYKkWus&B%z=Ho(fe!66d;*Ts&~M!-7Qg@i002ov JPDHLkV1g&<!-xO? literal 1015 zcmV<T0|@+yP)<h;3K|Lk000e1NJLTq001Tc001Tk1^@s6s6FYf000BNNkl<ZSPAV| zO;1xn6uoVTApr`64<n$cK_qdZ!Ng$V&IK!7Xre#Bu<#GK@)xl22k;AA=*Erii5j9r z7fk@Gf`Y*oC=?J1F_<&$8ShNzy_N{X1(V>+J@?#m&ztv{$1@=!dm<upef`p#nZeSI z5QZf1+r@%Byg6jJ&)=oZoLk>C^LBApUN*K?=&`nzK1rkWAO2&F`B!n2UPHaDv7<Cn zORr;Nwd|7S9PgOkjkq<AB8(&#A#&)qCB)kg7N@Dt&HwgR*5L}YQ+@URZpK}$t_!WT zR!GP9P!|#bMxl|Ol%b5x7c2%~XZLqhsl}-Qz}E?xvxOp(h<aB-6k@NQjT-*&-AB4^ z-)pUdi`2&a-GaE?F%UxpI-oG)gPNmyT4Pa-@@pGWsYAsbV|shp_1ESWmxnTkdSVwH zW1-H|nRy33-QD5D>8V*KzBF*wiN7!8oVZ%RTU*swXGe>pRovON@%s-m(%RBwV=P`z zq~+?B(&>%ZuXo5XLF~yNQ)f~%m0w*K{9q8PRvXH5w~&iHU_nSv%~_2zJ)L%q#bS0v znp2HZUw^`!JX_m4vR2rTj&^sKzs+Zzx=^4^A#ZMF+)>fkP;Yfs@&&ubqWe_4WWFpo zSl{_>ad~@E(!i$$j?K#9n*zf=V^QX^OL=t;YvEF(RH~tTMwfEgrPa#L7BSyFHo_ug z3b-|fAY?ALyjJ>-vhN6W;q2q*h-(Y_n#y>TsS0B>cmKwq$YSYW&1Um|UtAO~ZI*6Z z{s>eM&FWdD(W7^KQX%fr*)gV`j!(*H`46_O?V?B`A(_wavqWyKGoC&Dh@nT^;Pq5+ zu+13!tKeE^n~6XD$jODS4teqBqnvDZ&oGMoTw9lc-Y&x<Hj!O6OT552LZ?1+jxm}+ za%}LN;m`;RFcX8h(71K|vVqCd9F2`kezhszWMZzb-#)4|19n?egS?%dm7$C7D@J2_ zjT*!ly2j^_2hMW&zZ8IJlZX?K?+sgHFvAfiNDgM77iA7y8V+%^NpS1588*@)SYuGE z99EsQVHiS8Ove<WX~u~s5AN6<V{@Mrg+nBiBZj=zBCav5K~u=vuOt>R>Ce8HpO1>Q zE;TfUI^xto-Wb!w5Qzo;tm|~n*9hfMtLst2AMlfYQj2gM*NB|BS@!@>>(QX*Aa8G_ zCbNkq6XP70WAl(E>q9xMX^d4PQS4u4-IO|UeUqUi3lCz}`cdXI2R*^Fw^EzX0)7z- lH9ra?M{7V^>xVeN{s5!)#CdcUABF$`002ovPDHLkV1i$u@V@{6 diff --git a/assets/voxygen/element/icons/sword_whirlwind.png b/assets/voxygen/element/icons/sword_whirlwind.png index 870477f40ac041e78ee889937bcd74a66d29d6cd..bdee6f09474ba127709edef65a0aef699a7d64e4 100644 GIT binary patch literal 444 zcmV;t0Ym<YP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%0004lNkl<ZI8UvW zy-Nc@5XEP)RJ71EYI^|@8$)`_#KK0fiHU!Wf|ZqmqE$W$!A3;OSP4R|5*0#F1hr8c z!TRJ4&N8>Rdj@fu8}{aY`{vEEXNV~2MiC(v%VmBdMk*DXkJjrp_az@Q%e*}GdO@Ze zMage4`M`xuzMR`7sbOHAvJgy20{s&ZAL|YNMWH~9F_a|iR%(;nmQjp>xNXDywbd0m zJ~^fL>8c$Fk_^zD@Gwx+tj`x{VYc80hM>}(Zd=1{p5Ma2JShA_-1U02wNYhdfVFOa zfbKce=M4v34z>oN<|@9X$A<wuowXQ-A$bqB0LR;HPF;|OA>Z8Iu|u*ztuhbfgRwGW z7@7eB=2PT?L>XXT%_es;)@Y=GOZ`5>V73l;g@9iYXj8*v-73_uxl)Pl<CtsmV4t;G z>Q-XE<+c$Zb_Gm8A!UI1!V5e)*vqu2Jqy8t3IWu94GZ%E5BGP21ISZmha$fK@zCcB me7!6d?JIpD>-vdKhrR*B$Q;_EX~Mn$0000<MNUMnLSTX=?!`j@ literal 533 zcmV+w0_y#VP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0jfzvK~z{r?bpvM z1YsP<@n<*^2V8L7Ey=~UcgN-6qFmOlzlL&hqKMP}I4Bp1BPXSHPC{)Wg$pjqdCh$1 z`KbBoX`Xr5ZJsCZTAwMJ?5mxb))PW>f|oeU<-+-Hwpf%$@%l?8c@%G;Qjteyy-zI2 zqo~oBQ`$cInc=)Zjs%gZ92ZDx<oQG%#pCC(N3d6NJT7USVAuY^P)7AR3rqSv`u_}a zCC>|Qy}`}56T5jR&*QEj(v`%MVR>nh_Tcb{_HBHg7UA!Z{er05l4xamjCN)+T6YAI zt|Wq}>S{(@?&|54);&R#R+5X|v|6<5tI<`=<?7eA2_jQTT`_dwU(!C@-_brE*J&Y# zCyl#;Lyd+!ib@hgTn?>mY|`@kqkV#iOPY$IBsqNMa9&8-F9^B65<^_>vsR-;gVidn zy@GS?HZA0I#gM5S&pttw+*F}Jd+YnO$W-p5T&7KWrrR%wcMLf$hSJLE=8oY0?lvt_ ziJ{-hA@>A(C5P-6+}qirMcukuRb^i=c+p!9B*Xb3s2k+Y^Lbic+V48U%_eQe1%>zm XyTTZ4KjnWq00000NkvXXu0mjfKg;^{ diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 251570e3b2..070c88b584 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -158,7 +158,6 @@ pub enum CharacterAbility { charge_duration: Duration, swing_duration: Duration, recover_duration: Duration, - is_interruptible: bool, }, ChargedRanged { energy_cost: u32, @@ -538,7 +537,6 @@ impl From<&CharacterAbility> for CharacterState { recover_duration, range, max_angle, - is_interruptible, } => CharacterState::ChargedMelee(charged_melee::Data { static_data: charged_melee::StaticData { energy_cost: *energy_cost, @@ -552,7 +550,6 @@ impl From<&CharacterAbility> for CharacterState { charge_duration: *charge_duration, swing_duration: *swing_duration, recover_duration: *recover_duration, - is_interruptible: *is_interruptible, }, stage_section: StageSection::Charge, timer: Duration::default(), diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 9eb029f563..e8b9132860 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -262,7 +262,6 @@ impl Tool { charge_duration: Duration::from_millis(1200), swing_duration: Duration::from_millis(400), recover_duration: Duration::from_millis(100), - is_interruptible: false, }, LeapMelee { energy_cost: 700, diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index e92e5e6b44..e266fe99bf 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -31,8 +31,6 @@ pub struct StaticData { pub swing_duration: Duration, /// How long the state has until exiting pub recover_duration: Duration, - /// Whether the state can be interrupted by other abilities - pub is_interruptible: bool, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] @@ -57,17 +55,6 @@ impl CharacterBehavior for Data { handle_move(data, &mut update, 0.7); handle_jump(data, &mut update); - // Allows for other states to interrupt this state - if self.static_data.is_interruptible && !data.inputs.ability3.is_pressed() { - handle_interrupt(data, &mut update); - match update.character { - CharacterState::ChargedMelee(_) => {}, - _ => { - return update; - }, - } - } - match self.stage_section { StageSection::Charge => { if data.inputs.secondary.is_pressed() diff --git a/common/src/states/leap_melee.rs b/common/src/states/leap_melee.rs index bbd844f630..8505759d50 100644 --- a/common/src/states/leap_melee.rs +++ b/common/src/states/leap_melee.rs @@ -33,7 +33,6 @@ pub struct StaticData { } #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] -//#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)] pub struct Data { /// Struct containing data that does not change over the course of the /// character state diff --git a/userdata/singleplayer/server_config/admins.ron b/userdata/singleplayer/server_config/admins.ron new file mode 100644 index 0000000000..0637a088a0 --- /dev/null +++ b/userdata/singleplayer/server_config/admins.ron @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/userdata/singleplayer/server_config/banlist.ron b/userdata/singleplayer/server_config/banlist.ron new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/userdata/singleplayer/server_config/banlist.ron @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/userdata/singleplayer/server_config/description.ron b/userdata/singleplayer/server_config/description.ron new file mode 100644 index 0000000000..47474ec828 --- /dev/null +++ b/userdata/singleplayer/server_config/description.ron @@ -0,0 +1 @@ +"This is the best Veloren server" \ No newline at end of file diff --git a/userdata/singleplayer/server_config/whitelist.ron b/userdata/singleplayer/server_config/whitelist.ron new file mode 100644 index 0000000000..0637a088a0 --- /dev/null +++ b/userdata/singleplayer/server_config/whitelist.ron @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/userdata/voxygen/logs/voxygen.log.2020-10-12 b/userdata/voxygen/logs/voxygen.log.2020-10-12 new file mode 100644 index 0000000000..d953b35df0 --- /dev/null +++ b/userdata/voxygen/logs/voxygen.log.2020-10-12 @@ -0,0 +1,885 @@ +[2mOct 11 18:00:01.436[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 18:00:01.996[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 18:00:02.329[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 18:00:02.427[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 18:00:02.968[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED + +A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. + +> What should I do? + +We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: + +https://www.gitlab.com/veloren/veloren/issues/new + +If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. + +> What should I include? + +The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. + +Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. + +> Error information + +The information below is intended for developers and testers. + +Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(815) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" +PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(815) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 +Game version: 702f7e51 [2020-10-12] + +Backtrace: + 0: veloren_voxygen::main::{{closure}} + 1: std::panicking::rust_panic_with_hook + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 + 2: std::panicking::begin_panic_handler::{{closure}} + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 + 3: std::sys_common::backtrace::__rust_end_short_backtrace + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 + 4: rust_begin_unwind + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 + 5: core::panicking::panic_fmt + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 + 6: core::option::expect_none_failed + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 + 7: veloren_voxygen::main + 8: std::sys_common::backtrace::__rust_begin_short_backtrace + 9: std::rt::lang_start::{{closure}} + +[2mOct 11 18:04:17.781[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 18:04:17.977[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 18:04:18.008[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 18:04:18.130[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 18:04:18.313[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED + +A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. + +> What should I do? + +We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: + +https://www.gitlab.com/veloren/veloren/issues/new + +If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. + +> What should I include? + +The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. + +Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. + +> Error information + +The information below is intended for developers and testers. + +Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(776) : error C0000: syntax error, unexpected \\\"<<\\\" at token \\\"<<\\\"\\n0(784) : error C0000: syntax error, unexpected \\\">>\\\" at token \\\">>\\\"\\n0(784) : error C0159: invalid char \\\'d\\\' in integer constant suffix\\n0(784) : error C0159: invalid char \\\'c\\\' in integer constant suffix\\n0(784) : error C0159: invalid char \\\'b\\\' in integer constant suffix\\n0(784) : error C0158: invalid digit \\\'8\\\' in octal constant\\n0(786) : error C1503: undefined variable \\\"wind_offset\\\"\\n0(789) : error C0000: syntax error, unexpected \\\"<<\\\" at token \\\"<<\\\"\\n0(793) : error C0159: invalid char \\\'d\\\' in integer constant suffix\\n0(793) : error C0159: invalid char \\\'c\\\' in integer constant suffix\\n0(793) : error C0159: invalid char \\\'b\\\' in integer constant suffix\\n0(793) : error C0158: invalid digit \\\'8\\\' in octal constant\\n0(796) : error C1503: undefined variable \\\"cloud\\\"\\n0(796) : error C1503: undefined variable \\\"turbulence\\\"\\n0(825) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" +PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(776) : error C0000: syntax error, unexpected \"<<\" at token \"<<\"\n0(784) : error C0000: syntax error, unexpected \">>\" at token \">>\"\n0(784) : error C0159: invalid char \'d\' in integer constant suffix\n0(784) : error C0159: invalid char \'c\' in integer constant suffix\n0(784) : error C0159: invalid char \'b\' in integer constant suffix\n0(784) : error C0158: invalid digit \'8\' in octal constant\n0(786) : error C1503: undefined variable \"wind_offset\"\n0(789) : error C0000: syntax error, unexpected \"<<\" at token \"<<\"\n0(793) : error C0159: invalid char \'d\' in integer constant suffix\n0(793) : error C0159: invalid char \'c\' in integer constant suffix\n0(793) : error C0159: invalid char \'b\' in integer constant suffix\n0(793) : error C0158: invalid digit \'8\' in octal constant\n0(796) : error C1503: undefined variable \"cloud\"\n0(796) : error C1503: undefined variable \"turbulence\"\n0(825) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 +Game version: 702f7e51 [2020-10-12] + +Backtrace: + 0: veloren_voxygen::main::{{closure}} + 1: std::panicking::rust_panic_with_hook + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 + 2: std::panicking::begin_panic_handler::{{closure}} + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 + 3: std::sys_common::backtrace::__rust_end_short_backtrace + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 + 4: rust_begin_unwind + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 + 5: core::panicking::panic_fmt + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 + 6: core::option::expect_none_failed + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 + 7: veloren_voxygen::main + 8: std::sys_common::backtrace::__rust_begin_short_backtrace + 9: std::rt::lang_start::{{closure}} + +[2mOct 11 18:13:02.407[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 18:13:02.590[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 18:13:02.610[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 18:13:02.689[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 18:13:02.861[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED + +A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. + +> What should I do? + +We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: + +https://www.gitlab.com/veloren/veloren/issues/new + +If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. + +> What should I include? + +The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. + +Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. + +> Error information + +The information below is intended for developers and testers. + +Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(815) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" +PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(815) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 +Game version: 88d6c645 [2020-10-12] + +Backtrace: + 0: veloren_voxygen::main::{{closure}} + 1: std::panicking::rust_panic_with_hook + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 + 2: std::panicking::begin_panic_handler::{{closure}} + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 + 3: std::sys_common::backtrace::__rust_end_short_backtrace + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 + 4: rust_begin_unwind + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 + 5: core::panicking::panic_fmt + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 + 6: core::option::expect_none_failed + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 + 7: veloren_voxygen::main + 8: std::sys_common::backtrace::__rust_begin_short_backtrace + 9: std::rt::lang_start::{{closure}} + +[2mOct 11 18:17:38.536[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 18:17:38.764[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 18:17:38.786[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 18:17:38.882[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 18:30:57.586[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 18:30:57.777[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 18:30:57.796[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 18:30:57.875[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 18:30:58.071[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED + +A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. + +> What should I do? + +We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: + +https://www.gitlab.com/veloren/veloren/issues/new + +If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. + +> What should I include? + +The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. + +Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. + +> Error information + +The information below is intended for developers and testers. + +Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(815) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" +PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(815) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 +Game version: 88d6c645 [2020-10-12] + +Backtrace: + 0: veloren_voxygen::main::{{closure}} + 1: std::panicking::rust_panic_with_hook + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 + 2: std::panicking::begin_panic_handler::{{closure}} + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 + 3: std::sys_common::backtrace::__rust_end_short_backtrace + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 + 4: rust_begin_unwind + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 + 5: core::panicking::panic_fmt + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 + 6: core::option::expect_none_failed + at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 + 7: veloren_voxygen::main + 8: std::sys_common::backtrace::__rust_begin_short_backtrace + 9: std::rt::lang_start::{{closure}} + +[2mOct 11 18:43:31.798[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 18:43:31.981[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 18:43:32.010[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 18:43:32.094[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 18:45:09.368[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 18:45:09.555[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 18:45:09.575[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 18:45:09.637[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 18:45:11.166[0m [32m INFO[0m veloren_voxygen::singleplayer: Saves folder doesn't exist, but there is one in the old saves location, copying it to the new location +[2mOct 11 18:45:11.267[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer +[2mOct 11 18:45:11.267[0m [32m INFO[0m veloren_server: Authentication is disabled +[2mOct 11 18:45:21.481[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 +[2mOct 11 18:45:25.523[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 +[2mOct 11 18:45:41.288[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (88d6c645)" +[2mOct 11 18:45:41.288[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... +[2mOct 11 18:45:41.292[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=sjGg8V[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:21040 +[2mOct 11 18:45:41.292[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:36746 +[2mOct 11 18:45:41.293[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=sjGg8V[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=ILg9mh +[2mOct 11 18:45:41.293[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=sjGg8V +[2mOct 11 18:45:41.492[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32401.596704352)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32409.786351744)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32410.908720815998)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32411.626319519997)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.018207839996)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.211516559997)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.303108575998)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.481935408)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.873735168)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32413.659428783998)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32414.857275551996)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32416.500438383995)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32418.522596543997)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32420.823689951998)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32423.277984528)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.771826016)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32428.216514256)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32430.538930608)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.690225568)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32434.592518416)) +[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32436.338156352)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32437.884218208)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32439.251325072)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32440.472470704)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32441.594921952)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32442.667095216002)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32443.740258960002)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32444.86450944)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32446.089736272002)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32447.442419664003)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32448.936762)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32450.56528152)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32452.310993184)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32454.142392864)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32456.022858144)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32457.918928272)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32459.799781056)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32461.636173504)) +[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32463.412895424)) +[2mOct 11 18:45:42.645[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" +[2mOct 11 18:45:42.647[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 11 18:47:45.068[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" +[2mOct 11 18:51:46.829[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=sjGg8V[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=ILg9mh[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 11 18:51:46.830[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=sjGg8V[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) +[2mOct 11 18:51:46.830[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=sjGg8V[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 11 19:38:50.989[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 19:38:51.499[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 19:38:51.518[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 19:38:51.618[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 19:38:53.656[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer +[2mOct 11 19:38:53.656[0m [32m INFO[0m veloren_server: Authentication is disabled +[2mOct 11 19:39:02.245[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 +[2mOct 11 19:39:05.658[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 +[2mOct 11 19:39:18.263[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-11 (8bd1f763)" +[2mOct 11 19:39:18.263[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... +[2mOct 11 19:39:18.692[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:50694 +[2mOct 11 19:39:18.692[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=rdN34G[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:17428 +[2mOct 11 19:39:18.693[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=rdN34G[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=4kn15H +[2mOct 11 19:39:18.693[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=rdN34G +[2mOct 11 19:39:18.876[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! +[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32422.05936024)) +[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32429.407656144)) +[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32430.61712952)) +[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32431.47577872)) +[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.0034276)) +[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.35027992)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.624620128)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.996397888)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32433.541361568)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32434.400804112)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32435.642454768)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32437.270977744)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32439.234546048)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32441.44027032)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32443.783458335998)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32446.171296864)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32448.516490079997)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32450.755642271997)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32452.842910223997)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32454.755747231997)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32456.481281663997)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32458.025927999995)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32459.408609759994)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32460.660578351995)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32461.827083807995)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32462.946510863996)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32464.069834463997)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32465.247272591998)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32466.515769648)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32467.897204896)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32469.405831599997)) +[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32471.036367888)) +[2mOct 11 19:39:19.779[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" +[2mOct 11 19:39:19.784[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 11 19:40:50.805[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" +[2mOct 11 19:41:48.561[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=rdN34G[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=4kn15H[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 11 19:41:48.561[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=rdN34G[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) +[2mOct 11 19:41:48.561[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=rdN34G[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 11 19:45:44.326[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 11 19:45:44.964[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 11 19:45:45.002[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 11 19:45:45.138[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 11 19:45:47.380[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer +[2mOct 11 19:45:47.381[0m [32m INFO[0m veloren_server: Authentication is disabled +[2mOct 11 19:45:57.634[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 +[2mOct 11 19:46:01.221[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 +[2mOct 11 19:46:17.198[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (88d6c645)" +[2mOct 11 19:46:17.198[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... +[2mOct 11 19:46:17.413[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=B4GN1M[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:20264 +[2mOct 11 19:46:17.413[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:47894 +[2mOct 11 19:46:17.414[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=B4GN1M[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=/jADhb +[2mOct 11 19:46:17.416[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=B4GN1M +[2mOct 11 19:46:17.698[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32411.063976671994)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32424.006517103993)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32424.935257583995)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.278388367995)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.368757103995)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.392961247995)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.417337663996)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.461246623996)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.533457343998)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.824586895997)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32426.486599391996)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32427.616724447995)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32429.224074431993)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32431.242758447992)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32433.56481700799)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32436.12195892799)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32438.60421983999)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32441.08186910399)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32443.43790590399)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32445.63919703999)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32447.627582207988)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32449.406751359988)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32450.97355751999)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32452.35679972799)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32453.57595835199)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32454.67442942399)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32455.71413510399)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32456.75004782399)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32457.83747951999)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32459.03676340799)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32460.357089999987)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32461.823537999986)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32463.436603103986)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32465.175466415985)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32467.012395599984)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32468.901964175984)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32470.817712767985)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32472.719038559986)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32474.578426559987)) +[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32476.372692383986)) +[2mOct 11 19:46:18.825[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" +[2mOct 11 19:46:18.831[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 11 19:46:59.575[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" +[2mOct 11 19:53:12.266[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=B4GN1M[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=/jADhb[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 11 19:53:12.266[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=B4GN1M[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) +[2mOct 11 19:53:12.266[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=B4GN1M[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:05:28.209[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:05:28.783[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:05:28.800[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:05:28.859[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 12 12:05:46.002[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer +[2mOct 12 12:05:46.002[0m [32m INFO[0m veloren_server: Authentication is disabled +[2mOct 12 12:05:55.855[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 +[2mOct 12 12:05:59.768[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 +[2mOct 12 12:06:14.173[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (34caebea)" +[2mOct 12 12:06:14.173[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... +[2mOct 12 12:06:16.023[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=bkeuPw[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:18291 +[2mOct 12 12:06:16.023[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:47260 +[2mOct 12 12:06:16.024[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=bkeuPw[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=aQiAfK +[2mOct 12 12:06:16.024[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=bkeuPw +[2mOct 12 12:06:16.178[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! +[2mOct 12 12:06:17.053[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32488.92802972801)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32496.21413668801)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.40452857601)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32498.23670424001)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32498.790442368012)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.14344540801)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.42639355201)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.77460489601)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32500.32708067201)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32501.19538987201)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32502.44842488001)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32504.083048224013)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32506.048014816013)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32508.25465123201)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32510.597602320013)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32512.982084064013)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32515.323684480012)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32517.55845307201)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32519.640895584012)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32521.54702699201)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32523.26714236801)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32524.80896092801)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32526.18868108801)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32527.43857876801)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32528.599880640013)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32529.721435056013)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32530.848714144013)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32532.030462288014)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32533.304371728012)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32534.691932688012)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32536.20476419201)) +[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32537.83693339201)) +[2mOct 12 12:06:17.081[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" +[2mOct 12 12:06:17.091[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 12 12:14:38.826[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=bkeuPw[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=aQiAfK[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:14:38.826[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=bkeuPw[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) +[2mOct 12 12:14:38.827[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=bkeuPw[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:16:48.730[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:16:49.263[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:16:49.281[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:16:49.338[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 12 12:16:50.945[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer +[2mOct 12 12:16:50.945[0m [32m INFO[0m veloren_server: Authentication is disabled +[2mOct 12 12:17:00.806[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 +[2mOct 12 12:17:04.296[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 +[2mOct 12 12:17:19.181[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (34caebea)" +[2mOct 12 12:17:19.181[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... +[2mOct 12 12:17:20.981[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:60422 +[2mOct 12 12:17:20.981[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a9QNsC[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:23461 +[2mOct 12 12:17:20.982[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a9QNsC[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=SzLgDg +[2mOct 12 12:17:20.983[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=a9QNsC +[2mOct 12 12:17:21.157[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32487.031819728007)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32494.864288272005)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32496.008849712005)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32496.770821968006)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.242128448008)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.506182112007)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.716438768006)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.961612592007)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32498.43479976001)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.24511560001)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32500.46601105601)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32502.10729718401)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32504.107448736013)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32506.363686240013)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32508.772547568013)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32511.221176080013)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32513.622217728014)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32515.904499120013)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32518.025724576015)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32519.953731072015)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32521.684768800016)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32523.224175696017)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32524.593438528016)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32525.820961392015)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32526.954828816015)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32528.044226208014)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32529.135946080016)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32530.281263904017)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32531.524068576018)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32532.89112681602)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32534.39458708802)) +[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32536.02989121602)) +[2mOct 12 12:17:22.051[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" +[2mOct 12 12:17:22.059[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 12 12:19:03.158[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" +[2mOct 12 12:19:48.619[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a9QNsC[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=SzLgDg[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:19:48.619[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=a9QNsC[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) +[2mOct 12 12:19:48.619[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=a9QNsC[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:22:42.331[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:22:42.845[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:22:42.864[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:22:42.929[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 12 12:22:45.578[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer +[2mOct 12 12:22:45.579[0m [32m INFO[0m veloren_server: Authentication is disabled +[2mOct 12 12:22:56.225[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 +[2mOct 12 12:22:59.711[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 +[2mOct 12 12:23:16.276[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (34caebea)" +[2mOct 12 12:23:16.276[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... +[2mOct 12 12:23:20.599[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=MGR054[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:24773 +[2mOct 12 12:23:20.599[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:60338 +[2mOct 12 12:23:20.606[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=MGR054[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=dzLtmj +[2mOct 12 12:23:20.606[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=MGR054 +[2mOct 12 12:23:20.847[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32609.02690776)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32619.440602751998)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32620.465254095998)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32620.99991448)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.124989472)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.156733696)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.1792924)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.213735376)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.460529824002)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32622.011067072002)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32622.998664144)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32624.473578624)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32626.390874112003)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32628.634983696003)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32631.097510800002)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32633.644413936003)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32636.172348912)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32638.59134064)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32640.85016976)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32642.90700912)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32644.742364816)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32646.35959848)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32647.773400176)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32649.018852432)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32650.134614784)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32651.174654256003)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32652.195674352002)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32653.256941776002)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32654.409903792002)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32655.6924924)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32657.127760992)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32658.716405952)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32660.439022176)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32662.266582336)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32664.160049664)) +[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32666.082284016)) +[2mOct 12 12:23:21.859[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" +[2mOct 12 12:23:21.866[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 12 12:24:39.597[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=MGR054[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=dzLtmj[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:24:39.597[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=MGR054[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) +[2mOct 12 12:24:39.597[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=MGR054[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:32:03.571[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:32:03.869[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:32:03.886[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:32:03.934[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 12 12:32:32.571[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 45.136.30.39:14004 +[2mOct 12 12:32:33.558[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=1BNABt +[2mOct 12 12:32:36.914[0m [33m WARN[0m veloren_client: Server is running b920439a[2020-10-11], you are running d4c97628[2020-10-12], versions might be incompatible! +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657619.7010520529)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657626.1632259089)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657627.3811961969)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657628.2866997329)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657628.9427667089)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657629.4497873489)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657629.9070680368)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657630.4363415729)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657631.1539781969)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657632.1483596849)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657633.4679605168)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657635.1110101648)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657637.0316239889)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657639.1548881489)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657641.3933106929)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657643.6650479248)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657645.8997357328)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657648.0416267728)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657650.0527723408)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657651.9101086769)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657653.6055620369)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657655.1461207889)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657656.5482438928)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657657.8406524848)) +[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657659.0592908368)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657660.2420117968)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657661.4340680848)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657662.6736748049)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657663.9926110768)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657665.4110306128)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657666.9339300687)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657668.5595156368)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657670.2717394767)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657672.0444828687)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657673.8490750768)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657675.6760837648)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657677.4892442607)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657679.2621059247)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657680.9951866287)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657682.6701389487)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657684.2862141808)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657685.8451280848)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657687.3544410447)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657688.8268190607)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657690.2750960847)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657691.7153319087)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657693.1644663566)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657694.6331784206)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657696.1299560847)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657697.6624086447)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657699.2316158607)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657700.8379224207)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657702.4712837967)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657704.1266022447)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657705.7952365166)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657707.4631286606)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657709.1252216366)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657710.7758955086)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657712.4061728365)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657714.0177347246)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657715.6074029485)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657717.1763028685)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657718.7280989005)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657720.2683359085)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657721.8027886285)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657723.3368426604)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657724.8745635564)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657726.4210850603)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657727.9805477003)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657729.5508296363)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657731.1329986763)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657732.7271961323)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657734.3308591883)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657735.9406951404)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657737.5555074444)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657739.1700884365)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657740.7799522765)) +[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657742.3835153485)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657743.9816595085)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657745.5743170766)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657747.1573628366)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657748.7332867887)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657750.3049619726)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657751.8731520686)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657753.4392588686)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657755.0047905325)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657756.5722847246)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657758.1435684685)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657759.7200762446)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657761.3006429486)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657762.8857623086)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657764.4756739406)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657766.0691196686)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657767.6657729966)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657769.2596039246)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657770.8546136366)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657772.4475707726)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657774.0375405326)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657775.6250918607)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657777.2097024206)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657778.7913294926)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657780.3709843406)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657781.9488363086)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657783.5260765646)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657785.1047388206)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657786.6831981806)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657788.2627197807)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657789.8430810446)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657791.4261325647)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657793.0093378767)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657794.5939802127)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657796.1802917487)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657797.7685264047)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657799.3562190927)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657800.9434188207)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657802.5308879247)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657804.1180285168)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657805.7050450288)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657807.2904491249)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657808.8740849008)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657810.4575354928)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657812.0398622608)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657813.6219509488)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657815.2035352049)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657816.7865938288)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657818.3683290929)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657819.9514061009)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657821.5364918129)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657823.1191970129)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657824.7010674449)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657826.2854745329)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657827.8700038769)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657829.4558921969)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657831.0402209968)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657832.6242198448)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657834.2080258768)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657835.7939041648)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657837.3779756369)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657838.9616118929)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657840.545986821)) +[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657842.1291984209)) +[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657843.7131280049)) +[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657845.2975539089)) +[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657846.8822659889)) +[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657848.4671737648)) +[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657850.0504079729)) +[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657851.6344525649)) +[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657853.2191241329)) +[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657854.8038449009)) +[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657856.386465477)) +[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657857.9690923409)) +[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657859.5529738289)) +[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657861.1366904369)) +[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657862.7212346129)) +[2mOct 12 12:34:32.941[0m [33m WARN[0m veloren_voxygen::ui: Could not recache queued glyphs, skipping frame. +[2mOct 12 12:35:26.888[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:35:27.076[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:35:27.103[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:35:27.181[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 12 12:36:09.402[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 45.136.30.39:14004 +[2mOct 12 12:36:10.260[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=1BNABt +[2mOct 12 12:36:12.970[0m [33m WARN[0m veloren_client: Server is running b920439a[2020-10-11], you are running d4c97628[2020-10-12], versions might be incompatible! +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668017.8865566945)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668024.6020041825)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668025.8223141346)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668026.7372351266)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668027.4015568065)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668027.9035073025)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668028.3718107585)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668028.8761426305)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668029.5329824064)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668030.4424514144)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668031.6679200224)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668033.2169719904)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668035.0545471105)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668037.1173884865)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668039.3189708865)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668041.5835229026)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668043.8302318786)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668046.0223668705)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668048.1058260705)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668050.0493997345)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668051.8326518144)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668053.4647007264)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668054.9536102784)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668056.3201565985)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668057.5853743425)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668058.7915638945)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668059.9789414785)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668061.1850277345)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668062.4425914465)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668063.7810071744)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668065.2192837824)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668066.7606956384)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668068.3981436864)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668070.1174969664)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668071.8964488223)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668073.7078929823)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668075.5278804223)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668077.3327505983)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668079.1034169343)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668080.8289830943)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668082.5008143584)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668084.1155690623)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668085.6762392384)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668087.1907122943)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668088.6688409023)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668090.1230513023)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668091.5672208703)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668093.0169525823)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668094.4851890623)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668095.9804216063)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668097.5083046623)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668099.0710720543)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668100.6683126623)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668102.2939949502)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668103.9413174143)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668105.6019580542)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668107.2672500382)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668108.9288298462)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668110.5801101022)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668112.2165521662)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668113.8338464542)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668115.4319651262)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668117.0110861182)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668118.5730076062)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668120.1222260382)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668121.6626794783)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668123.1992380543)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668124.7367757823)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668126.2800939583)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668127.8321790462)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668129.3956380222)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668130.9710609022)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668132.5580552862)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668134.1555608541)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668135.7781451261)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668137.38389335)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668138.990691382)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668140.5975937659)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668142.2013500859)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668143.7998063419)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668145.3924302618)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668146.9789265018)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668148.5595594938)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668150.1362000378)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668151.7088095897)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668153.2794335257)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668154.8497131577)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668156.4211993178)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668157.9939522458)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668159.5687793498)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668161.1467909658)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668162.7289542458)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668164.3140255098)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668165.9026227577)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668167.4928724057)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668169.0848331577)) +[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668170.6770477818)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668172.2683625978)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668173.8588223897)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668175.4482520537)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668177.0360717498)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668178.6211526138)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668180.2044065498)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668181.7861687418)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668183.3688725018)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668184.9496060058)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668186.5290285818)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668188.1084511578)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668189.6879443898)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668191.2686649818)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668192.8501765658)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668194.4341980218)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668196.0173510137)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668197.6014152378)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668199.1865764537)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668200.7738469337)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668202.3606921817)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668203.9462270777)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668205.5312464058)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668207.1163249178)) +[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668208.7005060698)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668210.2852166619)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668211.8704990299)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668213.4535659578)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668215.0372517499)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668216.6211972219)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668218.2043842939)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668219.7865523258)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668221.3710123579)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668222.9563548699)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668224.5384786939)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668226.1203495099)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668227.7039987259)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668229.2876383899)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668230.8714343419)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668232.4546473819)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668234.0385860859)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668235.6229211258)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668237.2075850138)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668238.7923143258)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668240.3770432058)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668241.9617908058)) +[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668243.5457199578)) +[2mOct 12 12:36:15.512[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668245.1295562778)) +[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668246.7135243578)) +[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668248.2982002938)) +[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668249.8829926298)) +[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668251.4673680858)) +[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668253.0516815258)) +[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668254.6354033658)) +[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668256.2192684858)) +[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668257.8027205177)) +[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668259.3862812697)) +[2mOct 12 12:36:15.854[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668260.9746279577)) +[2mOct 12 12:37:02.882[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" } +[2mOct 12 12:37:02.882[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:37:02.882[0m [31mERROR[0m veloren_voxygen::session: [session] Failed to tick the scene: ClientError(StreamErr(StreamClosed)) +[2mOct 12 12:37:02.883[0m [33m WARN[0m veloren_client: Error during drop of client, couldn't send disconnect package, is the connection already closed? e=StreamClosed +[2mOct 12 12:37:02.884[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" } +[2mOct 12 12:37:02.884[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Channel got closed cid=0 +[2mOct 12 12:37:02.888[0m [31mERROR[0m veloren_voxygen::session: [session] Failed to tick the scene: ClientError(StreamErr(StreamClosed)) +[2mOct 12 12:37:02.889[0m [33m WARN[0m veloren_client: Error during drop of client, couldn't send disconnect package, is the connection already closed? e=StreamClosed +[2mOct 12 12:37:02.894[0m [31mERROR[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Participant has no channel to communicate on occurrences=1 lastframe=Shutdown +[2mOct 12 12:37:02.894[0m [33m WARN[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: couldn't send shutdown frame, are channels already closed? +[2mOct 12 12:37:02.899[0m [31mERROR[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Participant has no channel to communicate on occurrences=1 lastframe=Shutdown +[2mOct 12 12:37:02.899[0m [33m WARN[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: couldn't send shutdown frame, are channels already closed? +[2mOct 12 12:38:34.381[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:38:34.561[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:38:34.580[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:38:34.629[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 12 12:39:22.651[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:39:22.823[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:39:22.842[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:39:22.892[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler +[2mOct 12 12:46:13.416[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" +[2mOct 12 12:46:13.729[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets +[2mOct 12 12:46:13.747[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 +[2mOct 12 12:46:13.794[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler diff --git a/userdata/voxygen/profile.ron b/userdata/voxygen/profile.ron new file mode 100644 index 0000000000..d89b2cfbfc --- /dev/null +++ b/userdata/voxygen/profile.ron @@ -0,0 +1,18 @@ +( + servers: { + "Veloren Alpha": ( + characters: { + 24: ( + hotbar_slots: (None, None, None, None, None, Some(Inventory(0)), Some(Inventory(1)), None, None, None), + ), + }, + ), + "Singleplayer": ( + characters: { + 2: ( + hotbar_slots: (None, None, None, None, None, Some(Inventory(0)), Some(Inventory(1)), None, None, None), + ), + }, + ), + }, +) \ No newline at end of file From 30a01df013f284c07cc05314dad3e035d4fd0a0d Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Wed, 14 Oct 2020 15:30:58 -0700 Subject: [PATCH 22/23] Fixed clippy errors and added SFX --- assets/voxygen/audio/sfx.ron | 29 ++++++++++++---- common/src/comp/ability.rs | 16 ++++----- common/src/states/repeater_ranged.rs | 49 ++++++++++------------------ userdata/voxygen/profile.ron | 14 ++++---- 4 files changed, 56 insertions(+), 52 deletions(-) diff --git a/assets/voxygen/audio/sfx.ron b/assets/voxygen/audio/sfx.ron index 67cd263bd4..91d6b5b3ee 100644 --- a/assets/voxygen/audio/sfx.ron +++ b/assets/voxygen/audio/sfx.ron @@ -73,7 +73,6 @@ ), GliderClose: ( files: [ - // Event Missing or not implemented? "voxygen.audio.sfx.glider_close", ], threshold: 0.5, @@ -112,12 +111,18 @@ ], threshold: 0.7, ), - Attack(DashMelee, Sword): ( + Attack(DashMelee(Swing), Sword): ( files: [ "voxygen.audio.sfx.abilities.sword_dash", ], threshold: 0.8, ), + Attack(SpinMelee(Swing), Sword): ( + files: [ + "voxygen.audio.sfx.abilities.swing_sword", + ], + threshold: 0.7, + ), Inventory(CollectedTool(Sword)): ( files: [ "voxygen.audio.sfx.inventory.pickup_sword", @@ -146,9 +151,15 @@ ], threshold: 0.7, ), - Attack(LeapMelee, Hammer): ( + Attack(ChargedMelee(Swing), Hammer): ( files: [ - // + "voxygen.audio.sfx.abilities.swing", + ], + threshold: 0.7, + ), + Attack(LeapMelee(Swing), Hammer): ( + files: [ + "voxygen.audio.sfx.abilities.swing", ], threshold: 0.8, ), @@ -180,7 +191,13 @@ ], threshold: 0.7, ), - Attack(SpinMelee, Axe): ( + Attack(SpinMelee(Swing), Axe): ( + files: [ + "voxygen.audio.sfx.abilities.swing", + ], + threshold: 0.8, + ), + Attack(LeapMelee(Swing), Axe): ( files: [ "voxygen.audio.sfx.abilities.swing", ], @@ -276,7 +293,7 @@ ], threshold: 0.8, ), - Attack(DashMelee, Dagger): ( + Attack(DashMelee(Swing), Dagger): ( files: [ "voxygen.audio.sfx.abilities.sword_dash", ], diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 070c88b584..e18e09830b 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -18,13 +18,13 @@ pub enum CharacterAbilityType { BasicMelee, BasicRanged, Boost, - ChargedMelee, + ChargedMelee(StageSection), ChargedRanged, - DashMelee, + DashMelee(StageSection), BasicBlock, ComboMelee(StageSection, u32), - LeapMelee, - SpinMelee, + LeapMelee(StageSection), + SpinMelee(StageSection), GroundShockwave, BasicBeam, RepeaterRanged, @@ -36,12 +36,12 @@ impl From<&CharacterState> for CharacterAbilityType { CharacterState::BasicMelee(_) => Self::BasicMelee, CharacterState::BasicRanged(_) => Self::BasicRanged, CharacterState::Boost(_) => Self::Boost, - CharacterState::DashMelee(_) => Self::DashMelee, + CharacterState::DashMelee(data) => Self::DashMelee(data.stage_section), CharacterState::BasicBlock => Self::BasicBlock, - CharacterState::LeapMelee(_) => Self::LeapMelee, + CharacterState::LeapMelee(data) => Self::LeapMelee(data.stage_section), CharacterState::ComboMelee(data) => Self::ComboMelee(data.stage_section, data.stage), - CharacterState::SpinMelee(_) => Self::SpinMelee, - CharacterState::ChargedMelee(_) => Self::ChargedMelee, + CharacterState::SpinMelee(data) => Self::SpinMelee(data.stage_section), + CharacterState::ChargedMelee(data) => Self::ChargedMelee(data.stage_section), CharacterState::ChargedRanged(_) => Self::ChargedRanged, CharacterState::GroundShockwave(_) => Self::ChargedRanged, CharacterState::BasicBeam(_) => Self::BasicBeam, diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index 1c33566075..3dabb4fedb 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -178,19 +178,8 @@ impl CharacterBehavior for Data { }, StageSection::Recover => { if self.static_data.leap == None { - if !data.physics.on_ground { - // Lands - update.character = CharacterState::RepeaterRanged(Data { - static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - stage_section: self.stage_section, - reps_remaining: self.reps_remaining, - }); - } else if self.timer < self.static_data.recover_duration { - // Recovers from attack + if !data.physics.on_ground || self.timer < self.static_data.recover_duration { + // Lands or recovers from attack in air update.character = CharacterState::RepeaterRanged(Data { static_data: self.static_data.clone(), timer: self @@ -204,25 +193,23 @@ impl CharacterBehavior for Data { // Done update.character = CharacterState::Wielding; } + } else if data.physics.on_ground { + // Done + update.character = CharacterState::Wielding; + } else if self.timer < self.static_data.recover_duration { + // Recovers from attack + update.character = CharacterState::RepeaterRanged(Data { + static_data: self.static_data.clone(), + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + stage_section: self.stage_section, + reps_remaining: self.reps_remaining, + }); } else { - if data.physics.on_ground { - // Done - update.character = CharacterState::Wielding; - } else if self.timer < self.static_data.recover_duration { - // Recovers from attack - update.character = CharacterState::RepeaterRanged(Data { - static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - stage_section: self.stage_section, - reps_remaining: self.reps_remaining, - }); - } else { - // Done - update.character = CharacterState::Wielding; - } + // Done + update.character = CharacterState::Wielding; } }, _ => { diff --git a/userdata/voxygen/profile.ron b/userdata/voxygen/profile.ron index d89b2cfbfc..3b597fc037 100644 --- a/userdata/voxygen/profile.ron +++ b/userdata/voxygen/profile.ron @@ -1,12 +1,5 @@ ( servers: { - "Veloren Alpha": ( - characters: { - 24: ( - hotbar_slots: (None, None, None, None, None, Some(Inventory(0)), Some(Inventory(1)), None, None, None), - ), - }, - ), "Singleplayer": ( characters: { 2: ( @@ -14,5 +7,12 @@ ), }, ), + "Veloren Alpha": ( + characters: { + 24: ( + hotbar_slots: (None, None, None, None, None, Some(Inventory(0)), Some(Inventory(1)), None, None, None), + ), + }, + ), }, ) \ No newline at end of file From 6221245e57582d2495a2de3d6b0d42f242a6ec0c Mon Sep 17 00:00:00 2001 From: jiminycrick <jemelkonian@gmail.com> Date: Wed, 14 Oct 2020 17:10:27 -0700 Subject: [PATCH 23/23] Consolidated recover code in repeater_ranged --- CHANGELOG.md | 4 + common/src/states/repeater_ranged.rs | 20 +- .../singleplayer/server_config/admins.ron | 1 - .../singleplayer/server_config/banlist.ron | 1 - .../server_config/description.ron | 1 - .../singleplayer/server_config/whitelist.ron | 1 - userdata/voxygen/logs/voxygen.log.2020-10-12 | 885 ------------------ userdata/voxygen/profile.ron | 18 - 8 files changed, 6 insertions(+), 925 deletions(-) delete mode 100644 userdata/singleplayer/server_config/admins.ron delete mode 100644 userdata/singleplayer/server_config/banlist.ron delete mode 100644 userdata/singleplayer/server_config/description.ron delete mode 100644 userdata/singleplayer/server_config/whitelist.ron delete mode 100644 userdata/voxygen/logs/voxygen.log.2020-10-12 delete mode 100644 userdata/voxygen/profile.ron diff --git a/CHANGELOG.md b/CHANGELOG.md index 4db936c888..bdf975a3f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Theropod body - Several new animals - Item quality indicators +- Added a jump/burst attack for the bow to the skillbar +- Gave the axe a third attack +- A new secondary charged melee attack for the hammer ### Changed @@ -46,6 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Reworked healing sceptre - 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 ### Removed diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index 3dabb4fedb..c2c4e5d81b 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -177,27 +177,11 @@ impl CharacterBehavior for Data { } }, StageSection::Recover => { - if self.static_data.leap == None { - if !data.physics.on_ground || self.timer < self.static_data.recover_duration { - // Lands or recovers from attack in air - update.character = CharacterState::RepeaterRanged(Data { - static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), - stage_section: self.stage_section, - reps_remaining: self.reps_remaining, - }); - } else { - // Done - update.character = CharacterState::Wielding; - } - } else if data.physics.on_ground { + if self.static_data.leap.is_some() && data.physics.on_ground { // Done update.character = CharacterState::Wielding; } else if self.timer < self.static_data.recover_duration { - // Recovers from attack + // Recover from attack update.character = CharacterState::RepeaterRanged(Data { static_data: self.static_data.clone(), timer: self diff --git a/userdata/singleplayer/server_config/admins.ron b/userdata/singleplayer/server_config/admins.ron deleted file mode 100644 index 0637a088a0..0000000000 --- a/userdata/singleplayer/server_config/admins.ron +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/userdata/singleplayer/server_config/banlist.ron b/userdata/singleplayer/server_config/banlist.ron deleted file mode 100644 index 9e26dfeeb6..0000000000 --- a/userdata/singleplayer/server_config/banlist.ron +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/userdata/singleplayer/server_config/description.ron b/userdata/singleplayer/server_config/description.ron deleted file mode 100644 index 47474ec828..0000000000 --- a/userdata/singleplayer/server_config/description.ron +++ /dev/null @@ -1 +0,0 @@ -"This is the best Veloren server" \ No newline at end of file diff --git a/userdata/singleplayer/server_config/whitelist.ron b/userdata/singleplayer/server_config/whitelist.ron deleted file mode 100644 index 0637a088a0..0000000000 --- a/userdata/singleplayer/server_config/whitelist.ron +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/userdata/voxygen/logs/voxygen.log.2020-10-12 b/userdata/voxygen/logs/voxygen.log.2020-10-12 deleted file mode 100644 index d953b35df0..0000000000 --- a/userdata/voxygen/logs/voxygen.log.2020-10-12 +++ /dev/null @@ -1,885 +0,0 @@ -[2mOct 11 18:00:01.436[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 18:00:01.996[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 18:00:02.329[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 18:00:02.427[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 18:00:02.968[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED - -A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. - -> What should I do? - -We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: - -https://www.gitlab.com/veloren/veloren/issues/new - -If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. - -> What should I include? - -The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. - -Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. - -> Error information - -The information below is intended for developers and testers. - -Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(815) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" -PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(815) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 -Game version: 702f7e51 [2020-10-12] - -Backtrace: - 0: veloren_voxygen::main::{{closure}} - 1: std::panicking::rust_panic_with_hook - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 - 2: std::panicking::begin_panic_handler::{{closure}} - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 - 3: std::sys_common::backtrace::__rust_end_short_backtrace - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 - 4: rust_begin_unwind - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 - 5: core::panicking::panic_fmt - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 - 6: core::option::expect_none_failed - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 - 7: veloren_voxygen::main - 8: std::sys_common::backtrace::__rust_begin_short_backtrace - 9: std::rt::lang_start::{{closure}} - -[2mOct 11 18:04:17.781[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 18:04:17.977[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 18:04:18.008[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 18:04:18.130[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 18:04:18.313[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED - -A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. - -> What should I do? - -We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: - -https://www.gitlab.com/veloren/veloren/issues/new - -If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. - -> What should I include? - -The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. - -Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. - -> Error information - -The information below is intended for developers and testers. - -Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(776) : error C0000: syntax error, unexpected \\\"<<\\\" at token \\\"<<\\\"\\n0(784) : error C0000: syntax error, unexpected \\\">>\\\" at token \\\">>\\\"\\n0(784) : error C0159: invalid char \\\'d\\\' in integer constant suffix\\n0(784) : error C0159: invalid char \\\'c\\\' in integer constant suffix\\n0(784) : error C0159: invalid char \\\'b\\\' in integer constant suffix\\n0(784) : error C0158: invalid digit \\\'8\\\' in octal constant\\n0(786) : error C1503: undefined variable \\\"wind_offset\\\"\\n0(789) : error C0000: syntax error, unexpected \\\"<<\\\" at token \\\"<<\\\"\\n0(793) : error C0159: invalid char \\\'d\\\' in integer constant suffix\\n0(793) : error C0159: invalid char \\\'c\\\' in integer constant suffix\\n0(793) : error C0159: invalid char \\\'b\\\' in integer constant suffix\\n0(793) : error C0158: invalid digit \\\'8\\\' in octal constant\\n0(796) : error C1503: undefined variable \\\"cloud\\\"\\n0(796) : error C1503: undefined variable \\\"turbulence\\\"\\n0(825) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" -PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(776) : error C0000: syntax error, unexpected \"<<\" at token \"<<\"\n0(784) : error C0000: syntax error, unexpected \">>\" at token \">>\"\n0(784) : error C0159: invalid char \'d\' in integer constant suffix\n0(784) : error C0159: invalid char \'c\' in integer constant suffix\n0(784) : error C0159: invalid char \'b\' in integer constant suffix\n0(784) : error C0158: invalid digit \'8\' in octal constant\n0(786) : error C1503: undefined variable \"wind_offset\"\n0(789) : error C0000: syntax error, unexpected \"<<\" at token \"<<\"\n0(793) : error C0159: invalid char \'d\' in integer constant suffix\n0(793) : error C0159: invalid char \'c\' in integer constant suffix\n0(793) : error C0159: invalid char \'b\' in integer constant suffix\n0(793) : error C0158: invalid digit \'8\' in octal constant\n0(796) : error C1503: undefined variable \"cloud\"\n0(796) : error C1503: undefined variable \"turbulence\"\n0(825) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 -Game version: 702f7e51 [2020-10-12] - -Backtrace: - 0: veloren_voxygen::main::{{closure}} - 1: std::panicking::rust_panic_with_hook - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 - 2: std::panicking::begin_panic_handler::{{closure}} - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 - 3: std::sys_common::backtrace::__rust_end_short_backtrace - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 - 4: rust_begin_unwind - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 - 5: core::panicking::panic_fmt - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 - 6: core::option::expect_none_failed - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 - 7: veloren_voxygen::main - 8: std::sys_common::backtrace::__rust_begin_short_backtrace - 9: std::rt::lang_start::{{closure}} - -[2mOct 11 18:13:02.407[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 18:13:02.590[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 18:13:02.610[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 18:13:02.689[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 18:13:02.861[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED - -A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. - -> What should I do? - -We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: - -https://www.gitlab.com/veloren/veloren/issues/new - -If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. - -> What should I include? - -The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. - -Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. - -> Error information - -The information below is intended for developers and testers. - -Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(815) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" -PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(815) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 -Game version: 88d6c645 [2020-10-12] - -Backtrace: - 0: veloren_voxygen::main::{{closure}} - 1: std::panicking::rust_panic_with_hook - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 - 2: std::panicking::begin_panic_handler::{{closure}} - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 - 3: std::sys_common::backtrace::__rust_end_short_backtrace - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 - 4: rust_begin_unwind - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 - 5: core::panicking::panic_fmt - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 - 6: core::option::expect_none_failed - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 - 7: veloren_voxygen::main - 8: std::sys_common::backtrace::__rust_begin_short_backtrace - 9: std::rt::lang_start::{{closure}} - -[2mOct 11 18:17:38.536[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 18:17:38.764[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 18:17:38.786[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 18:17:38.882[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 18:30:57.586[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 18:30:57.777[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 18:30:57.796[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 18:30:57.875[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 18:30:58.071[0m [31mERROR[0m veloren_voxygen: VOXYGEN HAS PANICKED - -A critical error has occurred and Voxygen has been forced to terminate in an unusual manner. Details about the error can be found below. - -> What should I do? - -We need your help to fix this! You can help by contacting us and reporting this problem. To do this, open an issue on the Veloren issue tracker: - -https://www.gitlab.com/veloren/veloren/issues/new - -If you're on the Veloren community Discord server, we'd be grateful if you could also post a message in the #support channel. - -> What should I include? - -The error information below will be useful in finding and fixing the problem. Please include as much information about your setup and the events that led up to the panic as possible. - -Voxygen has logged information about the problem (including this message) to the file /home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs/voxygen-<date>.log. Please include the contents of this file in your bug report. - -> Error information - -The information below is intended for developers and testers. - -Panic Payload: "Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed(\"0(815) : error C1020: invalid operands to \\\"/\\\"\\n\")))))" -PanicInfo: panicked at 'Failed to create window!: RenderError(PipelineError(Program(Pixel(CompilationFailed("0(815) : error C1020: invalid operands to \"/\"\n")))))', voxygen/src/main.rs:175:55 -Game version: 88d6c645 [2020-10-12] - -Backtrace: - 0: veloren_voxygen::main::{{closure}} - 1: std::panicking::rust_panic_with_hook - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:573 - 2: std::panicking::begin_panic_handler::{{closure}} - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:476 - 3: std::sys_common::backtrace::__rust_end_short_backtrace - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/sys_common/backtrace.rs:153 - 4: rust_begin_unwind - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/std/src/panicking.rs:475 - 5: core::panicking::panic_fmt - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/panicking.rs:85 - 6: core::option::expect_none_failed - at /rustc/8e21bd0633b8d970646ee6eb706c9e8acfad19af/library/core/src/option.rs:1274 - 7: veloren_voxygen::main - 8: std::sys_common::backtrace::__rust_begin_short_backtrace - 9: std::rt::lang_start::{{closure}} - -[2mOct 11 18:43:31.798[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 18:43:31.981[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 18:43:32.010[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 18:43:32.094[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 18:45:09.368[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 18:45:09.555[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 18:45:09.575[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 18:45:09.637[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 18:45:11.166[0m [32m INFO[0m veloren_voxygen::singleplayer: Saves folder doesn't exist, but there is one in the old saves location, copying it to the new location -[2mOct 11 18:45:11.267[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer -[2mOct 11 18:45:11.267[0m [32m INFO[0m veloren_server: Authentication is disabled -[2mOct 11 18:45:21.481[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 -[2mOct 11 18:45:25.523[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 -[2mOct 11 18:45:41.288[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (88d6c645)" -[2mOct 11 18:45:41.288[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... -[2mOct 11 18:45:41.292[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=sjGg8V[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:21040 -[2mOct 11 18:45:41.292[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:36746 -[2mOct 11 18:45:41.293[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=sjGg8V[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=ILg9mh -[2mOct 11 18:45:41.293[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=sjGg8V -[2mOct 11 18:45:41.492[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32401.596704352)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32409.786351744)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32410.908720815998)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32411.626319519997)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.018207839996)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.211516559997)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.303108575998)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.481935408)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32412.873735168)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32413.659428783998)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32414.857275551996)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32416.500438383995)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32418.522596543997)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32420.823689951998)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32423.277984528)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.771826016)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32428.216514256)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32430.538930608)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.690225568)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32434.592518416)) -[2mOct 11 18:45:42.631[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32436.338156352)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32437.884218208)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32439.251325072)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32440.472470704)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32441.594921952)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32442.667095216002)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32443.740258960002)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32444.86450944)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32446.089736272002)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32447.442419664003)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32448.936762)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32450.56528152)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32452.310993184)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32454.142392864)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32456.022858144)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32457.918928272)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32459.799781056)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32461.636173504)) -[2mOct 11 18:45:42.632[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32463.412895424)) -[2mOct 11 18:45:42.645[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" -[2mOct 11 18:45:42.647[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 11 18:47:45.068[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" -[2mOct 11 18:51:46.829[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=sjGg8V[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=ILg9mh[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 11 18:51:46.830[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=sjGg8V[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) -[2mOct 11 18:51:46.830[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=ILg9mh[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=sjGg8V[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 11 19:38:50.989[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 19:38:51.499[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 19:38:51.518[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 19:38:51.618[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 19:38:53.656[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer -[2mOct 11 19:38:53.656[0m [32m INFO[0m veloren_server: Authentication is disabled -[2mOct 11 19:39:02.245[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 -[2mOct 11 19:39:05.658[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 -[2mOct 11 19:39:18.263[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-11 (8bd1f763)" -[2mOct 11 19:39:18.263[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... -[2mOct 11 19:39:18.692[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:50694 -[2mOct 11 19:39:18.692[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=rdN34G[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:17428 -[2mOct 11 19:39:18.693[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=rdN34G[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=4kn15H -[2mOct 11 19:39:18.693[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=rdN34G -[2mOct 11 19:39:18.876[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! -[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32422.05936024)) -[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32429.407656144)) -[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32430.61712952)) -[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32431.47577872)) -[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.0034276)) -[2mOct 11 19:39:19.753[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.35027992)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.624620128)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32432.996397888)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32433.541361568)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32434.400804112)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32435.642454768)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32437.270977744)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32439.234546048)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32441.44027032)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32443.783458335998)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32446.171296864)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32448.516490079997)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32450.755642271997)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32452.842910223997)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32454.755747231997)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32456.481281663997)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32458.025927999995)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32459.408609759994)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32460.660578351995)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32461.827083807995)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32462.946510863996)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32464.069834463997)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32465.247272591998)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32466.515769648)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32467.897204896)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32469.405831599997)) -[2mOct 11 19:39:19.754[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32471.036367888)) -[2mOct 11 19:39:19.779[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" -[2mOct 11 19:39:19.784[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 11 19:40:50.805[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" -[2mOct 11 19:41:48.561[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=rdN34G[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=4kn15H[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 11 19:41:48.561[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=rdN34G[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) -[2mOct 11 19:41:48.561[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=4kn15H[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=rdN34G[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 11 19:45:44.326[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 11 19:45:44.964[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 11 19:45:45.002[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 11 19:45:45.138[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 11 19:45:47.380[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer -[2mOct 11 19:45:47.381[0m [32m INFO[0m veloren_server: Authentication is disabled -[2mOct 11 19:45:57.634[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 -[2mOct 11 19:46:01.221[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 -[2mOct 11 19:46:17.198[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (88d6c645)" -[2mOct 11 19:46:17.198[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... -[2mOct 11 19:46:17.413[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=B4GN1M[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:20264 -[2mOct 11 19:46:17.413[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:47894 -[2mOct 11 19:46:17.414[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=B4GN1M[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=/jADhb -[2mOct 11 19:46:17.416[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=B4GN1M -[2mOct 11 19:46:17.698[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32411.063976671994)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32424.006517103993)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32424.935257583995)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.278388367995)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.368757103995)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.392961247995)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.417337663996)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.461246623996)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.533457343998)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32425.824586895997)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32426.486599391996)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32427.616724447995)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32429.224074431993)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32431.242758447992)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32433.56481700799)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32436.12195892799)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32438.60421983999)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32441.08186910399)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32443.43790590399)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32445.63919703999)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32447.627582207988)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32449.406751359988)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32450.97355751999)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32452.35679972799)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32453.57595835199)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32454.67442942399)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32455.71413510399)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32456.75004782399)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32457.83747951999)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32459.03676340799)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32460.357089999987)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32461.823537999986)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32463.436603103986)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32465.175466415985)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32467.012395599984)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32468.901964175984)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32470.817712767985)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32472.719038559986)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32474.578426559987)) -[2mOct 11 19:46:18.800[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32476.372692383986)) -[2mOct 11 19:46:18.825[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" -[2mOct 11 19:46:18.831[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 11 19:46:59.575[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" -[2mOct 11 19:53:12.266[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=B4GN1M[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=/jADhb[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 11 19:53:12.266[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=B4GN1M[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) -[2mOct 11 19:53:12.266[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=/jADhb[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=B4GN1M[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:05:28.209[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:05:28.783[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:05:28.800[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:05:28.859[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 12 12:05:46.002[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer -[2mOct 12 12:05:46.002[0m [32m INFO[0m veloren_server: Authentication is disabled -[2mOct 12 12:05:55.855[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 -[2mOct 12 12:05:59.768[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 -[2mOct 12 12:06:14.173[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (34caebea)" -[2mOct 12 12:06:14.173[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... -[2mOct 12 12:06:16.023[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=bkeuPw[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:18291 -[2mOct 12 12:06:16.023[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:47260 -[2mOct 12 12:06:16.024[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=bkeuPw[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=aQiAfK -[2mOct 12 12:06:16.024[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=bkeuPw -[2mOct 12 12:06:16.178[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! -[2mOct 12 12:06:17.053[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32488.92802972801)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32496.21413668801)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.40452857601)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32498.23670424001)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32498.790442368012)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.14344540801)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.42639355201)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.77460489601)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32500.32708067201)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32501.19538987201)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32502.44842488001)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32504.083048224013)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32506.048014816013)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32508.25465123201)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32510.597602320013)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32512.982084064013)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32515.323684480012)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32517.55845307201)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32519.640895584012)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32521.54702699201)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32523.26714236801)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32524.80896092801)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32526.18868108801)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32527.43857876801)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32528.599880640013)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32529.721435056013)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32530.848714144013)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32532.030462288014)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32533.304371728012)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32534.691932688012)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32536.20476419201)) -[2mOct 12 12:06:17.058[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32537.83693339201)) -[2mOct 12 12:06:17.081[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" -[2mOct 12 12:06:17.091[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 12 12:14:38.826[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=bkeuPw[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=aQiAfK[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:14:38.826[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=bkeuPw[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) -[2mOct 12 12:14:38.827[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=aQiAfK[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=bkeuPw[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:16:48.730[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:16:49.263[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:16:49.281[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:16:49.338[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 12 12:16:50.945[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer -[2mOct 12 12:16:50.945[0m [32m INFO[0m veloren_server: Authentication is disabled -[2mOct 12 12:17:00.806[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 -[2mOct 12 12:17:04.296[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 -[2mOct 12 12:17:19.181[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (34caebea)" -[2mOct 12 12:17:19.181[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... -[2mOct 12 12:17:20.981[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:60422 -[2mOct 12 12:17:20.981[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a9QNsC[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:23461 -[2mOct 12 12:17:20.982[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a9QNsC[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=SzLgDg -[2mOct 12 12:17:20.983[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=a9QNsC -[2mOct 12 12:17:21.157[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32487.031819728007)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32494.864288272005)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32496.008849712005)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32496.770821968006)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.242128448008)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.506182112007)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.716438768006)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32497.961612592007)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32498.43479976001)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32499.24511560001)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32500.46601105601)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32502.10729718401)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32504.107448736013)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32506.363686240013)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32508.772547568013)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32511.221176080013)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32513.622217728014)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32515.904499120013)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32518.025724576015)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32519.953731072015)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32521.684768800016)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32523.224175696017)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32524.593438528016)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32525.820961392015)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32526.954828816015)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32528.044226208014)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32529.135946080016)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32530.281263904017)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32531.524068576018)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32532.89112681602)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32534.39458708802)) -[2mOct 12 12:17:22.042[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32536.02989121602)) -[2mOct 12 12:17:22.051[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" -[2mOct 12 12:17:22.059[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 12 12:19:03.158[0m [33m WARN[0m veloren_voxygen::audio::soundcache: SoundCache: Failed to load sound name="voxygen.audio.sfx.placeholder" -[2mOct 12 12:19:48.619[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a9QNsC[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=SzLgDg[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:19:48.619[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=a9QNsC[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) -[2mOct 12 12:19:48.619[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=SzLgDg[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=a9QNsC[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:22:42.331[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:22:42.845[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:22:42.864[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:22:42.929[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 12 12:22:45.578[0m [32m INFO[0m veloren_server: Server is data dir is: /home/james/Documents/Projects/rust/veloren/userdata/singleplayer -[2mOct 12 12:22:45.579[0m [32m INFO[0m veloren_server: Authentication is disabled -[2mOct 12 12:22:56.225[0m [32m INFO[0m veloren_world::civ: all civilisations created initial_civ_count=48 -[2mOct 12 12:22:59.711[0m [32m INFO[0m veloren_world::civ: all sites placed cnt=192 -[2mOct 12 12:23:16.276[0m [32m INFO[0m veloren_server: Server version version="Pre-Alpha-2020-10-12 (34caebea)" -[2mOct 12 12:23:16.276[0m [32m INFO[0m veloren_voxygen::singleplayer: Starting server-cli... -[2mOct 12 12:23:20.599[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=MGR054[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 127.0.0.1:24773 -[2mOct 12 12:23:20.599[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m: veloren_network::scheduler: Accepting Tcp from: 127.0.0.1:60338 -[2mOct 12 12:23:20.606[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=MGR054[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=dzLtmj -[2mOct 12 12:23:20.606[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=MGR054 -[2mOct 12 12:23:20.847[0m [32m INFO[0m veloren_voxygen::singleplayer: Client connected! -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32609.02690776)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32619.440602751998)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32620.465254095998)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32620.99991448)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.124989472)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.156733696)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.1792924)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.213735376)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32621.460529824002)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32622.011067072002)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32622.998664144)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32624.473578624)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32626.390874112003)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32628.634983696003)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32631.097510800002)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32633.644413936003)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32636.172348912)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32638.59134064)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32640.85016976)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32642.90700912)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32644.742364816)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32646.35959848)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32647.773400176)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32649.018852432)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32650.134614784)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32651.174654256003)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32652.195674352002)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32653.256941776002)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32654.409903792002)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32655.6924924)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32657.127760992)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32658.716405952)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32660.439022176)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32662.266582336)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32664.160049664)) -[2mOct 12 12:23:21.842[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(32666.082284016)) -[2mOct 12 12:23:21.859[0m [32m INFO[0m veloren_server::login_provider: New User username="singleplayer" -[2mOct 12 12:23:21.866[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 12 12:24:39.597[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=MGR054[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=dzLtmj[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:24:39.597[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=MGR054[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Kind(UnexpectedEof) -[2mOct 12 12:24:39.597[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=dzLtmj[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=MGR054[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:32:03.571[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:32:03.869[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:32:03.886[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:32:03.934[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 12 12:32:32.571[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 45.136.30.39:14004 -[2mOct 12 12:32:33.558[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=1BNABt -[2mOct 12 12:32:36.914[0m [33m WARN[0m veloren_client: Server is running b920439a[2020-10-11], you are running d4c97628[2020-10-12], versions might be incompatible! -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657619.7010520529)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657626.1632259089)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657627.3811961969)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657628.2866997329)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657628.9427667089)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657629.4497873489)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657629.9070680368)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657630.4363415729)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657631.1539781969)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657632.1483596849)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657633.4679605168)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657635.1110101648)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657637.0316239889)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657639.1548881489)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657641.3933106929)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657643.6650479248)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657645.8997357328)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657648.0416267728)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657650.0527723408)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657651.9101086769)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657653.6055620369)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657655.1461207889)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657656.5482438928)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657657.8406524848)) -[2mOct 12 12:32:38.717[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657659.0592908368)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657660.2420117968)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657661.4340680848)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657662.6736748049)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657663.9926110768)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657665.4110306128)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657666.9339300687)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657668.5595156368)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657670.2717394767)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657672.0444828687)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657673.8490750768)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657675.6760837648)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657677.4892442607)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657679.2621059247)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657680.9951866287)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657682.6701389487)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657684.2862141808)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657685.8451280848)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657687.3544410447)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657688.8268190607)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657690.2750960847)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657691.7153319087)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657693.1644663566)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657694.6331784206)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657696.1299560847)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657697.6624086447)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657699.2316158607)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657700.8379224207)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657702.4712837967)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657704.1266022447)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657705.7952365166)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657707.4631286606)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657709.1252216366)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657710.7758955086)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657712.4061728365)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657714.0177347246)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657715.6074029485)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657717.1763028685)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657718.7280989005)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657720.2683359085)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657721.8027886285)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657723.3368426604)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657724.8745635564)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657726.4210850603)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657727.9805477003)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657729.5508296363)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657731.1329986763)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657732.7271961323)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657734.3308591883)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657735.9406951404)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657737.5555074444)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657739.1700884365)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657740.7799522765)) -[2mOct 12 12:32:38.718[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657742.3835153485)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657743.9816595085)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657745.5743170766)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657747.1573628366)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657748.7332867887)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657750.3049619726)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657751.8731520686)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657753.4392588686)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657755.0047905325)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657756.5722847246)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657758.1435684685)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657759.7200762446)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657761.3006429486)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657762.8857623086)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657764.4756739406)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657766.0691196686)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657767.6657729966)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657769.2596039246)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657770.8546136366)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657772.4475707726)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657774.0375405326)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657775.6250918607)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657777.2097024206)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657778.7913294926)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657780.3709843406)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657781.9488363086)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657783.5260765646)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657785.1047388206)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657786.6831981806)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657788.2627197807)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657789.8430810446)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657791.4261325647)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657793.0093378767)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657794.5939802127)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657796.1802917487)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657797.7685264047)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657799.3562190927)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657800.9434188207)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657802.5308879247)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657804.1180285168)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657805.7050450288)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657807.2904491249)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657808.8740849008)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657810.4575354928)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657812.0398622608)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657813.6219509488)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657815.2035352049)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657816.7865938288)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657818.3683290929)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657819.9514061009)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657821.5364918129)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657823.1191970129)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657824.7010674449)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657826.2854745329)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657827.8700038769)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657829.4558921969)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657831.0402209968)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657832.6242198448)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657834.2080258768)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657835.7939041648)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657837.3779756369)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657838.9616118929)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657840.545986821)) -[2mOct 12 12:32:38.719[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657842.1291984209)) -[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657843.7131280049)) -[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657845.2975539089)) -[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657846.8822659889)) -[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657848.4671737648)) -[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657850.0504079729)) -[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657851.6344525649)) -[2mOct 12 12:32:38.919[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657853.2191241329)) -[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657854.8038449009)) -[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657856.386465477)) -[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657857.9690923409)) -[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657859.5529738289)) -[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657861.1366904369)) -[2mOct 12 12:32:39.123[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(657862.7212346129)) -[2mOct 12 12:34:32.941[0m [33m WARN[0m veloren_voxygen::ui: Could not recache queued glyphs, skipping frame. -[2mOct 12 12:35:26.888[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:35:27.076[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:35:27.103[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:35:27.181[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 12 12:36:09.402[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m: veloren_network::scheduler: Connecting Tcp to: 45.136.30.39:14004 -[2mOct 12 12:36:10.260[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mhandshake[0m[1m{[0mcid=0[1m}[0m: veloren_network::channel: This Handshake is now configured! pid=1BNABt -[2mOct 12 12:36:12.970[0m [33m WARN[0m veloren_client: Server is running b920439a[2020-10-11], you are running d4c97628[2020-10-12], versions might be incompatible! -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668017.8865566945)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668024.6020041825)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668025.8223141346)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668026.7372351266)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668027.4015568065)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668027.9035073025)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668028.3718107585)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668028.8761426305)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668029.5329824064)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668030.4424514144)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668031.6679200224)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668033.2169719904)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668035.0545471105)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668037.1173884865)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668039.3189708865)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668041.5835229026)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668043.8302318786)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668046.0223668705)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668048.1058260705)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668050.0493997345)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668051.8326518144)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668053.4647007264)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668054.9536102784)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668056.3201565985)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668057.5853743425)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668058.7915638945)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668059.9789414785)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668061.1850277345)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668062.4425914465)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668063.7810071744)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668065.2192837824)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668066.7606956384)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668068.3981436864)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668070.1174969664)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668071.8964488223)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668073.7078929823)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668075.5278804223)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668077.3327505983)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668079.1034169343)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668080.8289830943)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668082.5008143584)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668084.1155690623)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668085.6762392384)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668087.1907122943)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668088.6688409023)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668090.1230513023)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668091.5672208703)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668093.0169525823)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668094.4851890623)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668095.9804216063)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668097.5083046623)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668099.0710720543)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668100.6683126623)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668102.2939949502)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668103.9413174143)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668105.6019580542)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668107.2672500382)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668108.9288298462)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668110.5801101022)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668112.2165521662)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668113.8338464542)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668115.4319651262)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668117.0110861182)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668118.5730076062)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668120.1222260382)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668121.6626794783)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668123.1992380543)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668124.7367757823)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668126.2800939583)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668127.8321790462)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668129.3956380222)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668130.9710609022)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668132.5580552862)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668134.1555608541)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668135.7781451261)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668137.38389335)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668138.990691382)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668140.5975937659)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668142.2013500859)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668143.7998063419)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668145.3924302618)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668146.9789265018)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668148.5595594938)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668150.1362000378)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668151.7088095897)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668153.2794335257)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668154.8497131577)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668156.4211993178)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668157.9939522458)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668159.5687793498)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668161.1467909658)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668162.7289542458)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668164.3140255098)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668165.9026227577)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668167.4928724057)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668169.0848331577)) -[2mOct 12 12:36:15.356[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668170.6770477818)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668172.2683625978)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668173.8588223897)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668175.4482520537)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668177.0360717498)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668178.6211526138)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668180.2044065498)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668181.7861687418)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668183.3688725018)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668184.9496060058)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668186.5290285818)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668188.1084511578)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668189.6879443898)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668191.2686649818)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668192.8501765658)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668194.4341980218)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668196.0173510137)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668197.6014152378)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668199.1865764537)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668200.7738469337)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668202.3606921817)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668203.9462270777)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668205.5312464058)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668207.1163249178)) -[2mOct 12 12:36:15.357[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668208.7005060698)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668210.2852166619)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668211.8704990299)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668213.4535659578)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668215.0372517499)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668216.6211972219)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668218.2043842939)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668219.7865523258)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668221.3710123579)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668222.9563548699)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668224.5384786939)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: Pong -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668226.1203495099)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668227.7039987259)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668229.2876383899)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668230.8714343419)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668232.4546473819)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668234.0385860859)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668235.6229211258)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668237.2075850138)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668238.7923143258)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668240.3770432058)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668241.9617908058)) -[2mOct 12 12:36:15.359[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668243.5457199578)) -[2mOct 12 12:36:15.512[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668245.1295562778)) -[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668246.7135243578)) -[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668248.2982002938)) -[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668249.8829926298)) -[2mOct 12 12:36:15.513[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668251.4673680858)) -[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668253.0516815258)) -[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668254.6354033658)) -[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668256.2192684858)) -[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668257.8027205177)) -[2mOct 12 12:36:15.684[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668259.3862812697)) -[2mOct 12 12:36:15.854[0m [33m WARN[0m veloren_client: Ignoring what the server send till registered: TimeOfDay(TimeOfDay(668260.9746279577)) -[2mOct 12 12:37:02.882[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" } -[2mOct 12 12:37:02.882[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:37:02.882[0m [31mERROR[0m veloren_voxygen::session: [session] Failed to tick the scene: ClientError(StreamErr(StreamClosed)) -[2mOct 12 12:37:02.883[0m [33m WARN[0m veloren_client: Error during drop of client, couldn't send disconnect package, is the connection already closed? e=StreamClosed -[2mOct 12 12:37:02.884[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m:[1m[0m[1m{[0mcid=0[1m}[0m: veloren_network::protocols: Closing tcp protocol due to read error e=Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" } -[2mOct 12 12:37:02.884[0m [32m INFO[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Channel got closed cid=0 -[2mOct 12 12:37:02.888[0m [31mERROR[0m veloren_voxygen::session: [session] Failed to tick the scene: ClientError(StreamErr(StreamClosed)) -[2mOct 12 12:37:02.889[0m [33m WARN[0m veloren_client: Error during drop of client, couldn't send disconnect package, is the connection already closed? e=StreamClosed -[2mOct 12 12:37:02.894[0m [31mERROR[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Participant has no channel to communicate on occurrences=1 lastframe=Shutdown -[2mOct 12 12:37:02.894[0m [33m WARN[0m [1mscheduler[0m[1m{[0mp=RTuK4S[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: couldn't send shutdown frame, are channels already closed? -[2mOct 12 12:37:02.899[0m [31mERROR[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: Participant has no channel to communicate on occurrences=1 lastframe=Shutdown -[2mOct 12 12:37:02.899[0m [33m WARN[0m [1mscheduler[0m[1m{[0mp=a92Gg5[1m}[0m:[1m[0m:[1mparticipant[0m[1m{[0mpid=1BNABt[1m}[0m: veloren_network::participant: couldn't send shutdown frame, are channels already closed? -[2mOct 12 12:38:34.381[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:38:34.561[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:38:34.580[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:38:34.629[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 12 12:39:22.651[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:39:22.823[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:39:22.842[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:39:22.892[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler -[2mOct 12 12:46:13.416[0m [32m INFO[0m veloren_voxygen::logging: Setup terminal and file logging. logdir="/home/james/Documents/Projects/rust/veloren/userdata/voxygen/logs" -[2mOct 12 12:46:13.729[0m [32m INFO[0m veloren_common::assets: Assets found path=/home/james/Documents/Projects/rust/veloren/assets -[2mOct 12 12:46:13.747[0m [32m INFO[0m winit::platform_impl::platform::x11::window: Guessed window scale factor: 1 -[2mOct 12 12:46:13.794[0m [32m INFO[0m veloren_voxygen::window: selected graphics device vendor="NVIDIA Corporation" renderer="GeForce 940MX/PCIe/SSE2" opengl_version=3.3.0, NVIDIA 450.66 glsl_version=3.30, NVIDIA via Cg compiler diff --git a/userdata/voxygen/profile.ron b/userdata/voxygen/profile.ron deleted file mode 100644 index 3b597fc037..0000000000 --- a/userdata/voxygen/profile.ron +++ /dev/null @@ -1,18 +0,0 @@ -( - servers: { - "Singleplayer": ( - characters: { - 2: ( - hotbar_slots: (None, None, None, None, None, Some(Inventory(0)), Some(Inventory(1)), None, None, None), - ), - }, - ), - "Veloren Alpha": ( - characters: { - 24: ( - hotbar_slots: (None, None, None, None, None, Some(Inventory(0)), Some(Inventory(1)), None, None, None), - ), - }, - ), - }, -) \ No newline at end of file