This content may be freely modified and/or maintained by anyone.
Introducing Fastat

Have you ever wanted to change your stats for the next course, but never had enough time to react to the roulette with the proper console command before the course loads?

Enter Fastat, the number pad-based fast restat system! At the tap of a button, select between the 9 foundational Speed and Weight stat pairs of SRB2Kart just in time for the next race! You can even let the computer select stats at random for you just once or once every race, or return to your chosen character's default stats; all with the greatest of ease.

How it works
To begin, SRB2Kart's stat system gives every stat combination a chance to take pole position in its own special way.
  • The 5 base characters, Sonic, Tails, Knuckles, Dr. Eggman, and Metal Sonic, create the skeleton of the stat grid with "iconic" signature pairings of Speed and Weight near the four corners and in the center of the 9x9 grid.
  • The bonus characters pack adds Ray, Mighty, Amy Rose, and Shadow (among other beloved SEGA characters) to complete the four "compass directions" in between the base characters, resulting in nine distinct stat pairs.

Normally, to restat, you would open the console with the ~ key, type restat X Y, with X being the desired Speed and Y being the desired Weight, and press Enter/Return. This can be cumbersome when time is of the essence.

However, with Fastat, the numbers 1 through 9 on the number pad have been coordinated with the relative positions of these nine pairs on the stat grid.
Code:
7 [2 2]   8 [5 2]   9 [8 2]

4 [2 5]   5 [5 5]   6 [8 5]

1 [2 8]   2 [5 8]   3 [8 8]
Now, with the console closed, Tails' 2 Speed, 2 Weight in the top left area of the grid can be called in a flash with 7 in the top left corner of the number pad. Metal Sonic's opposite 8, 8 can be called with the opposite 3 in the bottom right corner of the number pad. The pattern continues for all the nine numbers. (When using Fastat, the console must be closed. Otherwise, your pad will simply type numbers into the console.)

In addition,
  • A completely random stat pair can be called with the "." key.
  • Default stats for your character can be called with 0.
  • Random stats for every race can be called by pressing / once for Ironman Mode. If ever you wish to return to predictable stats, remember to press / again to turn Ironman Mode off first.

How to enable Fastat
You will need a kartexec.cfg file in your srb2kart directory to enable the game to prepare this system's keybinds on startup. If you do have this file, open it in a text or code editor. If you don't have one already, open a text or code editor and create a new file with this name. In either case, add the below text to this file and save it to create the number pad-based keybinds. The next time you start the game and join a multiplayer server that supports restat through HOSTMOD, Fastat will be active. You can check the console's output at the top of your screen each time you press any number pad key to confirm the corresponding result.

Code:
bind "KEYPAD 1" "restat 2 8" // Dr. Eggman
bind "KEYPAD 2" "restat 5 8" // Mighty
bind "KEYPAD 3" "restat 8 8" // Metal Sonic
bind "KEYPAD 4" "restat 2 5" // Ray
bind "KEYPAD 5" "restat 5 5" // Knuckles
bind "KEYPAD 6" "restat 8 5" // Shadow
bind "KEYPAD 7" "restat 2 2" // Tails
bind "KEYPAD 8" "restat 5 2" // Amy
bind "KEYPAD 9" "restat 8 2" // Sonic
bind "KEYPAD 0" "restat off" // Return to your current char's stats
bind "KEYPAD ." "restat random" // Randomize stats once on press
bind "KEYPAD /" "ironman" // Ironman Mode Toggle (randomize stats every race)

That's it!

Please note that I am not the developer of HOSTMOD and am not associated with it. That honor goes to TyroneSama. Tyron, thank you for helping to create a wild and wonderful digital experience for us all.
 
Hey, that's pretty cute. Neat concept!

HARD MODE: Since the stat grid is a 3x3 of 3x3s, you could use layered aliases to allow for two-tap selection of any stat on the grid, with the first input selecting the "ninth" of the grid and the second input selecting from between the 9 stat combinations inside that ninth...

