# Ned's Todo List for TG *(This does NOT include Statbus!)* (Presented in order of perceived ease) ## Additional Feedbac keys to Track ### Number of crewmembers pied see: `tgstation/code/datums/components/creamed.dm` ## Move Commendations into the DB Out of `feedback`, so they're easier to query. ## Port TGMC's Minimaps Not as a part of the HUD, but as a way to dump a static station map to the log files ## Update Death Table Fidelity Look for occurences of `INVESTIGATE_DEATHS` and see if you can get these into the `death` table. Will require schema updates: ``` ALTER TABLE `death` ADD `cause` VARCHAR(255) NULL DEFAULT NULL AFTER `suicide`; ALTER TABLE `death` ADD `schema_version` INT(2) NOT NULL DEFAULT 0 AFTER `cause`; ``` Also adds a version column because we should try to be better about tracking that sort of thing ## Rename Lawyer to Union Representative Seems like a better fit thematically ## Citation DB Log Round Two - [ ] Log crimes - [ ] Add a rating column - [ ] Change `citation` column to `int` Votes are done on Statbus, and every new vote updates average which is then set on the tgstation database. ## Multi-party ahelps Let admins bring two (OR MORE!?) people into a ticket. Think of it like an ad-hoc OOC chatroom. ## Message antags by type Add a button next to the header on the check antags panel that will let an admin send a message to all antags under that header ## Reverse antag-token A type of ban that, when applied, will let the targeted ckey roll for antag. IF they get selected however, the reverse antag-token will revoke their antag status and inform the user why. Can be set to have a specific number of uses. ## Station Ledger A piece of machinery that stores all station records (sec, medical, cargo orders, financial transactions). Mostly for RP flavor + traitor theft target. ### Purser Job In charge of everything money related. Bridge access only. Not a head of staff. Split on mindshielded or not. ## "Harder" Forensics ### Forensic Fingerprints Using the round's seed, generate two 24 character hex strings, broken up into 8, 3 character chunks: `ee6c51ca17daa42258978b83` = `ee6` `c51` `ca1` `7da` `a42` `258` `978` `b83` `37c8bbf2bd16fd17fc1a5cd8` = `37c` `8bb` `f2b` `d16` `fd1` `7fc` `1a5` `cd8` Then, to generate the fingerprint for a crew member, we generate a new 24 character string, randomly picking a chunk from one of the two parent strings: `37c8bbca1d16a427fc1a5b83` = `37c` `8bb` `ca1` `d16` `a42` `7fc` `1a5` `b83` Why are these chunks three characters long, you ask? Well it just so happens that three hex characters are all you ned to generate a color in HTML. So in addition to presenting the fingerprint as a random string, we can also color the background as well: ![](https://hackmd.io/_uploads/SydXPUDvh.png) _(we could theoretically also only represent fingerprints with colors, negating the ability for players to copy+paste and search, but that would penalize players who are sight-impaired, or colorblind)_ Then, when a crewmember touches an object and leaves fingerprints, only part of the fingerprint string is applied to the object: `37c***ca1***a427fc***b83` These fingerprints will only be used by the in-game forensics. Existing admin forensics won't be touched. #### Balance Concerns Yes. ### Material Fibers ??? ### Bomb fragments Explosions will generate bomb fragments from pieces of the device that exploded. Examining them will say something like "this looks like part of a transfer valve" or "this came from a syndicate minibomb". Additional steps could be added, such as requiring the player to investigate the item with a dedicated piece of machinery. ### Painpoints There is no universal mechanism by which a character's fingerprints are generated. In the `datacore`, fingerprints are the md5 sum of the mob's DNA `uni_identity`, whatever that is. The forensics datum similarly uses the same md5 sum to add fingerprints to an item's forensics report. The same one used by admins to investigate, boo. Fortunately it should be easy to tack this functionality onto existing forensics procs. ---- # Ideas that Ned more time in the oven ## Mood Debuff for Improper Surgery ~~Conducting surgery on a conscious patient gives a massive mood debuff to the person operating and the person being operated on. Everyone who witnesses the surgery will also get a mood debuff. Both should have a long timeout.~~ ~~Should only work on "invasive" surgeries on conscious mobs.~~ It's been pointed out that this will make surgery even less-enjoyable from a gameplay perspective. Perhaps we could require that the part being operated on have anesthetic injected. ---- # Done ## ✅ Log *all* ahelp actions Bans, notes, transforms, etc. If it shows up in the ticket view in-game, it needs to be logged. Points of interest: * `/proc/admin_ticket_log` * `key_name()` ~~No good way to strip HTML in the code, so we're gonna have to re-create all the messages without HTML to insert into the DB. No, we're not gonna insert straight HTML into the DB.~~ ~~Add code to log the interaction in `adminhelp.dm`, run message text through `strip_html`. Get ticket info from `C` (current ticket) OR ~~ I wound up just inserting the HTML into the DB, it is the consumers responsibility to strip the HTML. ## ✅ Citation DB Log Jordie told me to use the `feedback` table but that's a pain in the butt so we're gonna log these directly to the DB. Might as well go ahead and pull the entire security records from the round into the DB since the two systems are the same. Tentative Table Structure: ``` id datetime (automatic) ckey (who filed it) target (name, maybe ckey?) reason fine (float) paid (boolean- er, tinyint) server_port ``` Points of interest: * `/datum/datacore/proc/[add,remove,pay]Citation` * `INVESTIGATE_RECORDS`