Spin attack for axe

This commit is contained in:
Samuel Keiffer
2020-07-08 19:58:41 +00:00
committed by Joshua Barretto
parent 921c8a81d6
commit fe47a14ba5
17 changed files with 428 additions and 33 deletions

View File

@ -20,6 +20,7 @@ pub enum CharacterAbilityType {
BasicBlock,
TripleStrike(Stage),
LeapMelee,
SpinMelee,
}
impl From<&CharacterState> for CharacterAbilityType {
@ -32,6 +33,7 @@ impl From<&CharacterState> for CharacterAbilityType {
CharacterState::BasicBlock => Self::BasicBlock,
CharacterState::LeapMelee(_) => Self::LeapMelee,
CharacterState::TripleStrike(data) => Self::TripleStrike(data.stage),
CharacterState::SpinMelee(_) => Self::SpinMelee,
_ => Self::BasicMelee,
}
}
@ -80,6 +82,12 @@ pub enum CharacterAbility {
recover_duration: Duration,
base_damage: u32,
},
SpinMelee {
energy_cost: u32,
buildup_duration: Duration,
recover_duration: Duration,
base_damage: u32,
},
}
impl CharacterAbility {
@ -117,6 +125,10 @@ impl CharacterAbility {
.energy
.try_change_by(-(*energy_cost as i32), EnergySource::Ability)
.is_ok(),
CharacterAbility::SpinMelee { energy_cost, .. } => update
.energy
.try_change_by(-(*energy_cost as i32), EnergySource::Ability)
.is_ok(),
_ => true,
}
}
@ -239,6 +251,26 @@ impl From<&CharacterAbility> for CharacterState {
recover_duration: *recover_duration,
base_damage: *base_damage,
}),
CharacterAbility::SpinMelee {
energy_cost,
buildup_duration,
recover_duration,
base_damage,
} => CharacterState::SpinMelee(spin_melee::Data {
exhausted: false,
energy_cost: *energy_cost,
buildup_duration: *buildup_duration,
buildup_duration_default: *buildup_duration,
recover_duration: *recover_duration,
recover_duration_default: *recover_duration,
base_damage: *base_damage,
// This isn't needed for it's continuous implementation, but is left in should this
// skill be moved to the skillbar
hits_remaining: 1,
hits_remaining_default: 1, /* Should be the same value as hits_remaining, also
* this value can be removed if ability moved to
* skillbar */
}),
}
}
}