1Alodw0.png
 
Hey, that's pretty cute. Neat concept!

HARD MODE: Since the stat grid is a 3x3 of 3x3s, you could use layered aliases to allow for two-tap selection of any stat on the grid, with the first input selecting the "ninth" of the grid and the second input selecting from between the 9 stat combinations inside that ninth...

1Alodw0.png
I came up with an idea that's even more intuitive. First press is your speed, second press is your weight (press 4, then 7 for 4,7).

This doesn't use the keypad but it does still work. Fair warning: It's very ugly.

alias "speed1" "bind 1 speed1weight1; bind 2 speed1weight2; bind 3 speed1weight3; bind 4 speed1weight4; bind 5 speed1weight5; bind 6 speed1weight6; bind 7 speed1weight7; bind 8 speed1weight8; bind 9 speed1weight9; bind 0 cancelrestat; echo Speed:1"

alias "speed2" "bind 1 speed2weight1; bind 2 speed2weight2; bind 3 speed2weight3; bind 4 speed2weight4; bind 5 speed2weight5; bind 6 speed2weight6; bind 7 speed2weight7; bind 8 speed2weight8; bind 9 speed2weight9; bind 0 cancelrestat; echo Speed:2"

alias "speed3" "bind 1 speed3weight1; bind 2 speed3weight2; bind 3 speed3weight3; bind 4 speed3weight4; bind 5 speed3weight5; bind 6 speed3weight6; bind 7 speed3weight7; bind 8 speed3weight8; bind 9 speed3weight9; bind 0 cancelrestat; echo Speed:3"

alias "speed4" "bind 1 speed4weight1; bind 2 speed4weight2; bind 3 speed4weight3; bind 4 speed4weight4; bind 5 speed4weight5; bind 6 speed4weight6; bind 7 speed4weight7; bind 8 speed4weight8; bind 9 speed4weight9; bind 0 cancelrestat; echo Speed:4"

alias "speed5" "bind 1 speed5weight1; bind 2 speed5weight2; bind 3 speed5weight3; bind 4 speed5weight4; bind 5 speed5weight5; bind 6 speed5weight6; bind 7 speed5weight7; bind 8 speed5weight8; bind 9 speed5weight9; bind 0 cancelrestat; echo Speed:5"

alias "speed6" "bind 1 speed6weight1; bind 2 speed6weight2; bind 3 speed6weight3; bind 4 speed6weight4; bind 5 speed6weight5; bind 6 speed6weight6; bind 7 speed6weight7; bind 8 speed6weight8; bind 9 speed6weight9; bind 0 cancelrestat; echo Speed:6"

alias "speed7" "bind 1 speed7weight1; bind 2 speed7weight2; bind 3 speed7weight3; bind 4 speed7weight4; bind 5 speed7weight5; bind 6 speed7weight6; bind 7 speed7weight7; bind 8 speed7weight8; bind 9 speed7weight9; bind 0 cancelrestat; echo Speed:7"

alias "speed8" "bind 1 speed8weight1; bind 2 speed8weight2; bind 3 speed8weight3; bind 4 speed8weight4; bind 5 speed8weight5; bind 6 speed8weight6; bind 7 speed8weight7; bind 8 speed8weight8; bind 9 speed8weight9; bind 0 cancelrestat; echo Speed:8"

alias "speed9" "bind 1 speed9weight1; bind 2 speed9weight2; bind 3 speed9weight3; bind 4 speed9weight4; bind 5 speed9weight5; bind 6 speed9weight6; bind 7 speed9weight7; bind 8 speed9weight8; bind 9 speed9weight9; bind 0 cancelrestat; echo Speed:9"


