From 9bbfe163c4ff0f0b5dde0d4003fd4dd071db704e Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 24 Mar 2021 00:54:25 -0400 Subject: [PATCH] You can now roll without a weapon equipped. --- common/src/comp/inventory/item/mod.rs | 2 +- common/src/states/utils.rs | 14 +++----------- voxygen/src/hud/hotbar.rs | 15 +++++++++------ voxygen/src/hud/skillbar.rs | 3 +-- voxygen/src/hud/slots.rs | 10 +++------- 5 files changed, 17 insertions(+), 27 deletions(-) diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index 1bcf4d9738..27d2995432 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -246,7 +246,6 @@ impl PartialEq for ItemDef { pub struct ItemConfig { pub abilities: AbilitySet, pub block_ability: Option, - pub dodge_ability: Option, } #[derive(Debug)] @@ -270,6 +269,7 @@ impl TryFrom<(&ItemKind, &[Item], &AbilityMap, &MaterialStatManifest)> for ItemC }) } else { Err(ItemConfigError::BadItemKind) + }; } } } diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 647a2401ef..72d3162524 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -570,17 +570,9 @@ pub fn attempt_input(data: &JoinData, update: &mut StateUpdate) { /// attempts to perform their dodge ability pub fn handle_dodge_input(data: &JoinData, update: &mut StateUpdate) { if input_is_pressed(data, InputKind::Roll) && data.body.is_humanoid() { - if let Some(ability) = data - .inventory - .equipped(EquipSlot::Mainhand) - .and_then(|i| { - i.item_config_expect() - .dodge_ability - .as_ref() - .map(|a| a.clone().adjusted_by_skills(&data.stats.skill_set, None)) - }) - .filter(|ability| ability.requirements_paid(data, update)) - { + let ability = + CharacterAbility::default_roll().adjusted_by_skills(&data.stats.skill_set, None); + if ability.requirements_paid(data, update) { update.character = CharacterState::from(( &ability, AbilityInfo::from_input(data, false, InputKind::Roll), diff --git a/voxygen/src/hud/hotbar.rs b/voxygen/src/hud/hotbar.rs index 09e7bde197..38c6b83119 100644 --- a/voxygen/src/hud/hotbar.rs +++ b/voxygen/src/hud/hotbar.rs @@ -78,11 +78,12 @@ impl State { let inventory = inventories.get(client.entity()); let stats = client.state().ecs().read_storage::(); let stat = stats.get(client.entity()); - - let hands = |equip_slot| match inventory.and_then(|i| i.equipped(equip_slot).map(|i| i.kind())) { - Some(ItemKind::Tool(tool)) => Some(tool.hands), - _ => None, - }; + + let hands = + |equip_slot| match inventory.and_then(|i| i.equipped(equip_slot).map(|i| i.kind())) { + Some(ItemKind::Tool(tool)) => Some(tool.hands), + _ => None, + }; let equip_slot = match (hands(EquipSlot::Mainhand), hands(EquipSlot::Offhand)) { (Some(_), _) => Some(EquipSlot::Mainhand), @@ -90,7 +91,9 @@ impl State { _ => None, }; - let should_be_present = if let (Some(inventory), Some(stat), Some(equip_slot)) = (inventory, stat, equip_slot) { + let should_be_present = if let (Some(inventory), Some(stat), Some(equip_slot)) = + (inventory, stat, equip_slot) + { inventory.equipped(equip_slot).map_or(false, |i| { i.item_config_expect() .abilities diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index 1ad00ee7dc..7d5146c949 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -674,8 +674,7 @@ impl<'a> Widget for Skillbar<'a> { (_, Some(_)) => second_tool, (_, _) => None, }; - - + Button::image(match tool.map(|(_, t)| t.kind) { Some(ToolKind::Sword) => self.imgs.twohsword_m1, Some(ToolKind::Dagger) => self.imgs.onehdagger_m1, diff --git a/voxygen/src/hud/slots.rs b/voxygen/src/hud/slots.rs index 7db771bd30..4af2858f8c 100644 --- a/voxygen/src/hud/slots.rs +++ b/voxygen/src/hud/slots.rs @@ -158,15 +158,11 @@ impl<'a> SlotKey, HotbarImageSource<'a>> for HotbarSlot { (_, _) => None, }; - let tool = equip_slot.and_then(|es| - match inventory - .equipped(es) - .map(|i| (i, i.kind())) - { + let tool = + equip_slot.and_then(|es| match inventory.equipped(es).map(|i| (i, i.kind())) { Some((item, ItemKind::Tool(tool))) => Some((item, tool)), _ => None, - } - ); + }); tool.and_then(|(item, tool)| { hotbar_image(tool.kind).map(|i| {