Decontextualized some sword abilities, added UI for sword skill tree.

This commit is contained in:
Sam 2023-01-04 21:52:54 -05:00
parent f43d25d3fe
commit 39b30b3458
20 changed files with 301 additions and 285 deletions

View File

@ -102,26 +102,16 @@
Simple(Sword(CripplingHamstring), "common.abilities.sword.crippling_hamstring"),
Simple(Sword(CleavingWhirlwindSlice), "common.abilities.sword.cleaving_whirlwind_slice"),
Simple(Sword(CleavingEarthSplitter), "common.abilities.sword.cleaving_earth_splitter"),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.stance_utility",
abilities: {
Stance(Sword(Heavy)): (Sword(HeavyFortitude), "common.abilities.sword.heavy_fortitude"),
Stance(Sword(Agile)): (Sword(AgileDancingEdge), "common.abilities.sword.agile_dancing_edge"),
Stance(Sword(Defensive)): (Sword(DefensiveStalwartSword), "common.abilities.sword.defensive_stalwart_sword"),
Stance(Sword(Crippling)): (Sword(CripplingEviscerate), "common.abilities.sword.crippling_eviscerate"),
Stance(Sword(Cleaving)): (Sword(CleavingBladeFever), "common.abilities.sword.cleaving_blade_fever"),
},
),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.stance_attack",
abilities: {
Stance(Sword(Heavy)): (Sword(HeavyPillarThrust), "common.abilities.sword.heavy_pillar_thrust"),
Stance(Sword(Agile)): (Sword(AgileFlurry), "common.abilities.sword.agile_flurry"),
Stance(Sword(Defensive)): (Sword(DefensiveDeflect), "common.abilities.sword.defensive_deflect"),
Stance(Sword(Crippling)): (Sword(CripplingBloodyGash), "common.abilities.sword.crippling_bloody_gash"),
Stance(Sword(Cleaving)): (Sword(CleavingSkySplitter), "common.abilities.sword.cleaving_sky_splitter"),
},
),
Simple(Sword(HeavyFortitude), "common.abilities.sword.heavy_fortitude"),
Simple(Sword(HeavyPillarThrust), "common.abilities.sword.heavy_pillar_thrust"),
Simple(Sword(AgileDancingEdge), "common.abilities.sword.agile_dancing_edge"),
Simple(Sword(AgileFlurry), "common.abilities.sword.agile_flurry"),
Simple(Sword(DefensiveStalwartSword), "common.abilities.sword.defensive_stalwart_sword"),
Simple(Sword(DefensiveDeflect), "common.abilities.sword.defensive_deflect"),
Simple(Sword(CripplingEviscerate), "common.abilities.sword.crippling_eviscerate"),
Simple(Sword(CripplingBloodyGash), "common.abilities.sword.crippling_bloody_gash"),
Simple(Sword(CleavingBladeFever), "common.abilities.sword.cleaving_blade_fever"),
Simple(Sword(CleavingSkySplitter), "common.abilities.sword.cleaving_sky_splitter"),
],
),
Tool(Axe): (

View File

@ -6,4 +6,7 @@ SelfBuff(
buff_strength: 0.25,
buff_duration: Some(30.0),
energy_cost: 30,
meta: (
requirements: (stance: Some(Sword(Agile))),
),
)

View File

@ -16,4 +16,7 @@ RapidMelee(
max_strikes: Some(3),
move_modifier: 0.35,
ori_modifier: 0.25,
meta: (
requirements: (stance: Some(Sword(Agile))),
),
)

View File

@ -6,4 +6,7 @@ SelfBuff(
buff_strength: 0.25,
buff_duration: Some(30.0),
energy_cost: 30,
meta: (
requirements: (stance: Some(Sword(Cleaving))),
),
)

View File

@ -21,4 +21,7 @@ ComboMelee2(
),
],
energy_cost_per_strike: 40,
meta: (
requirements: (stance: Some(Sword(Cleaving))),
),
)

View File

@ -20,4 +20,7 @@ ComboMelee2(
),
],
energy_cost_per_strike: 20,
meta: (
requirements: (stance: Some(Sword(Crippling))),
),
)

View File

@ -20,4 +20,7 @@ ComboMelee2(
),
],
energy_cost_per_strike: 25,
meta: (
requirements: (stance: Some(Sword(Crippling))),
),
)