alias "speed1weight1" "restat 1 1; echo Weight:1; resetspeedbinds"
alias "speed1weight2" "restat 1 2; echo Weight:2; resetspeedbinds"
alias "speed1weight3" "restat 1 3; echo Weight:3; resetspeedbinds"
alias "speed1weight4" "restat 1 4; echo Weight:4; resetspeedbinds"
alias "speed1weight5" "restat 1 5; echo Weight:5; resetspeedbinds"
alias "speed1weight6" "restat 1 6; echo Weight:6; resetspeedbinds"
alias "speed1weight7" "restat 1 7; echo Weight:7; resetspeedbinds"
alias "speed1weight8" "restat 1 8; echo Weight:8; resetspeedbinds"
alias "speed1weight9" "restat 1 9; echo Weight:9; resetspeedbinds"

alias "speed2weight1" "restat 2 1; echo Weight:1; resetspeedbinds"
alias "speed2weight2" "restat 2 2; echo Weight:2; resetspeedbinds"
alias "speed2weight3" "restat 2 3; echo Weight:3; resetspeedbinds"
alias "speed2weight4" "restat 2 4; echo Weight:4; resetspeedbinds"
alias "speed2weight5" "restat 2 5; echo Weight:5; resetspeedbinds"
alias "speed2weight6" "restat 2 6; echo Weight:6; resetspeedbinds"
alias "speed2weight7" "restat 2 7; echo Weight:7; resetspeedbinds"
alias "speed2weight8" "restat 2 8; echo Weight:8; resetspeedbinds"
alias "speed2weight9" "restat 2 9; echo Weight:9; resetspeedbinds"

alias "speed3weight1" "restat 3 1; echo Weight:1; resetspeedbinds"
alias "speed3weight2" "restat 3 2; echo Weight:2; resetspeedbinds"
alias "speed3weight3" "restat 3 3; echo Weight:3; resetspeedbinds"
alias "speed3weight4" "restat 3 4; echo Weight:4; resetspeedbinds"
alias "speed3weight5" "restat 3 5; echo Weight:5; resetspeedbinds"
alias "speed3weight6" "restat 3 6; echo Weight:6; resetspeedbinds"
alias "speed3weight7" "restat 3 7; echo Weight:7; resetspeedbinds"
alias "speed3weight8" "restat 3 8; echo Weight:8; resetspeedbinds"
alias "speed3weight9" "restat 3 9; echo Weight:9; resetspeedbinds"

alias "speed4weight1" "restat 4 1; echo Weight:1; resetspeedbinds"
alias "speed4weight2" "restat 4 2; echo Weight:2; resetspeedbinds"
alias "speed4weight3" "restat 4 3; echo Weight:3; resetspeedbinds"
alias "speed4weight4" "restat 4 4; echo Weight:4; resetspeedbinds"
alias "speed4weight5" "restat 4 5; echo Weight:5; resetspeedbinds"
alias "speed4weight6" "restat 4 6; echo Weight:6; resetspeedbinds"
alias "speed4weight7" "restat 4 7; echo Weight:7; resetspeedbinds"
alias "speed4weight8" "restat 4 8; echo Weight:8; resetspeedbinds"
alias "speed4weight9" "restat 4 9; echo Weight:9; resetspeedbinds"

alias "speed5weight1" "restat 5 1; echo Weight:1; resetspeedbinds"
alias "speed5weight2" "restat 5 2; echo Weight:2; resetspeedbinds"
alias "speed5weight3" "restat 5 3; echo Weight:3; resetspeedbinds"
alias "speed5weight4" "restat 5 4; echo Weight:4; resetspeedbinds"
alias "speed5weight5" "restat 5 5; echo Weight:5; resetspeedbinds"
alias "speed5weight6" "restat 5 6; echo Weight:6; resetspeedbinds"
alias "speed5weight7" "restat 5 7; echo Weight:7; resetspeedbinds"
alias "speed5weight8" "restat 5 8; echo Weight:8; resetspeedbinds"
alias "speed5weight9" "restat 5 9; echo Weight:9; resetspeedbinds"

