From 9528564b718a0e35629899626897377a09e4e6cd Mon Sep 17 00:00:00 2001 From: juliancoffee Date: Wed, 20 Mar 2024 16:37:13 +0200 Subject: [PATCH 1/2] Rolls don't skip recovery anymore Instead recovery of previous step flows into roll buildup --- common/src/comp/ability.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 262a2f8778..aa62987a23 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -1240,9 +1240,9 @@ impl CharacterAbility { 0.0 }; CharacterAbility::Roll { - // Energy cost increased by - energy_cost: 12.0 + remaining_recover * 100.0, - buildup_duration: 0.05, + energy_cost: 12.0, + // Remaining recover flows into buildup + buildup_duration: 0.05 + remaining_recover, movement_duration: 0.33, recover_duration: 0.125, roll_strength: 3.0, From 6e0dec847f4e77badc43d5339b33517f281295a9 Mon Sep 17 00:00:00 2001 From: juliancoffee Date: Wed, 20 Mar 2024 20:40:04 +0200 Subject: [PATCH 2/2] Give rolls full power only during movement stage + Make roll only give hitbox reduction during movement + Make roll only give iframes during movement + Move slowly while in roll-buildup --- common/src/comp/character_state.rs | 10 ++++++++-- common/src/states/roll.rs | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/common/src/comp/character_state.rs b/common/src/comp/character_state.rs index f6b5d18f47..08d85bc993 100644 --- a/common/src/comp/character_state.rs +++ b/common/src/comp/character_state.rs @@ -405,7 +405,13 @@ impl CharacterState { } } - pub fn is_dodge(&self) -> bool { matches!(self, CharacterState::Roll(_)) } + pub fn is_dodge(&self) -> bool { + if let CharacterState::Roll(c) = self { + c.stage_section == StageSection::Movement + } else { + false + } + } pub fn is_glide(&self) -> bool { matches!(self, CharacterState::Glide(_)) } @@ -415,7 +421,7 @@ impl CharacterState { pub fn attack_immunities(&self) -> Option { if let CharacterState::Roll(c) = self { - Some(c.static_data.attack_immunities) + (c.stage_section == StageSection::Movement).then_some(c.static_data.attack_immunities) } else { None } diff --git a/common/src/states/roll.rs b/common/src/states/roll.rs index 30c00f8f67..0b038e819b 100644 --- a/common/src/states/roll.rs +++ b/common/src/states/roll.rs @@ -60,7 +60,7 @@ impl CharacterBehavior for Data { match self.stage_section { StageSection::Buildup => { - handle_move(data, &mut update, 1.0); + handle_move(data, &mut update, 0.3); if self.timer < self.static_data.buildup_duration { // Build up update.character = CharacterState::Roll(Data {