MSC_Midnight_Skate_Club-MSC_Skate icon

MSC Skate

Multiplayer S.K.A.T.E. for ReSkate with expanded trick matching, custom MSC lobbies, world-image join markers and host rules.

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 start request.
  • 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.png at 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().open is 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_mode on 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=true change. 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 spot theme, render the populated match details panel only during play/results, include the exact Quit caption, 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 cancel operation; other participants keep the existing leave path.
  • 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.