View File

@ -17,4 +17,7 @@ BasicBlock(
air_shockwaves: false,
explosions: false,
),
meta: (
requirements: (stance: Some(Sword(Defensive))),
),
)

View File

@ -6,4 +6,7 @@ SelfBuff(
buff_strength: 0.4,
buff_duration: Some(30.0),
energy_cost: 30,
meta: (
requirements: (stance: Some(Sword(Defensive))),
),
)

View File

@ -6,4 +6,7 @@ SelfBuff(
buff_strength: 1.0,
buff_duration: Some(30.0),
energy_cost: 25,
meta: (
requirements: (stance: Some(Sword(Heavy))),
),
)

View File

@ -23,4 +23,7 @@ DiveMelee(
multi_target: Some(Normal),
),
max_scaling: 6,
meta: (
requirements: (stance: Some(Sword(Heavy))),
),
)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -174,31 +174,43 @@ common-abilities-sword-cleaving_earth_splitter = Earth Splitter
.desc =
Split the earth, if used while falling will have a much stronger impact
Use this ability to enter cleaving stance
veloren-core-pseudo_abilities-sword-stance_utility = Stance Utility Ability
.desc =
An ability that will change depending on what stance you are in at the it is time used
Abilities: Fortitude, Dancing Edge, Stalwart Sword, Eviscerate, and Blade Fever
common-abilities-sword-heavy_fortitude = Fortitude
.desc = Increases stagger resistance and as you take more damage your attacks will be more staggering
common-abilities-sword-agile_dancing_edge = Dancing Edge
.desc = Move and attack more swiftly
common-abilities-sword-defensive_stalwart_sword = Stalwart Sword
.desc = Shrug off the brunt of attacks, incoming damage is reduced
common-abilities-sword-crippling_eviscerate = Eviscerate
.desc = Shreds wounds further, deals more damage to crippled enemies
common-abilities-sword-cleaving_blade_fever = Blade Fever
.desc = Attack more recklessly, increasing the power of your strikes while leaving yourself open to incoming attacks
veloren-core-pseudo_abilities-sword-stance_attack = Stance Attack Ability
.desc =
An ability that will change depending on what stance you are in at the time it is used
Abilities: Pillar Thrust, Flurry, Deflect, Bloody Gash, and Sky Splitter
Increases stagger resistance and as you take more damage your attacks will be more staggering
Must be in heavy stance to use this ability
common-abilities-sword-heavy_pillar_thrust = Pillar Thrust
.desc = Stab your sword down through the enemy, all the way into the ground, is more powerful if used while falling
.desc =
Stab your sword down through the enemy, all the way into the ground, is more powerful if used while falling
Must be in heavy stance to use this ability
common-abilities-sword-agile_dancing_edge = Dancing Edge
.desc =
Move and attack more swiftly
Must be in agile stance to use this ability
common-abilities-sword-agile_flurry = Flurry
.desc = Multiple rapid stabs
.desc =
Multiple rapid stabs
Must be in agile stance to use this ability
common-abilities-sword-defensive_stalwart_sword = Stalwart Sword
.desc =
Shrug off the brunt of attacks, incoming damage is reduced
Must be in defensive stance to use this ability
common-abilities-sword-defensive_deflect = Deflect
.desc = A swift enough maneuver to even block projectiles
.desc =
A swift enough maneuver to even block projectiles
Must be in defensive stance to use this ability
common-abilities-sword-crippling_eviscerate = Eviscerate
.desc =
Shreds wounds further, deals more damage to crippled enemies
Must be in crippling stance to use this ability
common-abilities-sword-crippling_bloody_gash = Bloody Gash
.desc = Cruelly strike an already bleeding wound, does more damage to bleeding enemies
.desc =
Cruelly strike an already bleeding wound, does more damage to bleeding enemies
Must be in crippling stance to use this ability
common-abilities-sword-cleaving_blade_fever = Blade Fever
.desc =
Attack more recklessly, increasing the power of your strikes while leaving yourself open to incoming attacks
Must be in cleaving stance to use this ability
common-abilities-sword-cleaving_sky_splitter = Sky Splitter
.desc = A powerful strike that purportedly can even split the sky, but will split through enemies
.desc =
A powerful strike that purportedly can even split the sky, but will split through enemies
Must be in cleaving stance to use this ability

