mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Decontextualized some sword abilities, added UI for sword skill tree.
This commit is contained in:
parent
f43d25d3fe
commit
39b30b3458
@ -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): (
|
||||
|
@ -6,4 +6,7 @@ SelfBuff(
|
||||
buff_strength: 0.25,
|
||||
buff_duration: Some(30.0),
|
||||
energy_cost: 30,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Agile))),
|
||||
),
|
||||
)
|
||||
|
@ -16,4 +16,7 @@ RapidMelee(
|
||||
max_strikes: Some(3),
|
||||
move_modifier: 0.35,
|
||||
ori_modifier: 0.25,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Agile))),
|
||||
),
|
||||
)
|
||||
|
@ -6,4 +6,7 @@ SelfBuff(
|
||||
buff_strength: 0.25,
|
||||
buff_duration: Some(30.0),
|
||||
energy_cost: 30,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Cleaving))),
|
||||
),
|
||||
)
|
||||
|
@ -21,4 +21,7 @@ ComboMelee2(
|
||||
),
|
||||
],
|
||||
energy_cost_per_strike: 40,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Cleaving))),
|
||||
),
|
||||
)
|
@ -20,4 +20,7 @@ ComboMelee2(
|
||||
),
|
||||
],
|
||||
energy_cost_per_strike: 20,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Crippling))),
|
||||
),
|
||||
)
|
@ -20,4 +20,7 @@ ComboMelee2(
|
||||
),
|
||||
],
|
||||
energy_cost_per_strike: 25,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Crippling))),
|
||||
),
|
||||
)
|
@ -17,4 +17,7 @@ BasicBlock(
|
||||
air_shockwaves: false,
|
||||
explosions: false,
|
||||
),
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Defensive))),
|
||||
),
|
||||
)
|
@ -6,4 +6,7 @@ SelfBuff(
|
||||
buff_strength: 0.4,
|
||||
buff_duration: Some(30.0),
|
||||
energy_cost: 30,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Defensive))),
|
||||
),
|
||||
)
|
||||
|
@ -6,4 +6,7 @@ SelfBuff(
|
||||
buff_strength: 1.0,
|
||||
buff_duration: Some(30.0),
|
||||
energy_cost: 25,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Heavy))),
|
||||
),
|
||||
)
|
||||
|
@ -23,4 +23,7 @@ DiveMelee(
|
||||
multi_target: Some(Normal),
|
||||
),
|
||||
max_scaling: 6,
|
||||
meta: (
|
||||
requirements: (stance: Some(Sword(Heavy))),
|
||||
),
|
||||
)
|
||||
|
BIN
assets/voxygen/element/skills/sword/delete.png
(Stored with Git LFS)
BIN
assets/voxygen/element/skills/sword/delete.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/element/skills/sword/stance_attack.png
(Stored with Git LFS)
BIN
assets/voxygen/element/skills/sword/stance_attack.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/element/skills/sword/stance_utility.png
(Stored with Git LFS)
BIN
assets/voxygen/element/skills/sword/stance_utility.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/element/ui/diary/sword_bg.png
(Stored with Git LFS)
BIN
assets/voxygen/element/ui/diary/sword_bg.png
(Stored with Git LFS)
Binary file not shown.
@ -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
|
@ -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)]
|
||||
|
@ -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| {
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user