YesNoOk
avatar

AssertSpecial (SCTRLs) (Read 20664 times)

Started by Ricepigeon, September 17, 2015, 07:05:27 pm
Share this topic:
AssertSpecial (SCTRLs)
#1  September 17, 2015, 07:05:27 pm
  • *****
  • Thanks and God bless
    • USA
    • ricepigeon.neocities.org
This controller allows you to assert up to three special flags simultaneously. MUGEN will automatically "deassert" each flag at every game tick, so you must assert a flag for each tick that you want it to be active.

Required parameters:
    flag = flag_name
        flag_name is a string specifying the flag to assert.

Optional parameters:
    flag2 = flag2_name
        An optional flag to assert.
    flag3 = flag3_name
        Another optional flag to assert.

Details:
    The flag name can be one of the following:

        intro
            Tells MUGEN that the character is currently performing his intro pose. Must be asserted on every tick while the intro pose is being performed.
        invisible
            Turns the character invisible while asserted. Does not affect display of afterimages.
        roundnotover
            Tells MUGEN that the character is currently performing his win pose. Should be asserted on every tick while the win pose is being performed.
        nobardisplay
            Disables display of life, super bars, etc. while asserted.
        noBG
            Turns off the background. The screen is cleared to black.
        noFG
            Disables display of layer 1 of the stage (the foreground).
        nostandguard
            While asserted, disables standing guard for the character.
        nocrouchguard
            While asserted, disables crouching guard for the character.
        noairguard
            While asserted, disables air guard for the character.
        noautoturn
            While asserted, keeps the character from automatically turning to face the opponent.
        nojugglecheck
            While asserted, disables juggle checking. P2 can be juggled regardless of juggle points.
        nokosnd
            Suppresses playback of sound 11, 0 (the KO sound) for players who are knocked out. For players whose KO sound echoes, nokosnd must be asserted for 50 or more ticks after the player is KOed in order to suppress all echoes.
        nokoslow
            While asserted, keeps MUGEN from showing the end of the round in slow motion.
        noshadow
            While asserted, disables display of this player's shadows.
        globalnoshadow
            Disables display of all player, helper and explod shadows.
        nomusic
            While asserted, pauses playback of background music.
        nowalk
            While asserted, the player cannot enter his walk states, even if he has control. Use to prevent run states from canceling into walking.
        timerfreeze
            While asserted, keeps the round timer from counting down. Useful to keep the round from timing over in the middle of a splash screen.
        unguardable
            While asserted, all the asserting player's HitDefs become unblockable, i.e., their guardflags are ignored.

Example:
Code:
[State 2000, Assert]
type = AssertSpecial
trigger1 = 1
flag = timerfreeze
flag2 = nobg
flag3 = nofg
ignorehitpause = 1
This SCTRL will disable the foreground and background of the stage, while also freezing the round timer.

Additional Notes:
Certain flags, such as noshadow, will stop asserting themselves if the player is affected by hitpause, usually as a result of Player1's attacks making contact with Player2 while the flag is active. To circumvent this issue, it is recommended to add the the "ignorehitpause" parameter to the SCTRL if such flags are used.

Additionally, there is also an undocumented, albeit bugged, "NoKo" flag for the AssertSpecial SCTRL. As long as NoKo is asserted, neither Player1 nor Player2 (nor Players 3 & 4 in Simul mode) can be KOed by any attacks, instead leaving their Life values at 1. However, once the NoKo flag is no longer active, any Player that would have been KOed by any attack during that time will be KOed at the first possible moment the flag is no longer active, even if that character is not being hit by an attack. This will not occurs if a character regains life before the flag is no longer asserted. Using variables, it is possible use this flag to replicate attacks similar to Gill's Resurrection move from Street Fighter 3.
Last Edit: December 09, 2015, 08:47:41 pm by Ricepigeon
Re: AssertSpecial (SCTRLs)
#2  September 17, 2015, 08:11:07 pm
  • ******
  • Hedgehog Whisperer
  • Red Bull addict
    • Spain
    • xgargoyle.mgbr.net
