diff --git a/assets/common/abilities/ability_set_manifest.ron b/assets/common/abilities/ability_set_manifest.ron index b1b0804b20..14eb72198b 100644 --- a/assets/common/abilities/ability_set_manifest.ron +++ b/assets/common/abilities/ability_set_manifest.ron @@ -238,7 +238,7 @@ Simple(Hammer(Rampart), "common.abilities.hammer.rampart"), Simple(Hammer(Tenacity), "common.abilities.hammer.tenacity"), Simple(Hammer(Earthshaker), "common.abilities.hammer.earthshaker"), - // Simple(Hammer(Judgement), "common.abilities.hammer.judgement"), + Simple(Hammer(Judgement), "common.abilities.hammer.judgement"), ], ), Tool(Bow): ( diff --git a/assets/common/abilities/hammer/judgement.ron b/assets/common/abilities/hammer/judgement.ron new file mode 100644 index 0000000000..850727b3ee --- /dev/null +++ b/assets/common/abilities/hammer/judgement.ron @@ -0,0 +1,22 @@ +FinisherMelee( + energy_cost: 0, + buildup_duration: 0.3, + swing_duration: 0.2, + recover_duration: 0.6, + melee_constructor: ( + kind: Bash( + damage: 25, + poise: 30, + knockback: 10, + energy_regen: 0, + ), + range: 4.0, + angle: 15.0, + damage_effect: Some(StunnedVulnerable(3.0)), + ), + minimum_combo: 20, + combo_consumption: Cost, + meta: ( + contextual_stats: Some((context: PoiseResilience(60.0), field: Power)), + ), +) \ No newline at end of file diff --git a/assets/common/abilities/hammer/thunderclap.ron b/assets/common/abilities/hammer/thunderclap.ron index a3d16cefa8..47a7849f78 100644 --- a/assets/common/abilities/hammer/thunderclap.ron +++ b/assets/common/abilities/hammer/thunderclap.ron @@ -1,7 +1,7 @@ FinisherMelee( energy_cost: 0, - buildup_duration: 0.3, - swing_duration: 0.2, + buildup_duration: 0.5, + swing_duration: 0.1, recover_duration: 0.7, melee_constructor: ( kind: Bash( diff --git a/assets/voxygen/element/skills/hammer/judgement.png b/assets/voxygen/element/skills/hammer/judgement.png new file mode 100644 index 0000000000..c9e28b9441 --- /dev/null +++ b/assets/voxygen/element/skills/hammer/judgement.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92e3f0c850bc5c2877dfe70eef31217b37d5af297d5e0d78ad049c34d91aeed4 +size 1068 diff --git a/assets/voxygen/i18n/en/hud/ability.ftl b/assets/voxygen/i18n/en/hud/ability.ftl index c853daf354..694fa6a3d6 100644 --- a/assets/voxygen/i18n/en/hud/ability.ftl +++ b/assets/voxygen/i18n/en/hud/ability.ftl @@ -449,3 +449,6 @@ common-abilities-hammer-seismic_shock = Seismic Shock 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. +common-abilities-hammer-judgement = Judgement + .desc = + Bring your hammer down on your foe with all your weight, potentially killing them outright if they are staggered. diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index c3c4f0a6f7..4fd732cd73 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -3059,6 +3059,9 @@ impl StatAdj { StatField::BuffStrength => { stats.buff_strength += add; }, + StatField::Power => { + stats.power += add; + }, } stats } @@ -3079,6 +3082,7 @@ pub enum StatContext { pub enum StatField { EffectPower, BuffStrength, + Power, } // TODO: Later move over things like energy and combo into here diff --git a/voxygen/anim/src/character/finishermelee.rs b/voxygen/anim/src/character/finishermelee.rs index 12053fb45a..cb8974405f 100644 --- a/voxygen/anim/src/character/finishermelee.rs +++ b/voxygen/anim/src/character/finishermelee.rs @@ -519,19 +519,16 @@ impl Animation for FinisherMeleeAnimation { let move1 = move1 * pullback; let move2 = move2 * pullback; - next.control.orientation.rotate_x(2.4 * move1); + twist_back(&mut next, move1, 1.8, 0.9, 0.5, 1.1); + next.control.orientation.rotate_x(move1 * 2.4); + next.control.position += Vec3::new(-16.0, -8.0, 12.0) * 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, 6.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.control.orientation.rotate_x(move1 * 0.6); - next.torso.position += Vec3::new(0.0, 0.0, -8.0) * move2; - next.chest.orientation.rotate_x(-1.5 * move2); - next.belt.orientation.rotate_x(0.3 * move2); - next.shorts.orientation.rotate_x(0.6 * move2); - next.control.orientation.rotate_x(-3.0 * move2); - next.control.position += Vec3::new(0.0, 0.0, -16.0) * move2; + twist_forward(&mut next, move2, 2.4, 1.1, 0.6, 1.4); + next.control.orientation.rotate_x(move2 * -5.0); + next.control.position += Vec3::new(4.0, 12.0, -12.0) * move2; + next.control.orientation.rotate_z(move2 * 0.6); }, Some("common.abilities.hammer.earthshaker") => { hammer_start(&mut next, s_a); @@ -559,6 +556,32 @@ impl Animation for FinisherMeleeAnimation { next.control.position += Vec3::new(0.0, 0.0, -10.0) * move2; next.chest.orientation.rotate_x(move2 * -0.8); }, + Some("common.abilities.hammer.judgement") => { + 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.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, 6.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.chest.orientation.rotate_x(-1.5 * move2); + next.belt.orientation.rotate_x(0.3 * move2); + next.shorts.orientation.rotate_x(0.6 * move2); + next.control.orientation.rotate_x(-3.0 * move2); + next.control.position += Vec3::new(0.0, 0.0, -16.0) * move2; + }, _ => {}, } diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index 608a3b4ed4..2af3932def 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -335,6 +335,7 @@ image_ids! { hammer_thunderclap: "voxygen.element.skills.hammer.thunderclap", hammer_seismic_shock: "voxygen.element.skills.hammer.seismic_shock", hammer_earthshaker: "voxygen.element.skills.hammer.earthshaker", + hammer_judgement: "voxygen.element.skills.hammer.judgement", // 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 77f58fe3f7..200480b788 100644 --- a/voxygen/src/hud/util.rs +++ b/voxygen/src/hud/util.rs @@ -661,6 +661,7 @@ pub fn ability_image(imgs: &img_ids::Imgs, ability_id: &str) -> image::Id { "common.abilities.hammer.thunderclap" => imgs.hammer_thunderclap, "common.abilities.hammer.seismic_shock" => imgs.hammer_seismic_shock, "common.abilities.hammer.earthshaker" => imgs.hammer_earthshaker, + "common.abilities.hammer.judgement" => imgs.hammer_judgement, // Bow "common.abilities.bow.charged" => imgs.bow_m1, "common.abilities.bow.repeater" => imgs.bow_m2,