Leap now actually works. In addition, leaping while next to an entity no longer interrupts the leap.

This commit is contained in:
Samuel Keiffer
2020-07-03 15:40:12 +00:00
committed by Justin Shipsey
parent 3473fd215b
commit 85d1d4b3ff
17 changed files with 374 additions and 60 deletions

View File

@ -18,6 +18,7 @@ pub enum CharacterAbilityType {
DashMelee,
BasicBlock,
TripleStrike(Stage),
LeapMelee,
}
impl From<&CharacterState> for CharacterAbilityType {
@ -28,6 +29,7 @@ impl From<&CharacterState> for CharacterAbilityType {
CharacterState::Boost(_) => Self::Boost,
CharacterState::DashMelee(_) => Self::DashMelee,
CharacterState::BasicBlock => Self::BasicBlock,
CharacterState::LeapMelee(_) => Self::LeapMelee,
CharacterState::TripleStrike(data) => Self::TripleStrike(data.stage),
_ => Self::BasicMelee,
}
@ -59,6 +61,7 @@ pub enum CharacterAbility {
only_up: bool,
},
DashMelee {
energy_cost: u32,
buildup_duration: Duration,
recover_duration: Duration,
base_damage: u32,
@ -69,6 +72,13 @@ pub enum CharacterAbility {
base_damage: u32,
needs_timing: bool,
},
LeapMelee {
energy_cost: u32,
movement_duration: Duration,
buildup_duration: Duration,
recover_duration: Duration,
base_damage: u32,
},
}
impl CharacterAbility {
@ -90,9 +100,9 @@ impl CharacterAbility {
.try_change_by(-220, EnergySource::Ability)
.is_ok()
},
CharacterAbility::DashMelee { .. } => update
CharacterAbility::DashMelee { energy_cost, .. } => update
.energy
.try_change_by(-700, EnergySource::Ability)
.try_change_by(-(*energy_cost as i32), EnergySource::Ability)
.is_ok(),
CharacterAbility::BasicMelee { energy_cost, .. } => update
.energy
@ -102,6 +112,10 @@ impl CharacterAbility {
.energy
.try_change_by(-(*energy_cost as i32), EnergySource::Ability)
.is_ok(),
CharacterAbility::LeapMelee { energy_cost, .. } => update
.energy
.try_change_by(-(*energy_cost as i32), EnergySource::Ability)
.is_ok(),
_ => true,
}
}
@ -179,6 +193,7 @@ impl From<&CharacterAbility> for CharacterState {
only_up: *only_up,
}),
CharacterAbility::DashMelee {
energy_cost: _,
buildup_duration,
recover_duration,
base_damage,
@ -209,6 +224,20 @@ impl From<&CharacterAbility> for CharacterState {
TransitionStyle::Hold(HoldingState::Holding)
},
}),
CharacterAbility::LeapMelee {
energy_cost: _,
movement_duration,
buildup_duration,
recover_duration,
base_damage,
} => CharacterState::LeapMelee(leap_melee::Data {
initialize: true,
exhausted: false,
movement_duration: *movement_duration,
buildup_duration: *buildup_duration,
recover_duration: *recover_duration,
base_damage: *base_damage,
}),
}
}
}