View File

@ -848,78 +848,87 @@ impl CharacterAbility {
/// Attempts to fulfill requirements, mutating `update` (taking energy) if
/// applicable.
pub fn requirements_paid(&self, data: &JoinData, update: &mut StateUpdate) -> bool {
match self {
CharacterAbility::Roll { energy_cost, .. } => {
data.physics.on_ground.is_some()
&& data.inputs.move_dir.magnitude_squared() > 0.25
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::DashMelee { energy_cost, .. }
| CharacterAbility::BasicMelee { energy_cost, .. }
| CharacterAbility::BasicRanged { energy_cost, .. }
| CharacterAbility::SpinMelee { energy_cost, .. }
| CharacterAbility::ChargedRanged { energy_cost, .. }
| CharacterAbility::ChargedMelee { energy_cost, .. }
| CharacterAbility::Shockwave { energy_cost, .. }
| CharacterAbility::BasicBlock { energy_cost, .. }
| CharacterAbility::SelfBuff { energy_cost, .. }
| CharacterAbility::RiposteMelee { energy_cost, .. }
| CharacterAbility::ComboMelee2 {
energy_cost_per_strike: energy_cost,
..
} => update.energy.try_change_by(-*energy_cost).is_ok(),
// Consumes energy within state, so value only checked before entering state
CharacterAbility::RepeaterRanged { energy_cost, .. } => {
update.energy.current() >= *energy_cost
},
CharacterAbility::LeapMelee { energy_cost, .. } => {
update.vel.0.z >= 0.0 && update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::LeapShockwave { energy_cost, .. } => {
update.vel.0.z >= 0.0 && update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::BasicAura {
energy_cost,
scales_with_combo,
..
} => {
((*scales_with_combo && data.combo.map_or(false, |c| c.counter() > 0))
| !*scales_with_combo)
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::FinisherMelee {
energy_cost,
minimum_combo,
let from_meta = {
let AbilityMeta {
requirements: AbilityRequirements { stance },
..
} = self.ability_meta();
stance.map_or(true, |req_stance| {
data.stance
.map_or(false, |char_stance| req_stance == *char_stance)
})
};
from_meta
&& match self {
CharacterAbility::Roll { energy_cost, .. } => {
data.physics.on_ground.is_some()
&& data.inputs.move_dir.magnitude_squared() > 0.25
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::DashMelee { energy_cost, .. }
| CharacterAbility::BasicMelee { energy_cost, .. }
| CharacterAbility::BasicRanged { energy_cost, .. }
| CharacterAbility::SpinMelee { energy_cost, .. }
| CharacterAbility::ChargedRanged { energy_cost, .. }
| CharacterAbility::ChargedMelee { energy_cost, .. }
| CharacterAbility::Shockwave { energy_cost, .. }
| CharacterAbility::BasicBlock { energy_cost, .. }
| CharacterAbility::SelfBuff { energy_cost, .. }
| CharacterAbility::RiposteMelee { energy_cost, .. }
| CharacterAbility::ComboMelee2 {
energy_cost_per_strike: energy_cost,
..
} => update.energy.try_change_by(-*energy_cost).is_ok(),
// Consumes energy within state, so value only checked before entering state
CharacterAbility::RepeaterRanged { energy_cost, .. } => {
update.energy.current() >= *energy_cost
},
CharacterAbility::LeapMelee { energy_cost, .. }
| CharacterAbility::LeapShockwave { energy_cost, .. } => {
update.vel.0.z >= 0.0 && update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::BasicAura {
energy_cost,
scales_with_combo,
..
} => {
((*scales_with_combo && data.combo.map_or(false, |c| c.counter() > 0))
| !*scales_with_combo)
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::FinisherMelee {
energy_cost,
minimum_combo,
..
}
| CharacterAbility::RapidMelee {
energy_cost,
minimum_combo,
..
} => {
data.combo.map_or(false, |c| c.counter() >= *minimum_combo)
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::DiveMelee {
buildup_duration,
energy_cost,
vertical_speed,
..
} => {
// If either falling fast enough or is on ground and able to be activated from
// ground
(data.vel.0.z < -*vertical_speed
|| (data.physics.on_ground.is_some() && buildup_duration.is_some()))
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::ComboMelee { .. }
| CharacterAbility::Boost { .. }
| CharacterAbility::BasicBeam { .. }
| CharacterAbility::Blink { .. }
| CharacterAbility::Music { .. }
| CharacterAbility::BasicSummon { .. }
| CharacterAbility::SpriteSummon { .. } => true,
}
| CharacterAbility::RapidMelee {
energy_cost,
minimum_combo,
..
} => {
data.combo.map_or(false, |c| c.counter() >= *minimum_combo)
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::DiveMelee {
buildup_duration,
energy_cost,
vertical_speed,
..
} => {
// If either falling fast enough or is on ground and able to be activated from
// ground
(data.vel.0.z < -*vertical_speed
|| (data.physics.on_ground.is_some() && buildup_duration.is_some()))
&& update.energy.try_change_by(-*energy_cost).is_ok()
},
CharacterAbility::ComboMelee { .. }
| CharacterAbility::Boost { .. }
| CharacterAbility::BasicBeam { .. }
| CharacterAbility::Blink { .. }
| CharacterAbility::Music { .. }
| CharacterAbility::BasicSummon { .. }
| CharacterAbility::SpriteSummon { .. } => true,
}
}
pub fn default_roll() -> CharacterAbility {
@ -2859,6 +2868,14 @@ pub struct AbilityMeta {
pub capabilities: Capability,
#[serde(default)]
pub init_event: Option<AbilityInitEvent>,
#[serde(default)]
pub requirements: AbilityRequirements,
}
// TODO: Later move over things like energy and combo into here
#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct AbilityRequirements {
pub stance: Option<Stance>,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, Hash)]

View File

@ -1591,163 +1591,143 @@ impl<'a> Diary<'a> {
// Sword
Image::new(self.imgs.sword_bg)
.wh([1000.0, 600.0])
.wh([1350.0, 920.0])
.mid_top_with_margin_on(state.ids.content_align, 80.0)
.color(Some(Color::Rgba(1.0, 1.0, 1.0, 1.0)))
.set(state.ids.sword_bg, ui);
use PositionSpecifier::TopLeftWithMarginsOn;
let skill_buttons = &[
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::BalancedFinisher),
// ability_id: "common.abilities.sword.balanced_finisher",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 489.0, 462.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::OffensiveStance),
// ability_id: "common.abilities.sword.offensive_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 389.0, 313.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::OffensiveFinisher),
// ability_id: "common.abilities.sword.offensive_finisher",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 489.0, 265.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::OffensiveAdvance),
// ability_id: "common.abilities.sword.offensive_advance",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 489.0, 361.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CripplingStance),
// ability_id: "common.abilities.sword.crippling_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 289.0, 164.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CripplingFinisher),
// ability_id: "common.abilities.sword.crippling_finisher",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 193.0, 164.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CripplingStrike),
// ability_id: "common.abilities.sword.crippling_strike",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 97.0, 164.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CripplingGouge),
// ability_id: "common.abilities.sword.crippling_gouge",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 2.0, 164.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CleavingStance),
// ability_id: "common.abilities.sword.cleaving_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 289.0, 15.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CleavingFinisher),
// ability_id: "common.abilities.sword.cleaving_finisher",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 193.0, 15.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CleavingSpin),
// ability_id: "common.abilities.sword.cleaving_spin",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 97.0, 15.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::CleavingDive),
// ability_id: "common.abilities.sword.cleaving_dive",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 2.0, 15.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::DefensiveStance),
// ability_id: "common.abilities.sword.defensive_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 389.0, 611.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::DefensiveBulwark),
// ability_id: "common.abilities.sword.defensive_bulwark",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 489.0, 659.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::DefensiveRetreat),
// ability_id: "common.abilities.sword.defensive_retreat",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 489.0, 563.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ParryingStance),
// ability_id: "common.abilities.sword.parrying_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 289.0, 760.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ParryingParry),
// ability_id: "common.abilities.sword.parrying_parry",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 193.0, 760.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ParryingRiposte),
// ability_id: "common.abilities.sword.parrying_riposte",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 97.0, 760.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ParryingCounter),
// ability_id: "common.abilities.sword.parrying_counter",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 2.0, 760.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::HeavyStance),
// ability_id: "common.abilities.sword.heavy_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 289.0, 909.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::HeavyFinisher),
// ability_id: "common.abilities.sword.heavy_finisher",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 193.0, 909.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::HeavyPommelStrike),
// ability_id: "common.abilities.sword.heavy_pommelstrike",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 97.0, 909.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::HeavyFortitude),
// ability_id: "common.abilities.sword.heavy_fortitude",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 2.0, 909.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::MobilityStance),
// ability_id: "common.abilities.sword.mobility_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 289.0, 462.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::MobilityFeint),
// ability_id: "common.abilities.sword.mobility_feint",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 289.0, 313.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::MobilityAgility),
// ability_id: "common.abilities.sword.mobility_agility",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 289.0, 611.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ReachingStance),
// ability_id: "common.abilities.sword.reaching_combo",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 141.0, 462.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ReachingCharge),
// ability_id: "common.abilities.sword.reaching_charge",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 2.0, 367.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ReachingFlurry),
// ability_id: "common.abilities.sword.reaching_flurry",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 2.0, 462.0),
// },
// SkillIcon::Ability {
// skill: Skill::Sword(SwordSkill::ReachingSkewer),
// ability_id: "common.abilities.sword.reaching_skewer",
// position: TopLeftWithMarginsOn(state.ids.sword_bg, 2.0, 558.0),
// },
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CrescentSlash),
ability_id: "veloren.core.pseudo_abilities.sword.crescent_slash",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 760.0, 646.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::FellStrike),
ability_id: "veloren.core.pseudo_abilities.sword.fell_strike",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 598.0, 820.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::Skewer),
ability_id: "veloren.core.pseudo_abilities.sword.skewer",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 460.0, 804.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::Cascade),
ability_id: "veloren.core.pseudo_abilities.sword.cascade",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 594.0, 490.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CrossCut),
ability_id: "veloren.core.pseudo_abilities.sword.cross_cut",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 454.0, 492.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::Finisher),
ability_id: "veloren.core.pseudo_abilities.sword.finisher",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 450.0, 644.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyWindmillSlash),
ability_id: "common.abilities.sword.heavy_windmill_slash",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 656.0, 64.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyPommelStrike),
ability_id: "common.abilities.sword.heavy_pommel_strike",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 658.0, 222.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::AgileQuickDraw),
ability_id: "common.abilities.sword.agile_quick_draw",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 226.0, 564.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::AgileFeint),
ability_id: "common.abilities.sword.agile_feint",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 228.0, 696.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::DefensiveRiposte),
ability_id: "common.abilities.sword.defensive_riposte",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 594.0, 1062.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::DefensiveDisengage),
ability_id: "common.abilities.sword.defensive_disengage",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 592.0, 1194.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingGouge),
ability_id: "common.abilities.sword.crippling_gouge",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 162.0, 1050.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingHamstring),
ability_id: "common.abilities.sword.crippling_hamstring",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 292.0, 1044.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingWhirlwindSlice),
ability_id: "common.abilities.sword.cleaving_whirlwind_slice",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 166.0, 264.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingEarthSplitter),
ability_id: "common.abilities.sword.cleaving_earth_splitter",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 320.0, 260.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyFortitude),
ability_id: "common.abilities.sword.heavy_fortitude",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 490.0, 60.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyPillarThrust),
ability_id: "common.abilities.sword.heavy_pillar_thrust",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 494.0, 230.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::AgileDancingEdge),
ability_id: "common.abilities.sword.agile_dancing_edge",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 100.0, 562.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::AgileFlurry),
ability_id: "common.abilities.sword.agile_flurry",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 106.0, 698.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::DefensiveStalwartSword),
ability_id: "common.abilities.sword.defensive_stalwart_sword",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 456.0, 1056.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::DefensiveDeflect),
ability_id: "common.abilities.sword.defensive_deflect",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 454.0, 1196.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingEviscerate),
ability_id: "common.abilities.sword.crippling_eviscerate",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 288.0, 1192.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingBloodyGash),
ability_id: "common.abilities.sword.crippling_bloody_gash",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 158.0, 1190.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingBladeFever),
ability_id: "common.abilities.sword.cleaving_blade_fever",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 160.0, 110.0),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingSkySplitter),
ability_id: "common.abilities.sword.cleaving_sky_splitter",
position: TopLeftWithMarginsOn(state.ids.sword_bg, 318.0, 110.0),
},
];
state.update(|s| {

View File

@ -280,17 +280,15 @@ image_ids! {
sword_crippling_hamstring: "voxygen.element.skills.sword.crippling_hamstring",
sword_cleaving_whirlwind_slice: "voxygen.element.skills.sword.cleaving_whirlwind_slice",
sword_cleaving_earth_splitter: "voxygen.element.skills.sword.cleaving_earth_splitter",
sword_stance_utility: "voxygen.element.skills.sword.stance_utility",
sword_heavy_fortitude: "voxygen.element.skills.sword.heavy_fortitude",
sword_agile_dancing_edge: "voxygen.element.skills.sword.agile_dancing_edge",
sword_defensive_stalwart_sword: "voxygen.element.skills.sword.defensive_stalwart_sword",
sword_crippling_eviscerate: "voxygen.element.skills.sword.crippling_eviscerate",
sword_cleaving_blade_fever: "voxygen.element.skills.sword.cleaving_blade_fever",
sword_stance_attack: "voxygen.element.skills.sword.stance_attack",
sword_heavy_pillar_thrust: "voxygen.element.skills.sword.heavy_pillar_thrust",
sword_agile_dancing_edge: "voxygen.element.skills.sword.agile_dancing_edge",
sword_agile_flurry: "voxygen.element.skills.sword.agile_flurry",
sword_defensive_stalwart_sword: "voxygen.element.skills.sword.defensive_stalwart_sword",
sword_defensive_deflect: "voxygen.element.skills.sword.defensive_deflect",
sword_crippling_eviscerate: "voxygen.element.skills.sword.crippling_eviscerate",
sword_crippling_bloody_gash: "voxygen.element.skills.sword.crippling_bloody_gash",
sword_cleaving_blade_fever: "voxygen.element.skills.sword.cleaving_blade_fever",
sword_cleaving_sky_splitter: "voxygen.element.skills.sword.cleaving_sky_splitter",
// Skilltree Icons

View File

@ -415,17 +415,15 @@ pub fn ability_image(imgs: &img_ids::Imgs, ability_id: &str) -> image::Id {
"common.abilities.sword.crippling_hamstring" => imgs.sword_crippling_hamstring,
"common.abilities.sword.cleaving_whirlwind_slice" => imgs.sword_cleaving_whirlwind_slice,
"common.abilities.sword.cleaving_earth_splitter" => imgs.sword_cleaving_earth_splitter,
"veloren.core.pseudo_abilities.sword.stance_utility" => imgs.sword_stance_utility,
"common.abilities.sword.heavy_fortitude" => imgs.sword_heavy_fortitude,
"common.abilities.sword.agile_dancing_edge" => imgs.sword_agile_dancing_edge,
"common.abilities.sword.defensive_stalwart_sword" => imgs.sword_defensive_stalwart_sword,
"common.abilities.sword.crippling_eviscerate" => imgs.sword_crippling_eviscerate,
"common.abilities.sword.cleaving_blade_fever" => imgs.sword_cleaving_blade_fever,
"veloren.core.pseudo_abilities.sword.stance_attack" => imgs.sword_stance_attack,
"common.abilities.sword.heavy_pillar_thrust" => imgs.sword_heavy_pillar_thrust,
"common.abilities.sword.agile_dancing_edge" => imgs.sword_agile_dancing_edge,
"common.abilities.sword.agile_flurry" => imgs.sword_agile_flurry,
"common.abilities.sword.defensive_stalwart_sword" => imgs.sword_defensive_stalwart_sword,
"common.abilities.sword.defensive_deflect" => imgs.sword_defensive_deflect,
"common.abilities.sword.crippling_eviscerate" => imgs.sword_crippling_eviscerate,
"common.abilities.sword.crippling_bloody_gash" => imgs.sword_crippling_bloody_gash,
"common.abilities.sword.cleaving_blade_fever" => imgs.sword_cleaving_blade_fever,
"common.abilities.sword.cleaving_sky_splitter" => imgs.sword_cleaving_sky_splitter,
// Axe
"common.abilities.axe.doublestrike" => imgs.twohaxe_m1,