• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Completed Reduced Knockback and No Invincibility While Grabbing Ledge

Zadamanim

Smash Cadet
Joined
Dec 8, 2015
Messages
37
I need a code that removes ledge invincibility altogether. In a world with no ledge invincibility, it becomes extremely easy to edgeguard, though. So to compensate, grabbing the ledge should function similarly to a crouch cancel, you get massively reduced knockback, allowing you to double jump back onto the ledge immediately. If anyone has any tips on how to create this kind of function in the game, or wants to try making it themselves, let me know!
 
Last edited:

Zadamanim

Smash Cadet
Joined
Dec 8, 2015
Messages
37
Finally got around to working on this and I thought I was onto something when I found this in Crazy Hand. Unfortunately, both changing the Body State to Normal and changing it to a null self-damage event did nothing to actually remove invincibility. Guess I'll finally have to learn how to use debug dolphin lol.
ledgegrab invincibility.PNG
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Well, I think you were on the right track, because those body states appear to originate from subaction event data.

Somewhere in the cliffcatch wait animation interrupt function, there seems to be a hardcoded toggling of the body state that’s used to count down the intangibility timer. It simply toggles the state, meaning that if you remove the subaction event trigger, then it will toggle intangibility ON after the timer is up; rather than off.

---

Here are a pair of overwrites that disables the reading of subaction events for the cliffcatch state transition, and disables the hardcoded toggle. It effectively eliminates the intangibility caused by catching a ledge:

Code:
-==-

Vulnerable Ledge Grab
Removes intangibility caused by catching a ledge
[Punkline]
1.02 --- 800813e0 ----- 38a00000 -> 38A04000
# disable subaction event reading on action state change for cliffcatch

1.02 --- 8009a8b0 ----- 4bfe0eb1 -> 60000000
# stop toggling of body state on cliff wait
---

To handle the knockback scaling, I’ve created the Defensive Knockback Modifiers code.

The following code includes the above overwrites, the Defensive Knockback Modifiers code, and some default modifiers that scale the knockback of cliffcatch and cliffwait states to 50% applied force:

Code:
-==-

Scalable Ledge Vulnerability
Removes intangibility caused by catching a ledge, and scales the knockback applied while being struck from a ledge
[Punkline]
<Defensive_Knockback_Modifiers>
4E800021

# place an arbitrary number of character:action state IDs below these comments:
# FF------ = Internal Character ID
# --FFF--- = Action State ID
# -----FFF = fixed point: 0xF.FF

FF0FC080
FF0FD080
# <- place new modifiers here

# terminator:
00000000

1.02 --- 8008d940 ----- 7c7f1b78 -> branch
7C7F1B78 C03F1850 7D57E2A6 3C800805 7C97E3A6
bl <Defensive_Knockback_Modifiers>
7CA802A6 80C50000 38A50004 2C060000 41820044 54C7463E 813F0004 2C8700FF 7C093800 4C422342 4082FFDC 54C7A53E 813F0010 7C093800 4082FFCC 54C7053E B0E1FFF0 E0017FF0 EC010032 D01F1850 7D57E3A6 00000000
1.02 --- 800813e0 ----- 38a00000 -> 38A04000
1.02 --- 8009a8b0 ----- 4bfe0eb1 -> 60000000
---

The above code uses 2 knockback modifiers that can be edited to change the scaled knockback:

FF0FC080
FF0FD080


In each of these, the trailing 0x080 represents the decimal number 128/256 -- or 50%

By changing this number, you can change the applied knockback scale.

See here for more details, and let me know if you have any questions.
 

Zadamanim

Smash Cadet
Joined
Dec 8, 2015
Messages
37
Thanks so much! I'll be implementing this into MM today!
Edit: I just noticed the Internal Character ID in your example is set to FF, does that mean it effects all characters? Or is that just a placeholder and must be replaced with every character's ID to affect the whole cast?
 
Last edited:

Zadamanim

Smash Cadet
Joined
Dec 8, 2015
Messages
37
Putting both of those codes in MCM v4.0 gave me this error, should be easy enough to fix though.


A conflict (writing overlap) was detected between these two changes:

"Scalable Ledge Vulnerability"
Offset: 0x7dfc0, Code End: 0x7dfc4


"Vulnerable Ledge Grab"
Offset: 0x7dfc0, Code End: 0x7dfc4


These should not both be enabled. "Vulnerable Ledge Grab" will not be enabled. "Scalable Ledge Vulnerability" may need to be reinstalled.

Edit: Oh I'm just being dumb. If I would have read the description, the Scalable Ledge Vulnerability already includes the vulnerable ledge grab change, lol.
 
Last edited:

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
I just noticed the Internal Character ID in your example is set to FF, does that mean it effects all characters?
That's correct. I made a small note about it in the code description:

The character ID may be specified as “FF” to have a modifier apply to all characters.
This should make it easier to apply modifiers to common action states like cliffcatch.
 
Top Bottom