ikemen-engine / Ikemen-GO

An open-source fighting game engine that supports MUGEN resources.
https://ikemen-engine.github.io
Other
700 stars 124 forks source link

AngleDraw schenanigans #1918

Open LasombraDemon opened 1 month ago

LasombraDemon commented 1 month ago

Describe the bug

AngleDraw scale has some issues in MUGEN, where it keeps applying the mulitplier over and over again during hitpauses and during certain other contexts. AngleDraw controllers also stack between each other if one is called at the end of a state and another one is called at the beginning of a state.

This makes calling AngleDraw in a constant fashion a hassle, since it both demands conditioning it against HitPauseTime = 0 and Time = 0... And this breaks with superpauses too.

To Reproduce

Otane.zip Morrigan.zip ken-X.zip

Expected behavior

I honestly don't know how this should be fixed retroactively, but I think a single AngleDraw in the -4 with ignorehitpause should apply once per tick.

Conditioning this to the -4 or to IKEMENVer will guarantee backwards compat for creations that accounted for this bug.

I'm now having to dance around this limitation which is kind of a bother.

Screenshots / Video

ikemen001 ikemen002 ikemen003 ikemen000

Engine Version (or source code date)

Nightly, as of July 29th 2024

Operating system

Windows

Extra context or search terms

No response

potsmugen commented 1 month ago

It's set up to work according to the char's Mugen version. A Winmugen char acts like Winmugen, etc. Even Mugen 1.1 itself does that backwards compatibility check. Ikemen chars act like Mugen 1.1, which doesn't have this issue.

This is more like a quirk of supporting so many engine versions than an issue, and it's hard to come up with a one size fits all solution that wouldn't break some character.

To get around it you can probably do something like !HitPauseTime || MugenVersion >= 1.0.