Jump to content

Discovery: Explod ownership is bugged (aka "how to make P1 use P2's sprites")


RicePigeon

Recommended Posts

Originally posted by myself on MFG:

 

Seems like 2017 is the year of discoveries for the mugen engine. Thanks to a bug report someone submitted regarding some of my characters, I came across the following:

 

Quote

Rice - Today at 11:50 AM: hah
Rice - Today at 11:50 AM: turns out explods are bugged in mugen
The 14th Doctor - Today at 11:51 AM: Mugen is never safe from the bugs
Rice - Today at 11:51 AM: let me put this way
Rice - Today at 11:51 AM: if an explod is spawned by a helper, and the helper destroys itself while the explod still exists, the next helper to be spawned that used the previous helper's playerID will become the owner of the explod
Rice - Today at 11:51 AM: which means you can have explods on p1's side using p2's sprites and animation data
Superteletubbies64 - Today at 11:52 AM: holy shit
Superteletubbies64 - Today at 11:52 AM: are there videos of that
Rice - Today at 11:52 AM: no but I have a screenshot thanks to Plas's bug report
Rice - Today at 11:52 AM: .eJwFwdtOgzAAANB_4cE3oIRVxpLFlItxbFQUQXg
Rice - Today at 11:53 AM: take a close look at Flandre's spellcard selection menu, its using Ichirin's sprites
Superteletubbies64 - Today at 11:53 AM: oh f*ck

 

So what's going on here? Basically explods are tied to the playerID of the helper (or player) that creates it, and persists even after the helper that spawned it calls a destroyself controller. For players, this isn't an issue since players never can call destroyself, but if another helper from Player 2's side is spawned and uses the PlayerID of the helper that spawned the explod (very likely when the PlayerID is a lower value), thus the explod is now owned by Player2's helper, thus it inherits player2's animation & sprite data, causing the bug in the screenshot. The solution?

 

Quote


Rice - Today at 11:54 AM: the solution to this problem was the easiest one, just have the helper stay on screen until the explod is gone, preferably through a changestate

 


tldr; be careful when using helpers to spawn explods.

 

However, it doesn't end there. I decided to dig a little deeper and replaced one of the explod's anims with a new animation number showing the character's select screen portrait, an animation which doesn't exist in p2's AIR file. If p2's animation data is used in the bug, then the explod should theoretically be blank, but if its using p1's anim data with p2's sprites, then it should display p2's select portrait:

 

.eJwFwdsNgCAMAMBdGIC2QA24DUGCJvII1C_j7t6.eJwFwdsNgCAMAMBdGIDyFtyGIEEToYTWL-Pu3r3

So there it is. Player 1's animation data is preserved, but it now uses Player 2's sprite data instead (similar to the changeanim2 controller, but for explods). All this was tested in Mugen 1.0, btw.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...