From 6b1351bdc3bb67013858c941c7ccee415b11a5d6 Mon Sep 17 00:00:00 2001 From: Adam Whitehurst Date: Sun, 30 May 2021 12:39:30 -0700 Subject: [PATCH] feat: impl attack speed modifier --- common/src/comp/buff.rs | 8 ++++- common/src/states/basic_aura.rs | 15 ++-------- common/src/states/basic_beam.rs | 15 ++-------- common/src/states/basic_block.rs | 15 ++-------- common/src/states/basic_melee.rs | 15 ++-------- common/src/states/basic_ranged.rs | 10 ++----- common/src/states/basic_summon.rs | 20 +++---------- common/src/states/blink.rs | 10 ++----- common/src/states/boost.rs | 5 +--- common/src/states/charged_melee.rs | 37 ++++++++--------------- common/src/states/charged_ranged.rs | 32 ++++++++------------ common/src/states/combo_melee.rs | 15 ++-------- common/src/states/dash_melee.rs | 45 ++++++---------------------- common/src/states/equipping.rs | 5 +--- common/src/states/healing_beam.rs | 15 ++-------- common/src/states/leap_melee.rs | 25 ++++------------ common/src/states/repeater_ranged.rs | 10 ++----- common/src/states/roll.rs | 15 ++-------- common/src/states/self_buff.rs | 15 ++-------- common/src/states/shockwave.rs | 15 ++-------- common/src/states/spin_melee.rs | 15 ++-------- common/src/states/stunned.rs | 10 ++----- 22 files changed, 90 insertions(+), 277 deletions(-) diff --git a/common/src/comp/buff.rs b/common/src/comp/buff.rs index 4db24ec028..538db400aa 100644 --- a/common/src/comp/buff.rs +++ b/common/src/comp/buff.rs @@ -306,7 +306,13 @@ impl Buff { ], data.duration, ), - BuffKind::Frozen => (vec![BuffEffect::MovementSpeed(0.1)], data.duration), + BuffKind::Frozen => ( + vec![ + BuffEffect::MovementSpeed(f32::min(0.1, 0.75 - nn_scaling(data.strength))), + BuffEffect::AttackSpeed(f32::min(0.1, 1.0 - nn_scaling(data.strength))), + ], + data.duration, + ), }; Buff { kind, diff --git a/common/src/states/basic_aura.rs b/common/src/states/basic_aura.rs index 0a4fef7661..1e82d062f8 100644 --- a/common/src/states/basic_aura.rs +++ b/common/src/states/basic_aura.rs @@ -58,10 +58,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::BasicAura(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -90,10 +87,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.cast_duration { // Cast update.character = CharacterState::BasicAura(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -107,10 +101,7 @@ impl CharacterBehavior for Data { StageSection::Recover => { if self.timer < self.static_data.recover_duration { update.character = CharacterState::BasicAura(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/basic_beam.rs b/common/src/states/basic_beam.rs index 39c4c28562..defb22f81f 100644 --- a/common/src/states/basic_beam.rs +++ b/common/src/states/basic_beam.rs @@ -79,10 +79,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::BasicBeam(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -177,10 +174,7 @@ impl CharacterBehavior for Data { ori, }); update.character = CharacterState::BasicBeam(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); @@ -200,10 +194,7 @@ impl CharacterBehavior for Data { StageSection::Recover => { if self.timer < self.static_data.recover_duration { update.character = CharacterState::BasicBeam(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/basic_block.rs b/common/src/states/basic_block.rs index 9df5057703..4243b1d7e6 100644 --- a/common/src/states/basic_block.rs +++ b/common/src/states/basic_block.rs @@ -44,10 +44,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::BasicBlock(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -63,10 +60,7 @@ impl CharacterBehavior for Data { if input_is_pressed(data, InputKind::Block) { // Block update.character = CharacterState::BasicBlock(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -82,10 +76,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovery update.character = CharacterState::BasicBlock(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/basic_melee.rs b/common/src/states/basic_melee.rs index 1c0db13f2a..b581db58f7 100644 --- a/common/src/states/basic_melee.rs +++ b/common/src/states/basic_melee.rs @@ -64,10 +64,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::BasicMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -148,10 +145,7 @@ impl CharacterBehavior for Data { } else if self.timer < self.static_data.swing_duration { // Swings update.character = CharacterState::BasicMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -167,10 +161,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovery update.character = CharacterState::BasicMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/basic_ranged.rs b/common/src/states/basic_ranged.rs index 9e0ddb487a..ea67b45da9 100644 --- a/common/src/states/basic_ranged.rs +++ b/common/src/states/basic_ranged.rs @@ -57,10 +57,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::BasicRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -112,10 +109,7 @@ impl CharacterBehavior for Data { } else if self.timer < self.static_data.recover_duration { // Recovers update.character = CharacterState::BasicRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/basic_summon.rs b/common/src/states/basic_summon.rs index 7c0a382768..4abd7f8d8e 100644 --- a/common/src/states/basic_summon.rs +++ b/common/src/states/basic_summon.rs @@ -54,10 +54,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::BasicSummon(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -131,20 +128,14 @@ impl CharacterBehavior for Data { )); update.character = CharacterState::BasicSummon(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), summon_count: self.summon_count + 1, ..*self }); } else { // Cast update.character = CharacterState::BasicSummon(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } @@ -161,10 +152,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovery update.character = CharacterState::BasicSummon(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/blink.rs b/common/src/states/blink.rs index 5678a46eff..66bd9b14c7 100644 --- a/common/src/states/blink.rs +++ b/common/src/states/blink.rs @@ -44,10 +44,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::Blink(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -78,10 +75,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovery update.character = CharacterState::Blink(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/boost.rs b/common/src/states/boost.rs index 95daf7c2ad..9323cc2f3a 100644 --- a/common/src/states/boost.rs +++ b/common/src/states/boost.rs @@ -41,10 +41,7 @@ impl CharacterBehavior for Data { update.vel.0 += *data.inputs.look_dir * self.static_data.speed * data.dt.0; } update.character = CharacterState::Boost(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index 6a5f9ef3b9..7ad6b9cb04 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -88,12 +88,11 @@ impl CharacterBehavior for Data { // Charge the attack update.character = CharacterState::ChargedMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32( - data.dt.0 * self.static_data.speed, - )) - .unwrap_or_default(), + timer: tick_attack_or_default( + data, + self.timer, + Some(self.static_data.speed), + ), charge_amount: charge, ..*self }); @@ -110,12 +109,11 @@ impl CharacterBehavior for Data { { // Maintains charge update.character = CharacterState::ChargedMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32( - data.dt.0 * self.static_data.speed, - )) - .unwrap_or_default(), + timer: tick_attack_or_default( + data, + self.timer, + Some(self.static_data.speed), + ), ..*self }); @@ -144,10 +142,7 @@ impl CharacterBehavior for Data { { // Swing update.character = CharacterState::ChargedMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), exhausted: true, ..*self }); @@ -220,10 +215,7 @@ impl CharacterBehavior for Data { } else if self.timer < self.static_data.swing_duration { // Swings update.character = CharacterState::ChargedMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -239,10 +231,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovers update.character = CharacterState::ChargedMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/charged_ranged.rs b/common/src/states/charged_ranged.rs index ea57674868..9c34121190 100644 --- a/common/src/states/charged_ranged.rs +++ b/common/src/states/charged_ranged.rs @@ -85,10 +85,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::ChargedRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -138,12 +135,11 @@ impl CharacterBehavior for Data { { // Charges update.character = CharacterState::ChargedRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32( - data.dt.0 * self.static_data.speed, - )) - .unwrap_or_default(), + timer: tick_attack_or_default( + data, + self.timer, + Some(self.static_data.speed), + ), ..*self }); @@ -157,12 +153,11 @@ impl CharacterBehavior for Data { } else if input_is_pressed(data, self.static_data.ability_info.input) { // Holds charge update.character = CharacterState::ChargedRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32( - data.dt.0 * self.static_data.speed, - )) - .unwrap_or_default(), + timer: tick_attack_or_default( + data, + self.timer, + Some(self.static_data.speed), + ), ..*self }); @@ -180,10 +175,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovers update.character = CharacterState::ChargedRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/combo_melee.rs b/common/src/states/combo_melee.rs index 3ae9689c37..49d5e7c1b0 100644 --- a/common/src/states/combo_melee.rs +++ b/common/src/states/combo_melee.rs @@ -144,10 +144,7 @@ impl CharacterBehavior for Data { // Build up update.character = CharacterState::ComboMelee(Data { static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0 * speed_modifer)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, Some(speed_modifer)), ..*self }); } else { @@ -250,10 +247,7 @@ impl CharacterBehavior for Data { // Swings update.character = CharacterState::ComboMelee(Data { static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0 * speed_modifer)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, Some(speed_modifer)), ..*self }); } else { @@ -272,10 +266,7 @@ impl CharacterBehavior for Data { // Recovers update.character = CharacterState::ComboMelee(Data { static_data: self.static_data.clone(), - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0 * speed_modifer)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, Some(speed_modifer)), ..*self }); } else { diff --git a/common/src/states/dash_melee.rs b/common/src/states/dash_melee.rs index 5179cae07e..94ff0db463 100644 --- a/common/src/states/dash_melee.rs +++ b/common/src/states/dash_melee.rs @@ -81,10 +81,7 @@ impl CharacterBehavior for Data { handle_orientation(data, &mut update, 1.0); // Build up update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -177,10 +174,7 @@ impl CharacterBehavior for Data { .filter(|(_, tool)| tool == &Some(ToolKind::Pick)), }); update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), exhausted: true, ..*self }) @@ -188,20 +182,14 @@ impl CharacterBehavior for Data { if !melee.applied { // If melee attack has not applied, just tick duration update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else if melee.hit_count == 0 { // If melee attack has applied, but not hit anything, remove exhausted // so it can attack again update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), exhausted: false, ..*self }); @@ -221,10 +209,7 @@ impl CharacterBehavior for Data { .min(self.static_data.charge_duration) }; update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), charge_end_timer, ..*self }); @@ -240,10 +225,7 @@ impl CharacterBehavior for Data { } else { // If melee attack has not applied, just tick duration update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), exhausted: false, ..*self }); @@ -328,20 +310,14 @@ impl CharacterBehavior for Data { .filter(|(_, tool)| tool == &Some(ToolKind::Pick)), }); update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), exhausted: true, ..*self }) } else if self.timer < self.static_data.swing_duration { // Swings update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -357,10 +333,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recover update.character = CharacterState::DashMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/equipping.rs b/common/src/states/equipping.rs index b27da6e16e..fc531dab62 100644 --- a/common/src/states/equipping.rs +++ b/common/src/states/equipping.rs @@ -33,10 +33,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Draw weapon update.character = CharacterState::Equipping(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/healing_beam.rs b/common/src/states/healing_beam.rs index 0107412185..14decfe4f7 100644 --- a/common/src/states/healing_beam.rs +++ b/common/src/states/healing_beam.rs @@ -61,10 +61,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::HealingBeam(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -116,10 +113,7 @@ impl CharacterBehavior for Data { ori: Ori::from(data.inputs.look_dir), }); update.character = CharacterState::HealingBeam(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -133,10 +127,7 @@ impl CharacterBehavior for Data { StageSection::Recover => { if self.timer < self.static_data.recover_duration { update.character = CharacterState::HealingBeam(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/leap_melee.rs b/common/src/states/leap_melee.rs index bbe307bc08..b6b53f357f 100644 --- a/common/src/states/leap_melee.rs +++ b/common/src/states/leap_melee.rs @@ -68,10 +68,7 @@ impl CharacterBehavior for Data { // Wait for `buildup_duration` to expire if self.timer < self.static_data.buildup_duration { update.character = CharacterState::LeapMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -106,10 +103,7 @@ impl CharacterBehavior for Data { // outside if block and have else check for > movement // duration * some multiplier update.character = CharacterState::LeapMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else if data.physics.on_ground { @@ -125,10 +119,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.swing_duration { // Swings weapons update.character = CharacterState::LeapMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -194,20 +185,14 @@ impl CharacterBehavior for Data { }); update.character = CharacterState::LeapMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), exhausted: true, ..*self }); } else if self.timer < self.static_data.recover_duration { // Complete recovery delay before finishing state update.character = CharacterState::LeapMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/repeater_ranged.rs b/common/src/states/repeater_ranged.rs index f3be51343f..beaedc70a5 100644 --- a/common/src/states/repeater_ranged.rs +++ b/common/src/states/repeater_ranged.rs @@ -62,10 +62,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Buildup to attack update.character = CharacterState::RepeaterRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -143,10 +140,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recover from attack update.character = CharacterState::RepeaterRanged(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/roll.rs b/common/src/states/roll.rs index d4fc7a7ea6..e8fa9ffb69 100644 --- a/common/src/states/roll.rs +++ b/common/src/states/roll.rs @@ -59,10 +59,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::Roll(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -98,10 +95,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.movement_duration { // Movement update.character = CharacterState::Roll(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -125,10 +119,7 @@ impl CharacterBehavior for Data { { // Recover update.character = CharacterState::Roll(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/self_buff.rs b/common/src/states/self_buff.rs index 85a99e46ab..c1c4edbdfb 100644 --- a/common/src/states/self_buff.rs +++ b/common/src/states/self_buff.rs @@ -54,10 +54,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::SelfBuff(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -87,10 +84,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.cast_duration { // Cast update.character = CharacterState::SelfBuff(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -104,10 +98,7 @@ impl CharacterBehavior for Data { StageSection::Recover => { if self.timer < self.static_data.recover_duration { update.character = CharacterState::SelfBuff(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/shockwave.rs b/common/src/states/shockwave.rs index 6a2cbd99a4..0cdd474001 100644 --- a/common/src/states/shockwave.rs +++ b/common/src/states/shockwave.rs @@ -69,10 +69,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::Shockwave(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -130,10 +127,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.swing_duration { // Swings update.character = CharacterState::Shockwave(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -149,10 +143,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovers update.character = CharacterState::Shockwave(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/spin_melee.rs b/common/src/states/spin_melee.rs index fe7f6ae51a..f6afd23e1a 100644 --- a/common/src/states/spin_melee.rs +++ b/common/src/states/spin_melee.rs @@ -90,10 +90,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::SpinMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -182,10 +179,7 @@ impl CharacterBehavior for Data { // Swings update.character = CharacterState::SpinMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else if update.energy.current() as f32 >= self.static_data.energy_cost @@ -219,10 +213,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recover update.character = CharacterState::SpinMelee(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { diff --git a/common/src/states/stunned.rs b/common/src/states/stunned.rs index 748760d54d..9d169e01dc 100644 --- a/common/src/states/stunned.rs +++ b/common/src/states/stunned.rs @@ -44,10 +44,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::Stunned(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else { @@ -63,10 +60,7 @@ impl CharacterBehavior for Data { if self.timer < self.static_data.recover_duration { // Recovery update.character = CharacterState::Stunned(Data { - timer: self - .timer - .checked_add(Duration::from_secs_f32(data.dt.0)) - .unwrap_or_default(), + timer: tick_attack_or_default(data, self.timer, None), ..*self }); } else {