alias "speed6weight1" "restat 6 1; echo Weight:1; resetspeedbinds"
alias "speed6weight2" "restat 6 2; echo Weight:2; resetspeedbinds"
alias "speed6weight3" "restat 6 3; echo Weight:3; resetspeedbinds"
alias "speed6weight4" "restat 6 4; echo Weight:4; resetspeedbinds"
alias "speed6weight5" "restat 6 5; echo Weight:5; resetspeedbinds"
alias "speed6weight6" "restat 6 6; echo Weight:6; resetspeedbinds"
alias "speed6weight7" "restat 6 7; echo Weight:7; resetspeedbinds"
alias "speed6weight8" "restat 6 8; echo Weight:8; resetspeedbinds"
alias "speed6weight9" "restat 6 9; echo Weight:9; resetspeedbinds"

alias "speed7weight1" "restat 7 1; echo Weight:1; resetspeedbinds"
alias "speed7weight2" "restat 7 2; echo Weight:2; resetspeedbinds"
alias "speed7weight3" "restat 7 3; echo Weight:3; resetspeedbinds"
alias "speed7weight4" "restat 7 4; echo Weight:4; resetspeedbinds"
alias "speed7weight5" "restat 7 5; echo Weight:5; resetspeedbinds"
alias "speed7weight6" "restat 7 6; echo Weight:6; resetspeedbinds"
alias "speed7weight7" "restat 7 7; echo Weight:7; resetspeedbinds"
alias "speed7weight8" "restat 7 8; echo Weight:8; resetspeedbinds"
alias "speed7weight9" "restat 7 9; echo Weight:9; resetspeedbinds"

alias "speed8weight1" "restat 8 1; echo Weight:1; resetspeedbinds"
alias "speed8weight2" "restat 8 2; echo Weight:2; resetspeedbinds"
alias "speed8weight3" "restat 8 3; echo Weight:3; resetspeedbinds"
alias "speed8weight4" "restat 8 4; echo Weight:4; resetspeedbinds"
alias "speed8weight5" "restat 8 5; echo Weight:5; resetspeedbinds"
alias "speed8weight6" "restat 8 6; echo Weight:6; resetspeedbinds"
alias "speed8weight7" "restat 8 7; echo Weight:7; resetspeedbinds"
alias "speed8weight8" "restat 8 8; echo Weight:8; resetspeedbinds"
alias "speed8weight9" "restat 8 9; echo Weight:9; resetspeedbinds"

alias "speed9weight1" "restat 9 1; echo Weight:1; resetspeedbinds"
alias "speed9weight2" "restat 9 2; echo Weight:2; resetspeedbinds"
alias "speed9weight3" "restat 9 3; echo Weight:3; resetspeedbinds"
alias "speed9weight4" "restat 9 4; echo Weight:4; resetspeedbinds"
alias "speed9weight5" "restat 9 5; echo Weight:5; resetspeedbinds"
alias "speed9weight6" "restat 9 6; echo Weight:6; resetspeedbinds"
alias "speed9weight7" "restat 9 7; echo Weight:7; resetspeedbinds"
alias "speed9weight8" "restat 9 8; echo Weight:8; resetspeedbinds"
alias "speed9weight9" "restat 9 9; echo Weight:9; resetspeedbinds"

alias "resetrestat" "restat reset"
alias "cancelrestat" "echo Cancelled; resetspeedbinds"

alias "resetspeedbinds" "bind 1 speed1; bind 2 speed2; bind 3 speed3; bind 4 speed4; bind 5 speed5; bind 6 speed6; bind 7 speed7; bind 8 speed8; bind 9 speed9; bind 0 resetrestat"

resetspeedbinds

Now you just type the stats you want (eg; 4, then 8 for 4,8), or press 0 to reset your stats to your skin's default. Unsure how cfg files handle nested quotes, so I didn't try using "KEYPAD 0-9".

I just hope there's no limit to the number of aliases you can have.
 
Tyron updated HOSTMOD with a new update entry:

HORNMOD: CHAMPIONSHIP EDITION

