Skip to content

Add analog-based light shields#1536

Draft
blu-dev wants to merge 1 commit intopre-releasefrom
feature/light-shields
Draft

Add analog-based light shields#1536
blu-dev wants to merge 1 commit intopre-releasefrom
feature/light-shields

Conversation

@blu-dev
Copy link
Copy Markdown
Contributor

@blu-dev blu-dev commented Apr 10, 2023

Assets:
parry-layout-assets.zip

General Summary

This pull requests brings back light shielding, a mechanic not seen in any Smash iteration (or platform fighter, to my knowledge) since Melee. Formulas for shield damage, shield pushback, attacker rebound, and shield stun have all been inspired by Melee but adapted to HDR.

Please understand that I am aware this is a controversial change, I make this PR because this has been my one singular passionate goal for Ultimate modding since February, 2021. I have been through iteration hell trying to get this working, and more importantly, getting it working online.

If this PR never gets merged that's alright with me, I will be content with having implemented. I just wanted to showcase it, and garner feedback and see how people feel. It would make me very happy if it got merged, but I do not expect it.

Detailed Changes

Trigger Thresholds

Due to some code mixups, this change actually also applies to the parry pull request (#1535).

In previous versions of HDR, Gamecube controller triggers get registered as digital button presses starting at 0.33 (this is not exactly 1/3 of the way down, this is after the Switch's HID driver's deadzones).

Now, analog values start getting registered between 0.1 and end at 0.8. Anything below 0.1 gets mapped to 0.0, and anything above 0.8 gets mapped to 1.0. Values between 0.1 and 0.8 get linearly interpolated between 0 and 1.0

This makes Gamecube triggers register earlier than what might be expected, and there might need to be additional logic performed on these to detect releases so that gamefeel continues to feel good. Thank you for patience!

Shield Scaling

The maximum light shield has a radius of 2x the full hard shield of a character. Since this value is literally impossible to reach (would require an analog value of 0.0), the maximum radius is a little lower than that.

Formulas

Where A is the analog value of the shield, and setoff_mul is a per-move value:

Formula Regular Shield Light Shield
Shield Damage attack_power * 1.4 attack_power * (1.4 + 0.2 * (1.0 - A))
Shield Stun attack_power * setoff_mul * 0.55 attack_power * setoff_mul * ((1.0 - A) * 0.65 + 0.55 / 1.5) * 1.5
Shield Pushback attack_power * 0.051 attack_power * (0.195 * (1.0 - A) + 0.051)
Attacker Recoil attack_power * 0.04 attack_power * 0.04 * A * 0.1

Some of these formulas may be implemented incorrectly, it was very difficult to locate where to implement them, so I may change these over time.

Videos:
https://streamable.com/19671f
https://streamable.com/9lq0ou

@blu-dev blu-dev self-assigned this Apr 10, 2023
@blu-dev blu-dev added engine For working on engine changes semver:feature includes assets labels Apr 10, 2023
@blu-dev blu-dev marked this pull request as ready for review April 10, 2023 04:47
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 10, 2023

Download the artifacts for this pull request:

@sticks-stuff
Copy link
Copy Markdown
Contributor

Videos are down
image

@SuddyN SuddyN added the wontfix This will not be worked on label Dec 18, 2023
@SkewedAskew SkewedAskew marked this pull request as draft December 21, 2023 16:53
@WuBoytH WuBoytH changed the base branch from dev to pre-release September 13, 2024 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine For working on engine changes includes assets semver:feature wontfix This will not be worked on

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants