Stances and Status Effects?

Hopefully this is the right spot to ask about this… Forgive me if this is already a feature that I haven’t discovered yet, but I don’t think the example characters have something like this, and I haven’t encountered it in the documentation I’ve read yet.

I’m curious if the engine has a feature for states that aren’t triggered by a player’s input, but rather caused by mechanics, such as an ice attack causing the opponent to become frozen, or using a move to enter a stance that changes what attacks you have available and potentially other things, like movement and appearance. I imagine a robust stance system might also allow for things like install supers.

(Given that the word “state” already refers to actions like attacks, I’m gonna call something like “the state of being frozen” a “status”.)

I’d also be curious if it’d be possible for an attack to create/alter a variable on the opponent that triggers a status at a threshold, like some kind of “dizzy meter” mechanic.

At the extreme end, I’m also considering statuses that change a character’s options/behaviors. For example, a character might have some kind of polymorphing attack that turns you into a frog. It’d be like a status in that it’s triggered by an enemy attack and likely has a duration, but like a stance in that it’d alter the attacks available to you, and how your character controls.

Are these features the engine is currently capable of? If not, I’d like to propose them as additions.
Thanks for listening!

Hello! This is already possible in engine, which is why I’ll move this post to the help category (no issues, if it wasn’t this would be the right place to post).

I’m curious if the engine has a feature for states that aren’t triggered by a player’s input, but rather caused by mechanics

Transition(NameOfTheState)

Your script can decide to change state using this function

(Given that the word “state” already refers to actions like attacks, I’m gonna call something like “the state of being frozen” a “status”.)

The word state already refers to that, attacks are just “attack states” if you want to be more specific. “Status” could easily refer to something like poison which doesn’t change your actual state flow.

I’d also be curious if it’d be possible for an attack to create/alter a variable on the opponent that triggers a status at a threshold, like some kind of “dizzy meter” mechanic.

Yes, you described the mechanism therefore you can code it. I’m going to future-proof the example a bit by using the new syntax, but it works about the same with the old syntax.

EAttackHit:
    # This supposes you already declared Attack.Dizzy and Dizzy before.
    # You also need to set it up in your attack.
    Add(Dizzy, Attack.Dizzy)
    V Dizzy > 100:
        Transition(Dizzy)
    endif
endif

At the extreme end, I’m also considering statuses that change a character’s options/behaviors.

This one is a bit trickier, as you might need to alter some of the skeleton to handle transitions. You can also use AttackPrefix() to change what attacks are available.

Stances are already possible, there is no specific system for them because each stance can work differently. As such, this is why the engine allows the most flexible method of all: coding. You just tell it what the stance needs to do. Simple stances work out with AttackPrefix, which will cover most usecases, while the other ones tend to have custom behavior that I don’t think can be elegantly made generic without limiting them.

If you have ideas on such a system, or think the current one is insufficient, don’t hesitate to share them!