Try โ€‚โ€‰HackMD

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:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’

(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