While the AssertSpecial controller is limited to 3 different flags, that doesn't mean you are limited to just 3 flags per state. You can add more AssertSpecial controllers in the same state to get additional flags.
XGargoyle: Battle posing since 1979
http://xgargoyle.mgbr.net
http://www.pandorabots.com/pandora/talk?botid=e71c0d43fe35093a  <-- Please click that link
http://paypal.me/XGargoyle  <-- Donations welcome!
Re: AssertSpecial (SCTRLs)
#3  December 03, 2015, 09:22:38 pm
  • *****
  • Thanks and God bless
    • USA
    • ricepigeon.neocities.org
Looking back I wanted to verify something about the undocumented NoKo flag, because someone told me that they managed to assert the flag in one of their characters, regain life, then deactivate the flag and not be instantly KOed:

Quote
I swear when messing around with Yee I got him to not die.
Like, I made him restore Life as a joke after being 'KO'd', disabled the flag and nothing happened.

Can anyone verify/clarify exactly what happens in a scenario like this to make sure the info in the OP is correct?
Re: AssertSpecial (SCTRLs)
New #4  December 03, 2015, 09:25:34 pm
  • *****
  • Resident Tosspot
  • Pftheh
    • UK
    • plasmoidthunder.neocities.org
As I said in the chat, it would appear I was imagining things. I can't replicate this behaviour in the tests I just ran, so perhaps this is the case.

Peculiarly...
Code:
[State -2, LifeSet]
type = LifeSet
trigger1 = Life <= 1
value = 1
ignorehitpause = 1

[State -2, AssertSpecial]
type = AssertSpecial
trigger1 = enemy,life > 0
flag = noko
ignorehitpause = 1
If the opponent dealt the finishing blow, then obviously my character'd still be alive, but then logically if my character KOs the opponent, they'd both get KO'd, right? Except the fact that my character didn't get KO'd, only the opponent did.

Similarly...
Code:
[State -2, LifeSet]
type = LifeSet
trigger1 = Life <= 1
value = lifemax
ignorehitpause = 1

[State -2, AssertSpecial]
type = AssertSpecial
trigger1 = life < lifemax
flag = noko
ignorehitpause = 1
Upon fully restoring its Life, my character should've been KO'd, right? Except it wasn't.

Code:
[State -2, LifeAdd]
type = LifeAdd
trigger1 = var(40) = 1
value = 20
ignorehitpause = 1

[State -2, AssertSpecial]
type = AssertSpecial
trigger1 = var(40) < 2
trigger1 = enemy,life > 0
flag = noko
ignorehitpause = 1

[State -2, VarSet]
type = VarSet
trigger1 = life < 1 && var(40) = 0
var(40) = 1

[State -2, VarSet]
type = VarSet
trigger1 = life = 1000 && var(40) = 1
var(40) = 2
Using this code, my character will simply restore my Life when it reaches 0 and then not get KO'd, but the opponent can still be KO'd as normal. Upon fully restoring its Life, my character can then be KO'd as normal.

How strange.

Oh, I want a diagram. I fucking love diagrams.
Last Edit: December 09, 2015, 10:49:18 pm by GarchompMatt
Re: AssertSpecial (SCTRLs)
#5  December 09, 2015, 08:42:30 pm
  • *****
  • Thanks and God bless
    • USA
    • ricepigeon.neocities.org
After testing GM's code above I can confirm that it does indeed work in 1.0. The only real issue I encountered was during a mirror match with the same character but that can easily be worked around with name and authorname triggers. Updated first post to reflect this.
Re: AssertSpecial (SCTRLs)
#6  December 09, 2015, 10:02:16 pm
  • ******
  • Hedgehog Whisperer
  • Red Bull addict
    • Spain
    • xgargoyle.mgbr.net
using name/authorname will still trigger for both characters in a mirror match. What you want to use is Teamside, for example, so that only one character triggers it
XGargoyle: Battle posing since 1979
http://xgargoyle.mgbr.net
http://www.pandorabots.com/pandora/talk?botid=e71c0d43fe35093a  <-- Please click that link
http://paypal.me/XGargoyle  <-- Donations welcome!