Skip to content

Bind animations#40

Draft
BobbyTheCatfish wants to merge 33 commits intoExtremelyd1:mainfrom
BobbyTheCatfish:more-animations
Draft

Bind animations#40
BobbyTheCatfish wants to merge 33 commits intoExtremelyd1:mainfrom
BobbyTheCatfish:more-animations

Conversation

@BobbyTheCatfish
Copy link
Copy Markdown
Contributor

@BobbyTheCatfish BobbyTheCatfish commented Mar 15, 2026

Adds a bunch of less-common missing animations, but the main attraction are the new bind effects.

Global:

  • Warding Bell (with explosion if hit during bind)
  • Claw Mirrors
  • Regular silk effects (if applicable)
  • Maggot explosions if applicable

Beast Crest:

  • Special silk animation
  • "Rage" effect after binding

Witch Crest:

  • Special maggot explosion animation
  • Tendrils expand and deal damage if applicable

Shaman Crest:

  • 3 states, beginning (falling), landing, and failed

Cursed Crest:

  • Works in theory, just need to hook into that specific bind better

Notable changes

FSM Action Injection (Hooking)
This will likely be the groundwork for tool sync, so I want to get this right. It works by inserting an FSM State Action into a given state and index. Once the FSM reaches this FSM State Action, a System Action will be invoked, running a function. Right now this is used to send an animation packet over the network.

SubAnimationEffects
Located in AnimationManager, this functions similarly to AnimationEffects. The only difference is that the normal animator doesn't send them to the playerObject animator, and instead only runs the effect animation.

Player IDs in Effects
It's a pretty small change, but accounts for a decent amount of changed files. I needed the player ID to manage the maggot explosions, so the IDs had to be added to all of the effects.

Todo

I just remembered that I still need to check quick bind and use the reserve bind flag, but this is still ready for review

Copy link
Copy Markdown
Owner

@Extremelyd1 Extremelyd1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks so much for the PR, this was very much needed!

I've left a bunch of comments, which I've tried to add suggestions to so you can easily resolve them.

Let me start out by saying that you should try to use the .editorconfig file in the root of the project. Most IDEs have support for this file. The editor config defines the formatting style throughout the project and ensures that we are all on the same page about what style to use. In Rider for example (and I assume this is the same in VS), the IDE will generate warnings for inconsistent code styling and allow you to easily fix it or run a formatter to fix it automatically.

I don't have many comments about desing choices, as I feel that with the implementation of animations, it will almost always be somewhat janky to implement. I've not left any comments regarding code comments, as you mentioned in the PR that you still needed to do those.

I look forward to the remaining changes!

public bool BaseMirror = false;
public bool UpgradedMirror = false;
public bool QuickBind = false;
public bool ReserveBind = false;
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As said in your PR description, this is not yet checked.


internal class FsmStateActionInjector : FsmStateAction {
private static Action? _onUninject;
private Action<PlayMakerFSM>? _onStateEnter;
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This field can be made readonly:

Suggested change
private Action<PlayMakerFSM>? _onStateEnter;
private readonly Action<PlayMakerFSM>? _onStateEnter;

Copy link
Copy Markdown
Contributor Author

@BobbyTheCatfish BobbyTheCatfish Mar 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I decided to remove the action when uninjecting, just to be safe, so it is written to now.

Extremelyd1

This comment was marked as duplicate.

/// </summary>
private void PlayNormalStart(GameObject bindEffects, Flags flags) {
Logger.Debug("Playing normal bind start animation");
var bindSilkObj = CreateEffectIfNotExists(bindEffects, "Bind Silk");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we perhaps switch to strongly typed variables? Perhaps an Enum or even const variables?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a bunch of const variables for the effect object names since enums can't do strings. lmk how it looks.

@Liparakis
Copy link
Copy Markdown
Contributor

Hi, i liked your work with the Animations (kudos to you) and i wanted to point some things i saw! I left some comments (some are off by 1-2 lines but you will get the reference) on some things that could be improved. Apart from them, things like extracting some functions and crafting some re-usable components or making some small changes like changing function accessibility modifiers would be welcome!

@Extremelyd1
Copy link
Copy Markdown
Owner

What is the current status of this? It is still marked as draft and you haven't re-requested a review.

@BobbyTheCatfish
Copy link
Copy Markdown
Contributor Author

I could re-request if you want, I was just waiting on some responses to some of the open comments that I replied to

@Extremelyd1
Copy link
Copy Markdown
Owner

Alright, that's fine. For future reference, it is best if you respond to all the comments I left and make the necessary changes and once you are done request another review. That way, I know you are done with everything and I can take a look again!

@Extremelyd1 Extremelyd1 self-requested a review March 22, 2026 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants