LegacyShell WikiLegacyShell Wiki
Back to LegacyShell
Home
Wiki
Plugins
Docs
Back to LegacyShell
Home
Wiki
Plugins
Docs
  • Plugins

    • Plugin Docs

      • Default

        • Crackshot
        • Auto Restart Notifications
        • Auto Shop Notifications
        • Burnt Block Sets
        • Christmas Event
        • DeadInternet
        • FancyGraphics
        • Health Pack Item
        • Item ToolTips
        • LegacyAdmin
        • LegacyAnalytics
        • LegacySettings
        • LegacyShellCore
        • LegacyThemes
        • LegacyWeather
        • Modern Map Blocks
        • Modern Shell Guns
        • Modern Shell Hats
        • Modern Shell Stamps
        • Minerva
        • ParkourMode
        • Player Count Notifications
        • TimeMachine
        • Vaporwave Map Blocks
        • WhatsAppTheme
        • Zaxonius Custom Guns
      • Examples

        • Modern Shell Maps
    • List of plugins

Canonical source: plugins_default/parkourmode/README.md - edit that file, not this page (this page is built live from it, nothing here is a tracked copy).

ParkourMode

Adds a full "Parkour" gamemode - checkpoints, a goal, sound cues, and egg rewards - built entirely on ordinary plugin extension points, no core engine changes.

The gamemode itself

Registered via game:GameTypesInit (see Recipe: New Gamemode for the general mechanism): damageModifier/knockbackModifier set to 0 for every team, no spawnable items at all, 5-minute timed rounds, 3 starting grenades, and rearmOnRespawn: false. Ships its own maps via services:initTablesMaps.

How checkpoints and the goal actually work

Hooks game:onStandOnTile and checks the mesh name a player is currently standing on against "checkpoint1" through "checkpoint5" and "goal" literally - a private naming convention for this plugin's own maps, unrelated to the theme.name.colliderType convention in Map Blocks. Reaching a new checkpoint (only counted if higher than the player's current best) sets their respawn point, plays a numbered sound cue, and scores a kill point; reaching the goal scores three kill points and resets the player back to a normal spawn after a short delay.

Egg rewards are asymmetric: a checkpoint only rewards player.client.addEggsViaServices(5) (see Rewarding Players with Currency) if player.gameOptions.cheatsEnabled is falsy - but the goal's addEggsViaServices(10) has no such check. A room with cheats enabled (e.g. noclip) can't farm checkpoint eggs, but reaching the goal repeatedly still pays out regardless - worth knowing if you're relying on this mode to be cheat-proof for currency purposes.

A real example of registering a custom network opcode

Comm.Add("parkourScore") (see Networking) is called from inside permissionsAfterSetup in shared.js - one piece of code that genuinely runs on both the browser bundle (spliced in via pluginSourceInsertion) and the Node game server (imported normally), which is exactly the "call Comm.Add from one shared call site" guidance that page gives, not just a description of the ideal.

Notes

Sound assets include a parkour.gerudo clip that's loaded (loadSounds) but never actually played anywhere in the reviewed source - a loaded-but-unused asset, not a bug that affects anything, just dead weight if you're auditing what actually gets used.


This page was drafted with AI assistance and reviewed for accuracy. If something looks wrong, please open a PR or flag it.

Prev
Minerva
Next
Player Count Notifications