mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Parrying
This commit is contained in:
parent
91c6288213
commit
f5ec23df48
@ -3,4 +3,5 @@ BasicBlock(
|
||||
recover_duration: 0.1,
|
||||
max_angle: 90.0,
|
||||
block_strength: 0.8,
|
||||
energy_cost: 0.0,
|
||||
)
|
@ -12,8 +12,8 @@ use crate::{
|
||||
},
|
||||
poise::PoiseChange,
|
||||
skills::SkillGroupKind,
|
||||
Body, CharacterState, Combo, Energy, EnergyChange, EnergySource, Health, HealthChange, HealthSource,
|
||||
Inventory, Ori, SkillSet, Stats,
|
||||
Body, CharacterState, Combo, Energy, EnergyChange, EnergySource, Health, HealthChange,
|
||||
HealthSource, Inventory, Ori, SkillSet, Stats,
|
||||
},
|
||||
event::ServerEvent,
|
||||
outcome::Outcome,
|
||||
@ -125,7 +125,11 @@ impl Attack {
|
||||
{
|
||||
if ori.look_vec().angle_between(-*dir) < data.static_data.max_angle.to_radians()
|
||||
{
|
||||
data.static_data.block_strength
|
||||
if data.parry {
|
||||
1.0
|
||||
} else {
|
||||
data.static_data.block_strength
|
||||
}
|
||||
} else {
|
||||
0.0
|
||||
}
|
||||
|
@ -119,6 +119,7 @@ pub enum CharacterAbility {
|
||||
recover_duration: f32,
|
||||
max_angle: f32,
|
||||
block_strength: f32,
|
||||
energy_cost: f32,
|
||||
},
|
||||
Roll {
|
||||
energy_cost: f32,
|
||||
@ -310,7 +311,8 @@ impl CharacterAbility {
|
||||
| CharacterAbility::ChargedRanged { energy_cost, .. }
|
||||
| CharacterAbility::ChargedMelee { energy_cost, .. }
|
||||
| CharacterAbility::Shockwave { energy_cost, .. }
|
||||
| CharacterAbility::BasicAura { energy_cost, .. } => update
|
||||
| CharacterAbility::BasicAura { energy_cost, .. }
|
||||
| CharacterAbility::BasicBlock { energy_cost, .. } => update
|
||||
.energy
|
||||
.try_change_by(-(*energy_cost as i32), EnergySource::Ability)
|
||||
.is_ok(),
|
||||
@ -352,6 +354,7 @@ impl CharacterAbility {
|
||||
recover_duration: 0.1,
|
||||
max_angle: 60.0,
|
||||
block_strength: 0.5,
|
||||
energy_cost: 50.0,
|
||||
}
|
||||
}
|
||||
|
||||
@ -600,7 +603,8 @@ impl CharacterAbility {
|
||||
| ChargedRanged { energy_cost, .. }
|
||||
| Shockwave { energy_cost, .. }
|
||||
| HealingBeam { energy_cost, .. }
|
||||
| BasicAura { energy_cost, .. } => *energy_cost as u32,
|
||||
| BasicAura { energy_cost, .. }
|
||||
| BasicBlock { energy_cost, .. } => *energy_cost as u32,
|
||||
BasicBeam { energy_drain, .. } => {
|
||||
if *energy_drain > f32::EPSILON {
|
||||
1
|
||||
@ -608,11 +612,7 @@ impl CharacterAbility {
|
||||
0
|
||||
}
|
||||
},
|
||||
BasicBlock { .. }
|
||||
| Boost { .. }
|
||||
| ComboMelee { .. }
|
||||
| Blink { .. }
|
||||
| BasicSummon { .. } => 0,
|
||||
Boost { .. } | ComboMelee { .. } | Blink { .. } | BasicSummon { .. } => 0,
|
||||
}
|
||||
}
|
||||
|
||||
@ -1266,6 +1266,7 @@ impl From<(&CharacterAbility, AbilityInfo)> for CharacterState {
|
||||
recover_duration,
|
||||
max_angle,
|
||||
block_strength,
|
||||
energy_cost: _,
|
||||
} => CharacterState::BasicBlock(basic_block::Data {
|
||||
static_data: basic_block::StaticData {
|
||||
buildup_duration: Duration::from_secs_f32(*buildup_duration),
|
||||
|
@ -49,14 +49,18 @@ impl CharacterBehavior for Data {
|
||||
.timer
|
||||
.checked_add(Duration::from_secs_f32(data.dt.0))
|
||||
.unwrap_or_default(),
|
||||
parry: !input_is_pressed(data, InputKind::Block),
|
||||
parry: self.parry || !input_is_pressed(data, InputKind::Block),
|
||||
..*self
|
||||
});
|
||||
} else {
|
||||
// Transitions to swing section of stage
|
||||
update.character = CharacterState::BasicBlock(Data {
|
||||
timer: Duration::default(),
|
||||
stage_section: StageSection::Swing,
|
||||
stage_section: if self.parry {
|
||||
StageSection::Recover
|
||||
} else {
|
||||
StageSection::Swing
|
||||
},
|
||||
..*self
|
||||
});
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user