Steal An EggDocumentation← Portfolio

#Admin & Tools

#Who counts as an admin

AdminService.isAdmin grants access to Config.Admin.UserIds ({ [3637282149] = true }) and, when Config.Admin.ALLOW_PLACE_OWNER is true, to the place owner. ALLOW_IN_STUDIO keeps the console usable during development.

SettingValue
MAX_COMMAND_LENGTH160 characters
MAX_LOG_LINES80 lines kept in the console panel
Rate limitadminCommand — 12 calls per 5 seconds

Commands are typed into the in-game console (StarterPlayerScripts.UI.Panels.Admin), sent through the adminCommand action and executed by AdminService.execute.

#Commands

CommandUsageDescription
helphelpList commands
statsstatsServer status: players, bases, nests, active guardians, DataStore availability
speedspeed <amount> [player]Sets Speed
cashcash <amount> [player]Adds money
testanim`testanim <pet> [idle\walk] [loops]`Previews a pet animation (testanim off clears)
givegive <petId> [weight] [mutation]Creates a pet
eggegg <petId>Plants a growing egg in your base
zonezone <id> [player]Teleports to a zone
unlockallunlockall [player]Sets Speed to the last zone's requirement
penpen <level 0-11> [player]Sets the pen level
treadmilltreadmill <id>Grants a treadmill
trailtrail <id>Grants a trail
discover`discover <petId\all>`Registers Index discoveries
clearpetsclearpetsRemoves all of your pets
resetnestsresetnestsResets every nest immediately
seedseed <number>Deterministic RNG (Studio only)
flag`flag <name> <on\off>`Toggles a feature flag at runtime
tutorial`tutorial <reset\skip> [player]`Resets or fast-forwards the tutorial
datastoredatastoreRuns the DataStore read/write self-test
savesave [player]Forces a profile save
bringbring <player>Brings a player to you
gotogoto <player>Teleports you to a player
kickkick <player> [reason]Kicks a player (never another admin)
list`list <pets\zones\flags>`Lists ids

#Tools

Features.Tools.GIVE_ON_SPAWN hands out the bat and the bear trap at spawn. Both are client-driven and validated on the server.

Bat settingValue
COOLDOWN1.2 s
RANGE10 studs
CONE_DOT0.35 (hit cone)
KNOCKBACK45 studs
OVERLORD_DAMAGE100

Damage, knockback and stun per bat come from Config.Bats — see the table in Index, Rewards & Leaderboards.

Bear trap settingValue
MAX_PLACED3
STUN_SECONDS7
REQUIRES_CARRIED_EGGtrue
REQUIRES_CHASEDtrue
BLOCKED_IN_SAFE_ZONEtrue
INFINITE_SUPPLYtrue
Arm delay / lifetime / trigger radius1 s / 600 s / 2.5 studs

ToolService exposes placeTrap, pickUpTrap, stepTraps, swingBat, knockback and refreshBat, and keeps a per-player per-tool cooldown table (__resetCooldowns clears it for tests).

#Anti-abuse

Config.Security is the server-side guard rail. Every remote action passes through Guard.checkRate and suspicious input calls Guard.flag, which accumulates on the player record.

Guard railValue
Rate limitsper action, mostly 3–15 calls per 5 seconds (fusion 4, growAll 3 per 10 s, sellAllPets 2)
MAX_STRING_LENGTH64 characters
MAX_TABLE_ENTRIES32 entries per request
SUSPICION_KICK_THRESHOLD400
SUSPICION_LOG_INTERVAL30 s

Guard also owns the shared RNG (Guard.number, Guard.weighted, Guard.random), the deterministic Studio seed (Config.RNG.STUDIO_SEED) and uid generation, which is what makes the test harness reproducible.

#Test harness

Services.TestHarness (~2,000 lines) exercises data, economy, growth, hatching, fusion, index, tools, events and the feature modules. Run it from Studio with the SAE_RunTests attribute on Workspace (optionally naming a section) or through SAE_TestApi:Invoke("runTests", section). TestHarness.firstPlayer, findFreeEgg, fleeToPlot and plantFirstItem exist to drive the real services instead of mocks.