The core idea is adding a diverse selection of low-stakes roleplay-inclined gimmick jobs. At roundstart 1-2 (map dependent), will be randomly selected from the larger pool, will have a room bespoke to the job appear in a pre-established ‘template room’ on the station, and will become available for players to take.
Gimmick jobs are a pretty common thing in Space Man Games; various servers in ss13 have barbers, boxers, clerks, journalists, psychiatrists. In my opinion and experience these jobs are divisive; there’s often a handful of people who enjoy them sometimes, and a much larger contingent of people who point out that the roles are dumb, often completely unintegrated into the larger mechanical ecosystem and amount to little more than a greyshirt in a costume.I think the key is novelty; these jobs are often fun to play or interact with once or twice, but quickly lose their luster. This proposal is intended to allow for the kinds of fun roles people want to play one time, but probably wouldn’t play every round as, without creating role bloat or half-baked jobs that people just use as assistant+. This would also be a good, low-stakes way to trial new roles, or put in roles that are kinda stupid conceptually.
These little rooms right here, the kind that you have in hallways, often near arrivals, would be the mechanical basis of the implementation. Similarly to how tg13’s holodeck works, the idea would be to, on roundstart, swap out the contents of the room with one of a number of pre-designed prefabs. The walls should also be included in the prefab, as this way windows, counters etc can be added or removed. If joker roles are disabled by config, or for some reason don’t spawn, the room should default to a standard Vacant Office layout. I’d like to specify that I do like these rooms, and dont think this should replace all of them - maybe we could make a few more scattered about.The rooms in question would be unique to the job. I’ll include a list of joker roles I think we should have below, but some simple examines might be a veteranarian would have a simple surgery, some basic meds, some animal boxes and maybe a defib locker; a private investigator might have a desk with a bottle of whiskey, some glasses, a wardrobe with a couple outfits and forensic equipment, file cabinets, and detective-carpeting; a store clerk could have a shutterable windoor counter, sellable stock, a locker with some cash. In this way, each role would have their own slice of the station, with access to equipment they would be able to use in a way that feels integrated and intentional.I can see two ways this could work across maps; firstly, the lower effort method, would be to have standard map-agnostic room templates with a matching footprint - all the mapper would need to do is ensure that the room matches the ‘joker room’ dimensions - say 6x4 or smth - and mark the room out somehow, and it would load the same room contents for each type of room across whichever station it’s on. This would be low-maintenence and scalable, wouldn’t ask much compromise from the mappers, and would (presumably) be simpler to implement.The second implementation would be that a station mapper can opt to make a joker room template distinct from the default footprint, and would then create a bespoke version of each of the job-rooms that would fit into that template specifically. This would allow for more variety and freedom, with any given joker role having a few different room styles across different stations, but this could also work alongside the simpler method as a default.In terms of job selection, this would work similarly to how station-dependent jobs work right now; players can access the full list of joker roles in the job preference menu, specify their interest in the role, at roundstart the jokers would be picked prior to job assignment, and the jobs would be entered into the selection process as normal, using a spawn point within the room. If a role goes untaken in the initial assignment, it’ll be available on the join menu. The jobs will include their own access level - if possible, this access would be dynamic; only appearing on the HoP console on rounds where the relevant job is selected, this will control access to any lockers and doors in the room.If mappers want to go Sicko Mode, template rooms could be placed in and around other departments with a selection of roles from the larger list they can select - for example psychiatrist, veterinarian or plastic surgeon rooms could spawn in or around medbay. If this were the case, I’d suggest limiting the numbers so if a role spawns in a department-specific position, a generic template would remain empty so as not to tip the scales.Most of these roles equipment could be designed from existing clothing and items; while in some cases it might be fun to add new items for them, it absolutely wouldn’t require any item bloat and could add some more use for items that don’t see much use currently.Seeing as some of the jobs are a little abstract, it would be good to include a brief flavour text on spawn to outline what the job is and, probably more importantly, what it isn’t.
Here’s some ideas and brief concepts for some of the roles that I think would work well here.ClerkRoom contains lockable storage for sellable goods of moderate utility, a safe, a desk with some basic paperwork supplies, and a front desk with a windoor and button-toggle shutters. Items in storage could be drawn from a random pool or fixed, but would be maint-loot tier; yellow gloves, syringes, crowbars, white medkits, toolbelts, plushes, nonlethal ammo. Intended playstyle would be trading and upselling until you’re buying and selling items of genuine value with a safe full of spesos. Could spawn in pretty much any outfit, so long as it looks civillian.Plastic SurgeonRoom would be a surgery with all the standard tools, and some basic meds. Anaesthetic tanks, medical records console, patient locker etc. This role would obviously only make sense when we’ve got newmed. Intended playstyle would be performing minor or stupid surgeries on-demand. Would spawn in some variant of the medical outfit, intended to distinguish the surgeon as private and independent from medbay at large.BoxerLocker room with a shower, seating, some bruise packs, change of shorts and gloves, sink with a mirror etc. In a larger joker template it could include a small boxing ring, but would be unfeasable if the room is as small as I’m picturing the defaults. Intended playstyle is the same as the current boxer really, would spawn in shorts and gloves.MagicianCurtained room with cool carpets and lockers - might include a teleporting locker. Starts with a number of prank items, some chems for making smoke etc, magic wand, a small animal of some kind. Intended playstyle is basically a variant clown, putting on shows etc. Spawns with a top hat etc you know how a magician dresses.GamblerCarpeted room with some of those green tables, decent starting cash, dice, arcade machine maybe, small bar with drinks. Spawns in a hawaiian shirt with obnoxious sunglasses. Intended playstyle is gambling away that money obviously.Private InvestigatorSimilar to detective office with different noir outfits and no gun. A desk with whiskey and glasses, CCTV monitor, forensic equipment, camera (when we get them), audio recorder, bureaucracy equipment, one of those emergency sec radios but not an earpiece, evidence bags etc. Intended playstyle is a second sleuth on the station, can be hired by crewmates or can simply try to do the detectives job for him, but critically is not a member of sec and isnt authorised to carry a gun or anything. Spawns in a suit maybe, something noir that isn’t one of the detective’s.JournalistThis is basically already a thing on some maps; room with paper and desk, camera, outfits etc etc. You know how this one works.VeterinarianStripped down doctors office with some bruise packs, ointment, and bottles of watered-down pills. A surgical table, some chairs for pet owners to sit in, animal boxes and wall defib. Intended playstyle being a doctor for animals. Spawns in something medbay-adjacent.Centcomm LiasonRoom is a fancy office with a wardrobe, nice desk, centcomm carpets, fax machine, camera console. Isn’t a member of command and doesn’t spawn with access, is there to monitor the station and report to centcomm, not to take command of the station unless it happens organically. Spawns in a centcomm outfit.PsychiatristRoom is a psych office. Again, this is a job we have currently that I think would benefit from not being a permanent fixture, but would function the same.Anyway that’s all I got for now. I put it in service cos its mostly service roles.
{"docsConfig":{"theme":"linden","$schema":"https://mintlify.com/docs.json","name":"The Robust Book","colors":{"primary":"#b195d5","light":"#d4b5f0","dark":"#8a6db5"},"favicon":"https://mintcdn.com/meowmew/TvZPuS8U3lxB2Npc/favicon.png?fit=max\u0026auto=format\u0026n=TvZPuS8U3lxB2Npc\u0026q=85\u0026s=3b599117c4be48e997a836b444a11242","footer":{"socials":{"github":"https://github.com/space-sorcerers/docs","discord":"https://discord.gg/U8RtkeHXqX"}},"metadata":{"timestamp":true},"styling":{"latex":true},"background":{"color":{"light":"#fdfcfe","dark":"#0f0e12"}},"navigation":{"languages":[{"language":"en","href":""},{"language":"ru","href":"ru"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"meowmew","hasAudioNarration":false,"actualSubdomain":"meowmew","customDomains":["docs.ss14.art"],"gitSource":{"type":"github","owner":"space-sorcerers","repo":"docs","deployBranch":"master","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"edits":true,"issues":true,"thumbs":false},"entitlements":{},"buildId":"6ae94426070c244b02af2475:success","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"en","tag":"Robust Toolbox","count":33},{"language":"ru","tag":"Robust Toolbox","count":33},{"language":"en","tag":"Space Station 14","count":29},{"language":"ru","tag":"Space Station 14","count":29},{"language":"en","tag":"General Development","count":22},{"language":"ru","tag":"Основы разработки","count":22},{"language":"en","tag":"Departments","count":14},{"language":"ru","tag":"Departments","count":14},{"language":"en","tag":"Toolshed","count":11},{"language":"ru","tag":"Toolshed","count":11},{"language":"en","tag":"Server Hosting","count":9},{"language":"en","tag":"SS14 By Example","count":9},{"language":"ru","tag":"Серверный хостинг","count":9},{"language":"ru","tag":"SS14 By Example","count":9},{"language":"en","tag":"Tips","count":8},{"language":"ru","tag":"Советы","count":8},{"language":"en","tag":"Community","count":6},{"language":"ru","tag":"Сообщество","count":6},{"language":"en","tag":"Codebase Info","count":5},{"language":"ru","tag":"Информация о кодбазе","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"scss/mdbook-admonish.css","content":"@charset \"UTF-8\";:root{--md-admonition-icon--admonish-note: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z'/>\u003c/svg>\");--md-admonition-icon--admonish-abstract: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M17 9H7V7h10m0 6H7v-2h10m-3 6H7v-2h7M12 3a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m7 0h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z'/>\u003c/svg>\");--md-admonition-icon--admonish-info: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M13 9h-2V7h2m0 10h-2v-6h2m-1-9A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2z'/>\u003c/svg>\");--md-admonition-icon--admonish-tip: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M17.66 11.2c-.23-.3-.51-.56-.77-.82-.67-.6-1.43-1.03-2.07-1.66C13.33 7.26 13 4.85 13.95 3c-.95.23-1.78.75-2.49 1.32-2.59 2.08-3.61 5.75-2.39 8.9.04.1.08.2.08.33 0 .22-.15.42-.35.5-.23.1-.47.04-.66-.12a.58.58 0 0 1-.14-.17c-1.13-1.43-1.31-3.48-.55-5.12C5.78 10 4.87 12.3 5 14.47c.06.5.12 1 .29 1.5.14.6.41 1.2.71 1.73 1.08 1.73 2.95 2.97 4.96 3.22 2.14.27 4.43-.12 6.07-1.6 1.83-1.66 2.47-4.32 1.53-6.6l-.13-.26c-.21-.46-.77-1.26-.77-1.26m-3.16 6.3c-.28.24-.74.5-1.1.6-1.12.4-2.24-.16-2.9-.82 1.19-.28 1.9-1.16 2.11-2.05.17-.8-.15-1.46-.28-2.23-.12-.74-.1-1.37.17-2.06.19.38.39.76.63 1.06.77 1 1.98 1.44 2.24 2.8.04.14.06.28.06.43.03.82-.33 1.72-.93 2.27z'/>\u003c/svg>\");--md-admonition-icon--admonish-success: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='m9 20.42-6.21-6.21 2.83-2.83L9 14.77l9.88-9.89 2.83 2.83L9 20.42z'/>\u003c/svg>\");--md-admonition-icon--admonish-question: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10z'/>\u003c/svg>\");--md-admonition-icon--admonish-warning: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M13 14h-2V9h2m0 9h-2v-2h2M1 21h22L12 2 1 21z'/>\u003c/svg>\");--md-admonition-icon--admonish-failure: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M20 6.91 17.09 4 12 9.09 6.91 4 4 6.91 9.09 12 4 17.09 6.91 20 12 14.91 17.09 20 20 17.09 14.91 12 20 6.91z'/>\u003c/svg>\");--md-admonition-icon--admonish-danger: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M11 15H6l7-14v8h5l-7 14v-8z'/>\u003c/svg>\");--md-admonition-icon--admonish-bug: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M14 12h-4v-2h4m0 6h-4v-2h4m6-6h-2.81a5.985 5.985 0 0 0-1.82-1.96L17 4.41 15.59 3l-2.17 2.17a6.002 6.002 0 0 0-2.83 0L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8z'/>\u003c/svg>\");--md-admonition-icon--admonish-example: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M7 13v-2h14v2H7m0 6v-2h14v2H7M7 7V5h14v2H7M3 8V5H2V4h2v4H3m-1 9v-1h3v4H2v-1h2v-.5H3v-1h1V17H2m2.25-7a.75.75 0 0 1 .75.75c0 .2-.08.39-.21.52L3.12 13H5v1H2v-.92L4 11H2v-1h2.25z'/>\u003c/svg>\");--md-admonition-icon--admonish-quote: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M14 17h3l2-4V7h-6v6h3M6 17h3l2-4V7H5v6h3l-2 4z'/>\u003c/svg>\");--md-details-icon: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z'/>\u003c/svg>\")}:is(.admonition){display:flow-root;margin:1.5625em 0;padding:0 1.2rem;color:var(--fg);page-break-inside:avoid;background-color:var(--bg);border:0 solid black;border-inline-start-width:0.4rem;border-radius:0.2rem;box-shadow:0 0.2rem 1rem rgba(0, 0, 0, 0.05), 0 0 0.1rem rgba(0, 0, 0, 0.1)}@media print{:is(.admonition){box-shadow:none}}:is(.admonition)>*{box-sizing:border-box}:is(.admonition) :is(.admonition){margin-top:1em;margin-bottom:1em}:is(.admonition)>.tabbed-set:only-child{margin-top:0}html :is(.admonition)>:last-child{margin-bottom:1.2rem}a.admonition-anchor-link{display:none;position:absolute;left:-1.2rem;padding-right:1rem}a.admonition-anchor-link:link,a.admonition-anchor-link:visited{color:var(--fg)}a.admonition-anchor-link:link:hover,a.admonition-anchor-link:visited:hover{text-decoration:none}a.admonition-anchor-link::before{content:\"§\"}:is(.admonition-title,summary.admonition-title){position:relative;min-height:4rem;margin-block:0;margin-inline:-1.6rem -1.2rem;padding-block:0.8rem;padding-inline:4.4rem 1.2rem;font-weight:700;background-color:rgba(68, 138, 255, 0.1);print-color-adjust:exact;-webkit-print-color-adjust:exact;display:flex}:is(.admonition-title,summary.admonition-title) p{margin:0}html :is(.admonition-title,summary.admonition-title):last-child{margin-bottom:0}:is(.admonition-title,summary.admonition-title)::before{position:absolute;top:0.625em;inset-inline-start:1.6rem;width:2rem;height:2rem;background-color:#448aff;print-color-adjust:exact;-webkit-print-color-adjust:exact;mask-image:url('data:image/svg+xml;charset=utf-8,\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\u003c/svg>');-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\u003c/svg>');mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-size:contain;content:\"\"}:is(.admonition-title,summary.admonition-title):hover a.admonition-anchor-link{display:initial}details.admonition>summary.admonition-title::after{position:absolute;top:0.625em;inset-inline-end:1.6rem;height:2rem;width:2rem;background-color:currentcolor;mask-image:var(--md-details-icon);-webkit-mask-image:var(--md-details-icon);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-size:contain;content:\"\";transform:rotate(0deg);transition:transform 0.25s}details[open].admonition>summary.admonition-title::after{transform:rotate(90deg)}:is(.admonition):is(.admonish-note){border-color:#448aff}:is(.admonish-note)>:is(.admonition-title,summary.admonition-title){background-color:rgba(68, 138, 255, 0.1)}:is(.admonish-note)>:is(.admonition-title,summary.admonition-title)::before{background-color:#448aff;mask-image:var(--md-admonition-icon--admonish-note);-webkit-mask-image:var(--md-admonition-icon--admonish-note);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-abstract,.admonish-summary,.admonish-tldr){border-color:#00b0ff}:is(.admonish-abstract,.admonish-summary,.admonish-tldr)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 176, 255, 0.1)}:is(.admonish-abstract,.admonish-summary,.admonish-tldr)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--admonish-abstract);-webkit-mask-image:var(--md-admonition-icon--admonish-abstract);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-info,.admonish-todo){border-color:#00b8d4}:is(.admonish-info,.admonish-todo)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 184, 212, 0.1)}:is(.admonish-info,.admonish-todo)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--admonish-info);-webkit-mask-image:var(--md-admonition-icon--admonish-info);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-tip,.admonish-hint,.admonish-important){border-color:#00bfa5}:is(.admonish-tip,.admonish-hint,.admonish-important)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 191, 165, 0.1)}:is(.admonish-tip,.admonish-hint,.admonish-important)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--admonish-tip);-webkit-mask-image:var(--md-admonition-icon--admonish-tip);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-success,.admonish-check,.admonish-done){border-color:#00c853}:is(.admonish-success,.admonish-check,.admonish-done)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 200, 83, 0.1)}:is(.admonish-success,.admonish-check,.admonish-done)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00c853;mask-image:var(--md-admonition-icon--admonish-success);-webkit-mask-image:var(--md-admonition-icon--admonish-success);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-question,.admonish-help,.admonish-faq){border-color:#64dd17}:is(.admonish-question,.admonish-help,.admonish-faq)>:is(.admonition-title,summary.admonition-title){background-color:rgba(100, 221, 23, 0.1)}:is(.admonish-question,.admonish-help,.admonish-faq)>:is(.admonition-title,summary.admonition-title)::before{background-color:#64dd17;mask-image:var(--md-admonition-icon--admonish-question);-webkit-mask-image:var(--md-admonition-icon--admonish-question);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-warning,.admonish-caution,.admonish-attention){border-color:#ff9100}:is(.admonish-warning,.admonish-caution,.admonish-attention)>:is(.admonition-title,summary.admonition-title){background-color:rgba(255, 145, 0, 0.1)}:is(.admonish-warning,.admonish-caution,.admonish-attention)>:is(.admonition-title,summary.admonition-title)::before{background-color:#ff9100;mask-image:var(--md-admonition-icon--admonish-warning);-webkit-mask-image:var(--md-admonition-icon--admonish-warning);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-failure,.admonish-fail,.admonish-missing){border-color:#ff5252}:is(.admonish-failure,.admonish-fail,.admonish-missing)>:is(.admonition-title,summary.admonition-title){background-color:rgba(255, 82, 82, 0.1)}:is(.admonish-failure,.admonish-fail,.admonish-missing)>:is(.admonition-title,summary.admonition-title)::before{background-color:#ff5252;mask-image:var(--md-admonition-icon--admonish-failure);-webkit-mask-image:var(--md-admonition-icon--admonish-failure);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-danger,.admonish-error){border-color:#ff1744}:is(.admonish-danger,.admonish-error)>:is(.admonition-title,summary.admonition-title){background-color:rgba(255, 23, 68, 0.1)}:is(.admonish-danger,.admonish-error)>:is(.admonition-title,summary.admonition-title)::before{background-color:#ff1744;mask-image:var(--md-admonition-icon--admonish-danger);-webkit-mask-image:var(--md-admonition-icon--admonish-danger);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-bug){border-color:#f50057}:is(.admonish-bug)>:is(.admonition-title,summary.admonition-title){background-color:rgba(245, 0, 87, 0.1)}:is(.admonish-bug)>:is(.admonition-title,summary.admonition-title)::before{background-color:#f50057;mask-image:var(--md-admonition-icon--admonish-bug);-webkit-mask-image:var(--md-admonition-icon--admonish-bug);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-example){border-color:#7c4dff}:is(.admonish-example)>:is(.admonition-title,summary.admonition-title){background-color:rgba(124, 77, 255, 0.1)}:is(.admonish-example)>:is(.admonition-title,summary.admonition-title)::before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--admonish-example);-webkit-mask-image:var(--md-admonition-icon--admonish-example);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-quote,.admonish-cite){border-color:#9e9e9e}:is(.admonish-quote,.admonish-cite)>:is(.admonition-title,summary.admonition-title){background-color:rgba(158, 158, 158, 0.1)}:is(.admonish-quote,.admonish-cite)>:is(.admonition-title,summary.admonition-title)::before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--admonish-quote);-webkit-mask-image:var(--md-admonition-icon--admonish-quote);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}.navy :is(.admonition){background-color:var(--sidebar-bg)}.ayu :is(.admonition),.coal :is(.admonition){background-color:var(--theme-hover)}.rust :is(.admonition){background-color:var(--sidebar-bg);color:var(--sidebar-fg)}.rust .admonition-anchor-link:link,.rust .admonition-anchor-link:visited{color:var(--sidebar-fg)}"},{"filePath":"scss/nav-style.css","content":"@media only screen and (max-width:1365px){.sidetoc{display:none}}@media only screen and (min-width:1366px){main{position:relative}.sidetoc{margin-left:auto;margin-right:auto;left:calc(100% + (var(--content-max-width))/4 - 140px);position:absolute}.pagetoc{position:fixed;width:300px;height:calc(100vh - var(--menu-bar-height) - 0.67em * 4);overflow:auto}.pagetoc a{border-left:1px solid var(--sidebar-bg);color:var(--fg)!important;display:block;padding-bottom:5px;padding-top:5px;padding-left:10px;text-align:left;text-decoration:none}.pagetoc a:hover,.pagetoc a.active{background:var(--sidebar-bg);color:var(--sidebar-fg)!important}.pagetoc .active{background:var(--sidebar-bg);color:var(--sidebar-fg)}}@media only screen and (min-width: 1366px){#subpage-footer{margin-left:200px}}#subpage-footer{max-width:400px;margin-top:100px;color:var(--fg)!important;display:block}#subpage-footer>p{line-height:1.0em}#subpage-footer>ol{list-style:none outside none;padding-left:20px;line-height:1.6em;border-top:1px solid var(--sidebar-spacer);padding-top:10px}#subpage-footer ol>li.chapter-item{display:flex}#subpage-footer a.toggle{display:block;margin-left:auto;padding-left:20px;opacity:0.68}@media print{.sidetoc{display:none}#subpage-footer{display:none}}"},{"filePath":"scss/ss14.css","content":":root{--content-max-width: 850px;--sidebar-active: #e23229}.menu-title{color:#e23229}@media only screen and (min-width: 1366px){.content>main{margin-left:200px}}.part-title{font-size:150%;font-variant-caps:small-caps}.chapter li.chapter-item{margin-top:0.45em}.chapter>.chapter-item{padding-left:10px}.chapter>.chapter-item:first-child{font-weight:bold;font-size:200%;font-variant-caps:small-caps;padding-left:0px}.right-buttons>a>i{font-size:200%}.left-buttons>button>i{font-size:200%}td>ol,td>ul{margin:0;padding:0;padding-left:inherit}main h2,h3{margin-top:1.25em;border-bottom:1px solid var(--sidebar-spacer);padding-bottom:5px}main h1{border-bottom:3px solid var(--sidebar-spacer);padding-bottom:7px}main>section,main>pre,main h1,main h2,main h3{clear:both}.navy code{background:#0f0f12!important}"},{"filePath":"theme/compiled/ss14.css","content":"@charset \"UTF-8\";:root{--content-max-width: 850px;--sidebar-active: #e23229}.menu-title{color:#e23229}@media only screen and (min-width: 1366px){.content>main{margin-left:200px}}.part-title{font-size:150%;font-variant-caps:small-caps}.chapter li.chapter-item{margin-top:0.45em}.chapter>.chapter-item{padding-left:10px}.chapter>.chapter-item:first-child{font-weight:bold;font-size:200%;font-variant-caps:small-caps;padding-left:0px}.right-buttons>a>i{font-size:200%}.left-buttons>button>i{font-size:200%}td>ol,td>ul{margin:0;padding:0;padding-left:inherit}main h2,h3{margin-top:1.25em;border-bottom:1px solid var(--sidebar-spacer);padding-bottom:5px}main h1{border-bottom:3px solid var(--sidebar-spacer);padding-bottom:7px}main>section,main>pre,main h1,main h2,main h3{clear:both}.navy code{background:#0f0f12!important}html{--mermaid-sequence-actor-bg: #2d4c5a;--mermaid-sequence-actor-stroke: #2a3355;--mermaid-sequence-note-bg: #2d5a44;--mermaid-sequence-note-stroke: #253d31;--mermaid-sequence-rect-bg: #21273C}.light,.rust{--mermaid-sequence-actor-bg: #cde498;--mermaid-sequence-actor-stroke: #a6cf47;--mermaid-sequence-note-bg: #fff5ad;--mermaid-sequence-note-stroke: #aaaa33;--mermaid-sequence-rect-bg: #abe5f3}pre.mermaid svg[aria-roledescription=sequence] defs>#arrowhead>path{fill:var(--fg)!important;stroke:var(--fg)!important}pre.mermaid svg[aria-roledescription=sequence] .actor{fill:var(--mermaid-sequence-actor-bg)!important;stroke:var(--mermaid-sequence-actor-stroke)!important}pre.mermaid svg[aria-roledescription=sequence] .actor>tspan,pre.mermaid svg[aria-roledescription=sequence] .messageText,pre.mermaid svg[aria-roledescription=sequence] .loopText,pre.mermaid svg[aria-roledescription=sequence] .loopText>tspan,pre.mermaid svg[aria-roledescription=sequence] .noteText>tspan{fill:var(--fg)!important}pre.mermaid svg[aria-roledescription=sequence] .actor-line,pre.mermaid svg[aria-roledescription=sequence] .messageLine0,pre.mermaid svg[aria-roledescription=sequence] .messageLine1,pre.mermaid svg[aria-roledescription=sequence] .loopLine{stroke:var(--fg)!important}pre.mermaid svg[aria-roledescription=sequence] .note{fill:var(--mermaid-sequence-note-bg)!important;stroke:var(--mermaid-sequence-note-stroke)!important}pre.mermaid svg[aria-roledescription=sequence] .rect{fill:var(--mermaid-sequence-rect-bg)!important}:root{--md-admonition-icon--admonish-note: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z'/>\u003c/svg>\");--md-admonition-icon--admonish-abstract: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M17 9H7V7h10m0 6H7v-2h10m-3 6H7v-2h7M12 3a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m7 0h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z'/>\u003c/svg>\");--md-admonition-icon--admonish-info: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M13 9h-2V7h2m0 10h-2v-6h2m-1-9A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2z'/>\u003c/svg>\");--md-admonition-icon--admonish-tip: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M17.66 11.2c-.23-.3-.51-.56-.77-.82-.67-.6-1.43-1.03-2.07-1.66C13.33 7.26 13 4.85 13.95 3c-.95.23-1.78.75-2.49 1.32-2.59 2.08-3.61 5.75-2.39 8.9.04.1.08.2.08.33 0 .22-.15.42-.35.5-.23.1-.47.04-.66-.12a.58.58 0 0 1-.14-.17c-1.13-1.43-1.31-3.48-.55-5.12C5.78 10 4.87 12.3 5 14.47c.06.5.12 1 .29 1.5.14.6.41 1.2.71 1.73 1.08 1.73 2.95 2.97 4.96 3.22 2.14.27 4.43-.12 6.07-1.6 1.83-1.66 2.47-4.32 1.53-6.6l-.13-.26c-.21-.46-.77-1.26-.77-1.26m-3.16 6.3c-.28.24-.74.5-1.1.6-1.12.4-2.24-.16-2.9-.82 1.19-.28 1.9-1.16 2.11-2.05.17-.8-.15-1.46-.28-2.23-.12-.74-.1-1.37.17-2.06.19.38.39.76.63 1.06.77 1 1.98 1.44 2.24 2.8.04.14.06.28.06.43.03.82-.33 1.72-.93 2.27z'/>\u003c/svg>\");--md-admonition-icon--admonish-success: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='m9 20.42-6.21-6.21 2.83-2.83L9 14.77l9.88-9.89 2.83 2.83L9 20.42z'/>\u003c/svg>\");--md-admonition-icon--admonish-question: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10z'/>\u003c/svg>\");--md-admonition-icon--admonish-warning: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M13 14h-2V9h2m0 9h-2v-2h2M1 21h22L12 2 1 21z'/>\u003c/svg>\");--md-admonition-icon--admonish-failure: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M20 6.91 17.09 4 12 9.09 6.91 4 4 6.91 9.09 12 4 17.09 6.91 20 12 14.91 17.09 20 20 17.09 14.91 12 20 6.91z'/>\u003c/svg>\");--md-admonition-icon--admonish-danger: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M11 15H6l7-14v8h5l-7 14v-8z'/>\u003c/svg>\");--md-admonition-icon--admonish-bug: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M14 12h-4v-2h4m0 6h-4v-2h4m6-6h-2.81a5.985 5.985 0 0 0-1.82-1.96L17 4.41 15.59 3l-2.17 2.17a6.002 6.002 0 0 0-2.83 0L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8z'/>\u003c/svg>\");--md-admonition-icon--admonish-example: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M7 13v-2h14v2H7m0 6v-2h14v2H7M7 7V5h14v2H7M3 8V5H2V4h2v4H3m-1 9v-1h3v4H2v-1h2v-.5H3v-1h1V17H2m2.25-7a.75.75 0 0 1 .75.75c0 .2-.08.39-.21.52L3.12 13H5v1H2v-.92L4 11H2v-1h2.25z'/>\u003c/svg>\");--md-admonition-icon--admonish-quote: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M14 17h3l2-4V7h-6v6h3M6 17h3l2-4V7H5v6h3l-2 4z'/>\u003c/svg>\");--md-details-icon: url(\"data:image/svg+xml;charset=utf-8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\u003cpath d='M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z'/>\u003c/svg>\")}:is(.admonition){display:flow-root;margin:1.5625em 0;padding:0 1.2rem;color:var(--fg);page-break-inside:avoid;background-color:var(--bg);border:0 solid black;border-inline-start-width:0.4rem;border-radius:0.2rem;box-shadow:0 0.2rem 1rem rgba(0, 0, 0, 0.05), 0 0 0.1rem rgba(0, 0, 0, 0.1)}@media print{:is(.admonition){box-shadow:none}}:is(.admonition)>*{box-sizing:border-box}:is(.admonition) :is(.admonition){margin-top:1em;margin-bottom:1em}:is(.admonition)>.tabbed-set:only-child{margin-top:0}html :is(.admonition)>:last-child{margin-bottom:1.2rem}a.admonition-anchor-link{display:none;position:absolute;left:-1.2rem;padding-right:1rem}a.admonition-anchor-link:link,a.admonition-anchor-link:visited{color:var(--fg)}a.admonition-anchor-link:link:hover,a.admonition-anchor-link:visited:hover{text-decoration:none}a.admonition-anchor-link::before{content:\"§\"}:is(.admonition-title,summary.admonition-title){position:relative;min-height:4rem;margin-block:0;margin-inline:-1.6rem -1.2rem;padding-block:0.8rem;padding-inline:4.4rem 1.2rem;font-weight:700;background-color:rgba(68, 138, 255, 0.1);print-color-adjust:exact;-webkit-print-color-adjust:exact;display:flex}:is(.admonition-title,summary.admonition-title) p{margin:0}html :is(.admonition-title,summary.admonition-title):last-child{margin-bottom:0}:is(.admonition-title,summary.admonition-title)::before{position:absolute;top:0.625em;inset-inline-start:1.6rem;width:2rem;height:2rem;background-color:#448aff;print-color-adjust:exact;-webkit-print-color-adjust:exact;mask-image:url('data:image/svg+xml;charset=utf-8,\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\u003c/svg>');-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\u003c/svg>');mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-size:contain;content:\"\"}:is(.admonition-title,summary.admonition-title):hover a.admonition-anchor-link{display:initial}details.admonition>summary.admonition-title::after{position:absolute;top:0.625em;inset-inline-end:1.6rem;height:2rem;width:2rem;background-color:currentcolor;mask-image:var(--md-details-icon);-webkit-mask-image:var(--md-details-icon);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-size:contain;content:\"\";transform:rotate(0deg);transition:transform 0.25s}details[open].admonition>summary.admonition-title::after{transform:rotate(90deg)}:is(.admonition):is(.admonish-note){border-color:#448aff}:is(.admonish-note)>:is(.admonition-title,summary.admonition-title){background-color:rgba(68, 138, 255, 0.1)}:is(.admonish-note)>:is(.admonition-title,summary.admonition-title)::before{background-color:#448aff;mask-image:var(--md-admonition-icon--admonish-note);-webkit-mask-image:var(--md-admonition-icon--admonish-note);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-abstract,.admonish-summary,.admonish-tldr){border-color:#00b0ff}:is(.admonish-abstract,.admonish-summary,.admonish-tldr)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 176, 255, 0.1)}:is(.admonish-abstract,.admonish-summary,.admonish-tldr)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--admonish-abstract);-webkit-mask-image:var(--md-admonition-icon--admonish-abstract);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-info,.admonish-todo){border-color:#00b8d4}:is(.admonish-info,.admonish-todo)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 184, 212, 0.1)}:is(.admonish-info,.admonish-todo)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--admonish-info);-webkit-mask-image:var(--md-admonition-icon--admonish-info);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-tip,.admonish-hint,.admonish-important){border-color:#00bfa5}:is(.admonish-tip,.admonish-hint,.admonish-important)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 191, 165, 0.1)}:is(.admonish-tip,.admonish-hint,.admonish-important)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--admonish-tip);-webkit-mask-image:var(--md-admonition-icon--admonish-tip);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-success,.admonish-check,.admonish-done){border-color:#00c853}:is(.admonish-success,.admonish-check,.admonish-done)>:is(.admonition-title,summary.admonition-title){background-color:rgba(0, 200, 83, 0.1)}:is(.admonish-success,.admonish-check,.admonish-done)>:is(.admonition-title,summary.admonition-title)::before{background-color:#00c853;mask-image:var(--md-admonition-icon--admonish-success);-webkit-mask-image:var(--md-admonition-icon--admonish-success);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-question,.admonish-help,.admonish-faq){border-color:#64dd17}:is(.admonish-question,.admonish-help,.admonish-faq)>:is(.admonition-title,summary.admonition-title){background-color:rgba(100, 221, 23, 0.1)}:is(.admonish-question,.admonish-help,.admonish-faq)>:is(.admonition-title,summary.admonition-title)::before{background-color:#64dd17;mask-image:var(--md-admonition-icon--admonish-question);-webkit-mask-image:var(--md-admonition-icon--admonish-question);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-warning,.admonish-caution,.admonish-attention){border-color:#ff9100}:is(.admonish-warning,.admonish-caution,.admonish-attention)>:is(.admonition-title,summary.admonition-title){background-color:rgba(255, 145, 0, 0.1)}:is(.admonish-warning,.admonish-caution,.admonish-attention)>:is(.admonition-title,summary.admonition-title)::before{background-color:#ff9100;mask-image:var(--md-admonition-icon--admonish-warning);-webkit-mask-image:var(--md-admonition-icon--admonish-warning);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-failure,.admonish-fail,.admonish-missing){border-color:#ff5252}:is(.admonish-failure,.admonish-fail,.admonish-missing)>:is(.admonition-title,summary.admonition-title){background-color:rgba(255, 82, 82, 0.1)}:is(.admonish-failure,.admonish-fail,.admonish-missing)>:is(.admonition-title,summary.admonition-title)::before{background-color:#ff5252;mask-image:var(--md-admonition-icon--admonish-failure);-webkit-mask-image:var(--md-admonition-icon--admonish-failure);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-danger,.admonish-error){border-color:#ff1744}:is(.admonish-danger,.admonish-error)>:is(.admonition-title,summary.admonition-title){background-color:rgba(255, 23, 68, 0.1)}:is(.admonish-danger,.admonish-error)>:is(.admonition-title,summary.admonition-title)::before{background-color:#ff1744;mask-image:var(--md-admonition-icon--admonish-danger);-webkit-mask-image:var(--md-admonition-icon--admonish-danger);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-bug){border-color:#f50057}:is(.admonish-bug)>:is(.admonition-title,summary.admonition-title){background-color:rgba(245, 0, 87, 0.1)}:is(.admonish-bug)>:is(.admonition-title,summary.admonition-title)::before{background-color:#f50057;mask-image:var(--md-admonition-icon--admonish-bug);-webkit-mask-image:var(--md-admonition-icon--admonish-bug);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-example){border-color:#7c4dff}:is(.admonish-example)>:is(.admonition-title,summary.admonition-title){background-color:rgba(124, 77, 255, 0.1)}:is(.admonish-example)>:is(.admonition-title,summary.admonition-title)::before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--admonish-example);-webkit-mask-image:var(--md-admonition-icon--admonish-example);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}:is(.admonition):is(.admonish-quote,.admonish-cite){border-color:#9e9e9e}:is(.admonish-quote,.admonish-cite)>:is(.admonition-title,summary.admonition-title){background-color:rgba(158, 158, 158, 0.1)}:is(.admonish-quote,.admonish-cite)>:is(.admonition-title,summary.admonition-title)::before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--admonish-quote);-webkit-mask-image:var(--md-admonition-icon--admonish-quote);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-repeat:no-repeat}.navy :is(.admonition){background-color:var(--sidebar-bg)}.ayu :is(.admonition),.coal :is(.admonition){background-color:var(--theme-hover)}.rust :is(.admonition){background-color:var(--sidebar-bg);color:var(--sidebar-fg)}.rust .admonition-anchor-link:link,.rust .admonition-anchor-link:visited{color:var(--sidebar-fg)}@media only screen and (max-width: 1365px){.sidetoc{display:none}}@media only screen and (min-width: 1366px){main{position:relative}.sidetoc{margin-left:auto;margin-right:auto;left:calc(100% + (var(--content-max-width)) / 4 - 140px);position:absolute}.pagetoc{position:fixed;width:300px;height:calc(100vh - var(--menu-bar-height) - 2.68em);overflow:auto}.pagetoc a{border-left:1px solid var(--sidebar-bg);color:var(--fg)!important;display:block;padding-bottom:5px;padding-top:5px;padding-left:10px;text-align:left;text-decoration:none}.pagetoc a:hover,.pagetoc a.active{background:var(--sidebar-bg);color:var(--sidebar-fg)!important}.pagetoc .active{background:var(--sidebar-bg);color:var(--sidebar-fg)}}@media only screen and (min-width: 1366px){#subpage-footer{margin-left:200px}}#subpage-footer{max-width:400px;margin-top:100px;color:var(--fg)!important;display:block}#subpage-footer>p{line-height:1em}#subpage-footer>ol{list-style:none outside none;padding-left:20px;line-height:1.6em;border-top:1px solid var(--sidebar-spacer);padding-top:10px}#subpage-footer ol>li.chapter-item{display:flex}#subpage-footer a.toggle{display:block;margin-left:auto;padding-left:20px;opacity:0.68}@media print{.sidetoc{display:none}#subpage-footer{display:none}}"},{"filePath":"theme/tomorrow-night.css","content":"/*!\n Theme: GitHub Dark Dimmed\n Description: Dark dimmed theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Colors taken from GitHub's CSS\n*/.hljs{color:#adbac7;background:#22272e;display:block;overflow-x:auto}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#6cb6ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-comment,.hljs-code,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:bold}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:bold}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b}"}],"page":{"pagePath":"en/space-station-14/departments/service/proposals/joker_roles","slug":"/en/space-station-14/departments/service/proposals/joker_roles","pageMetadata":{"title":"Joker Roles","description":null,"href":"/en/space-station-14/departments/service/proposals/joker_roles"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={em:`em`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Designers`}),_jsx(_components.th,{children:`Implemented`}),_jsx(_components.th,{children:`GitHub Links`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`mith`}),_jsx(_components.td,{children:`:information_source: Open PR`}),_jsx(_components.td,{children:`TBD`})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`The core idea is adding a diverse selection of low-stakes roleplay-inclined gimmick jobs. At roundstart 1-2 (map dependent), will be randomly selected from the larger pool, will have a room bespoke to the job appear in a pre-established ‘template room’ on the station, and will become available for players to take.`}),`\n`,_jsx(Heading,{level:`2`,id:`background`,children:`Background`}),`\n`,_jsx(_components.p,{children:`Gimmick jobs are a pretty common thing in Space Man Games; various servers in ss13 have barbers, boxers, clerks, journalists, psychiatrists. In my opinion and experience these jobs are divisive; there’s often a handful of people who enjoy them sometimes, and a much larger contingent of people who point out that the roles are dumb, often completely unintegrated into the larger mechanical ecosystem and amount to little more than a greyshirt in a costume.`}),`\n`,_jsx(_components.p,{children:`I think the key is novelty; these jobs are often fun to play or interact with once or twice, but quickly lose their luster. This proposal is intended to allow for the kinds of fun roles people want to play one time, but probably wouldn’t play every round as, without creating role bloat or half-baked jobs that people just use as assistant+. This would also be a good, low-stakes way to trial new roles, or put in roles that are kinda stupid conceptually.`}),`\n`,_jsx(Heading,{level:`2`,id:`details`,children:`Details`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/jokerroles/lil_room.png?fit=max\u0026auto=format\u0026n=ziQKzpWpMFQkx6ZJ\u0026q=85\u0026s=05f46270b59295013bd2c707a060e15b`,alt:`lil_room.png`,\"data-og-width\":`450`,width:`450`,\"data-og-height\":`515`,height:`515`,\"data-path\":`images/jokerroles/lil_room.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/jokerroles/lil_room.png?w=280\u0026fit=max\u0026auto=format\u0026n=ziQKzpWpMFQkx6ZJ\u0026q=85\u0026s=9fe4f2dff1bf0472a09603528b8a3eb2 280w, https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/jokerroles/lil_room.png?w=560\u0026fit=max\u0026auto=format\u0026n=ziQKzpWpMFQkx6ZJ\u0026q=85\u0026s=bd4da14c6ba3851411cf56db5a28054b 560w, https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/jokerroles/lil_room.png?w=840\u0026fit=max\u0026auto=format\u0026n=ziQKzpWpMFQkx6ZJ\u0026q=85\u0026s=073427da9b214bc7895481fd01bb25fd 840w, https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/jokerroles/lil_room.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ziQKzpWpMFQkx6ZJ\u0026q=85\u0026s=d41e0f79cd23a96021e0a640ed09ed50 1100w, https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/jokerroles/lil_room.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ziQKzpWpMFQkx6ZJ\u0026q=85\u0026s=b0dc346188443c7953bffd7c3dd8c500 1650w, https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/jokerroles/lil_room.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ziQKzpWpMFQkx6ZJ\u0026q=85\u0026s=2a6111993d45ed4ced7c35729174eccc 2500w`}),`\n`,_jsx(_components.p,{children:`These little rooms right here, the kind that you have in hallways, often near arrivals, would be the mechanical basis of the implementation. Similarly to how tg13’s holodeck works, the idea would be to, on roundstart, swap out the contents of the room with one of a number of pre-designed prefabs. The walls should also be included in the prefab, as this way windows, counters etc can be added or removed. If joker roles are disabled by config, or for some reason don’t spawn, the room should default to a standard Vacant Office layout. I’d like to specify that I do like these rooms, and dont think this should replace all of them - maybe we could make a few more scattered about.`}),`\n`,_jsx(_components.p,{children:`The rooms in question would be unique to the job. I’ll include a list of joker roles I think we should have below, but some simple examines might be a veteranarian would have a simple surgery, some basic meds, some animal boxes and maybe a defib locker; a private investigator might have a desk with a bottle of whiskey, some glasses, a wardrobe with a couple outfits and forensic equipment, file cabinets, and detective-carpeting; a store clerk could have a shutterable windoor counter, sellable stock, a locker with some cash. In this way, each role would have their own slice of the station, with access to equipment they would be able to use in a way that feels integrated and intentional.`}),`\n`,_jsx(_components.p,{children:`I can see two ways this could work across maps; firstly, the lower effort method, would be to have standard map-agnostic room templates with a matching footprint - all the mapper would need to do is ensure that the room matches the ‘joker room’ dimensions - say 6x4 or smth - and mark the room out somehow, and it would load the same room contents for each type of room across whichever station it’s on. This would be low-maintenence and scalable, wouldn’t ask much compromise from the mappers, and would (presumably) be simpler to implement.`}),`\n`,_jsx(_components.p,{children:`The second implementation would be that a station mapper can opt to make a joker room template distinct from the default footprint, and would then create a bespoke version of each of the job-rooms that would fit into that template specifically. This would allow for more variety and freedom, with any given joker role having a few different room styles across different stations, but this could also work alongside the simpler method as a default.`}),`\n`,_jsx(_components.p,{children:`In terms of job selection, this would work similarly to how station-dependent jobs work right now; players can access the full list of joker roles in the job preference menu, specify their interest in the role, at roundstart the jokers would be picked prior to job assignment, and the jobs would be entered into the selection process as normal, using a spawn point within the room. If a role goes untaken in the initial assignment, it’ll be available on the join menu. The jobs will include their own access level - if possible, this access would be dynamic; only appearing on the HoP console on rounds where the relevant job is selected, this will control access to any lockers and doors in the room.`}),`\n`,_jsx(_components.p,{children:`If mappers want to go Sicko Mode, template rooms could be placed in and around other departments with a selection of roles from the larger list they can select - for example psychiatrist, veterinarian or plastic surgeon rooms could spawn in or around medbay. If this were the case, I’d suggest limiting the numbers so if a role spawns in a department-specific position, a generic template would remain empty so as not to tip the scales.`}),`\n`,_jsx(_components.p,{children:`Most of these roles equipment could be designed from existing clothing and items; while in some cases it might be fun to add new items for them, it absolutely wouldn’t require any item bloat and could add some more use for items that don’t see much use currently.`}),`\n`,_jsxs(_components.p,{children:[`Seeing as some of the jobs are a little abstract, it would be good to include a `,_jsx(_components.em,{children:`brief`}),` flavour text on spawn to outline what the job is and, probably more importantly, what it isn’t.`]}),`\n`,_jsx(Heading,{level:`2`,id:`examples`,children:`Examples`}),`\n`,_jsx(_components.p,{children:`Here’s some ideas and brief concepts for some of the roles that I think would work well here.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Clerk`})}),`\n`,_jsx(_components.p,{children:`Room contains lockable storage for sellable goods of moderate utility, a safe, a desk with some basic paperwork supplies, and a front desk with a windoor and button-toggle shutters. Items in storage could be drawn from a random pool or fixed, but would be maint-loot tier; yellow gloves, syringes, crowbars, white medkits, toolbelts, plushes, nonlethal ammo. Intended playstyle would be trading and upselling until you’re buying and selling items of genuine value with a safe full of spesos. Could spawn in pretty much any outfit, so long as it looks civillian.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Plastic Surgeon`})}),`\n`,_jsx(_components.p,{children:`Room would be a surgery with all the standard tools, and some basic meds. Anaesthetic tanks, medical records console, patient locker etc. This role would obviously only make sense when we’ve got newmed. Intended playstyle would be performing minor or stupid surgeries on-demand. Would spawn in some variant of the medical outfit, intended to distinguish the surgeon as private and independent from medbay at large.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Boxer`})}),`\n`,_jsx(_components.p,{children:`Locker room with a shower, seating, some bruise packs, change of shorts and gloves, sink with a mirror etc. In a larger joker template it could include a small boxing ring, but would be unfeasable if the room is as small as I’m picturing the defaults. Intended playstyle is the same as the current boxer really, would spawn in shorts and gloves.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Magician`})}),`\n`,_jsx(_components.p,{children:`Curtained room with cool carpets and lockers - might include a teleporting locker. Starts with a number of prank items, some chems for making smoke etc, magic wand, a small animal of some kind. Intended playstyle is basically a variant clown, putting on shows etc. Spawns with a top hat etc you know how a magician dresses.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Gambler`})}),`\n`,_jsx(_components.p,{children:`Carpeted room with some of those green tables, decent starting cash, dice, arcade machine maybe, small bar with drinks. Spawns in a hawaiian shirt with obnoxious sunglasses. Intended playstyle is gambling away that money obviously.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Private Investigator`})}),`\n`,_jsx(_components.p,{children:`Similar to detective office with different noir outfits and no gun. A desk with whiskey and glasses, CCTV monitor, forensic equipment, camera (when we get them), audio recorder, bureaucracy equipment, one of those emergency sec radios but not an earpiece, evidence bags etc. Intended playstyle is a second sleuth on the station, can be hired by crewmates or can simply try to do the detectives job for him, but critically is not a member of sec and isnt authorised to carry a gun or anything. Spawns in a suit maybe, something noir that isn’t one of the detective’s.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Journalist`})}),`\n`,_jsx(_components.p,{children:`This is basically already a thing on some maps; room with paper and desk, camera, outfits etc etc. You know how this one works.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Veterinarian`})}),`\n`,_jsx(_components.p,{children:`Stripped down doctors office with some bruise packs, ointment, and bottles of watered-down pills. A surgical table, some chairs for pet owners to sit in, animal boxes and wall defib. Intended playstyle being a doctor for animals. Spawns in something medbay-adjacent.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Centcomm Liason`})}),`\n`,_jsx(_components.p,{children:`Room is a fancy office with a wardrobe, nice desk, centcomm carpets, fax machine, camera console. Isn’t a member of command and doesn’t spawn with access, is there to monitor the station and report to centcomm, not to take command of the station unless it happens organically. Spawns in a centcomm outfit.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Psychiatrist`})}),`\n`,_jsx(_components.p,{children:`Room is a psych office. Again, this is a job we have currently that I think would benefit from not being a permanent fixture, but would function the same.`}),`\n`,_jsx(_components.p,{children:`Anyway that’s all I got for now. I put it in service cos its mostly service roles.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Joker Roles","description":null,"href":"/en/space-station-14/departments/service/proposals/joker_roles"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Background","slug":"background","depth":2,"children":[]},{"title":"Details","slug":"details","depth":2,"children":[]},{"title":"Examples","slug":"examples","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/meowmew/4533fb1122e7a9ba/scripts/mermaid-init.js","/_mintlify/custom/meowmew/0d2b6f2361e7e0ce/scripts/mermaid.min.js","/_mintlify/custom/meowmew/533f8f6b18da8f76/scripts/nav-additions.js","/_mintlify/custom/meowmew/8019278514f6da6f/theme/highlight.js"],"subdomain":"meowmew","siteName":"The Robust Book","title":"Joker Roles - The Robust Book","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en/space-station-14/departments/service/proposals/joker_roles","matchLevel":0},"ru":{"href":"/ru/space-station-14/departments/service/proposals/joker_roles","matchLevel":1}}},"lastModified":"2026-06-21T04:37:22.927Z","gitLastModified":"2026-06-20T23:11:54.000Z","originalFileLocation":"en/space-station-14/departments/service/proposals/joker_roles.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"The Robust Book\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Joker Roles - The Robust Book\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"The Robust Book\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://meowmew.mintlify.site/_mintlify/api/og/v2?division=Librarian+Gameplay\u0026amp;title=Joker+Roles\u0026amp;theme=1529c16aab5c8e1eed2071a6\u0026amp;signature=21fd0027bd62e8c0758272d141ebbbffa82cf2656908402ce3dd13631e6766ab\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Joker Roles - The Robust Book\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://meowmew.mintlify.site/_mintlify/api/og/v2?division=Librarian+Gameplay\u0026amp;title=Joker+Roles\u0026amp;theme=1529c16aab5c8e1eed2071a6\u0026amp;signature=21fd0027bd62e8c0758272d141ebbbffa82cf2656908402ce3dd13631e6766ab\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/meowmew/kl6Dgu3Yq11cCyk8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"The Robust Book\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#b195d5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/space-station-14/departments/service/proposals/joker_roles.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://docs.ss14.art/ru/space-station-14/departments/service/proposals/joker_roles\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.ss14.art/#organization\",\"name\":\"The Robust Book\",\"url\":\"https://docs.ss14.art\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.ss14.art#website\",\"name\":\"The Robust Book\",\"url\":\"https://docs.ss14.art\",\"publisher\":{\"@id\":\"https://docs.ss14.art/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles#webpage\",\"url\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles\",\"name\":\"Joker Roles\",\"dateModified\":\"2026-06-20T23:11:54.000Z\",\"isPartOf\":{\"@id\":\"https://docs.ss14.art#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Space Station 14\",\"item\":\"https://docs.ss14.art/en/space-station-14/core-design/design-principles\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Departments\",\"item\":\"https://docs.ss14.art/en/space-station-14/departments\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Service\",\"item\":\"https://docs.ss14.art/en/space-station-14/departments/service\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"PR Guidelines\",\"item\":\"https://docs.ss14.art/en/space-station-14/departments/service/guidelines\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Plant Genetics\",\"item\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/plant-genetics\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"Librarian Gameplay\",\"item\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/theshued-librarian-gameplay\"},{\"@type\":\"ListItem\",\"position\":7,\"name\":\"Joker Roles\",\"item\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles#article\",\"headline\":\"Joker Roles\",\"name\":\"Joker Roles\",\"url\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ss14.art/en/space-station-14/departments/service/proposals/joker_roles#webpage\"},\"dateModified\":\"2026-06-20T23:11:54.000Z\",\"publisher\":{\"@id\":\"https://docs.ss14.art/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.ss14.art#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"The Robust Book\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"The Robust Book","nav":{"global":null,"languages":[{"language":"en","groups":[{"group":"Home","pages":[{"title":"The Robust Book","href":""}]},{"group":"Meta","pages":[{"title":"Guide to Editing Docs","href":"/en/meta/guide-to-editing-docs"},{"title":"Docs Example Page","href":"/en/meta/docs-example-page"},{"title":"Docs are for Discoverability","href":"/en/meta/docs-are-for-discoverability"}]},{"group":"General Development","pages":[{"group":"Setup","root":{"title":"Setup","href":"/en/general-development/setup"},"pages":[{"title":"How do I code? (I don't know how to program.)","href":"/en/general-development/setup/howdoicode"},{"title":"Setting up a Development Environment","href":"/en/general-development/setup/setting-up-a-development-environment"},{"title":"Git for the SS14 Developer","href":"/en/general-development/setup/git-for-the-ss14-developer"},{"title":"Server Hosting Tutorial","href":"/en/general-development/setup/server-hosting-tutorial"}]},{"group":"Codebase Info","root":{"title":"Codebase Info","href":"/en/general-development/codebase-info"},"pages":[{"title":"Conventions","href":"/en/general-development/codebase-info/conventions"},{"title":"Pull Request Guidelines","href":"/en/general-development/codebase-info/pull-request-guidelines"},{"title":"Codebase Organization","href":"/en/general-development/codebase-info/codebase-organization"},{"title":"Acronyms and Nomenclature","href":"/en/general-development/codebase-info/acronyms-and-nomenclature"},{"title":"Release Process","href":"/en/general-development/codebase-info/releases"}]},{"group":"Tips","root":{"title":"Tips","href":"/en/general-development/tips"},"pages":[{"title":"Beginner FAQ","href":"/en/general-development/tips/beginner-faq"},{"title":"Troubleshooting FAQ","href":"/en/general-development/tips/troubleshooting-faq"},{"title":"Debugging Tools","href":"/en/general-development/tips/debugging-tools"},{"title":"PRs With Engine Changes","href":"/en/general-development/tips/prs-with-engine-changes"},{"title":"Writing Guidebook Entries","href":"/en/general-development/tips/writing-guidebook-entries"},{"title":"Config File Reference","href":"/en/general-development/tips/config-file-reference"},{"title":"YAML Crash Course","href":"/en/general-development/tips/yaml-crash-course"},{"title":"Forking Tips","href":"/en/general-development/tips/forking"}]},{"group":"Feature Proposals","root":{"title":"Feature Proposals","href":"/en/general-development/feature-proposals"},"pages":[{"title":"Short, Properly Capitalized Title","href":"/en/templates/proposal"},{"title":"Expected Feature Proposal Decorum","href":"/en/general-development/feature-proposals/expected-feature-proposal-decorum"}]},{"title":"Game Area Design Documents \u0026 Template","href":"/en/general-development/game-area-design-doc"},{"title":"Contributing Translations","href":"/en/general-development/contributing-translations"},{"title":"Github Moderation Guidelines","href":"/en/general-development/github-moderation-guidelines"}]},{"group":"SS14 By Example","pages":[{"title":"Introduction to SS14 By Example","href":"/en/ss14-by-example/introduction-to-ss14-by-example"},{"title":"Adding a Simple Bike Horn","href":"/en/ss14-by-example/adding-a-simple-bikehorn"},{"group":"Making a Sprite Dynamic","root":{"title":"Making a Sprite Dynamic","href":"/en/ss14-by-example/making-a-sprite-dynamic"},"pages":[{"title":"Porting Appearance Visualizers","href":"/en/ss14-by-example/making-a-sprite-dynamic/porting-appearance-visualizers"}]},{"title":"Basic Networking and You","href":"/en/ss14-by-example/basic-networking-and-you"},{"title":"Guide to Prediction","href":"/en/ss14-by-example/prediction-guide"},{"title":"Fluent \u0026 Localization","href":"/en/ss14-by-example/fluent-and-localization"},{"group":"UI and You","root":{"title":"UI and You","href":"/en/ss14-by-example/ui-and-you"},"pages":[{"title":"UI Cookbook","href":"/en/ss14-by-example/ui-and-you/ui-cookbook"}]},{"title":"UI Survival Guide","href":"/en/ss14-by-example/ui-survival-guide"},{"title":"HOW TO CONVERT A SPECIES TO NUBODY","href":"/en/ss14-by-example/converting-oldbody-to-nubody"}]},{"group":"Robust Toolbox","pages":[{"group":"ECS","root":{"title":"ECS","href":"/en/robust-toolbox/ecs"},"pages":[{"title":"Net Entities","href":"/en/robust-toolbox/netcode/net-entities"},{"title":"RobustToolbox Connection Sequence","href":"/en/robust-toolbox/netcode/connection-sequence"}]},{"group":"Coordinate Systems","root":{"title":"Coordinate Systems","href":"/en/robust-toolbox/coordinate-systems"},"pages":[{"title":"Entity Coordinates","href":"/en/robust-toolbox/transform/entity-coordinates"},{"title":"Physics","href":"/en/robust-toolbox/transform/physics"},{"title":"Grids","href":"/en/robust-toolbox/transform/grids"}]},{"group":"Toolshed","root":{"title":"Toolshed","href":"/en/robust-toolbox/toolshed"},"pages":[{"title":"Variables","href":"/en/robust-toolbox/toolshed/variables"},{"title":"Blocks","href":"/en/robust-toolbox/toolshed/blocks"},{"title":"Types","href":"/en/robust-toolbox/toolshed/types"},{"group":"Commands","root":{"title":"Commands","href":"/en/robust-toolbox/toolshed/commands"},"pages":[{"title":"Emplace command","href":"/en/robust-toolbox/toolshed/commands/emplace"},{"title":"Entity commands","href":"/en/robust-toolbox/toolshed/commands/entity-control"},{"title":"General","href":"/en/robust-toolbox/toolshed/commands/general"},{"title":"Miscellanious","href":"/en/robust-toolbox/toolshed/commands/misc"}]},{"title":"Toolshed Examples","href":"/en/robust-toolbox/toolshed/toolshed-examples"},{"group":"Development","root":{"title":"Development","href":"/en/robust-toolbox/toolshed/development"},"pages":[{"title":"Toolshed and (S)CSI","href":"/en/robust-toolbox/toolshed/toolshed-and-scsi"},{"title":"Environments","href":"/en/robust-toolbox/toolshed/environments"},{"title":"Invocation contexts","href":"/en/robust-toolbox/toolshed/invocation-contexts"}]}]},{"group":"User Interface","root":{"title":"User Interface","href":"/en/robust-toolbox/user-interface"},"pages":[{"title":"Container Controls","href":"/en/robust-toolbox/user-interface/containers"}]},{"group":"IoC","root":{"title":"IoC","href":"/en/robust-toolbox/ioc"},"pages":[{"title":"Lighting \u0026 FOV","href":"/en/robust-toolbox/rendering/lighting-and-fov"},{"title":"Shaders","href":"/en/robust-toolbox/rendering/shaders"},{"title":"Sprites \u0026 Icons","href":"/en/robust-toolbox/rendering/sprites-and-icons"}]},{"title":"Serialization","href":"/en/robust-toolbox/serialization"},{"title":"Sandboxing","href":"/en/robust-toolbox/sandboxing"},{"title":"Content Manifests","href":"/en/robust-toolbox/content-manifests"},{"title":"User Data Directory","href":"/en/robust-toolbox/user-data-directory"},{"title":"Robust Modules","href":"/en/robust-toolbox/robust-modules"},{"title":"Server HTTP API","href":"/en/robust-toolbox/server-http-api"},{"title":"Build Configurations","href":"/en/robust-toolbox/build-configurations"},{"title":"Preprocessor Defines","href":"/en/robust-toolbox/preprocessor-defines"},{"title":"MIDI","href":"/en/robust-toolbox/midi"},{"title":"Automatic Client Zip (ACZ)","href":"/en/robust-toolbox/acz"},{"title":"Asset Packaging","href":"/en/robust-toolbox/asset-packaging"},{"title":null,"href":"/en/robust-toolbox/publishing-robusttoolbox"},{"title":"Versioning \u0026 Compatibility","href":"/en/robust-toolbox/versioning-compatibility"}]},{"group":"Space Station 14","pages":[{"group":"Core Design","root":{"title":"Core Game Design","href":"/en/space-station-14/core-design"},"pages":[{"title":"Design Principles","href":"/en/space-station-14/core-design/design-principles"}]},{"title":"Accessibility","href":"/en/space-station-14/accessibility"},{"title":"Admin Tooling","href":"/en/space-station-14/admin-tools"},{"title":"Art","href":"/en/space-station-14/art"},{"group":"Character/Species","root":{"title":"Character/Species","href":"/en/space-station-14/characters-species"},"pages":[{"group":"PR Guidelines","root":{"title":"Species Guidelines","href":"/en/space-station-14/character-species/guidelines"},"pages":[{"title":"Vulpkanin Species","href":"/en/space-station-14/character-species/proposals/vulpkanin"}]}]},{"title":"Combat Design Document","href":"/en/space-station-14/combat"},{"group":"Mapping","root":{"title":"Mapping","href":"/en/space-station-14/mapping"},"pages":[{"title":"PR Guildlines","href":"/en/space-station-14/mapping/guidelines"},{"group":"Dungeons","root":{"title":"Dungeons","href":"/en/space-station-14/mapping/dungeons"},"pages":[{"title":"Mapping","href":"/en/space-station-14/mapping/guides/general-guide"}]}]},{"group":"Player Interaction","root":{"title":"Player Interactions","href":"/en/space-station-14/player-interaction"},"pages":[{"title":"Cartridge Loaders","href":"/en/space-station-14/player-interaction/cartridge-loaders"},{"group":"Accent Guidelines","root":{"title":"Accent Guidelines","href":"/en/space-station-14/player-interaction/accent-guidelines"},"pages":[{"title":null,"href":"/en/space-station-14/player-interaction/proposals/pda-messaging"},{"title":"Grid Inventory","href":"/en/space-station-14/player-interaction/proposals/grid-inventory"}]}]},{"title":"Roleplay/Lore","href":"/en/space-station-14/roleplay-lore"},{"group":"Roundflow","root":{"title":"Round Flow","href":"/en/space-station-14/round-flow"},"pages":[{"group":"Antagonists","root":{"title":"Antagonist Design","href":"/en/space-station-14/round-flow/antagonists"},"pages":[{"title":"Traitors","href":"/en/space-station-14/round-flow/antagonists/traitors"}]}]},{"group":"User Interface","root":{"title":"User Interface","href":"/en/space-station-14/user-interface"},"pages":[{"title":"Diegetic Statpanels (aka PDA Statpanels)","href":"/en/space-station-14/user-interface/proposals/statpanels"},{"title":"Playtime Reminders","href":"/en/space-station-14/user-interface/proposals/playtimereminders"}]},{"group":"Departments","root":{"title":"Departments","href":"/en/space-station-14/departments"},"pages":[{"group":"Atmos","root":{"title":"Atmospherics","href":"/en/space-station-14/departments/atmos"},"pages":[{"group":"PR Guidelines","root":{"title":"PR Guidelines","href":"/en/space-station-14/departments/atmos/guidelines"},"pages":[{"title":"Atmospherics Design Choices","href":"/en/space-station-14/departments/atmos/atmos-design-choices"}]}]},{"group":"Cargo","root":{"title":"Cargo Department Design Document","href":"/en/space-station-14/departments/cargo"},"pages":[{"title":"Cargo Mail Delivery","href":"/en/space-station-14/departments/cargo/proposals/mail-delivery"},{"group":"Salvage Proposal","root":{"title":"Salvage","href":"/en/space-station-14/departments/cargo/proposals/salvage-proposal"},"pages":[{"title":null,"href":"/en/space-station-14/departments/cargo/proposals/salvage-postmortem"}]}]},{"title":"Command","href":"/en/space-station-14/departments/command"},{"group":"Engineering","root":{"title":"Engineering","href":"/en/space-station-14/departments/engineering"},"pages":[{"group":"Pow3r","root":{"title":"Low Power Handling (Pow3r)","href":"/en/space-station-14/departments/engineering/pow3r"},"pages":[{"title":"Engine Containment Safeties","href":"/en/space-station-14/departments/engineering/engine-containment"}]}]},{"group":"Medical","root":{"title":"Medical","href":"/en/space-station-14/departments/medical"},"pages":[{"title":"Medical Work Group Document","href":"/en/space-station-14/departments/medical/medical-workgroup"},{"title":"Chemistry","href":"/en/space-station-14/departments/medical/chemistry"}]},{"group":"Science","root":{"title":"Science","href":"/en/space-station-14/departments/science"},"pages":[{"group":"Anomaly Cores","root":{"title":"Anomaly Cores and the G.O.R.I.L.L.A Gauntlets","href":"/en/space-station-14/departments/science/anomaly-cores"},"pages":[{"title":"XenoArch Redux [3MOArch]","href":"/en/space-station-14/departments/science/proposals/xenoarch-redux"},{"title":"Xenobiology (Mutant Lab)","href":"/en/space-station-14/departments/science/proposals/xenobio"}]}]},{"group":"Security","root":{"title":"Security Department Design Document","href":"/en/space-station-14/departments/security"},"pages":[{"title":"Genpop Prisoners","href":"/en/space-station-14/departments/security/proposals/genpop-prisoners"},{"title":"Reducing Metagaming","href":"/en/space-station-14/departments/security/proposals/reduced-metagaming"},{"title":"Secdog Unit Ghost role","href":"/en/space-station-14/departments/security/proposals/SecDog"}]},{"group":"Service","root":{"title":"Service","href":"/en/space-station-14/departments/service"},"pages":[{"group":"PR Guidelines","root":{"title":"PR Guildlines","href":"/en/space-station-14/departments/service/guidelines"},"pages":[{"group":"Plant Genetics","root":{"title":"Plant Genetics","href":"/en/space-station-14/departments/service/proposals/plant-genetics"},"pages":[{"group":"Librarian Gameplay","root":{"title":"Librarian Gameplay","description":null,"href":"/en/space-station-14/departments/service/proposals/theshued-librarian-gameplay"},"pages":[{"title":"Joker Roles","href":"/en/space-station-14/departments/service/proposals/joker_roles"}]}]}]}]},{"group":"Silicon","root":{"title":"Silicons","description":null,"href":"/en/space-station-14/departments/silicon"},"pages":[{"title":"Silicon Law Modification Design Doc","href":"/en/space-station-14/departments/silicon/proposals/lawset_modification"}]}]}]},{"group":"General Proposals","pages":[{"title":"RobustHub™","href":"/en/general-proposals/robusthub"}]},{"group":"Server Hosting","pages":[{"title":"Port Forwarding","href":"/en/server-hosting/port-forwarding"},{"title":"Server Replay Recording","href":"/en/server-hosting/server-replay-recording"},{"title":"Setting up Robust.Cdn","href":"/en/server-hosting/setting-up-robust-cdn"},{"title":"Setting up SS14.Admin","href":"/en/server-hosting/setting-up-ss14-admin"},{"title":"Setting up SS14.Changelog","href":"/en/server-hosting/setting-up-ss14-changelog"},{"title":"Setting up SS14.Watchdog","href":"/en/server-hosting/setting-up-ss14-watchdog"},{"title":"Setting up High Bandwidth Transfer","href":"/en/server-hosting/setting-up-high-bandwidth-transfer"},{"title":"OAuth Stuff","href":"/en/server-hosting/oauth"},{"group":"Setting up Discord Integration","root":{"title":"Setting up Discord Integration","href":"/en/server-hosting/setting-up-discord-integration"},"pages":[{"title":"Debugging server lockups","href":"/en/server-hosting/maintenance/debugging-server-lockups"}]}]},{"group":"Other Projects","pages":[{"title":"Content Bundles","href":"/en/other-projects/launcher/content-bundles"},{"title":"Delta Updates \u0026 Manifests","href":"/en/other-projects/launcher/delta-updates-and-manifests"}]},{"group":"Specifications","pages":[{"title":"Robust Station Image","href":"/en/specifications/robust-station-image"},{"title":"Robust Generic Attribution","href":"/en/specifications/robust-generic-attribution"}]},{"group":"Community","pages":[{"group":"Infrastructure References","root":{"title":"Infrastructure References","href":"/en/community/infrastructure-references"},"pages":[{"title":"Wizard's Den Infrastructure","href":"/en/community/infrastructure-reference/wizards-den-infrastructure"},{"title":"Grafana Dashboards","href":"/en/community/infrastructure-reference/grafana-dashboards"}]},{"title":"Space Wizards Hub Rules","href":"/en/community/space-wizards-hub-rules"},{"title":"Discord Rich Presence Repository","href":"/en/community/discord-rich-presence-repository"},{"group":"Admin","root":{"title":"Admin","href":"/en/community/admin"},"pages":[{"group":"Admin Tooling","root":{"title":"Admin Tooling","href":"/en/community/admin/admin-tooling"},"pages":[{"title":"Admin Cookbook","href":"/en/community/admin/admin-tooling/admin-command-cookbook"}]}]},{"title":null,"href":"/en/community/progress-report-creation"}]},{"group":"Engine Development","pages":[{"title":"Testing unpublished engines against launcher","href":"/en/engine-development/testing-against-launcher"},{"title":"Updating CEF","href":"/en/engine-development/updating-cef"}]}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/space-station-14/departments/service/proposals/joker_roles"}]}]},"basePath":"","title":"Joker Roles - The Robust Book","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-DkE6VzSN.js","lightbox-handle-r17bVUz3.js"]}