MSC Skate
Multiplayer S.K.A.T.E. for ReSkate with expanded trick matching, custom host rules and native Throwdowns integration.
| Date uploaded | a day ago |
| Version | 0.3.13 |
| Download link | MSC_Midnight_Skate_Club-MSC_Skate-0.3.13.zip |
| Downloads | 153 |
| Dependency string | MSC_Midnight_Skate_Club-MSC_Skate-0.3.13 |
README
MSC S.K.A.T.E.
Play multiplayer S.K.A.T.E. in ReSkate with expanded trick matching, custom host rules and native Throwdowns integration. Set a trick, match your opponents and avoid collecting all five letters. The last skater standing wins.
Features
- Match supported flips, spins, grinds, grabs and trick combinations.
- Choose scored trick categories, detector thresholds and additional rules.
- Optional dark catches and dark flips, controlled by the host.
- Optional stock physics enforcement for participants, with normal tuning restored when they leave or are eliminated.
- A turn countdown, optional return to the starting flag, player letters and trick feedback.
- Native Throwdowns setup, invitations, Start, Leave and Quit controls.
MSC S.K.A.T.E. is a Luau plugin and leaves ReSkate's original S.K.A.T.E. mode available separately.
Installation
ReSkate with Luau plugin support is required. Install MSC S.K.A.T.E. 0.3.13 on every player's client and on the host/server. Replace the previous version rather than keeping duplicate copies.
Players: Import MSC_Skate-0.3.13.zip through ReSkate's mod manager, or extract it into Mods/MSC_Skate/. The manifest files and plugin/ folder belong directly inside that directory.
How to play
- Open Insert > Plugins > MSC S.K.A.T.E. and choose your hosting preferences under Scored Tricks, Detector and Additional Rules.
- Open Throwdowns > MSC S.K.A.T.E., choose the player count and turn timer, confirm setup and place the flag.
- Have other players join using the native invitation or flag. Once at least two players have joined, the host starts through the native waiting card.
- The active setter lands a trick. Each defender attempts to match it before their timer expires. Failed defences earn letters. A failed set passes the turn; after the defence circuit, the first successful defender becomes the setter, or the original setter continues if nobody matched.
All participants use the host's match rules. Changing your hosting preferences during a match affects your next game. Active rules are visible in the plugin menu.
Use Leave on the waiting card or Quit on the native match panel to exit. The host's Quit ends the match. The Insert plugin menu also provides confirmed Leave and host End actions.
Physics and MSC rewards
Enforce stock physics during game defaults on. It applies to active participants and releases their tuning when they leave or are eliminated. The preparation countdown temporarily holds the active player before their attempt.
Eligible winners receive 100 MSC per opponent in the roster at Start: 100 MSC for a two-player game, up to 900 MSC for ten players. A match must include a successful set and a resolved defence; cancelled games and immediate join/leave games do not pay.
Current limitations
- Underflips are not supported at the moment due to ReSkate API limitations. Do not rely on underflip modifiers being recognised or compared correctly.
- Some body-flip modifiers, including exact tumble direction and rotation counts, lack the evidence needed for reliable matching through the plugin API.
- Trick recognition depends on the observations ReSkate exposes. Missing or ambiguous observations can prevent a trick or combination from being accepted.
- Stalls, slams and Cannonball are excluded. Area checks are not supported.
- Stock physics enforcement relies on participating clients and can conflict with another plugin requesting control of competition physics.
Based on MSC ReSkateMerge. Licensed under GPL-3.0; see LICENSE and NOTICE.md for credits and source information.
CHANGELOG
0.3.29 — walk-up host Start and start-point gather (candidate)
- The waiting MSC flag offers the host E / controller X to Start once at least two participants have joined, using the existing server-authoritative
startrequest. - Every enrolled client teleports to the saved flag location once after receiving the authoritative playing state, regardless of the optional return-to-flag-on-turn setting; the first setter avoids a duplicate teleport.
- Flag artwork is loaded from
flag-logo.pngat the package root. This candidate includes a temporary copy of the existing MSC icon until the user supplies the dedicated artwork. - No changes to server authority, detection, rules, payouts, menu Quit behaviour or native vanilla Throwdowns.
0.3.28 — MSC Quit Throwdown menu (candidate)
- Start/Options during a playing MSC match opens the existing themed MSC screen with Resume, Leave Throwdown and host-only End for Everyone.
- Leave and End use existing control actions, each with a confirmation step.
- The native Details panel is omitted for playing matches to avoid competing with the custom menu. The native HUD and match restrictions remain unchanged.
- Start is hidden from the game only during a playing MSC match and released on exit. Escape remains native; the Insert exit path is retained.
- No changes to detection, authority, wallet, rules, placement or vanilla Throwdowns.
0.3.27 candidate - wait for native Throwdowns menu before flag placement
- When Place MSC S.K.A.T.E. flag is selected, keep placement pending until the documented
reskate.menu.game().openis false and gameplay focus returns. - Do not draw the placement preview, accept confirm or cancellation, or start the existing 350 ms input grace period while the native Throwdowns mode-selection page remains open.
- If the native menu is reopened during placement, suspend the preview and placement controls until it closes again.
- The user closes the native Throwdowns page normally; MSC does not simulate or inject Back/ToggleMenu navigation.
- Based directly on the user's 0.3.24 source. No detector, authority, lobby layout, native UI, payout, waiting-marker or server changes.
0.3.24 candidate - confirmed waiting-lobby markers
- Draw authoritative waiting markers independently of native throwdown lifetime, including after placement completes. The 0.3.23 exemption applied only to placement previews.
- Keep existing waiting-only status, position and distance checks in flag.luau. Cancelled/playing lobbies do not retain join markers.
- No changes to placement/join input, gameplay, authority or rules.
- Regression checks now draw the confirmed second lobby and several further create/cancel cycles with native activity still flagged. Official plugin VM verifies the second marker on both clients.
0.3.23 candidate - placement recovery after vanilla lobbies
- Keep MSC's explicit placement preview and confirmation available when the broad native activity flag remains set. Passive proximity joining still respects native activity.
- Reopening MSC's card or lobby exits placement instead of opening an empty screen that closes on the next tick.
- Back/controller B can cancel placement even if the native gameplay gate remains blocked. Confirm still requires gameplay focus.
- Refuse placement if the skater position is unavailable; return to setup if it disappears during placement.
- Log native activity, input focus, preview availability and cancellation only when placement state changes.
- Add the MSC cancel -> vanilla lobby cancel -> MSC placement regression, including native residual-state simulation and official plugin VM verification. Live in-game retest remains required.
0.3.22 candidate - lobby lifecycle
- Match Domination's accepted-card flag release, opening Enter/A handling, initial selection, closing input latch and start guards.
- Close on a queued Start; shut waiting screens when the authority starts the match.
- Recover Create/Join/Start once per second for ten seconds; accepted-control receipts prevent duplicate lobbies, enrollment and countdown restarts.
- Share setup cleanup between programmatic closes and native Escape: ui.close() does not emit screen_closed.
- Add lifecycle logs. Preserve marker placement, joining, host-only Start, gameplay, rules and artwork.
- Automated lifecycle and official plugin VM checks pass. Live native S.K.A.T.E.-to-MSC regression remains unverified. See CANDIDATE.md.
0.3.21 — Lobby input release (Domination parity)
- Ported Domination's proven button-release wait and card re-arm for the MSC lobby.
- Ignore duplicate Throwdowns card clicks while the lobby is open/closing or the closing input is still held.
- Keep the same native-card handoff and existing match gameplay unchanged.
0.3.20 — Placement flow and host marker prompt
- Selecting Place MSC S.K.A.T.E. flag returns directly to skating and the world-image placement preview; it does not show a full-screen placement instruction page.
- Successful placement leaves the host in gameplay instead of automatically opening the custom lobby. The host can manage the waiting match by selecting MSC S.K.A.T.E. in Throwdowns again.
- Approaching one's own waiting flag displays “Manage game from Throwdowns menu” rather than a join prompt. Other players retain the existing join interaction.
- No changes to server authority, native/vanilla throwdowns, match gameplay, rules, scoring, payouts, or match HUD.
0.3.19 — Throwdowns card and MSC lobby theme
- Registers MSC S.K.A.T.E. in the Throwdowns picker immediately during client startup, matching Domination's known-working plugin registration order and Spot-style card.
- Removes MSC's explicit
remove_modeon unload; ReSkate already owns plugin mode cleanup. - Removes incorrect casino branding from the lobby and replaces the blue palette with black/purple and minimal teal accents.
- No changes to match authority, trick detection, scoring, wallet payouts or gameplay HUD.
Changelog
0.3.18
- Restore the original MSC S.K.A.T.E. mode identity and card style in the Throwdowns picker, with explicit registration-failure logging.
- Replace the generic 0.3.17 plugin-panel lobby with a custom full-screen skate.-style menu based on Domination's documented
ui.screen(panel=false)+ overlay/input pattern. - Add keyboard, controller and mouse navigation for setup, host rules, roster, Start, Leave and Cancel without changing the server match protocol.
- Keep the image-based MSC world join marker, server-side match authority, native active-match HUD and Quit handling.
- No changes to trick detection, scoring, rewards, server code or vanilla S.K.A.T.E.
- Source-verified and offline tested; native card appearance and rendering still require live ReSkate 2.1.2 testing.
0.3.17
- Replace MSC-only native setup and waiting cards with a custom lobby opened from the existing Throwdowns entry.
- Add a floating MSC logo join marker using world-anchored PNG drawing; skate to place and press E / controller X to confirm, or Backspace / B to cancel.
- Allow nearby players to join the existing server-owned match through the marker, and hosts to Start/End in the MSC lobby.
- Keep the existing server authority, rules, trick detector, gameplay HUD, rewards, and in-game Quit handling unchanged.
- Release only the newly opened MSC native registration during the card handoff; vanilla throwdowns are not modified.
0.3.16
- Strengthen release-only obfuscation of detector, tracker, metadata and rules using scoped local-symbol renaming, cached runtime string decoding, branch inversion and a module initialization dispatcher.
- Preserve readable source modules and existing gameplay, settings, rewards and icon.
0.3.15
- Enable Return to starting flag on turn start by default. Explicitly saved Off preferences remain Off.
- Update the option description and player guide to reflect the default.
0.3.14
- Add a saved local Auto / Regular / Goofy base-stance selector under Detector, allowing players to correct reversed FS/BS labels when the reported stance is wrong.
- Show the stance reported by ReSkate alongside the selector. Auto preserves the existing API behaviour; each player controls their own override.
- Preserve the existing mirrored spin conversion and switch handling, Impossible foot identities, rules and payouts.
0.3.13
- Accept native front-foot/back-foot direction identifiers specifically for Impossible tricks in server validation.
- Show Front Foot and Back Foot in captured trick names while preserving distinct matching identities.
- Update clients and host/server together to receive the validation fix. Other rules and payouts are unchanged.
0.3.12
- Revert the custom throwdown art setting to the original default; retain the MSC package icon.
- Obfuscate detector, tracker, metadata and rules modules in the installable package by stripping comments/formatting and encoding string literals. Readable originals and the packaging script are supplied in the source archive.
- No gameplay, payout, menu or other settings changes.
0.3.11
- Replace the package icon with the supplied MSC logo and set the throwdown art reference to its supplied path. Native card display still requires the image to be registered as a game asset.
- Rewrite the player README and installation guide around installation, controls, rules, rewards and current limitations.
- Explicitly document unsupported underflips and API limits affecting trick modifiers.
- Preserve the card type, gameplay, payouts, menus and all other settings.
0.3.10
- Copy Belly Slide 0.1.5's populated native throwdown HUD and Quit panel publication into MSC S.K.A.T.E. for every active participant, with MSC turn/letter data.
- Stop publishing native setup alongside an active match, matching Belly Slide's waiting-to-playing transition.
- Revert the 0.3.9 forced
markers=truechange. Existing host match restrictions and Insert Leave/End controls remain unchanged. - No changes to server authority, trick detection, turn rules, rewards, networking or match actions.
0.3.9
- Keep native match-panel activity presence enabled for all active players, including joined clients, matching the working Belly Slide panel ownership. The official 2.1.2 UI presence gate depends on
match.markers; previously, allowed session markers disabled the native panel ownership on guests. - Preserve Insert Leave/End confirmations and the native Quit/Start/Leave event handlers, lobby list, server authority, turn logic, trick detection and rewards.
- Runtime limitation: to keep guest Quit accessible, normal session markers/Return are blocked while the match is active even if the host option allows them. The saved host rule is not modified; this needs a ReSkate runtime fix to decouple activity-menu presence from the marker restriction.
- Local tests are synthetic; live multi-client Quit rendering remains to be verified.
0.3.8
- Align native MSC match-panel publication with the working Belly Slide v0.1.2: use the stock
spottheme, render the populated match details panel only during play/results, include the exactQuitcaption, Steam portraits, ranks and player/timer settings, and accept Quit for the active match even when the native event omits its mode. - Restore Insert-menu Leave and host End with their original confirmation dialogs; keep the native waiting-card Start/Leave and native match-panel Quit, without reintroducing the keyboard/controller lobby shortcuts or duplicate Insert Start.
- No changes to server authority, payouts, trick detection, match restrictions or gameplay rules. In-game native UI remains to be verified.
0.3.7
- Use native throwdown waiting-card Start/Leave and match-panel Quit/End controls. Native host Quit routes through the existing server-authoritative
canceloperation; other participants keep the existingleavepath. - Remove duplicate Enter/Start and Escape/Back fallback shortcuts, Insert-menu match Start/End/Leave buttons and the duplicate D-pad panel command. Keep the Insert game preferences, lobby roster overlay and server match/turn logic unchanged.
- Wire protocol 5 and rules revision 21 unchanged. In-game native Quit/End behaviour still requires verification.
0.3.6
- Add host-frozen Enforce stock physics during game in Insert > Additional Rules, default On. All active participants retain the official stock-physics request through their turns; eliminated/leaving players restore their own tuning. Prepare stock tuning before play; do not arm the detector before stock_ready.
- Keep preparation holds scoped to the 3-second countdown; releasing the hold at GO no longer releases host-enforced physics.
- Use the high-resolution title_large font for large countdown and win/loss headlines instead of enlarging the small default font.
- Server diagnostics use reskate.log exclusively: no file reads, writes or rotation attempts on the server. Client diagnostic files remain unchanged.
- Freeze the real participant roster at Start. Eligible finished matches award 100 MSC per opponent through the optional trusted MSC server wallet bridge. Cancelled/unplayed games do not earn rewards. Only a confirmed durable wallet receipt is displayed as paid.
- Include a separate optional six-file MSC server source patch, ledger tests and application instructions. No existing server source or executable was changed; this bridge must be applied/rebuilt for real wallet credit.
- Protocol 5, capture/rules revision 21: update clients and authority together. Native ledger, bridge syntax and patch application checks pass; full patched-server/live payout integration remains unverified.
0.3.5
- Hold the local turn owner during the server-timed three-second preparation interval, block skating input, and draw a large centred 3-2-1/GO countdown. Official hold requires a plugin-scoped stock-physics request; restore the player's tuning before active skating and release all holds on exit, stale authority, epoch change and unload.
- Retire finished native activity/flag ownership immediately. Results live in an independent non-blocking overlay, and cannot hand off a fresh flag prematurely. Correlate placed/left events by game ID and ignore delayed cleanup from retired games.
- Keep the documented native open/setup/placement/waiting/Start flow without a duplicate flag.begin. Publish an interim waiting document while authority connects. Add a compact waiting overlay with player count and Enter/Start plus Escape/Back controls when the native waiting model fails to render. Insert Start/Leave remain available.
- Use a supported D-pad Left custom pause-panel Leave prompt instead of the unsupported face-button command binding.
- Add server-confirmed animated win/loss cards; winners receive a bounded cosmetic dollar-bill shower. No points or currency are awarded. Result snapshots do not replay animations; new setup clears the old result.
- Real official sandbox integration passes two clients plus authority through consecutive matches on both pinned runtimes. Pure Luau presentation and existing detector tests pass. Live game rendering/native-model recovery remain unverified.
- Protocol 5 and capture/rules revision 20 unchanged. Existing 0.3.4 authority is compatible; update clients for these fixes.
0.3.4
- Track per-attempt on-board origin and air/grind movement through physical completion. Landing on foot fails without requiring a native runout increment, during capture or pending settlement.
- Preserve ordinary on-foot jumps/walking and ignore their unrelated generic failure signals. A dismount first observed after the 350 ms settlement boundary cannot retroactively fail a landed trick.
- Intentional boneless/no-comply transitions retain the short launch grace but must return to on-board movement within the existing 700 ms allowance. Remaining on foot fails.
- Move the match overlay to the upper left at scaled (22, 75), remove all background rectangles and show result flashes on player text. Suppress duplicate native in-match text slots while retaining native activity ownership, setup, waiting, pause panel and results.
- Add foot-origin, plant-return, transparent HUD/document and idempotent authority failure regressions. Pure Luau tests pass; live acceptance remains required.
- Protocol 5 unchanged; capture/rules revision 20. Update all clients and authority together.
0.3.3
- Remove automatic spectating, its Insert toggle and stored-preference reads. The plugin no longer calls the spectate API during turns or cleanup.
- Simplify capture acceptance: fixed 350 ms settlement does not wait for ticker quiet; nameless partial rows do not veto named tricks. Unknown named tricks still reject.
- Remove blanket tumble-magnitude and heading-jump vetoes; preserve tracker rotation completeness, landing/bail checks and exact canonical comparison of order, stance, direction, spin and reported modifiers.
- Capture/rules revision 19, protocol 5. Update all clients and authority together; no active-match migration.
0.3.2 — 2026-10-26
- Audited all 190 source-derived native identities and all 351 native-name mappings with exhaustive Luau assertions; results are in TRICK_COVERAGE.md.
- Preserve native ground-grab category while treating two ground-grab identities as supported grounded captures, rather than discarding them as airborne-only grabs.
- Ignore known non-S.K.A.T.E. offboard, target, collectible and wipeout observations before identity validation. Unknown native names still reject explicitly; no speculative identity mapping.
- Limit: The official Luau API supplies trick ticker writes, not the MSC native trick-object history. Complete detection of every move, including complex modifiers and handplants, cannot be certified without live comparisons or additional official API evidence.
- Capture/rules revision 18, network protocol unchanged at 5. All participants and authority should update together; no active-match migration.
0.3.1 — 2026-10-26
- Explicitly close the Insert Leave/End confirmation on every button response, releasing dialog input ownership.
- Correlate late runouts with a pending landing, including a bounded extended watch when the skater goes off-board immediately after touchdown; actual mid-attempt foot landings fail independently of the free-roam rule.
- Recover the capture boundary from the official Boneless/No Comply launch event, even after a brief off-board state or without a preceding ride-state sample.
- Host-frozen Allow dark catches / dark flips rule (default Off); reject disallowed modifiers and merge native dark-catch ticker suffix revisions instead of appending duplicate tricks.
- Flash the letter-box background green/red for server-authoritative turn outcomes (success, mismatch, failure, timeout).
- Optional Insert Force spectate when not your turn (default Off), released on own turn/exit.
- Added synthetic Luau regressions for the above. Protocol 5, capture/rules revision 17; all clients and authority must update together.
Unverified: native input/dialog exercise, hosted/dedicated multiplayer and controlled live MSC comparison; no native binaries or upstream changes.
0.3.0 — 2026-10-26
- Decoupled physical touchdown and stable ground tracking from corroborating score events; stopped later movement invalidating finished captures.
- Added result identifiers, bounded authority receipts and idempotent attempt retransmission.
- Correlated runouts with the active landing interval and filtered verified irrelevant observations before evidence rejection.
- Added client-side plugin log files with rotation and detailed bounded capture history; dedicated server prints to standard log where its file API is unavailable.
- Added confirmable Insert Leave / End actions and extended Luau adapter regressions.
- Protocol 4, capture/rules revision 16; coordinated update required.
Known unverified: controlled game capture parity, two pinned official runtime integration tests, and dedicated file-output support.