From 244ffcf03e32ffa5d7bc7a781246b3c4946c940f Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 29 Mar 2024 21:06:02 -0400 Subject: [PATCH] Earthshaker --- .../common/abilities/ability_set_manifest.ron | 2 +- .../common/abilities/hammer/earthshaker.ron | 25 ++++++++++++++++++ .../element/skills/hammer/earthshaker.png | 3 +++ assets/voxygen/i18n/en/hud/ability.ftl | 3 +++ voxygen/anim/src/character/finishermelee.rs | 26 +++++++++++++++++++ voxygen/src/hud/img_ids.rs | 1 + voxygen/src/hud/util.rs | 1 + 7 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 assets/common/abilities/hammer/earthshaker.ron create mode 100644 assets/voxygen/element/skills/hammer/earthshaker.png diff --git a/assets/common/abilities/ability_set_manifest.ron b/assets/common/abilities/ability_set_manifest.ron index eefe2e0aea..b1b0804b20 100644 --- a/assets/common/abilities/ability_set_manifest.ron +++ b/assets/common/abilities/ability_set_manifest.ron @@ -237,7 +237,7 @@ Simple(Hammer(HelmCrusher), "common.abilities.hammer.helm_crusher"), Simple(Hammer(Rampart), "common.abilities.hammer.rampart"), Simple(Hammer(Tenacity), "common.abilities.hammer.tenacity"), - // Simple(Hammer(Earthshaker), "common.abilities.hammer.earthshaker"), + Simple(Hammer(Earthshaker), "common.abilities.hammer.earthshaker"), // Simple(Hammer(Judgement), "common.abilities.hammer.judgement"), ], ), diff --git a/assets/common/abilities/hammer/earthshaker.ron b/assets/common/abilities/hammer/earthshaker.ron new file mode 100644 index 0000000000..09f19f8920 --- /dev/null +++ b/assets/common/abilities/hammer/earthshaker.ron @@ -0,0 +1,25 @@ +FinisherMelee( + energy_cost: 0, + buildup_duration: 0.4, + swing_duration: 0.2, + recover_duration: 0.7, + melee_constructor: ( + kind: Bash( + damage: 40, + poise: 50, + knockback: 10, + energy_regen: 0, + ), + range: 6.0, + angle: 360.0, + multi_target: Some(Normal), + damage_effect: Some(Buff(( + kind: Winded, + dur_secs: 5.0, + strength: Value(2.0), + chance: 1.0, + ))), + ), + minimum_combo: 20, + combo_consumption: Cost, +) \ No newline at end of file diff --git a/assets/voxygen/element/skills/hammer/earthshaker.png b/assets/voxygen/element/skills/hammer/earthshaker.png new file mode 100644 index 0000000000..869b86f3be --- /dev/null +++ b/assets/voxygen/element/skills/hammer/earthshaker.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:896e6c3f89aa6ce62a02929a5bad341298d4d0871cbae4a68b72548867dfed21 +size 1030 diff --git a/assets/voxygen/i18n/en/hud/ability.ftl b/assets/voxygen/i18n/en/hud/ability.ftl index 47d129df27..c853daf354 100644 --- a/assets/voxygen/i18n/en/hud/ability.ftl +++ b/assets/voxygen/i18n/en/hud/ability.ftl @@ -446,3 +446,6 @@ common-abilities-hammer-thunderclap = Thunderclap common-abilities-hammer-seismic_shock = Seismic Shock .desc = After buildup up enough momentum in your hammer, strike the ground with enough force that it erupts outward, throwing your foes into the air. +common-abilities-hammer-earthshaker = Earthshaker + .desc = + Slam the head of your blood-soaked hammer into the ground, unleashing a shockwave that knocks the wind out of everyone around you. diff --git a/voxygen/anim/src/character/finishermelee.rs b/voxygen/anim/src/character/finishermelee.rs index a931aa5cfb..12053fb45a 100644 --- a/voxygen/anim/src/character/finishermelee.rs +++ b/voxygen/anim/src/character/finishermelee.rs @@ -533,6 +533,32 @@ impl Animation for FinisherMeleeAnimation { next.control.orientation.rotate_x(-3.0 * move2); next.control.position += Vec3::new(0.0, 0.0, -16.0) * move2; }, + Some("common.abilities.hammer.earthshaker") => { + hammer_start(&mut next, s_a); + let (move1, move2, move3) = match stage_section { + Some(StageSection::Buildup) => (anim_time, 0.0, 0.0), + Some(StageSection::Action) => (1.0, anim_time, 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1 = move1 * pullback; + let move2 = move2 * pullback; + + next.hand_l.orientation.rotate_y(move1 * -PI); + next.hand_r.orientation.rotate_y(move1 * -PI); + next.control.orientation.rotate_x(2.4 * move1); + next.control.orientation.rotate_z(move1 * -PI / 2.0); + next.control.orientation.rotate_x(-0.6 * move1); + next.control.position += Vec3::new(-8.0, 0.0, 24.0) * move1; + next.chest.orientation.rotate_x(move1 * 0.5); + next.torso.position += Vec3::new(0.0, 0.0, 8.0) * move1; + + next.torso.position += Vec3::new(0.0, 0.0, -8.0) * move2; + next.control.orientation.rotate_x(move2 * -0.8); + next.control.position += Vec3::new(0.0, 0.0, -10.0) * move2; + next.chest.orientation.rotate_x(move2 * -0.8); + }, _ => {}, } diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index 91b2abdce2..608a3b4ed4 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -334,6 +334,7 @@ image_ids! { hammer_tenacity: "voxygen.element.skills.hammer.tenacity", hammer_thunderclap: "voxygen.element.skills.hammer.thunderclap", hammer_seismic_shock: "voxygen.element.skills.hammer.seismic_shock", + hammer_earthshaker: "voxygen.element.skills.hammer.earthshaker", // Skilltree Icons health_plus_skill: "voxygen.element.skills.skilltree.health_plus", energy_plus_skill: "voxygen.element.skills.skilltree.energy_plus", diff --git a/voxygen/src/hud/util.rs b/voxygen/src/hud/util.rs index 6dc7fc85fc..77f58fe3f7 100644 --- a/voxygen/src/hud/util.rs +++ b/voxygen/src/hud/util.rs @@ -660,6 +660,7 @@ pub fn ability_image(imgs: &img_ids::Imgs, ability_id: &str) -> image::Id { "common.abilities.hammer.tenacity" => imgs.hammer_tenacity, "common.abilities.hammer.thunderclap" => imgs.hammer_thunderclap, "common.abilities.hammer.seismic_shock" => imgs.hammer_seismic_shock, + "common.abilities.hammer.earthshaker" => imgs.hammer_earthshaker, // Bow "common.abilities.bow.charged" => imgs.bow_m1, "common.abilities.bow.repeater" => imgs.bow_m2,