The Mugen Fighters Guild

Help => M.U.G.E.N Development Help => MUGEN Class => Topic started by: JustNoPoint on October 31, 2015, 02:13:12 pm

Title: SuperPause (SCTRL)
Post by: JustNoPoint on October 31, 2015, 02:13:12 pm
Freezes the gameplay and darkens the screen. While each player is frozen, no time passes for them. Use for a dramatic pause during the start of hyper attacks.

Required parameters:
none

Optional parameters:
SuperPause accepts all optional parameters that the Pause controller does. In addition, SuperPause also takes the following parameters:

time = pause_time (int)
Specifies the number of ticks that the pause should last. Default is 30 ticks (half a second at default speed).

anim = anim_no (int)
Specifies the animation number (from fightfx.air) to play during the SuperPause. The default is 30, which is a charging effect. If anim is -1, no animation will be played. If you prepend "S" to anim_no, the animation used will be from the player's AIR file. For example, anim = S10.

sound = snd_grp, snd_no (int, int)
Specifies a sound to play (from common.snd) during SuperPause. The default is -1, which means no sound is played. If you prepend "S" to snd_grp, then the sound used will be from the player's own SND file. For example, sound = S10,0.

pos = x_pos, y_pos (float)
Specifies the offset (from the player axis) at which the super anim is to be displayed. Defaults to 0,0.

darken = bvalue (boolean)
If this is 1, the screen will darken during the SuperPause. Set this to 0 to disable this effect. The default value is 1.

p2defmul = def_mul (float)
This is the amount in which to temporarily multiply the defence of any targets the player has. This is used to make chaining into supers less damaging. Setting this at 1 will make no changes to the targets' defence. 0 is a special value that will set the defence to the number set in Super.TargetDefenceMul in the [Rules] section of mugen.cfg (http://mugenguild.com/forum/msg.2178996). The default value is 0. Valid values are all positive numbers, including zero.

poweradd = value (int)
This is the amount to add to the player's power. Defaults to 0.

unhittable = bvalue (boolean)
If set to 1, the player cannot be hit during the SuperPause. Set to 0 to disable this. Defaults to 1.

Notes:
If the Pause controller was previously executed, and the action is still paused, executing a SuperPause will preempt the Pause controller's effects. During the SuperPause, the time left until the Pause controller's effects expires will not count down.

Additional Notes:
Here are the list of Pause parameters

endcmdbuftime = bt (int)
This is the number of ticks during the end of the pause in which the player's move commands will be buffered. Buffered commands will be detected by the "command" trigger immediately after the pause ends. The buffering applies only to players who are unable to move during the pause (see movetime parameter). Valid values for endcmdbuftime are from 0 to t, where t is the value of the time parameter. Defaults to 0.

movetime = mt (int)
This is the number of ticks during the start of the pause in which the player is allowed to move. Collision detection is carried out during this time, so it is possible to hit other players. Valid values for mt are from 0 to t, where t is the value of the time parameter. Defaults to 0.

pausebg = p (boolean)
If set to 1, the background is stopped during the pause. If 0, the background continues updating during the pause. Defaults to 1.

Example:
none
Title: Re: SuperPause (SCTRL)
Post by: JustNoPoint on December 14, 2016, 02:48:08 am
I want to expand on this
Quote
p2defmul = def_mul (float)
This is the amount in which to temporarily multiply the defence of any targets the player has. This is used to make chaining into supers less damaging. Setting this at 1 will make no changes to the targets' defence. 0 is a special value that will set the defence to the number set in Super.TargetDefenceMul in the [Rules] section of mugen.cfg (http://mugenguild.com/forum/msg.2178996). The default value is 0. Valid values are all positive numbers, including zero.

Something I saw when reading OKOF97's Clark's readme :
Quote
A special note for those who asked : the damage values on hyper moves are accurate to KOF, it's just that mugen reduces them using the Super.TargetDefenceMul in mugen.cfg. Switching the value back to 1 (instead of 1.5) offers you access to the regular values.

And when you go to Mugen.cfg, these are the lines he's talking about (that I had never noticed because I suck/never cared/blablabla) :
Quote
;This controls how much damage a super does when you combo into it.
 ;It's actually a multiplier for the defensive power of the opponent.
 ;A large number means the opponent takes less damage. Leave it at
 ;1 if you want supers to do the normal amount of damage when comboed
 ;into.
 ;Note 1: this increase in defence stays effective until the opponent
 ;        gets up from the ground.
 ;Note 2: the program knows you've done a super when the "superpause"
 ;        controller is executed. That's the instance when this change
 ;        becomes effective.
Super.TargetDefenceMul = 1.5

My question is : how do creators deal with this, when they attempt to make something somehow accurate ? The regular damage for the super is easily extracted from the game, but when this super is comboed into, how to make sure the damage for the super will still be accurate to the source game ? Do you care about it ? Do you put a multiplier for the combos to go back to the correct value ? Other ?

There's a line in the SuperPause sctrl that makes it ignore that, p2defmul.
Title: Re: SuperPause (SCTRL)
Post by: 2OS on February 05, 2017, 09:34:35 pm
Notes:
Executing a Pause controller during the pausetime of another will cancel out the effect of the previous Pause controller. Executing a Pause during a superpause will delay the effects of the pause until after the superpause has ended.

to clarify it only cancels time. it does not cancel movetime. this also applies to pause and makes this (http://mugenguild.com/forum/topics/set-pausemovetime-and-supermovetime-rootpauses-and-superpauses-never-trigger-143320.0.html) possible.
Title: Re: SuperPause (SCTRL)
Post by: Ricepigeon on February 08, 2017, 05:47:36 pm
While this doesn't occur in M.U.G.E.N, I do want to add that the 'unhittable' parameter is completely ignored in IKEMEN, so you are still vulnerable even during the pause. Of course, this can be circumvented using a NotHitBy controller during the pause.
Title: Re: SuperPause (SCTRL)
Post by: JustNoPoint on February 08, 2017, 05:49:55 pm
It may be useful to add ikemen version numbers or whatever is used to know what version you have. Since it could be updated later to work with this.
Title: Re: SuperPause (SCTRL)
Post by: Jesuszilla on February 08, 2017, 05:54:09 pm
I wonder how endcmdbuftime affects Vans's buffering system, come to think of it.
Title: Re: SuperPause (SCTRL)
Post by: JustNoPoint on February 08, 2017, 05:55:01 pm
What about your buffer system?
Title: Re: SuperPause (SCTRL)
Post by: Jesuszilla on February 08, 2017, 05:58:22 pm
Just ninja'd; it's the same base. I haven't looked into it, but if the helper is set to ignore pausetimes, that could negatively affect it, but I'm not 100% sure. I don't think commands themselves will be detected until after that ends, so maybe it won't affect anything negatively since the commands themselves will be processed at that point.

Basically, it's triggered by a command, so as long as commands are processed by MUGEN (e.g. at endcmdbuftime or when there's no pause active) it should be processing, meaning you achieve the same result.
Title: Re: SuperPause (SCTRL)
Post by: MarioManX1983 on November 14, 2021, 02:10:19 am
I ran into something interesting involving the "unhittable" part of the Super Pause Code while trying to do something else.

I was using super pauses in a menu during the pre-intro and after the player exited the menu and started the round, the player was unhittable for a few seconds at the start of the round.

After a LOT of messing around, I finally figured out that it was the "unhittable" part of the Super Pauses. So I changed the value from 1 to 0 and that fixed the issue.

Thought this might be useful information.