Resource icon

[Reusable] Many Minor Tweaks REVAMPED - v4.0 (January 27th)

This thread contains content that may be reused, modified, or ported by anyone.


a pikachu irl
Welcome to...
MMT (Many Minor Tweaks) Revamped!

This mod includes a whole bunch of minor tweaks that can be toggled via the HUD! Things including tailsball (which replaces tails' descent using spin to curl him up into a ball), superkey (which lets you change what key is used to turn super), and more!
It also includes a couple of my previous lua scripts, such as Cancelable Super Form (now with the ability to change which key is used), and Deaths Counter!

The HUD by default is activated by using custom3. This key can be changed to be something else, to the user's preference, either via the in-game HUD menu, or by using mmtmenukey!

Don't be afraid to bug report in the replies, even if you find like, a hundred of them! Even with real bugs--actually don't, that's off-topic unfortunately. If you do bug report, please provide what other addons you had on, if you were in multiplayer, and provide each step you did so I can diagnose the problem easier. Saying "x does not work" and leaving it at that is not helpful.
I do also accept suggestions, however this does not mean I will include them for any number of reasons.

List of tweaks:
-- The Good Stuff --
  • super key <button/off>: Changes key used to transform into character's super form. If disabled, all code relating to this is disabled.
    Options: off, weaponnext, weaponprev, attack/ringtoss, use/spin, camleft, camright, tossflag, firenormal/ringtossnormal, custom1, custom2, custom3
  • cancel super <button/off> : When the key set is pressed, the player is taken out of their super form.
    Options: off, weaponnext, weaponprev, attack/ringtoss, use/spin, camleft, camright, tossflag, firenormal/ringtossnormal, custom1, custom2, custom3
  • super music <on/off>: Toggles the super form's music.
  • recurl <on/off>: Allows the player to curl up into a ball after using a spring, tornado, etc.
  • SFX Style <off/sonic cd/sonic 1/sonic 2/sonic 3k/knuckles' chaotix/srb2> Changes various player sound effects to match other games' SFX.
  • score-based continues <on/off>: If 15,000 points are earned at the end of a level, the player gets a continue.
-- The Minor Tweaks --
  • super trail <on/off>: Leaves behind a more noticeable trail when the player is in their super form.
  • total rings <on/off>: Displays total amount of rings in level in the scoreboard hud.
  • super shield <on/off>: Allows shields to be shown when the player is in their super form.
  • token to rings <on/off>: If all chaos emeralds are collected, player is granted 50 rings instead of a continue.
  • preserve shield <on/off>: Preserves shield upon completion of level, allowing you to keep the shield in the next map load.
  • fade music <on/off>: Fades music out when crossing the goalpost.
  • deaths counter <on/off>: Replaces the player's life count with a deaths counter; you also get infinite lives.
  • classic special stages <50 rings, keep tokens/50 rings, no tokens/off>: If the player ends the stage w/ 50 rings, they will be sent to a special stage.
-- Other Tweaks --
  • Ring Special Stage Entrance <on/off>: If the player collected an emerald token, they will exit the stage with a new animation
  • tails ball <jump/spin/bop/off>: Tails turns into a ball instead of descending when using the spin key in flight.
  • every super <on/off/disable>: Allows every character to go super. If set to off, only vanilla super characters can go super. If disabled, nobody can go super.
  • instant respawn <on/off>: Respawns the player instantly when they die, 0 wait time. (Co-op/singleplayer only)
  • classic super <on/off>: Jumping will automatically turn you super when the player is elligble to do so.
  • classic shields <on/off>: Changes all SRB2 Monitors to their S3K equivalents.
  • super hover <on/off>: Toggles whether or not Super Sonic can use the hover ability.
-- Netplay, Admin, and Meta --
  • Ban Skin: Disallows any players from selecting certain characters.
  • load settings: Load in settings from files in a folder located in luafiles/.
  • save settings: Saves settings to files in a folder located in luafiles/.
  • autoload: Automatically loads the user-saved settings when loading the MMT add-on.
  • autosave: Automatically saves MMT user settings before exiting the game.
  • debug printing <on/off>: Shows debug information pertaining to MMT in the console.
  • debug hud <button>: When used, this key will switch through various debug info; useful for devs.
-- Misc. --
  • Deaths Counter Visibility <on/off>: Should the deaths counter remain visible, or should it disappear after a second?
  • Selected Text Color <color>: Changes the color used for what option is currently selected!
  • Regular Text Color <color>: Changes the color used for all the items being displayed!
  • Set Option Color <color>: Changes the color used to show what option is currently set!
  • Preserve Shield Between Zones <on/off>: Allows "Preserve Shield" to continue working in-between zones.
  • Recurl Multiple Times <on/off>: Allows the player to recurl into a ball multiple times.
  • Changelog: The latest changes for Many Minor Tweaks!

List of commands:
  • orderpizza: -size <value> -address <value> -toppings <value>: order an ordinary pizza!
  • mmtmenukey: <key>: change the key used to open the in-game HUD for MMT.
  • mmtchangevar: "<option/list>" <value/page>: changes the value for any of the options found in the menu. If "list" is used, the second variable acts as the page number.

v4.0 Revamped
  • Added a mod system functionality to MMT! This allows other mods to use MMT's menu system to have their options display here!
    How this works is that there's two functions given, MMT_AddModToMMT and MMT_AddModSettings, which will work with multiple kinds of mods. An example mod is provided! There is also a .txt file in the PK3 itself, documenting how to use this!
    One of my other mods, "SRB2: Chaos Edition", will been updated real soon to support this!
  • New option added: "SFX Style"! This allows you to change the sounds that are played in-game.
    This is a single-player only option, due to replacing sounds not working properly in netgames.
  • Added new misc. options:
    - Preserve Shield Between Zones
    - Recurl Multiple Times
  • A changelog for MMT itself has been added to the menu!
  • If a player is dead, the MMT menu deactivates itself.
  • "Total Rings" now also displays how much of a deficit you have in terms of rings. It'll also show you if you've collected more rings than you should've been able to!
  • "Ring Special Stage Entrance" now works when exiting a special stage too!
  • Removed "sfx_tokrin", because it's apparantly SFX that originated from Sonic CD all this time!
  • Fixed this mod being incompatible with other mods that use the PBT3 system (i.e. the Shadow mod by Lach)
    The reason why it was breaking was due to MMT including a slightly modified version of PBT3, and I didn't change the proper things around to prevent conflicts.
  • Fixed "Recurl" potentially making on-ground behavior act weird.
  • Fixed "Tails Ball" allowing tails to carry players while spinning.
  • Fixed "Tails Ball" in "bop" mode not playing the correct sounds if you were using a custom skin with custom sounds.
  • Fixed sub-menus not properly saving what page the player was on.
  • Fixed sub-menus starting on the last page.
  • Fixed "Deaths Counter" counting two deaths instead of one if the player died less than 2 seconds after respawning.
v3.0 Revamped
  • "Ban Skin" has returned from the previous variant of MMT! Now, when in multiplayer, admins can choose to ban certain skins from being usable.
  • Sorry to say, but I've added a nag prompt to open the menu. It automatically disables itself when you do open it, so it's just a one-time thing! This is soley for the people who don't know how this works, and refuse to read the forum post.
  • Added a sub-menu for MMT! This will contain misc. options, such as options for the options! Some of the already existing options have been re-located in here!
  • Added "Deaths Counter Visibility" as a misc. option! Enabling this will prevent the deaths counter from throwing itself out of the way!
  • Added the ability to change the colors the HUD itself uses for the text!
  • New command added: "mmtmenukey". This just allows you to change the menu key from the console, instead of having to do it via the in-game HUD!
  • New command added: "mmtchangevar". This allows you to change any of the settings via the console, instead of just with the in-game HUD!
    It shows everything you need, including everything the main menu, the options within each...option, and of course, you can change them.
  • "Deaths Counter" now obeys the HUD position of the regular lives HUD position; if the hudinfo for it is changed, so will the position of this.
  • With "Deaths Counter", you can now view how many times you've died by holding the scoreboard button (the button used to display chaos emeralds/"Total Rings", or everyone's score in multiplayer)
  • "Deaths Counter" now renders behind the MMT HUD.
  • When turning off the menu key, it now automatically exits the menu if it's opened.
  • The HUD now doesn't reset the cursor every time you change pages!
  • The HUD now obeys the max amount of items per page for individual options, now splitting them into different pages if it exceeds that amount.
  • Added more text to various descriptions.
  • Added list of SF_* (skin flags) to the debug hud.
  • Revamped the code used to detect button presses in the HUD menu. It done with the intention of stopping desyncs in netplay, but alas, it didn't achieve that goal.
    But hey, this also now allows you to hold any of the movement keys, and shortly after, it'll scroll through the menus quickly.
  • Fixed the loading system not liking if there's a "DnD.dat" file.
  • Fixed invincibility sparkles being rendered while doing the custom special stage exit animation. (it also disables super sneakers for the chrispychars mod)
  • Fixed choosing "no" not actually working on "Save Settings", "Load Settings", etc.
  • Fixed "Super Key" and "Super Music" not interacting properly with super form sectors. Now maps that force the player to turn super should work properly!
  • Fixed the player still having infinite lives if they disable "Deaths Counter" when it's auto-loaded via MMT.
  • Disabled the ability for local variables to be saved by admins during netgames, due to the fact SRB2 doesn't like it when files are saved locally by admins? I'm not sure what my code's doing, but it's crashing games, so it's disabled for the time being.
  • I have also unfortunately had to disable the HUD for netgames, due to the fact it causes massive desynchs, because SRB2's netcode is terrible and makes me cry. I'll try to look into fixing this for netplay later, but for the time being, use "mmtchangevar"!