This is a complete rewrite of the addon, since it was my first time ever writing Lua—simultaneous incompetence and feature creep kind of led to a gigantic nightmare on the backend.

New features:
  • 100+ new horns.
  • Drastically improved performance. Low-end machines should have a much easier time on crowded servers.
  • Minor visual inprovments (try a hellhorn!).
  • A less intrusive antispam system: players who go wild on the horn will get quieter over time. The old system is still...

Read the rest of this update entry...
 
Due to an in game bug (windows command line won't let me type underscores or any character that requires shift to be pressed), I can't use most hostmod commands from the windows command line because of how they're written. Are there other options for me to use the mod? (excluding switching to a linux server)
 
Due to an in game bug (windows command line won't let me type underscores or any character that requires shift to be pressed), I can't use most hostmod commands from the windows command line because of how they're written. Are there other options for me to use the mod? (excluding switching to a linux server)
Use kartserv.cfg to automatically execute commands, or "exec mycoolconfig.cfg" to execute stuff on demand.
 
Tyron updated HOSTMOD with a new update entry:

16

Some small personal additions and one bugfix. No new modules.

- If you view the HOSTMOD scoreboard as an admin, it now shows players' node numbers next to their names, for easier kicks/bans and easily identifying splitscreen parties.
- The ministats display is now significantly more compact, and no longer shows ping (since ping is just an indirect way of showing tic-delay anyway). The display will become slightly brighter when you're below your framerate cap—35 on vanilla, read from...

Read the rest of this update entry...
 
Out of curiosity is there a way to see a full list of the honorable mentions or pick which awards can pop up. I would like to turn one or two of them off if possible.
 
Out of curiosity is there a way to see a full list of the honorable mentions or pick which awards can pop up. I would like to turn one or two of them off if possible.

Honorable Mentions is not in mainline HOSTMOD—can't help ya.
 
Having this problem everytime I load this with KartVR. (even tho i am the heccing host)
 

Attachments

  • image_2022-12-17_211253681.png
    image_2022-12-17_211253681.png
    2.6 KB · Views: 118
I would like to know the name of the theme used when you lose and the theme when you win in SPB Attack, that's it really.
1677618807078.png








*EDIT*
With the help of the SRB2K Discord, I found both the music on Soulseek:
Victory theme: BEMANI Sound Team - The Bibliotheca of Mirage End
Lose theme: BEMANI Sound Team - Arena Result
All from the Beatmania iidx 26 Rootage OST.

It was quite difficult finding these songs given that it's already hard to find Beatmania OSTs in general. How did you even get your hands on these songs Tyron?
 
Last edited:
How do I enable clans in my server? The command line says "this function has been disabled by the server host" and i'm not finding anything about it in the docs
EDIT: Apparently it was because scoreboard was off, but I can't seem to turn it on. It just turns itself off when I turn it on
EDIT 2: It was because of Kart vs rating. My bad.
 
Last edited:
How do I enable clans in my server? The command line says "this function has been disabled by the server host" and i'm not finding anything about it in the docs
EDIT: Apparently it was because scoreboard was off, but I can't seem to turn it on. It just turns itself off when I turn it on
EDIT 2: It was because of Kart vs rating. My bad.
Thanks for documenting this, might help someone else down the line.

It was quite difficult finding these songs given that it's already hard to find Beatmania OSTs in general. How did you even get your hands on these songs Tyron?
You can actually just deadass buy the Rootage OST, or at least pieces of it. It rocks.
 
Tyron updated HOSTMOD with a new update entry:

17

  • Added hm_specbomb_antisoftlock. Previously, enabling hm_specbomb would silently enable a softlock-protection mechanism, intended to guarantee that games would end even if other mods didn't correctly handle no-contest / finish conditions. This wasn't previously disclosed, went against host expectations, and could interfere with other mods that need to control exit conditions (like intermission/vote replacements), so it's been moved into its own toggle.
  • Added...

Read the rest of this update entry...
 

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

Back
Top