Config block
config.lua
Per-command toggles
Setting any ofroll / coinflip / eightball / random to false removes the slash command entirely from the server and removes the suggestion picker entry. The command will print "No such command" in the F8 console if a player tries to use it.
/roll config
/coinflip config
No args. Always rolls 50/50 Heads/Tails.
/8ball config
The question text is ignored - it’s purely flavour. But the player must provide something - empty
/8ball notifies “Ask a yes/no question.” and doesn’t fire.
Customising answers
The shipped 20 are the canonical Mattel set (10 affirmative / 5 non-committal / 5 negative). Replace, add, or remove freely:/8ball via a config typo.
/random config
- If the args contain a
,→ comma-separated. Whitespace inside an option is preserved ("Sam Smith"is one entry). - If no
,→ falls back to space-separated. - Minimum 2 options; fewer notifies and doesn’t fire.
- Hard caps: 64 options max, 60 chars per option (option strings longer than that are truncated with
...to keep the 3D backdrop sane).
Shared config (applies to all four)
renderDistance
threeD.renderDistance for these four commands only - useful if you want dice rolls to feel like a table-top range (e.g. 5.0 m) while leaving /me at full conversation distance.
The server filters the recipient set by this distance before sending the event, so far-away clients don’t even pay queue/rendering cost.
rollMax
Already covered above but worth re-emphasising: this is the only hard ceiling anywhere in the fun-command config. Default 100 means /roll 9999 silently clamps to /roll 100, not an error. Bump to 1000 for thousand-sided dice; drop to 6 to force every roll to be 1-6 regardless of what the player types.
*DurationSec
Per-command seconds the 3D text stays floating. Clamped client-side to [0.25, 60]. nil falls back to the global threeD.durationMs (5 seconds default).
/8ball defaults to 7s on purpose - sentence-length text reads slower than X/Y.
Colours
All four*Color keys default to white to match the /me channel’s default text colour, so overhead text reads as one visual family. Override per-command if you want a coloured dice (#FCD34D amber) or coin (#7DD3FC cyan) distinct from RP /me.
Audit webhook
Setwebhooks.funCommands to log every fire to Discord:
/roll, cyan for /coinflip, purple for /8ball, teal for /random) with:
- The sender’s real character name + server id + avatar (the audit point - chat saw none of this).
- Command + result inline.
- Question (
/8ballonly) or Options (/randomonly) below. - License + Discord ping for cross-session lookup.