v2.1(.1) Revamped
  • Added a new option, "Ring Special Stage Entrance". This used to be the exit animation for Classic Special Stage, but now can be used if the player is exiting a special stage in general!
  • Fixed the "N" folder being created in the client/mmtsettingsRevamp folder from being created, for real this time.
  • Fixed shields being shown after using the special stage exit animation.
  • Fixed "Tails Ball" when set to "bop" not behaving in reverse gravity.
  • Fixed "Classic Special Stage" being changed mid-level not actually applying to already affected tokens.
  • Fixed "Score-Based Continues" giving the player continues on the stage after a special stage.
  • Fixed "Preserve Shield" not working if the player enters a special stage.
  • Fixed "Total Rings" text remaining red on level re-load.
  • (v2.1.1) Fixed "Super Music" conflicting with "Super Key".
v2.0 Revamped
  • Score-based Continues has returned, better than ever! It now displays a little continue icon in the intermission screen, which fills up with the more continues you have.
  • Classic Special Stages has also returned, rejoice! When the next SRB2 update occurs, it will gain a new feature: "instant warp token"!
  • Given certain options another line of text to further explain stuff.
  • When the player disables Deaths Counter, it now resets the players life counter to what it was previously.
  • Deaths Counter also reverts all hud elements back to normal when the settings are changed.
  • Deaths Counter no longer counts deaths in special stages.
  • Total Rings now displays the text in red when the player can no longer achieve a perfect score in the level.
  • Super Trail now displays the effects when jumping while standing still.
  • Auto-Load now behaves a bit differently; if the file for the setting can't be found, it will create one automatically (set to "on"), and auto-load any settings afterwards.
  • Gave the player Auto-Load feature a slight delay, mainly to display the print in console at a better time.
  • Adjusted the message given when a variable couldn't be loaded from .dat.
  • Changed menu noises; now the menu only makes confirmation noises when a setting is being saved. It also makes the confirmation noise when loading settings.
  • Added a couple of new things in the debug HUD stuff.
  • Tidied up the functions used for loading/importing settings; now they're combined into one for better managing of code.
