# admin guide
- updated 8/30/22
## Basics
- Most admin actions in the game are "verbs" or through browser interfaces.
- Discord is a whole other issue.
- This contains handy cheat sheets on what the panels do, and brushes up on general tips and tricks. You should take a read if you're unfamiliar.
## Tickets
Admin tickets in the game are managed through a tickets panel.
They can be opened, closed, resolved, rejected, marked as an IC issue, etc.
Open a ticket by clicking it in the panel. You can also open closed/resolved/etc tickets by clicking on the number in the panel. Panel is in the top right.
- Do not mark tickets as IC unless it's truly an awful, awful hurt feelings report - and then still don't. It generally makes people mad for no reason.
- Don't reject tickets unless it's 100% a troll ticket. Again, it upsets people for no reason.
## Attitudes, Conduct
### Rule Interpretation
Rules are rarely black and white. If someone's technically breaking it, and someone points it out, look into it, and determine if it's an issue.
- Most of our rules are geared towards having a fun time/keeping some level of sanity and immersion.
- If someone is not ruining anyone's day in a reasonable way and technically broke a small rule, consider if it's in the server's best interest to handle it.
### Ticket "Protocol"
- First, ascertain if it's an issue.
- Rules != IC procedures != best practices.
- Rules are OOC protocols we set to keep the server sane.
- IC procedures are things in the game world that are enforced, ICly, by the company.
- Prefer IC punishments like faxes for sanctions, command reports ordering x y z action to be taken, sending people in as CCOs/security, etc, over OOC punishments of just banning someone. This is more interesting for players by far.
- Repeated and/or egregious IC policy breaches **can** result in OOC punishment. We cannot sanely play whack a mole; ICly firing someone's character doesn't matter if they don't want to play ball.
- **Hurt feelings reports;** There are some things that are just IC issues until it gets too big or if the above are true. If so, instruct the person in question to seek IC action like calling security.
- If there's, say, no security, find a creative way to solve the issue without bonking the person if they aren't griefing on purpose.
- Bwoinks are scary. Usually, bwoinking someone implies to them someone ahelped. Determine when a bwoink is even necessary.
- Get both sides of the situation.
- If you do determine it's an issue (or something is just awful and you bwoink on your own volition), determine what both sides have to say.
- Often times it's just conflict mediation. If people disagree, look at the logs. Often times, tickets can be resolved without really handing out any punishment whatsoever.
- **Lying**: If people are intentionally lying or intentionally misrepresenting the facts to try to get the other person punished, throw the book at them. If they mistakenly left something out, probably don't, because no one's meomry is perfect, or even good.
- **Be courteous.**
- This doesn't mean you need to sound like a customer rep. `this doesn't even mean you need to type with proper capitalization and super formal wordings.` This means be considerate of the player. It's stressful to get bwoinked by an admin when the admin isn't going to always tell you their thought process (trend across SS13), especially on furry-adjacent servers, given almost all of them have bad community rep.
- Do not flood the player with textwalls unless you need to. You are **not** writing a formal business letter. Get your point across and move on.
- Do not be passive aggressive.
- Do not be condescending.
- Ticket formatting
- Use linebreaks if needed. Again, textwalls = hard to read.
- HTML is supported, if you know how to use that for emphasis/highlighting.
- Help the player
- Our job isn't to ban people. It's to get them to be better players. Bans are a last resort. If you are going to hand out a punishment (or even if you don't and it's a general reprimand), **explain why what they did is bad.** If you can't understand why something is a problem, it's either time to:
1. reconsider if it is an issue
2. ask for opinions in staffchat/asay
3. bring it up to head admins if you think some rule is being used unreasonably against players who are ultimately beneficial.
### Noting
Notes are currently relatively basic (basic savefile, not DB, doesn't store too much metadata) persistent data on a ckey.
To access notes on someone, click `(N)` on them in player panel.
- In the future we'll likely be trialling ckey/cid/IP matching for notes, but, that's a problem for later.
Notes are generally used to keep track of a player's behavior. Usually this means to note for incidents.
In general, if you needed to talk to someone to ask them to not do something, unless it's seriously inconsequential, you should probably note it down.
#### Noting
- Don't note entirely IC things unless it's either 1. repeated or 2. severe enough that it'll probably be an issue in the future
- Do note rigid rule breaks, especially if it's serious
- Do note IC punishments. We cannot enforce stuff like character-jobbans other than notes, because we have no system for it! If someone was awful enough to warrant a serious Central Command response, it should probably be noted!
- **Do** be to the point and factual in notes. Don't write an unnecessary essay, but do not omit information.
- **Do not *overly* extrapolate.** State what happened, what you did about it. If you suspect some behavior, say it, but don't extrapolate what someone did to what they might do in the future unless you have good reasoning and are willing to explain the reasoning. This is terrible and leads to players being getting in more trouble than they deserve.
- **Not just bad things can be notes.** If someone is *above and beyond*, it doesn't hurt, *sometimes*, to make a note of it. Notes are player records.
- I can't care less if someone wasn't as awful as everyone else, or is mechanicall competent. That means nothing to us. Being normal isn't noteworthy, being especially *beneficial to the server and its community* is.
#### Note interpretation
- **DO NOT, AND I REPEAT, DO NOT, LOOK AT HOW MANY NOTES SOMEONE HAS AS A METRIC.** The count of notes means nothing compared to what someone did.
- **Do look at when someone was noted for something.** Someone did something stupid but not egregious 3 times, but it's over a few months? Probably not a huge issue by itself. Within a week, when being told not to? Much more so.
- **Do look at how much people play.** Someone did something stupid but not egregious 3 times, but it's over a few months, **and** they only played 3 times? Beat their ass, they're playing the "hope staff forget I'm awful" card.
- **Do not assume you know someone by their notes.** Notes will never replace first hand experience, **and you cannot be good staff by just parsing someone's notes.** It'll tell you what they got in trouble for/have been doing, not how they are, **how much they play, how much trouble they get into vs how much good they do on the server**.
- **Do not let notes solely determine what you do to someone in a ticket, especially if you are not following the above.** It shouldn't ever boil down to `ASAY: Badmin/(John Doe): Holy shit they have 5 pages of notes ban them`. It should always be why it makes sense to do something given a situation.
### De-adminning
Adminning inherently gives you a ton of meta information.
De-admin-self exists to let you temporarily turn off admin. This is very useful for events.
RP has no hard guidelines for when to do this, but I generally do not want to see fuckery from admins playing security/command while adminned in chaotic situations with metainformation. **Don't do it.** It's not fun for anyone.
### Someone is on your nerves
Resist the urge to yell back. At the end of the day, it is a game, and it is the internet.
- Have another admin handle the situation
- If it's a consistent grudge, report it to head admins.
- **Do not leap in to defend another admin because it's an admin. Think about why there's a problem.**
### Everyone is arguing!
- OOC: Mute OOC. **Do not get the last word, your buttons aren't for you to win an internet argument.**
- IC: A well timed CC report can either be the best, or the worst thing. Same for CCO visits, and other IC decisions. Handle as necessary.
- Discord: Tell everyone involved to calm down and step away. **Do not get the last word.** Do not do this at all if **you** are involved in the argument, and if you really have to, **do not get the last word.**
## Tooling - Adminning
### Logs
First and foremost let's go over logs.
- If you haven't already, download https://notepad-plus-plus.org/downloads/ so you can actually use logs. Get familiar with how to Ctrl + F in this.
- Learn RegEx. https://regexr.com/. Or don't, if you're lazy, it's optional. It'll help you logdive.
Verbs:
`Get-Current-Logs` - download current logs.
`Get-Server-Logs` - download any log file from (part of) the history of the server
When you press thos, you'll see "View, Open, Download"
View - use the in game viewer. Large files will at best lag you, at worst crash you.
Open - in theory, downloads the log to temporary files and opens it. probably doesn't work, don't bother.
Download - Download it. Default location is desktop.
- **Do not share admin logs with any non admins without parsing through to remove irrelevant and/or sensitive information!**
- Exceptions: Runtime logs can be given out freely if you filter out IPs/CIDs.
- Otherwise, log requests are acceptable with good reason, just filter out stuff people don't need to know like private emotes and RP.
Common logs:
- attack.log : Attacking, throwing, stripping
- game.log : Say, emote, radio, general
- inventory.log : Inventory actions like pickups, drops, strips
- tgui.log : Things people click inside TGUI and ONLY TGUI interfaces
- hrefs.log : **Powerful and low level log type.** Any link people click in a browser interface (things like preferences, tgui, and generally any popup that has a lot of text + has more than 2-3 clickable buttons probably is a browser). You need code knowledge to properly interpret this.
- faxes/* : Faxes are stored in here but they're a shitfest so goodluck figuring those out. At some point we should log faxes to SQL but this is not the day or time.
- runtime.log : Error log. Coders sometimes ask for this.
- dd.log : Error log. Coders sometimes ask for this.
Uncommon logs:
- Figure it out, there's a lot of logs.
#### When to use logs
Logs **do not show everything.** You cannot get the intent of someone else through a string of text.
They're for cross checking and seeing roughly how something went down, you cannot decide on a situation with just logs 90% of the time.
### Abbreviations
You'll see the following, along with links, often:
- PP - opens individual player panel
- VV - opens view variables
- TP - opens traitor panel
- PM - Admin PM aka BWOINK!
- SM - "You hear a voice in your head... : \[message]"
- JMP - Jump to them, aghosting automatically if necessary
- SC/ST - Spawn cookie/spawn treat aka useless shit to annoy people who pray with.
- SMITE - :D
- N - Notes
### Player Panel
Shortcut: F6 by default (check your keybindings)
Opens a panel that, in theory, shows every player on the server.
Occasionally coders fuck up and players like Protean Blobs end up hiding from this, so keep that in mind.
99.9% of the time, everyone is here. You can search by player ckey or mob name, and you get links (see: abbreviations) to do stuff to them.
You'll be using this **a lot.**
### Individual Player Panel
Opens a panel with a lot of links including:
- their ckey
- muting
- kicking
- banning
- Jobban is its own panel. We won't get into that because if you press the button it'll show you exactly how it works. Red = already jobbanned, click to unban, etc.
- teleporting to them
- opening all of the other panels (see: abbreviation)
- giving/taking their languages
- some silly stuff
You usually access this through main player panel or by right clicking someone.
This will look different if someone is disconnected (or you open it on a non player).
### Traitor Panel
This sucks, our traitor system sucks, and I don't know how this works. Fuck around and find out.
- Nothing bad will happen as long as you don't do it to someone while they're in the bar, lest the game drop a full syndicate hardsuit on them without asking and you have to deal with people wondering what the round's event could possibly be..
### Unban Panel
Misnomer. The unban panel is both used to place manual bans on an IP/CId/ckey, and to search and lift bans.
There's ont much to explain; the interface is self explanatory.
## Tooling - Debugging / Editing
### References
To understand VV, proccalls, etc, you need to understand what a reference is.
A reference is just a pointer to an object. E.g. thing.reference = otherthing: .reference is a memory location of the other thing that the code uses.
When you proc call, you'll often need to input not just numbers and text, but also stuff like references.
`Mark Datum` right click, or VV dropdown --> Mark Datum lets you reference an object for usage in proccalls. You can also directly use its text memory reference for proccalls, but that's a bit too advanced for this document.
### View Variables
Right click --> View Variables.
There's a dropdown on the right. Look at it, that's where coders like me put useful things for admins so you don't have to touch the scary edit buttons.
On the main segment, you'll see a search bar (try it out) and a list of variables looking like this:
```
5. (E) (C) (M) loc = The floor [0x5381052]
```
First of, see that reference? It should be highlighted as a link. Click it to VV what the variable is pointing to. This'll, obviously, only appear if the variable is a reference type.
(E) = Edit = automated edit. The game tries to detect what variable type it is, and asks you for another input of that type.
(C) = Custom Edit = You specify what datatype to put in, because the game usually kind of sucks at detecting what datatype it should be unless it's a text or number.
(M) = Mass Edit = edit this varibale on all objects of this type, or all objects of this type and its inherited types. **!!FUCK AROUND AND FIND OUT WARNING!!: Do not use this unless you know what the variable does.**
#### Lists
If you see a `/list` reference, it's a BYOND list. Clicking E will let you VV that list to add, delete, and set entries.
List variable edits are rather.. finnicky. Be careful.
**!!WARNING!!**: The following variables should **never** be list-edited unless you know what you're doing:
- `contents`: This is a byond internal variable. If you want to move something around, edit its `loc` var, or proccall `forceMove` on it.
- `loc`, on /turf, /area: This is not something you should touch unless you know how the engine works.
- `vars`: **Don't.**
- `parent_type`, `type`: **Don't.**
- `active_timers`, `comp_lookup`, `datum_components`, `gc_destroyed`, `tag`, `weak_reference`: **Don't.**
You don't have to memorize all of these. You'll, infact, see me touching these against my own advice, because *I know how the engine and backend works.* Contents, loc, are things you also can vv and **should** vv often, as you can do things like spawn an object in a backpack using `contents` --> (ADD) --> `New Atom` --> typepath to spawn.
#### Dropdown
Look at the dropdown for what coders cared to implement for admins.
Some useful ones are:
- Get : Teleports something to you
- Follow : Aghosts you and teleports you there
- Delete : Delete the thing
- Atom Proccall : Call proc
### Spawn, Delete
Self explanatory.
`spawn` - spawns a typepath
`delete` - right click option on something
To create multiple objects, open `Game-Panel` and use the buttons to create objects.
### Proc Calling
Functions in BYOND are called `proc`s, for procedures. You can arbitrarily call (most of) these as an administrator. VV has a dropdown that lets you do a proccall on an object (calling a function it owns), right clicking on something lets you do this too.
There's also a button named `Advanced-ProcCall`. It lets you call **global**, aka procs not owned by any specific functions.
## Tooling - Fuckery
This section left intentionally blank.
Why?
We have hundreds of admin buttons.
I don't recall off the top of my head what I care to talk about, and what I don't.
Go find out what things do. Read the next section for how.
The following buttons you should at the very least take a look at:
- Event Manager Panel
- Game Panel
- Secrets
## The Right Level of "Fuck Around and Find Out"
There is no guide that can keep up with the churn that coders put out. I personally add atleast 100 functions a month that will never be documented, that will never be understood unless you are willing to take initiative and *care*.
Even with the best admin interface possible, which we won't get because we don't have the coder support to do it (yet), no guide can teach you everything.
There is no magic bullet. If you depend on someone to teach you everything you flat out will never get past the basics of your position, or not even there - mentors cannot teach attitude, and no amount of platitudes will replace you learning the hard way how and why things are done, both for handling drama and for adminbussing the round.
Realistically, much like coding, what makes an admin who's proficient with their tools, and an admin who isn't, is the former is willing to mess around to find out what things do.
A single mistake is nothing to be ashamed of. Try not to nuke the round, but accidents happen.
Also, learn how to do local servers if you're paranoid of ruining someone's day.
That said, I'll include a list of "maybe don't fuck with these on live servers if you don't want people to be mad"
- **You will never learn VV, proccalls, SDQL2, or even spawn/delete, all of which are insanely useful for events, without fucking up. Stop being scared, and try it out.**
### The Cheat Sheet of "Don't Fuck With This Unless You Know What You're Doing"
**Non exhaustive list of things you should be careful around.**
This doesn't mean you shouldn't touch it. I, the person who wrote this guide, learned adminning by breaking servers over, and over, and *over*, by **touching exactly these things.**
I don't recommend you follow my example unless you're a coder of my level, and can quickly learn from your mistakes and probably not fuck up the round in the first place.
That said, do not take this as a do not touch these things ever. These are important and powerful features, functions, and objects. You should learn how to touch these, just with more care than others.
*Unfortunately, you basically need to be willing to learn **some** level of code literacy to understand admin tooling. This will always be the case in any game, especially one with as much low level/advanced access for administrators as SS13.*
**Caution**:
- VV. This is one of your biggest tools. If you don't know what a variable does, go look at the code. Sometimes, you'll end up being able to infer what it does, but usually this isn't the case. The things that can go wrong here are varied, but generally depends on what variable you edit on what object. Sometimes it does absolutely nothing, sometimes it causes a lot of runtime errors, sometimes it results in bugs, and sometimes it crashes the server. You never know. You still have to use it.
- Spawn. This is one of your biggest tools. Most objects are safe, and then you spawn Nar'Sie and end the round. Shit happens, learn what stuff does.
- Advanced/Atom ProcCall. This is arbitrary function calls for admins. You can do almost anything coders put as a function with this. Same with VV: Fuckups range from nothing to a server crash. Deal with it, if you fuck up, apologize, learn from it, move on.
**Danger**:
- The "MC" tab. Subsystems, which are the core tickers of the game, live here. If you mess these up, it can seriously impact the round or outright break it. **Do not VV, or proccall, on these things, without knowing what you're doing.**
- Anything *obviously* important, like the singularity, Nar'Sie, the supermatter, the blackbox recorder, anything that's irreplaceable: Probably understand what you're doing before touching it.
- SDQL2. Remmber that joke about Little Bobby Tables? If you don't, look it up. While not nearly as serious (bad SDQL2 query = break the round permanently as opposed to the server itself), you get the point.
- Del-All. You can't cancel this, unlike SDQL2. DO NOT TYPO.
- The Secrets panel. Half the shit here is useful, the other half ends the round. Read, and use common sense.