v1.1 Revamped
  • "deaths counter" now has a toggable option where you can preserve your death counter between levels. Do note if you had this set to "on" before, the script will warn you an error occured due to the settings mis-matching; just set a new setting and you should be good to go.
  • The player can now tweak how many options are displayed per page on the menu.
  • "super trail" no longer emits trails if the player isn't moving by a significant amount.
  • "super trail" 's ghosts now follow the player's rollangle value.
  • Added check to ensure bots won't run the PlayerThink code; it saves a little bit on the processing.
  • Fixed "emerald tokens" granting the player 50 rings when they haven't gotten all emeralds yet.
  • Fixed saving individual settings for local variables; previously they refused to work, and required full saves.
  • Fixed the mysterious "N" folder being made in the client/mmtsettingsRevamp folder.

Future plans:
  • Re-introduce the HUD for multiplayer.
    SRB2's netcode is Terrible and forced me to disable the HUD, since something's breaking it in netplay, and I'm not sure what it is.
  • VS_MPSpecialStagesinSP-v1.soc, but in lua form
    Need to wait for SRB2 v2.2.9(?) in order to pull this off.
    This would allow the player to change the NiGHTs special stages into the multiplayer special stages (what used to be the single player ones!).
    I'd also allow for the inverse to occur; NiGHTS in multiplayer.
  • New option for Classic Special Stage: "instant warp token"
    Would also need to wait for SRB2 v2.2.9(?).
    When collecting a token, the player is instantly warped on the spot to a special stage.
    When completing the special stage, the player would warp back to the level they were just at, at the same position they were just in.
  • Have "Super Music" change things immediately when the option is changed.

If you're a mod maker, read this!
You can check for the presence and value of "mmtVersion", for this is a value that's been put in the _G global variables table. Do something like this:
if mmtVersion
--your code here, ofc you can optionally do "else" for your own code
You can also add your own mod's variables to MMT's menu system! You can do so by checking for "mod support.txt" in MMT's PK3, it'll explain everything you need to know to mod this. You can also look at "MMTModExample.lua" in the attachments to see how this all functions!
Do note that at the moment, "istable" isn't working properly, and will be fixed in the next version of MMT, after v4.0!
Author: birbhorse aka EeveeEuphoria
Additional code provided by:, Monster ɪestyn (SRB2 Discord), Tatsuru (SRB2 Discord), SRB2 Wiki, Sonic Team Jr.
Additional credits: customsave_io.lua (Serialize and Deserialize functions) by sprkizard AKA szv (found here:
Additional credits: PBT3.lua by amberbee

This addon is not entirely stable in multiplayer! The HUD is disabled for netgames, and has been known to cause issues when hosted via the in-game multiplayer menu!


  • tailsball.gif
    6.1 MB · Views: 1,308
  • everysuper and cancelsuper.gif
    everysuper and cancelsuper.gif
    7.3 MB · Views: 1,037
  • preserveshield.gif
    2.1 MB · Views: 1,013
  • tokentorings.gif
    1.7 MB · Views: 985
  • tailsball bop.gif
    tailsball bop.gif
    6.6 MB · Views: 838
  • totalrings.png
    651.7 KB · Views: 980
  • supertrail.jpg
    142.5 KB · Views: 1,017
  • recurl.gif
    4.9 MB · Views: 809
  • srb20093.gif
    4.1 MB · Views: 797
  • classic special stage.gif
    classic special stage.gif
    2.8 MB · Views: 311
  • menu navigation.gif
    menu navigation.gif
    576.1 KB · Views: 364
  • L_ManyMinorTweaksRevamped-v4.0.pk3
    107.9 KB · Views: 532
  • MMTModExample.lua
    2.1 KB · Views: 138
Last edited:
I'd prefer if Tails still had control over his movement during tails fall like a regular jump, and was slightly less floaty, making it easier to land on enemies and resume flight... which you should be able to do. That's just in my opinion though.


a pikachu irl
I'd prefer if Tails still had control over his movement during tails fall like a regular jump, and was slightly less floaty, making it easier to land on enemies and resume flight... which you should be able to do. That's just in my opinion though.

This is what I was originally going to do, by setting Tails' mode when he falls down to jump instead of spin. However I've ran into too many complications to get it to work, the most prominent being that it activates Tails' super form when used w/ 50+ rings.

For now this is just gonna be how it is until I either figure out or it becomes possible to interrupt SRB2's super form call, since if I can interrupt it and bring in my own code, that will not only fix that, but also allow me to rebind the key to something else, and enable functionality like being able to use it while in a shield.


a pikachu irl
New update released! Changelog is provided in post.

This update will please Pyrakid in particular, since I was able to get tailsball to work with more control, due to me FINALLY being able to figure out how to interrupt SRB2's super form call, ergo letting me handle it the way I want.

The only thing that I don't really like in this thus far is that it's an all or nothing with super forms, I'm trying to figure out how to detect what characters come with a super state by default, while accounting for custom characters, because then I'll bring back everysuper as a command.

Anywho, enjoy everyone!


If you wish to make preserveshield not work between different zones, you might just be able to use levelname from the map header and a MapChange Hook(because from what the wiki says, MapChange happens the moment the game is told to load a new map, while MapLoad is after everything in the map is loaded) or something? If the value is the same as the previous map, then you're in the same zone. If it is different, then you are in a new zone?


a pikachu irl
Well hey, thanks! I was trying to figure out how to read levelheader data earlier for unrelated purposes, but gave up because I didn't understand how to. With a little more perseverance, I got it to work, and now it works without carrying the shield to the next zone. It'll be done in the next version!

EDIT: This also unintentionally fixed a problem where the shield carried over into special stages, but you'd lose them afterward!

If you wish to make preserveshield not work between different zones, you might just be able to use levelname from the map header and a MapChange Hook(because from what the wiki says, MapChange happens the moment the game is told to load a new map, while MapLoad is after everything in the map is loaded) or something? If the value is the same as the previous map, then you're in the same zone. If it is different, then you are in a new zone?
Last edited:


a pikachu irl
Alright, new minor update out, this one should be the last one for awhile, assuming some new bugs don't pop up.


a pikachu irl
Big ol update just got released, I've done a lot of behind-the-scenes work to make everything work as intended. It's all been thoroughly playtested over and over with all characters to make sure nothing's breaking.

There is only a couple minor problems that need to be patched, but they're minor enough to the point where I decided it's okay to release it in this state (all of which are stated inside the lua file itself). Have fun!


a pikachu irl
v0.4 is now out! Tailsball is FINALLY working how it should! I've also adjusted superkey some more, now you won't automatically use your shield if you have it bound to spin, and many other minor changes including changing all true/false commands to use on/off instead.


I haven't tested it thoroughly, but sonic and metal appear to still be able to transform using the spin key for the first time (superkey set to tossflag, tested in a save already with the emeralds)

Thanks for this mod btw, it's in my "if you're using mods youu should be using this one" folder


a pikachu irl
It has been done.

v0.5 is now out! Your eyes do not deceive you, it no longer comes with a seperate netplay script, for I have figured out a way to integrate both into the same place. It has not gone through the rigorous testing I'd like it to, but mild playtesting in netplay does seem to show it works properly; and rest assured, it all works properly in singleplayer.

Also tokentorings is now finally working, so it's re-enabled by default, woo!

EDIT: v0.5 fixed the problem addressed above; it wasn't just sonic and metal, it happened to all characters, due to a failed attempt at getting the special stages to properly show "you can now go super!", I'll figure out a way to get it working one day.
Last edited:


a pikachu irl
Tailsball isnt working when i turn it on
Could you be more specific? Second time I've seen this kinda report, but no description was given, especially since I've checked it to be working before release.

Do you have any other addons enabled (and if so which ones)? Are you using this in multiplayer? And did you enable it mid-game or somewhere else (e.g. titlescreen)?
Singleplayer, enabled midgame. No other addons. Pressing spin or any other button doesnt do tailsball

---------- Post added at 11:28 PM ---------- Previous post was at 11:20 PM ----------

doesnt work if i enable it during the title screen either

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)