Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit f1e54d83b589de472036c66e3bd4f92f5d2de9c9
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jul 3 12:14:13 2022 -0700

    Automatic changelog generation for PR #68153 [ci skip]

commit 258d553b68b40d97098193547a646ce0f669745e
Author: Salex08 <33989683+Salex08@users.noreply.github.com>
Date:   Sun Jul 3 21:14:10 2022 +0200

    Crew starts with the right amount of breathing mask again (#68153)

    removes unnecessary codepiece

commit c086d58c2df896250a6ddd6888e74be10884e396
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jul 3 09:47:40 2022 -0700

    Automatic changelog generation for PR #68143 [ci skip]

commit 5dced48bd9b3d75456dada44374f19cb9cd50f43
Author: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
Date:   Sun Jul 3 12:47:36 2022 -0400

    Fixes crystalizer runtime (#68143)

    fixes crystalizer passing any item as the user

commit 832ae532766d491d91db53746d15b4b55be3f2b0
Author: Changelogs <action@github.com>
Date:   Sun Jul 3 00:25:13 2022 +0000

    Automatic changelog compile [ci skip]

commit d2c2f2b822da9d18731797feb081d503771c4bdb
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jul 2 11:51:34 2022 -0700

    Automatic changelog generation for PR #68122 [ci skip]

commit 0af4f2b01f467860dfc261d44b6a90ce66c8a846
Author: Y0SH1M4S73R <legoboyo@earthlink.net>
Date:   Sat Jul 2 14:51:30 2022 -0400

    Maids in the Mirror take no damage from ghosts examining them (#68122)

    * maids in the mirror take no damage from ghosts

    * dead players in their mob shouldn't hurt either

commit d43fde75d362429b4b0d0525b2a9f169261fa99f
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jul 2 11:26:49 2022 -0700

    Automatic changelog generation for PR #68132 [ci skip]

commit 2fc42f9fa416f19b337e1d4659cbac6f877eea24
Author: Pepsilawn <reisenrui@gmail.com>
Date:   Sat Jul 2 20:26:45 2022 +0200

    Removes counter-intuitive var edits off Kilo's SM's pumps (#68132)

    This isn't used on any other station, pressure_checks = 0 means that both Internal and External pressure targets start Off for the vents as opposed to External being on like it normally is at roundstart. This can have pretty bad drawbacks if the air alarm is set last as often recommended on most guides.

    Not even sure what the External target being set to 140 is about.

    Kilo's SM is now consistent with other stations', its pumps external target will no longer start Off.

commit e16dddf961645baa5b90371c63e5df1ba238d15d
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jul 2 00:38:19 2022 -0700

    Automatic changelog generation for PR #68102 [ci skip]

commit 9c3f9101cb2346100fe46dc31d4427fe780b596f
Author: san7890 <the@san7890.com>
Date:   Sat Jul 2 01:38:15 2022 -0600

    Adds Preferences To Suppress Ghost Role Rolls (#68102)

    Hey there,

    Ever since November of 2021, I've wanted something where I could simply not get any ghost roles while adminned. Some people also do not want to get any ghost rolls whatsoever when they play, for it is their personal preference. This PR seeks to resolve both of these issues with two new preferences.

    The first preference will show up to everyone, Suppress All Ghost Rolls. It will return on the main proc that pops up the window, does the sound, all that. You will not hear a peep of a word out of your game. This is dangerous if you like playing as ghost roles, but if you abhor the thought of it... it's just for you.

    The second preference is for admins. You can selectively suppress ghost roles while adminned. This is useful because when you're running an event or doing stuff where you need to offer multiple ghost roles (or you need to focus on a ticket and someone is spamming Xenobiology mob spawns), this is absolutely perfect for suppressing. Same return as the player option, but it checks to see if you are currently adminned via the client.holder variable. This is just because some admins (i'm some admins) don't want to turn in on just in case they forget to turn it off down the line because they actually play the game (lying).

    There's probably a much cleaner way to do this code-wise, but I couldn't figure it out. Any help is appreciated. I tested it extensively on my local (even using a guest account), and everything seems to work rather nicely after about an hour of trial-and-error.
    Why It's Good For The Game

    Players who want to just alt-tab or maybe chill in deadchat (or have an extreme loathing of ghost roles) can just simply not get any of that. Admins who want to focus on tickets and not have windows pop up to interfere in good administrative work (and be the most annoying thing in the world) can also do that. Everyone is happy.
    Changelog

    cl
    qol: There is now a new preference in Game Preferences, Suppress All Ghost Rolls. If you tick this preference, you will not get a singular window pop-up whenever a Ghost Role is available. Intended for the few who really do need it.
    admin: Admins get another additional preference where Suppress All Ghost Roles only works while they are currently in an adminned state. They will still get ghost rolls normally when they are in a deadminned state.
    /cl

commit f0292e94b55d413530a25953d2e88edac7449078
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jul 1 19:29:27 2022 -0700

    Automatic changelog generation for PR #68125 [ci skip]

commit 0c447082e54b857a6e4117ada50167c32bdb72bb
Author: chesse20 <chesse20@gmail.com>
Date:   Fri Jul 1 19:29:23 2022 -0700

    Furry Pride with no Removal (#68125)

    About The Pull Request

    image
    art from @MrDoomBringer
    adds this furry pride spray without removal
    Why It's Good For The Game

    Same as #68077, just with out removal
    image
    Requested by maintainers in #68120
    Changelog

    cl
    add: Furry Pride large spraypaint added to spraycans
    /cl

commit e61ccb983347de8d3db36399d3e94f28f14c7512
Author: Changelogs <action@github.com>
Date:   Sat Jul 2 00:23:49 2022 +0000

    Automatic changelog compile [ci skip]

commit 8d60b1e56d91721a2ae92d848fd5e4ad2e3617c5
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jul 1 14:29:51 2022 -0700

    Automatic changelog generation for PR #67621 [ci skip]

commit 966b711e15bc6fd1af47f0f08b9815bab1625338
Author: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Date:   Fri Jul 1 18:29:46 2022 -0300

    Removes the superfluous breathing mask from the survival box of clown/mime + New mime hugbox. (#67621)

    * Base box changes

    * Mime box + breathing mas removal

    * Mime hugbox back in

    * Fishing is back

commit ab229b95b1d9d6c657af26a161c31d7c21ae0e87
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jul 1 12:03:20 2022 -0700

    Automatic changelog generation for PR #68075 [ci skip]

commit b372162e70c39dfd9d71e465af5123479a2e0df1
Author: san7890 <the@san7890.com>
Date:   Fri Jul 1 13:03:15 2022 -0600

    Re-adds Standard Kitchen Fridge to IceBox (#68075)

    I fucked up and forgot this one that contains eggs and milk and stuff whoops.

commit caa0a8688c335bde076446d4efea57554234f12f
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jul 1 12:02:52 2022 -0700

    Automatic changelog generation for PR #68108 [ci skip]

commit 153126cfd098b7ad2a08209c7cab5d87b8965891
Author: Charlotte <98856144+orthography@users.noreply.github.com>
Date:   Fri Jul 1 12:02:46 2022 -0700

    Turns select prison intercoms to normal ones. (#68108)

    Changes intercoms that would only ever be utilized by sec from prison intercoms (transmit wire is cut) to normal intercoms.

    The warden now has both a normal intercom and a prison one.

commit 45d2cdb3187e9b1b5a03364907e67916529735f9
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 23:01:09 2022 -0700

    Automatic changelog generation for PR #67083 [ci skip]

commit f8f3dbed98e151080e9c25c793f0890795b03504
Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date:   Fri Jul 1 01:01:02 2022 -0500

    Completely removes `proc_holders` from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code.  (#67083)

    * destroy proc holder pt1
    - change proc_holder/spell to action/cooldown/spell
    - docs all the spell vars, renames some of them
    - removes some useless vars
    - start with pointed spells, as they're easy

    * kill proc_holder pt2
    - kill a buncha vars and replace it with flags
    - convert a ton over
    - general code improvements

    * kill proc_holders pt3
    - convert a good few more spells
    - rename some signals
    - handle statpanel
    - better docs

    * kiill proc_holder pt4:
    - restructure the file system of action.dm, separating a good amount of item actions and miscellaneous garbage into files where they belong slightly better. Also splits off item actions, cooldown actions, innate actions, etc. into their own files, overlal making it much better to work with
    - converts touch attacks to actions
    - converts blood crawl, jaunt subtype

    * kills proc_holder pt5
    - clears up some icon issues so all the currently converted pages don't have errors
    - shapeshift
    - some more action cleanup

    * kills proc_holder pt5.5:
    - some documentation
    - reworks feedback to prevent oversight with teleports and stuff

    * kills proc_holder pt6:
    - converted cult spells
    - converted magic missile
    - converted mime spells
    - chipped away at the errors
    - removed some vars which were too general, replaced them with more locally applicable vars. for example "range" which could mean "projectile range" or "aoe radius" or whatever - instead of having a broad net which everyone applies to in a confusing matter, instead lets each spell delegate on their own.
    - merged magic/spell and magic/aoe, as the comment intended
    - more unified behavior for spell levelling

    * kill proc_holders pt 6.5:
    - replacing a buncha old proc_holders that have been updated to reduce some errors. sub 900 baby

    * kills proc_holder pt 6.75:
    - minor fixes

    * kills proc_holder pt7:
    - cuts down on some errors
    - refactors some wiz events

    * kills proc_holder pt 7.5:
    - malf ranged modules
    - some minor errors

    * kills proc_holder pt 7.75:
    - mor eminor error handling, cleaning up changes

    * kill proc_holder pt8:
    - refactors spell book
    - refactors spell implant
    - some more minor error fixing

    * kill proc_holder pt 8.5:
    - scan ability

    * Adds some robust documentation

    * kill proc_holder pt9:
    - converts some / most mutations over

    * kill proc_holder pt10:
    - sort out all the granters
    - refactor them slightly
    - fix some compile errors

    * Some set-unset sanity - going to need to test removing Share()

    * Removes transfer actions. It doesn't seem to do anything.
    - Transfer_actions was called when current = new_character so locially speaking the early return in Grant() should cause it to NOOP. Test this in the future though

    * Removes sharing from actions, docs actions better

    * Some better documentation for spell and spell components

    * Kills proc_holder pt11:
    - Finally finishes ALL THE SPELLS IN THE SPELL FOLDER
    - Fixes some more errors

    * kills proc_holder pt11.5:
    - minor error fixing and sanity

    * Method of sharing actions. Can be improved  in the future, needs testing

    * Implements a way to update the stat panel entry for a spell. Also gets rid of VV stuff, as you can update the bigflags directly in VV now.

    * Curse of madness bug I put in.

    * kills proc_holder pt12:
    - sub 500 errors!
    - converts cytology mobs
    - converts and refactors spiders slightly
    - some minor fixing around the place as usual

    * kill proc_holder pt13
    - Finishes heretic spells
    - Sub 300 errors!
    - some touch refactoring to account for mansus grasp

    * kills proc_holder pt14:
    - revenant
    - minor bugfixing for heretic stuff

    * kills proc_holder pt14.5:
    - some missed stuff for revenant + heretic

    * kills proc_holder pt15:
    - alien abilities
    - more minor fixing
    - sub 100 errors. The end is nigh

    * kill proc_holder pt16? 17:
    - Finishes cult spells
    - sub 50 errors!
    - refactors the way charge works
    - renames / moves some signals

    * kills proc_holder pt final:
    - sdql spells
    - no more errors!

    * Bugfixes round 1

    * Various bugfixing
    - documentation done
    - give spell works
    - can cast spell gives feedback conditionally
    - is available takes into account casting ability

    * Some accidental reversions + fixes

    * Unit tests

    * Completely refactors jaunting
    - All bloodcrawling is now handled on the action itself instead of across various living procs
    - slaughter demons have their own blood crawls
    - jaunting dummies don't have side effects on destroy() anymore

    * Wizard spell logging and even more refactoring

commit 73a68dbbd8406d86ed6c12541a2a55677a5f2367
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 22:34:43 2022 -0700

    Automatic changelog generation for PR #68094 [ci skip]

commit 29b5eb7798cec025d74c79535743fa601e2603b1
Author: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Date:   Fri Jul 1 00:34:39 2022 -0500

    Fixed synthetic limbs to display the proper skin color. (#68094)

    Fixes a bug with the Limb Grower where synthetic limbs permanently revert to the default coloration when attached to a body. As it is now, the green coloration of synthetic limbs is stored in the mutation_color variable, which is nullified when attached. This makes all limbs draw with the default coloration - "albino" for humans and a neutral grey for other species. This PR updates the limb grower to use the species_color variable instead, which is maintained when attached/detached.

commit fcf0a347c535debc925da9930ffe2ae17f08b3ed
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 22:32:58 2022 -0700

    Automatic changelog generation for PR #68097 [ci skip]

commit 15054fe7c01610c27e3a5fcb289ce6d8c85eb46b
Author: NotZang <90739573+NotZang@users.noreply.github.com>
Date:   Fri Jul 1 01:32:54 2022 -0400

    Gives Sergeant-At-Armsky a unique description (#68097)

    * I noticed he didn't have his own description like all the other variants of Beepsky, so I thought I'd maybe give him one.

    Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>

commit 642877f915bc58bbb7b9183d221a0cf6b6f0eabf
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 22:29:24 2022 -0700

    Automatic changelog generation for PR #68083 [ci skip]

commit db3ee3a6cf2de817889e43a64586a756b2afed0d
Author: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
Date:   Fri Jul 1 01:29:20 2022 -0400

    Fixes teleporting gun with telekinesis (#68083)

    So when you fire a gun with the clumsy trait it has a chance to backfire at you and shoot yourself and if you dont have the no_drop trait will drop the gun on your location hence the teleporting gun bug with telekinesis. This pr adds a check to whether the user is firing via tele or not.

    Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>

commit f0ec14736c3fa1a83229885976795ded44c67cc0
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 21:52:21 2022 -0700

    Automatic changelog generation for PR #68055 [ci skip]

commit 100a9eeefb089808c771d8d422522622d83a0659
Author: Salex08 <33989683+Salex08@users.noreply.github.com>
Date:   Fri Jul 1 06:52:17 2022 +0200

    Adds cancel event option for midround random events (#68055)

    Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>

commit 11aa6d48f37fbbd88f59f24667e364fec70e5ddc
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 20:17:31 2022 -0700

    Automatic changelog generation for PR #67856 [ci skip]

commit 709658026089495ae01e59cd06e80a69cc5943e4
Author: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Date:   Fri Jul 1 13:17:27 2022 +1000

    Updates the sprites for bullets (inflight), adds pellet sprites, redoes the thermal projectile sprites (#67856)

    imageadd: Improves the sprites for bullets, thermal projectiles, and introduces pellet sprites.

commit 4d04679994e0f1a29cc228d3bb25f827aa85ed8b
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 20:13:37 2022 -0700

    Automatic changelog generation for PR #68044 [ci skip]

commit 1047ebd3df0b403124e0ab10e8a0c6d67126c4ed
Author: Coffee <CoffeeDragon16@gmail.com>
Date:   Thu Jun 30 23:13:32 2022 -0400

    Resprites most of Chaplain's  choice beacon outfits (#68044)

    imageadd: new sprites for the Chaplain's crusader, ancient, profane and follower outfits.

commit a488fb40ba7c1e92f05ed158727e3d47eb0cfbf4
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 19:37:18 2022 -0700

    Automatic changelog generation for PR #68124 [ci skip]

commit 3e0aa74278186e463ad51b904f6c7acdb02604c4
Author: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Date:   Thu Jun 30 19:37:13 2022 -0700

    Hacking UI hotfix (#68124)

    fixed the issue

commit ec55908c62177ab14444895100ee2a40631776c0
Author: oranges <email@oranges.net.nz>
Date:   Fri Jul 1 13:04:46 2022 +1200

    Revert "remove y##f in h##l spray, adds furry pride spray" (#68120)

    Revert "remove y##f in h##l spray, adds furry pride spray (#68077)"

    This reverts commit 79cf75afdc0608faf769b3c919d9cfdae30122d8.

commit f99554bc4c749909072d4bc87c4c0944fc812b30
Author: Changelogs <action@github.com>
Date:   Fri Jul 1 00:25:04 2022 +0000

    Automatic changelog compile [ci skip]

commit 14e27b2c2d2e852d3de73ba77d52fbce99149654
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 17:11:28 2022 -0700

    Automatic changelog generation for PR #67967 [ci skip]

commit 2b1d231f684cf5b023607a245c6b553b2c9fe6d5
Author: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Date:   Thu Jun 30 17:11:24 2022 -0700

    Misc TypeScript conversions (#67967)

    About The Pull Request

    An atomization of #67809.

    This PR aims to convert some miscellaneous UIs into TypeScript. Some of these are low hanging fruit, don't hate me, I am working up the self hatred to do more.
    Why It's Good For The Game

    TypeScript is objectively better and provides great tools to debug code. We should really work to just convert all the UI into TSX
    Changelog

    cl
    code: Refactored a large number of TGUI interfaces into TypeScript. If something's broken, report it!
    /cl

commit 65d748ff6525477f67e97912333043653f410484
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 16:43:44 2022 -0700

    Automatic changelog generation for PR #68086 [ci skip]

commit ca79dcb6301cea1e755c7a6579a908c68c0e513f
Author: ShizCalev <ShizCalev@users.noreply.github.com>
Date:   Thu Jun 30 19:43:41 2022 -0400

    Makes gas filters smaller (#68086)

commit 83544552f0f89a363f1264fcd969cd2e3b2cafa2
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 16:41:46 2022 -0700

    Automatic changelog generation for PR #67674 [ci skip]

commit 6b73d4fcd33c0501846c987460a768b9c42dfbb1
Author: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Date:   Thu Jun 30 20:41:42 2022 -0300

    Reworks (and nerfs) Hypernob internals for plasmamens (#67674)

commit 8a614c8f2a05267679ac21473fcf89f0372d8d4e
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 14:27:11 2022 -0700

    Automatic changelog generation for PR #68077 [ci skip]

commit 79cf75afdc0608faf769b3c919d9cfdae30122d8
Author: chesse20 <chesse20@gmail.com>
Date:   Thu Jun 30 14:27:07 2022 -0700

    remove y##f in h##l spray, adds furry pride spray (#68077)

commit 4adbdce49bce4097048482e594add8ca221993d3
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 13:44:33 2022 -0700

    Automatic changelog generation for PR #67285 [ci skip]

commit 294c89a32872168a5eb71bbdc9861f83db5360e4
Author: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Date:   Thu Jun 30 14:44:28 2022 -0600

    Lets SAW tools (and PKC) cut trees, MINING tools break rocks, and fixes e-blades cutting while off (#67285)

    * Adds TOOL checks combined with the lists
    * Chainsaws are now slow when turned off, and are pre-nerf speed when on
    * Adds a better disallowed_tools check

commit 77c9ab74d9281905e62c5d0aac1e082048801d33
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 02:38:59 2022 -0700

    Automatic changelog generation for PR #68065 [ci skip]

commit ae8cb8147bfa2e9c2ffaceeec0d97c94a7361481
Author: ‮ittaG ordnasselA <974661+Hamcha@users.noreply.github.com>
Date:   Thu Jun 30 11:38:54 2022 +0200

    Allow Agent cards to use numbers in their names (#68065)

commit 07f5201136bd8d529b795f811c0c9249f6b6caa3
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Thu Jun 30 01:50:29 2022 -0700

    Automatic changelog generation for PR #68062 [ci skip]

commit 8bad64ccb0ad81ba8b2a7ee9d70cbc31f2dad83b
Author: Salex08 <33989683+Salex08@users.noreply.github.com>
Date:   Thu Jun 30 10:50:26 2022 +0200

    Blacklists placeholder food items in the random food generator (#68062)

    blacklist empty items

commit 8cfa97d06ae3aadd9b40f356cc1ce2bd2aafa98b
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 18:42:10 2022 -0700

    Automatic changelog generation for PR #68071 [ci skip]

commit 527abb12426526914088c4baef5ccfa053e999c3
Author: private-tristan <54422837+private-tristan@users.noreply.github.com>
Date:   Wed Jun 29 21:42:06 2022 -0400

    metastation library no longer has 2 air alarms (#68071)

    removes one, moves another air alarm.

commit acfbd1eb65b18ec5dabc16026d840ff0e3db5845
Author: Changelogs <action@github.com>
Date:   Thu Jun 30 00:21:52 2022 +0000

    Automatic changelog compile [ci skip]

commit bcb97d9da62b9c0d50456f24096d446d4a1311e4
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 11:17:47 2022 -0700

    Automatic changelog generation for PR #68037 [ci skip]

commit 848b6ef8359b1b52d5a755a20bf378e4c139b85b
Author: Profakos <profakos@gmail.com>
Date:   Wed Jun 29 20:17:43 2022 +0200

    Toppings for rootbread slices (#68037)

    Toppings for korta bread slices

commit 0065b6b9c22b9113175fbccc3382dc5b97a375de
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 11:16:39 2022 -0700

    Automatic changelog generation for PR #68050 [ci skip]

commit 4eaacab7922dc1639232ef077167b0a76952d267
Author: ReinaCoder <83892995+ReinaCoder@users.noreply.github.com>
Date:   Wed Jun 29 18:16:33 2022 +0000

    Resprites the Makarov (#68050)

    * sprites

    * fixes sprite

    * moves the supressor up one tile

    * slightly tweaks a few colours (un rose golds it)

    * handle changes

    * suppresor

commit 9a360b1301cb768b979db8b57449b7b4ac2135fb
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 11:15:53 2022 -0700

    Automatic changelog generation for PR #68056 [ci skip]

commit d1724973b92407ca393596ab282d021dab1d3381
Author: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Date:   Wed Jun 29 23:15:47 2022 +0500

    Directional Shutters For All Station Maps (#68056)

    added directional sprites for window shutters
    gave dirs to all shutters and window shutters (except zigzag pattern ones) on icebox, kilo, delta, tram
    replaced SM shutters on kilo with radiation shutters

commit a15f98ea38f721f22f701740535659c1297b18ab
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 10:06:38 2022 -0700

    Automatic changelog generation for PR #67848 [ci skip]

commit c6e07de4feaeedefaaf8e984c2bded1a7364f7c8
Author: Salex08 <33989683+Salex08@users.noreply.github.com>
Date:   Wed Jun 29 19:06:32 2022 +0200

    Adds Material tab for the autolathe to dispense the desired mats one put in and fixes a condition (#67848)

    In the Autolathe, moves all the matts from construction to the new tab Material which allows you to dispense all the mats you put in
    Also fixes missing "=" operator which wouldnt let you print 10 or 25 stack immiadetly once you reached it

commit 4da91f392d662c4ea5adaa0f1397ed50b6a9981d
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 08:11:12 2022 -0700

    Automatic changelog generation for PR #68042 [ci skip]

commit 9a783d9808e97f74ad855032abb1a2e81098f884
Author: ReinaCoder <83892995+ReinaCoder@users.noreply.github.com>
Date:   Wed Jun 29 15:11:07 2022 +0000

    Updates the ghoulbot sprite to match the new mulebot sprite (#68042)

    resprites the ghoulbot to conform to the new 3/4 mulebot sprite

commit d79928445a2d5b9b7978382d0e256933150a729e
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 08:09:46 2022 -0700

    Automatic changelog generation for PR #68059 [ci skip]

commit 2abace74ece228a8fffc36d99bf90473f018a4cc
Author: Nichlas Pihl <nichlas0010@gmail.com>
Date:   Wed Jun 29 16:09:32 2022 +0100

    Fixes the Orion Trail not working properly when emagged (#68059)

    fixes the Orion not working properly when emagged

commit 0dfeab2ebdbfee4bafa4c61a7456996802099fc0
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Wed Jun 29 08:09:16 2022 -0700

    Automatic changelog generation for PR #67846 [ci skip]

commit bcd16397d3490eeb04946821425deb5ae491923d
Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date:   Wed Jun 29 10:08:08 2022 -0500

    Fixes some soulstone issues, overall makes soulstone behavior more consistent (#67846)

    Fixes

        Inconsistent behaviour of the cult's sacrifices. #67014

    Soulstones had a if(client) check prior to making a shade, which failed if the mob wasn't in their body.
    So, we just grab the ghost before making a shade on capture.

    This also allowed for the weird hack from #63707 to become unnecessary, so I reverted it.

        Fixes

        Cult can no longer shade soul-less mobs. #66629

    If you used a soulstone on a mindless mob, it would pass in is_sacrifice_target(null), which would always succeed if the cult team had an objective without a target. Which cults do have.

        Overall increases readability and reduces copypaste of soulstone code, making it a tad more consistent.

    Moved a lot of copy+pasted "theme" code to the appropriate update_x procs. Cleaned up code in general, as is tradition with cult code.

commit 9073e692ae8d095595f128b822c3cd2d7a5f4ebd
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 19:55:37 2022 -0700

    Automatic changelog generation for PR #67938 [ci skip]

commit fa722f6981711df0a63944d59e6b7899c60859e6
Author: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Date:   Tue Jun 28 22:55:32 2022 -0400

    Patch out a method to bypass xenobio progression (#67938)

    * Patch out a method to bypass xenobio progression

    * Allow sentient humans to still turn into a random slime

    * Apply suggestions from code review

    Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

    * Use helper procs

    * Add readability change to earlier lines as well

    Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

commit 4ea9cf628b4738b4d05112f6d31a98fe4526a0be
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 19:52:30 2022 -0700

    Automatic changelog generation for PR #68048 [ci skip]

commit 7e49bc5b26ce769b68260a6dcd1d3892da5f1063
Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date:   Tue Jun 28 21:52:25 2022 -0500

    Fixes being able to hack a comms console if it gets depowered or broken mid hack (#68048)

    Fixes hacking consoles after they're unpowered

commit b06f7fa6030e2be2634cdf97db5579835d9faa04
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 19:51:55 2022 -0700

    Automatic changelog generation for PR #68047 [ci skip]

commit 24b4109f1cdb92e55d1ddda0073425b824cc2e5f
Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date:   Tue Jun 28 21:51:51 2022 -0500

    MULEbots uses the blood walking element (now component), fixes MULEs tracking blood infinitely  (#68047)

    Blood walking is a component, MULES use blood walking

commit c87ac01a65de8f7eab4d3d2890f26e1bc294d735
Author: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Date:   Tue Jun 28 17:34:37 2022 -0700

    Add style guide expectations for macros (#67868)

    Wake up honey new Mothblocks style guide just dropped

    Rendered

    Read closely as I make some new expectations that I think are very good for readability but that we don't tend to employ.

    @tgstation/commit-access

commit b59521952d38b50af0c5cfbd2cb5c393d4dd269d
Author: Changelogs <action@github.com>
Date:   Wed Jun 29 00:21:16 2022 +0000

    Automatic changelog compile [ci skip]

commit 8ad724558d6a88892d2bc40d8061ee203f153226
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 13:42:07 2022 -0700

    Automatic changelog generation for PR #68040 [ci skip]

commit 6f72388da163124caf4d03b4db27f01c38371a8d
Author: Salex08 <33989683+Salex08@users.noreply.github.com>
Date:   Tue Jun 28 22:42:01 2022 +0200

    fixes headspike runtime error and bug (#68040)

    * fixes headspike runtime error and bug

    * requested change

    * Revert "requested change"

    This reverts commit ab3aefa180ff32cee00c16b8baed3db1fe1b1fb0.

    * Revert "fixes headspike runtime error and bug"

    This reverts commit ed1f76e88b709064df0dbde655ca618ddbb78b3d.

    * actual fix

commit d8e0279dd359bdd8245aac73bb68669a68511726
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 08:01:57 2022 -0700

    Automatic changelog generation for PR #67898 [ci skip]

commit 9a086c1ff435662ab71ce15abf50c8356da18468
Author: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Date:   Tue Jun 28 11:01:53 2022 -0400

    Makes the noblium gas shells experiment explicitly clear that it means hypernoblium (#67898)

commit f4ecd9c6e6ad2056360ea8cda2b991c47219d8f0
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 07:26:05 2022 -0700

    Automatic changelog generation for PR #67712 [ci skip]

commit f4512c98f50652f39f82fe5bea8e85d28ef80e83
Author: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Date:   Tue Jun 28 11:26:00 2022 -0300

    Watering cans for botany (#67712)

    * Watering cans for botany

    * Clean up weird bugs by just coding the feature out

    * 70u for the old can and /// like it should be

    * Updated can icons courtesy of Wallem

    * Swaps botany buckets for watering can on maps

    * A line

commit afc099ab7316db37b14c1c1569919ec65fa1e1ea
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 07:25:40 2022 -0700

    Automatic changelog generation for PR #67586 [ci skip]

commit c9b3d9ab6780a4ce94c57f1bad3bcc4bb00572a5
Author: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Date:   Tue Jun 28 10:24:43 2022 -0400

    Fixes gravity gen sound & off gen loops (#67586)

    * Fixes some minor problems with grav gen

    * Fixes gravity generator completely obliterating your ears by having several gravity generator soundloops (now there's only 1) by starting soundloop on creation, during parent's Initialize (so it doubled since things like grav gen part (a generator inside the generator??), starts a soundloop too, now the station's gen just starts the loop if it spawns on)
    * Fixes offstation gravity generator looking like it's turned on when it isn't, and fixes it having sound when it's off.
    * Removes /station grav gen subtype, because it was frankly useless.
    * Adds some early returns to gravity generator's process, and removes the unused set_state proc, which was replaced with enable() and disable() in the radiation rework.
    * Lastly, removes grav gen parts from QDEL_NULL'ing their soundloop twice, since they called parent's Destroy() that did it for them anyways.

    * fixes minor typo

    Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

    * more grav gen code improvement

    This commit is solely focused on code improvement.

    * gravity_field and sound_loop was moved from gravity generator to main gravity generator, since they're the only place it was used.
    * Added checks for a main part across generator part procs, rather than using ? randomly.
    * Autodocs all Gravity generator vars
    * Adds better var names in for() loops, makes use of as_anything, and renames parts to generator_parts.
    * Adds some better var names in general.

    * Adds an UpdatePaths

    * fixes infinite del loop

    * fix to harddels

    * Update gravitygenerator.dm

    * merge conflict moment

    * fix maps

    * fixes merge conflict

    * Update gravitygenerator.dm

    * updates the updatepath

    * Update gravitygenerator.dm

    * Update gravitygenerator.dm

    * merge conflict

    * set_broken()

    * Update gravitygenerator.dm

    * unregister signal on destroy

    * Update gravitygenerator.dm

    * middle part

    * Update gravitygenerator.dm

    * more improvement + moves grav code to grav file

    * Update gravitygenerator.dm

    * handles map merge conflicts

    Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

commit 78050509159b19ffcf73fdf0da295efe5e3ba268
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 07:22:10 2022 -0700

    Automatic changelog generation for PR #67916 [ci skip]

commit d6fa504c2b55f9a6803e7efc0eff1e90b9de8fc8
Author: Sebbe9123 <31856346+Sebbe9123@users.noreply.github.com>
Date:   Tue Jun 28 16:22:05 2022 +0200

    Ert medic belts (#67916)

    * Adds belt

    * Adds belt to ERT medic

commit c19b3e0010db493c41759ed2ce42a1c97bb5cbd0
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 07:12:14 2022 -0700

    Automatic changelog generation for PR #67971 [ci skip]

commit c62195450d6b509b545ed7b2b76c4627621c9f29
Author: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Date:   Tue Jun 28 07:12:08 2022 -0700

    TGUI Say no longer deletes your currently typed message on history (#67971)

    first commit

commit c50c32e018c2440603ac7d83701db2d485e838f8
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 06:02:31 2022 -0700

    Automatic changelog generation for PR #68035 [ci skip]

commit 0c6dfc43f36c0d59190d9c53af8962897e19177a
Author: Salex08 <33989683+Salex08@users.noreply.github.com>
Date:   Tue Jun 28 15:02:27 2022 +0200

    Brand of Dance spell fix (#68035)

    spell fix

commit e9e7b5ed85da2d5d96beffa821a7354979c2bef0
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Tue Jun 28 05:58:50 2022 -0700

    Automatic changelog generation for PR #68030 [ci skip]

commit 43d09117ff1b8bbdd332beac3215008eb5c18886
Author: Y0SH1M4S73R <legoboyo@earthlink.net>
Date:   Tue Jun 28 08:58:45 2022 -0400

    Fixes a runtime when inflicting a blunt wound on an armless human (#68030)

    fixes a runtime when inflicting a blunt wound on an armless human

commit 511aa8a5ab47d1154a0b179d58682dc70db28f82
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 19:24:27 2022 -0700

    Automatic changelog generation for PR #67854 [ci skip]

commit a96df30028be276c82c3c2af592865321b664e11
Author: san7890 <the@san7890.com>
Date:   Mon Jun 27 20:24:23 2022 -0600

    Ice Box Station Kitchen Rework - Worthy Of The Name (#67854)

commit 2baaf5aa9962d8d03326de92c1bf719372c9648f
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 18:48:20 2022 -0700

    Automatic changelog generation for PR #68034 [ci skip]

commit 3e1c5dc7a0cd0f291e250971f26d44be0a84b969
Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date:   Mon Jun 27 20:48:16 2022 -0500

    Fixes some door access on Deltastation. (#68034)

    Fixes some door access on deltastation.
    - Service Hall
    - Shipping Room

commit 917f57c7204e841b524706628fd19fe8402e3df8
Author: san7890 <the@san7890.com>
Date:   Mon Jun 27 19:47:52 2022 -0600

    Adjusts Door Mapping Helper Layers (#68032)

    Hey there,

    Access helper layers are great and all, but they tended to have this sort of effect on maps where since they were on the same layer as all of the other mapping helpers for doors, they would just tend to cover up the smaller sprites the others used, like this:

    So, this just switches up the layers a bit by having a new layer called `DOOR_ACCESS_HELPER_LAYER` (that is still above `OPEN_DOOR_LAYER`) just for Access Helpers, while every other airlock helper takes the `DOOR_HELPER_LAYER` (like before), which has been increased by 0.01 more funny number.

    Ok?

commit bd1893319a71e82c2ec2cf3febedd6e903634dad
Author: Changelogs <action@github.com>
Date:   Tue Jun 28 00:25:10 2022 +0000

    Automatic changelog compile [ci skip]

commit ee366187275a00716e160f1a781aa77511bd4e6a
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 14:14:47 2022 -0700

    Automatic changelog generation for PR #68028 [ci skip]

commit 7e2c6dca6a1dfd767363ff3997e905204705e048
Author: Comxy <tijntensen@gmail.com>
Date:   Mon Jun 27 23:14:43 2022 +0200

    martial arts bug fix (#68028)

commit 3d6800a997f2c17437cf7271314a86cef8eb8d05
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 14:13:33 2022 -0700

    Automatic changelog generation for PR #68013 [ci skip]

commit 4a8ba544eab855b33dbb37ff39f201cc46647dc1
Author: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Date:   Mon Jun 27 17:13:30 2022 -0400

    Snails have eyes again (#68013)

    * Fixes snail eyes being errors

    * Fixes the screenshot for the snails (smh there was an error in there Mothblocks)

commit 45609765f1465b31292f62bf4dd5a2fc8348c0ef
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 14:10:49 2022 -0700

    Automatic changelog generation for PR #68015 [ci skip]

commit 5512a1a12c0aa7f17c7606d0108236b45480d6df
Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date:   Mon Jun 27 16:10:45 2022 -0500

    Fixes the frozen status trait never being applied (#68015)

    * Fixes the frozen trait never being applied

    * Don't apply if we already have the trait

    * Check the target obj

commit e3a497f700898de4e9a01fe78e1e7aa37cdfa46b
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 14:09:22 2022 -0700

    Automatic changelog generation for PR #68017 [ci skip]

commit 1a568a5e4c6af218f895fa18902c6d52aa443fbe
Author: dragomagol <66640614+dragomagol@users.noreply.github.com>
Date:   Mon Jun 27 14:09:18 2022 -0700

    Update brokentiling to match new tiles (#68017)

    update brokentiling

    Co-authored-by: tattle <article.disaster@gmail.com>

commit 708033365209292bd1214fde58aa1d0edb5efb98
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 14:02:13 2022 -0700

    Automatic changelog generation for PR #67944 [ci skip]

commit 79ae96d38bd69ffd2d94ebe2c4cc86aab2510402
Author: san7890 <the@san7890.com>
Date:   Mon Jun 27 15:02:08 2022 -0600

    Unearths A Covered Keycard Device in IceBoxStation (#67944)

    * Unearths A Covered Keycard Device in IceBoxStation

    Hey there,

    An electric sign was covering up the CE's Keycard Device (which looks ugly and confusing since you see the sign through the window, and you can't click on it).

    * Fixes merge conflicts and decalling

    may as well flatten some keys while i'm in the area y'know

commit 9904c5026b35b5e0067bb5c9f1655ffcc30754e4
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 12:17:50 2022 -0700

    Automatic changelog generation for PR #68020 [ci skip]

commit cb36fbca8a0662d573a6067e55a92590d3ca74e1
Author: cinder1992 <cinder1992@users.noreply.github.com>
Date:   Mon Jun 27 20:17:46 2022 +0100

    Fixed DeltaStation mining firelock placement (#68020)

    DeltaStation has a firelock placed adjacent to it's mining shuttle, meaning that once the shuttle departs it instantly triggers the firelock. This PR removes that firelock

commit a84dc2bfb76c954edfe7914dd6bf7e8048701faa
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Mon Jun 27 12:17:01 2022 -0700

    Automatic changelog generation for PR #68022 [ci skip]

commit 3ff5e9941c01a1e065d9b7c1623242c73252cd52
Author: Profakos <profakos@gmail.com>
Date:   Mon Jun 27 21:16:57 2022 +0200

    Replaces the tram generic construction console with an aux construction console (#68022)

    * Replaces the generic construction console on tramstation with an aux console

    * Readds a decal I accidentaly removed

commit 2aa62cd63b04f9c187ee80f3c12d66dde7318bd4
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 23:41:04 2022 -0700

    Automatic changelog generation for PR #67683 [ci skip]

commit b90a282074260ef36383d9f7c796650ed8ab4a78
Author: Son-of-Space <63861499+Son-of-Space@users.noreply.github.com>
Date:   Sun Jun 26 23:41:00 2022 -0700

    Revamps derelict1.dmm into a proper derelict (#67683)

    Replaces the barren derelict1.dmm with something of substance.

    This is the old version for those of you who were curious.
    And here is the new.

    This gives the ruin a little bit of extra panache, ties the world a bit more together, and is a nice homage to our sister server.

commit 3881f22ae49abffdf095ad411e68cec0abb0c580
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 23:04:11 2022 -0700

    Automatic changelog generation for PR #67884 [ci skip]

commit 99fce487d981820fdc536e6899f59fa3ab2a9b6c
Author: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date:   Mon Jun 27 01:04:08 2022 -0500

    Refactors Knock to use Connect Loc (#67884)

    * Knock uses a new connect loc signal.

commit 53f19b85b36455b9bb904902333ecf4b32e2a73a
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:48:48 2022 -0700

    Automatic changelog generation for PR #67937 [ci skip]

commit b864589522f4f14183270a62dbea3df8028d2eb6
Author: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Date:   Mon Jun 27 05:48:44 2022 +0500

    Examine Blocks (#67937)

    * adds examine_block class and a define for it
    made some outputs in chat use examine_block

    * add examine block to tip of the round
    clean up some ------ and ***** seperators
    added <hr> tags to divide sections
    cleaned up botany plant analyzer text outputs

    * bullet points for reagents

    * removes <hr> from mobs examines
    fixes AIs and borgs having a double "That's Default Cyborg!"
    removed some \n newlines
    minor code edits

    * removes all <hr>
    bold names in get_examine_name()
    cleaned up plant analyzer output formatting
    adjust colors and margins of examine_block class
    remove \a from borg examine()

    * remove max-width from css

    * changed margin and padding units from px to em

    * minor edit

commit 1cc53e4a7fffb67dbe967fe85b00443bd227d5e3
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:47:39 2022 -0700

    Automatic changelog generation for PR #68003 [ci skip]

commit 8a72cd9997d76483002203c33ac1adf8934bd409
Author: Coffee <CoffeeDragon16@gmail.com>
Date:   Sun Jun 26 20:47:35 2022 -0400

    Piano broken sprite, helper, and hit sound (#68003)

    * Does the PR

    * fixes playsound locations

commit d031e26824fb9d555298685dc0c714b221861235
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:45:08 2022 -0700

    Automatic changelog generation for PR #67864 [ci skip]

commit 73acc17d9c6d5b574bac314bb2f1577df5b106f6
Author: Y0SH1M4S73R <legoboyo@earthlink.net>
Date:   Sun Jun 26 20:45:03 2022 -0400

    fixes the worn sprites of the material knight armor (#67864)

    About The Pull Request

    The up and down directions of the greyscale knight armor's worn sprites were two pixels too high. I moved them down by that much.
    Why It's Good For The Game

    Fixes #67861
    Changelog

    cl
    fix: The runic knight helmet's worn sprites have had their alignment fixed.
    /cl

commit ce7b253a06ba4b90d3177f17161c0a4804f65303
Author: Changelogs <action@github.com>
Date:   Mon Jun 27 00:34:23 2022 +0000

    Automatic changelog compile [ci skip]

commit 39d337a55090a8485d79d162d4dd1637961b7ad3
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:32:31 2022 -0700

    Automatic changelog generation for PR #67877 [ci skip]

commit aa4fafa15adc8471057e58f9858ac27eb2be904c
Author: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Date:   Sun Jun 26 20:32:28 2022 -0400

    Fix display formatting issue with operating computer UI (#67877)

    Fix display formatting issue with operating computer ui

commit 9132ecb9f8c86d772a9f4e15fc8ca4702d786882
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:29:20 2022 -0700

    Automatic changelog generation for PR #68012 [ci skip]

commit f4d2322c1d50220042400921559aa02dedabea52
Author: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Date:   Sun Jun 26 20:29:17 2022 -0400

    Fixes the beach gateway to have atmos that's breathable (#68012)

    Did you know that the base type of the beach turf has different atmos to literally every other tile in that gateway?

commit ea493520a956c275161b7425dd72caabecc3f132
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:25:22 2022 -0700

    Automatic changelog generation for PR #67939 [ci skip]

commit 006990bd96fec56ad5c756b7dfb1333ec66daa3a
Author: san7890 <the@san7890.com>
Date:   Sun Jun 26 18:25:18 2022 -0600

    Fixes IceBox Disposals Being Broken in Maintenance (#67939)

    Fixes IceBox Disposals

    My bad, I broke it in #67706 (9ee1228a94a4899b73506489e62d8f17ff6d78aa).

commit 4db6afd71ae149e4b2a1f857f47303f2465c4889
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:24:13 2022 -0700

    Automatic changelog generation for PR #67955 [ci skip]

commit 31d6da68d03c38b8d5c0bdbe6ae07174056fe62d
Author: Profakos <profakos@gmail.com>
Date:   Mon Jun 27 02:24:10 2022 +0200

    Fixes an ert bounty hunter's outfit, and the bounty hunter ID in general (#67955)

    Fixes an ert bounty hunter's outfit, and the bounty hunter ID

commit acde596468e5f2b82aa3ec573f458b9f82e32ba0
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:23:49 2022 -0700

    Automatic changelog generation for PR #67957 [ci skip]

commit ddd83a192e1de5227695493d00260f263cf16217
Author: Coffee <CoffeeDragon16@gmail.com>
Date:   Sun Jun 26 20:23:45 2022 -0400

    Glass floor cracking now uses overlays, plasma glass floors display properly (#67957)

    * Renames plasma floor damage states

    * Fixes bug, updates to overlays

commit 31b339d594cb979a5bb59a37e65fc3d81f5734f5
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:20:56 2022 -0700

    Automatic changelog generation for PR #67961 [ci skip]

commit 940f8348f8f9d8bce826acd80bed4c47712c3b80
Author: Coffee <CoffeeDragon16@gmail.com>
Date:   Sun Jun 26 20:20:53 2022 -0400

    Fixes regenerative core implants not functioning (#67961)

    * Repaths regen_core

    * updates var names

    * updates var name

commit f556221182b2dcc1d87a6082a08b4f0a4e61b4d8
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:16:42 2022 -0700

    Automatic changelog generation for PR #67976 [ci skip]

commit a456add569162a46f15fd1c83dfebc88307b10c9
Author: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Date:   Sun Jun 26 20:16:38 2022 -0400

    Fix reinforcement nukeops not getting their HUDs (#67976)

commit 935fbbe9c32d524620b2693b76b0cedb671c1f52
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:15:40 2022 -0700

    Automatic changelog generation for PR #67985 [ci skip]

commit 8dcbe5f730c7048b51b6361da29d7e627ca9a6d1
Author: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
Date:   Mon Jun 27 01:15:37 2022 +0100

    Scrubbers will now turn off when connected pipe disconnects. (#67985)

    Scrubber thing.

    Scrubbers will now turn off on atmos machinery disconnect() proc call.

commit c235c0b049a195dfdf7d33ec48525118630fe920
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:15:24 2022 -0700

    Automatic changelog generation for PR #67987 [ci skip]

commit e792e7f631f1d2b214dbe5be5522eefc67dcddeb
Author: Andrew <mt.forspam@gmail.com>
Date:   Mon Jun 27 03:15:21 2022 +0300

    Fullscreen, status bar hiding, chat input following the theme (#67987)

    * Initial commit

    * input is colored according to the theme

    * removed unused setting

commit 2002cb801a3829cc9aa982e004e369831ba8d156
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:13:47 2022 -0700

    Automatic changelog generation for PR #67993 [ci skip]

commit 1f38917c65a359d2c17ab9cf53de4f40ad588614
Author: private-tristan <54422837+private-tristan@users.noreply.github.com>
Date:   Sun Jun 26 20:13:44 2022 -0400

    meteor with engines strapped to it rocks now have air  (#67993)

    Update emergency_meteor.dmm

commit c128c08a8b1da33fd58894d520b3b8448b6c394f
Author: san7890 <the@san7890.com>
Date:   Sun Jun 26 18:12:19 2022 -0600

    Fixes Icon for the Station Crash Effect (#67994)

    Hey there,

    Apparently when balloons were split out of `items_and_weapons.dmi`, this was left behind causing stuff like this to happen:

    Pretty goofy, right? Let's update the DMI pathing to ensure we don't see the silly purple/white cube when we really want to see an effect that nearly no one knows of (it's the thing that helps you crash the shuttle into a station, I think?).

commit 8ae8761c406f62e17305f59f7229bb669e584215
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:11:53 2022 -0700

    Automatic changelog generation for PR #67995 [ci skip]

commit 118641cfb0299ab45121de39889bfc0ac67958c1
Author: san7890 <the@san7890.com>
Date:   Sun Jun 26 18:11:50 2022 -0600

    MetaStation Brig Underfloor and Decalling Audit (#67995)

    Hey there,

    I was enjoying a nice round of ss13 a few days ago, when I noticed this:

    That's very odd! The caution line was painted in game, but the decals overlapping in such a manner was definitely in the map. So I decided to hunt down and standardize the decalling for the brig to ensure that you wouldn't have to do this. While in the area, I found a lot of weird stuff like:

    * Unconnected shocked windows

    * Atmospherics/Wires running under tables

    * More Decalling Weirdness

    So, I just straighted that all out to the point where it hopefully looks better now.

commit 4b3845a740d5b3cdcf2fd0204055b44f70d29da2
Author: san7890 <the@san7890.com>
Date:   Sun Jun 26 18:10:41 2022 -0600

    Landmark Opportunities - In them their OBJ_LAYER hills (#67996)

    Hey there,

    Landmarks were in the `TURF_LAYER`... layer, so that means you would see bizarre stuff like this in mapping:

    Really obtuse to have everything, and I do mean everything, just be on the same layer of the turf just due to how often stuff gets covered up and left behind. So, I decided to make every single landmark (except for the jobstart ones, which were already on `MOB_LAYER`) to the `OBJ_LAYER` layer. This looks a lot better to my eyes, and the results speak for themselves:

commit 5377b470d85cd7fa3c38b1c16beb078ccaf860ab
Author: san7890 <the@san7890.com>
Date:   Sun Jun 26 18:07:55 2022 -0600

    Updates how holopads look like in map editors (#67997)

    Hey there,

    There was this really picky thing with Holopads being in `FLOOR_PLANE`, so you would get stuff like this since wires+pipes are in the `GAME_PLANE`:

    Looks ugly, right? So, let's set the holopad to `GAME_PLANE` for mapping purposes (since it'll help you visualize what you're looking at in game), and have it set to `FLOOR_PLANE` on Initialize. If we didn't set it on mapload, you'd get this really jarring shadow effect that doesn't really feel "in-place".

commit 2486950c0ef34d603c41daf3f78671456048c208
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:01:50 2022 -0700

    Automatic changelog generation for PR #68004 [ci skip]

commit 707fbfac7e11837865d70587011aa8197b1d0c35
Author: san7890 <the@san7890.com>
Date:   Sun Jun 26 18:01:45 2022 -0600

    [MDB Ignore] Shifts all (sane) varedited signs to directionals  (#68004)

    * [MDB Ignore] Shifts all (sane) varedited signs to directionals

    Hey there,

    So we have these cool new sign directionals now, but we still have all of the old pixel-shifted pre-fabrications lying around. So, I added an UpdatePaths (as well as Updated the Paths) to be a bit better at using directionals, because directionals are pretty neato.

    This should update every single var_edit that used the proper 32 pixelshift (some of them used 28, and I'm unable to account for that automatically with current tooling) into a proper subtype. Mappers tend to learn by looking at well established maps, so it's always important to ensure that the well-established maps use the most recent tooling (i.e.: bring them up to the surface) and avoid needless excess lines in maps.

    * The Commit With All The Maps

    OH GOD OH FUCK

    * Renames the UpdatePaths

commit 6ca5df16b7ae1edb8d9caa777065e327c93dea87
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:00:46 2022 -0700

    Automatic changelog generation for PR #68006 [ci skip]

commit eb9d793ad5e0fed93569d78f46baf12b0eda63af
Author: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Date:   Sun Jun 26 20:00:42 2022 -0400

    [MDB Ignore] Makes mining and labor shuttle home docks their own type, rather than varedits (#68006)

    I'll have to do the others at some point

    I don't want to, but it'll happen

commit bae0c2815f707c0c633b040abc76e0122c2d9c7a
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 17:00:00 2022 -0700

    Automatic changelog generation for PR #68007 [ci skip]

commit e6a8ec6002dd3172b8717998c995f33688b4f6eb
Author: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
Date:   Sun Jun 26 16:59:56 2022 -0700

    Gorillas Move Slightly Faster When Not Holding Anything (#68007)

    Gorilla speed change

commit e0c9eb3519ba4b5eff4f228ed007700a1537ac96
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 16:59:10 2022 -0700

    Automatic changelog generation for PR #68008 [ci skip]

commit 04e99080b3df3a68ec7676b2fea62af269a59e06
Author: ‮ittaG ordnasselA <974661+Hamcha@users.noreply.github.com>
Date:   Mon Jun 27 01:59:06 2022 +0200

    Fixes items disappearing in the suit storage slot (#68008)

    Original fix by SabreML
    Ported from github.com/pariahstation/Pariah-Station/pull/768

commit 2843f6c188cbae95a95a79bcd08b2e553a18ee00
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 16:58:24 2022 -0700

    Automatic changelog generation for PR #68009 [ci skip]

commit 99e5714184bbb4dd98dbc7f68f53d993a1573b76
Author: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
Date:   Sun Jun 26 16:58:20 2022 -0700

    Fixes Invisible Equipment on Monkified Monkeys (#68009)

    Fix invisible monkey equipment

commit e93ed74a80501cb5b7dc9b05ba12cef8c72b5534
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 16:58:15 2022 -0700

    Automatic changelog generation for PR #68010 [ci skip]

commit 66a8b43aefb97279f0071b6adcd4771ea0bd0f82
Author: ‮ittaG ordnasselA <974661+Hamcha@users.noreply.github.com>
Date:   Mon Jun 27 01:58:11 2022 +0200

    Add monitor decryption key to Listening post (#68010)

commit cf8d705403bc0303b291ce1c03026b06a3f408e1
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 16:56:21 2022 -0700

    Automatic changelog generation for PR #68018 [ci skip]

commit 42dc0d9c167e463295d9866222d78e0c7ac16779
Author: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Date:   Mon Jun 27 04:56:17 2022 +0500

    Gave dirs to all MetaStation shutters (#68018)

    gives dirs to all shutters on metastation

commit 9bb216634eda9ea0efeb6a0e4ab142fadbe09f2a
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sun Jun 26 14:24:59 2022 -0700

    Automatic changelog generation for PR #67986 [ci skip]

commit 583918b16a67e4d28e92a4a93c391cb043a01286
Author: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Date:   Mon Jun 27 02:24:56 2022 +0500

    Adds Current Map To Hub Entry (#67986)

commit 3839bd4d751d5a4fc5b6e5d71de8f60e9130e875
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jun 25 19:25:23 2022 -0700

    Automatic changelog generation for PR #67984 [ci skip]

commit b4eab1c357684eafe4f83e6559d29c88d920758f
Author: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Date:   Sat Jun 25 22:25:19 2022 -0400

    Converts all* of the times in the food files into SECONDS (#67984)

    drink your processable component copy-paste

commit 1f1f9dc38e38e14abec300628d5d5bd173d362f1
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jun 25 18:11:52 2022 -0700

    Automatic changelog generation for PR #67823 [ci skip]

commit 9bffdf96ed82184263e44863173046210d3934f2
Author: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Date:   Sat Jun 25 18:11:48 2022 -0700

    Dynamic 2022 part 1 tweaks (#67823)

        Renames low_pop_minimum_threat to low_pop_maximum_threat. Untested but it'll fail CI if it doesn't work
        Increases threat_per_midround_roll from 6.5 to 7, to slightly shift number of midrounds.
        Lowered the number of roundstart traitors. I intend to do more in the larger part 2 PR, but the crux of it is that Dynamic 2022 part 1 creates a lot of midround traitors, which is great, but now that means we can lower the amount of total roundstart traitors. This changes it from 1 traitor every 24 people to 38. Eventually I want to make traitor not scale so hard, but it'll be tough to do that and make sure it doesn't just roll extremely chaotic rulesets in its place.

commit 1efeb8fce904a526f0170e9a886b1c8afe91885f
Author: Changelogs <action@github.com>
Date:   Sun Jun 26 00:26:25 2022 +0000

    Automatic changelog compile [ci skip]

commit 446fd1d098e67ef4ef9cfe84bd598c246abd1c4b
Author: san7890 <the@san7890.com>
Date:   Sat Jun 25 13:57:51 2022 -0600

    Patches Rad_Area Directional Sign Helpers (#67945)

    Patches Rad_Area Directional Sign

    Hey there,

    I was trying to do something much more ambitious, but that completely fell through. I did catch this little mistake that caused this to occur though:

    This PR just makes it the correct pathing for the directional helpers.

commit a7813db2810aee569cb6523f44ac98f90ac7c65a
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jun 25 12:54:28 2022 -0700

    Automatic changelog generation for PR #67963 [ci skip]

commit 5c30dd646228392f218cf371fc44ecba4148e4c4
Author: castawaynont <76170211+castawaynont@users.noreply.github.com>
Date:   Sat Jun 25 12:54:24 2022 -0700

    Allows roundstart access to icebox atmospherics APC (#67963)

    Allows Icebox's atmospherics APC to be accessible roundstart by moving a console.

commit 019f4940a2f74edeebcf422c2ab164bd0c2c0bfa
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jun 25 12:47:13 2022 -0700

    Automatic changelog generation for PR #67954 [ci skip]

commit eaf161ffc07b45bda922fc1f1ef6d03d34714aad
Author: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Date:   Sat Jun 25 15:47:09 2022 -0400

    Fix freon reacting instantly (#67954)

    So why this was happening was because in DM, - has a higher precedence than **, so instead of a nice Gaussian function, this was made, where the y-coordinate represents the amount of freon that's made as a percentage of the total possible amount, which meant that unless your temperature was basically right at 800K, the freon, even thousands of moles of it, would be made instantly (or nearly instantly).

commit 83ea2aa81a443f8dd978b1fe16b85d088ece587a
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jun 25 12:45:34 2022 -0700

    Automatic changelog generation for PR #67970 [ci skip]

commit 0b267183dbbc0cc5d6230e2b5999104900eb03e0
Author: san7890 <the@san7890.com>
Date:   Sat Jun 25 13:45:30 2022 -0600

    Removes the Exclamation Point from the Server Hop Verb (#67970)

    Removes the Exclamation Point from Server Hop

    Hey there,

    Recently, I haven't been able to directly connect to Sybil. However, I am able to easily get onto Campbell, and use the Server Hop command to readily get over there. However, one small snag I've ran into is that the `Server Hop!` verb means that you have to type it in as `server-hop!` in the chat bar. This was really confusing to me the first few times because no other verb requires you input in the correct punctuation. So, I decided to prune out the exclamation point to get weird of this oddity.

commit 1ddf0d89a4d4d52e3ccdb30d12ae20ae92e4b387
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jun 25 11:40:27 2022 -0700

    Automatic changelog generation for PR #67966 [ci skip]

commit 9d13ca227daf53eeaa129d1d7c59486f529ca158
Author: dragomagol <66640614+dragomagol@users.noreply.github.com>
Date:   Sat Jun 25 11:40:23 2022 -0700

    [NO GBP] Allow expanded hypospray chems to refill once more (#67966)

    Co-authored-by: tattle <article.disaster@gmail.com>

commit cd342520862d0b76d8a0ab04ebda2b6fa9050cf9
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Sat Jun 25 10:54:54 2022 -0700

    Automatic changelog generation for PR #67828 [ci skip]

commit bd44b995fdf05b72fe980d13c58bccdc3a879760
Author: Wallem <66052067+Wallemations@users.noreply.github.com>
Date:   Sat Jun 25 13:54:50 2022 -0400

    Adds the Active Sonar mod to the game.  (#67828)

    Adds the Active Sonar Module to the game, a module which lets you see the locations of living creatures within a 9 tile radius.
    It can be attained by researching Security Modules, and then printed like any other module.
    It takes 3 complexity to house, has a 25 second cooldown, and takes a good amount of energy to use.

commit fd862572a874109db70c975a902ec7ef62788a20
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jun 24 20:53:44 2022 -0700

    Automatic changelog generation for PR #67965 [ci skip]

commit cfa8f0819b0ef555ff98db61b8829ea0d49c11c8
Author: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Date:   Fri Jun 24 23:53:40 2022 -0400

    Changes shutters & airlocks to glass in Icebox atmos (#67965)

    See title, the non-radiation shutters and non-maintenance airlocks in the new Icebox atmos were made transparent
    (Note: Not tested in game, but viewed in Dream Maker and looks fine)

commit cda64e41b76f3d94eb14160516aabf42b372cf61
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jun 24 18:35:23 2022 -0700

    Automatic changelog generation for PR #67952 [ci skip]

commit c3ba5e1922da336332a9a68610907187765df991
Author: Profakos <profakos@gmail.com>
Date:   Sat Jun 25 03:35:20 2022 +0200

    Fixes several spelling mistakes in ash lore (#67952)

    In several cases, the Nightwatcher has been called Nightwater. This PR fixes that.

commit 99910cc1add3d66c08818090c745b56a4b185572
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jun 24 18:10:20 2022 -0700

    Automatic changelog generation for PR #67989 [ci skip]

commit e3acf068bffc0700afce32b8529934989c1b8700
Author: Kylerace <kylerlumpkin1@gmail.com>
Date:   Fri Jun 24 18:10:16 2022 -0700

    fixes ghost hearing (#67989)

commit d77a1f30d4cb1c4b675e31cc3f9fdc9de6129e89
Author: Changelogs <action@github.com>
Date:   Sat Jun 25 00:22:22 2022 +0000

    Automatic changelog compile [ci skip]

commit 37861f2dfb1203030143a859051646639149925b
Author: tgstation-server <tgstation-server@tgstation13.org>
Date:   Fri Jun 24 17:01:49 2022 -0700

    Automatic changelog generation for PR #67949 [ci skip]

commit 110edaa153a6222de47fea37956ecee1fdb84269
Author: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Date:   Sat Jun 25 01:01:45 2022 +0100

    Security Level Datums (#67949)

commit 120e…
  • Loading branch information
EOBGames committed Jul 3, 2022
1 parent 4594f0a commit 743fec0
Show file tree
Hide file tree
Showing 2,117 changed files with 88,498 additions and 75,797 deletions.
5 changes: 4 additions & 1 deletion .editorconfig
@@ -1,10 +1,13 @@
# http://editorconfig.org
root = true

[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf

[*.yml]
indent_style = space
Expand Down
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Expand Up @@ -45,6 +45,7 @@
/code/modules/preferences_menu.dm @Mothblocks
/code/modules/preferences_savefile.dm @Mothblocks
/tgui/packages/tgui/interfaces/PreferencesMenu/ @Mothblocks
/tools/screenshot-test-comparison/ @Mothblocks

# MrMelbert

Expand Down
6 changes: 6 additions & 0 deletions .github/CONTRIBUTING.md
Expand Up @@ -191,3 +191,9 @@ Unless overridden or a non standard git binary is used the line ending settings
Note: VSC requires an [extension](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) to take advantage of editorconfig.

Github actions that require additional configuration are disabled on the repository until ACTION_ENABLER secret is created with non-empty value.

## Using the Maintainer Role Ping in Discord

This role `@Maintainer` is pingable as a compromise reached with the server host MrStonedOne over the auto-stale system we presently have in the codebase. It should be used only to ping Maintainers when your PR has had the "Stale" label applied. Using it before then can be met with escalating timeouts and referral to /tg/station's Discord moderators for further infractions.

Feel free to engage and obtain general feedback in the Coding General channel without the role ping before your PR goes stale to build interest and get reviews.
328 changes: 327 additions & 1 deletion .github/guides/STYLE.md
Expand Up @@ -5,7 +5,8 @@ This is the style you must follow when writing code. It's important to note that
2. [Paths and Inheritence](#paths-and-inheritence)
3. [Variables](#variables)
4. [Procs](#procs)
5. [Things that do not matter](#things-that-do-not-matter)
5. [Macros](#macros)
6. [Things that do not matter](#things-that-do-not-matter)

## General Guidelines

Expand Down Expand Up @@ -399,6 +400,331 @@ turn_on(power_usage = 30) // Fine!
set_invincible(FALSE) // Fine! Boolean parameters don't always need to be named. In this case, it is obvious what it means.
```

## Macros

Macros are, in essence, direct copy and pastes into the code. They are one of the few zero cost abstractions we have in DM, and you will see them often. Macros have strange syntax requirements, so if you see lots of backslashes and semicolons and braces that you wouldn't normally see, that is why.

This section will assume you understand the following concepts:

### Language - Hygienic
We say a macro is [**hygienic**](https://en.wikipedia.org/wiki/Hygienic_macro) if, generally, it does not rely on input not given to it directly through the call site, and does not affect the call site outside of it in a way that could not be easily reused somewhere else.

An example of a non-hygienic macro is:

```dm
#define GET_HEALTH(health_percent) ((##health_percent) * max_health)
```

In here, we rely on the external `max_health` value.

Here are two examples of non-hygienic macros, because it affects its call site:

```dm
#define DECLARE_MOTH(name) var/mob/living/moth/moth = new(##name)
#define RETURN_IF(condition) if (condition) { return; }
```

### Language - Side effects/Pure
We say something has [**side effects**](https://en.wikipedia.org/wiki/Side_effect_(computer_science)) if it mutates anything outside of itself. We say something is **pure** if it does not.

For example, this has no side effects, and is pure:
```dm
#define MOTH_MAX_HEALTH 500
```

This, however, performs a side effect of updating the health:
```dm
#define MOTH_SET_HEALTH(moth, new_health) ##moth.set_health(##new_health)
```

Now that you're caught up on the terms, let's get into the guidelines.

### Naming
With little exception, macros should be SCREAMING_SNAKE_CASE.

### Put macro segments inside parentheses where possible.
This will save you from bugs down the line with operator precedence.

For example, the following macro:

```dm
#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION T20C + 10
```

...will break when order of operations comes into play:

```dm
var/temperature = MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION * 50
// ...is preprocessed as...
var/temperature = T20C + 10 * 50 // Oh no! T20C + 500!
```

This is [a real bug that tends to come up](https://github.com/tgstation/tgstation/pull/37116), so to prevent it, we defensively wrap macro bodies with parentheses where possible.

```dm
// Phew!
#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION (T20C + 10)
```

The same goes for arguments passed to a macro...

```
// Guarantee
#define CALCULATE_TEMPERATURE(base) (T20C + (##base))
```

### Be hygienic where reasonably possible

Consider the previously mentioned non-hygienic macro:

```dm
#define GET_HEALTH(health_percent) ((##health_percent) * max_health)
```

This relies on "max_health", but it is not obviously clear what the source is. This will also become worse if we *do* want to change where we get the source from. This would be preferential as:

```dm
#define GET_HEALTH(source, health_percent) ((##health_percent) * (##source).max_health)
```

When a macro can't be hygienic, such as in the case where a macro is preferred to do something like define a variable, it should still do its best to rely only on input given to it:

```dm
#define DECLARE_MOTH(name) var/mob/living/moth/moth = new(##name)
```

...would ideally be written as...

```dm
#define DECLARE_MOTH(var_name, name) var/mob/living/moth/##var_name = new(##name)
```

As usual, exceptions exist--for instance, accessing a global like a subsystem within a macro is generally acceptable.

### Preserve hygiene using double underscores (`__`) and `do...while (FALSE)`

Some macros will want to create variables for themselves, and not the consumer. For instance, consider this macro:

```dm
#define HOW_LONG(proc_to_call) \
var/current_time = world.time; \
##proc_to_call(); \
world.log << "That took [world.time - current_time] deciseconds to complete.";
```

There are two problems here.

One is that it is unhygienic. The `current_time` variable is leaking into the call site.

The second is that this will create weird errors if `current_time` is a variable that already exists, for instance:

```dm
var/current_time = world.time
HOW_LONG(make_soup) // This will error!
```

If this seems unlikely to you, then also consider that this:

```dm
HOW_LONG(make_soup)
HOW_LONG(eat_soup)
```

...will also error, since they are both declaring the same variable!

There is a way to solve both of these, and it is through both the `do...while (FALSE)` pattern and by using `__` for variable names.

This code would change to look like:

```dm
#define HOW_LONG(proc_to_call) \
do { \
var/__current_time = world.time; \
##proc_to_call(); \
world.log << "That took [world.time - current_time] deciseconds to complete."; \
} while (FALSE)
```

The point of the `do...while (FALSE)` here is to **create another scope**. It is impossible for `__current_time` to be used outside of the define itself. If you haven't seen `do...while` syntax before, it is just saying "do this while the condition is true", and by passing `FALSE`, we ensure it will only run once.

### Keep anything you use more than once in variables

Remember that macros are just pastes. This means that, if you're not thinking, you can end up [creating some really weird macros by reusing variables](https://github.com/tgstation/tgstation/pull/55074).

```dm
#define TEST_ASSERT_EQUAL(a, b) \
if ((##a) != (##b)) { \
return Fail("Expected [##a] to be equal to [##b]."); \
}
```

This code may look benign, but consider the following code:

```dm
/// Deal damage to the mob, and return their new health
/mob/living/proc/attack_mob(damage)
health -= damage
say("Ouch!")
return health
// Later, in a test, assuming mobs start at 100 health
TEST_ASSERT_EQUAL(victim.attack_mob(20), 60)
```

We're only dealing 20 damage to the mob, so it'll have 80 health left. But the test will fail, and report `Expected 60 to be equal to 60.`

Uh oh! That's because this compiled to:

```dm
if ((victim.attack_mob(20)) != 60)
return Fail("Expected [victim.attack_mob(20)] to be equal to [60].")
```

It's running the proc twice!

To fix this, we need to make sure the proc only runs once, by creating a variable for it, and using our `do...while (FALSE)` pattern we learned earlier.

```dm
#define TEST_ASSERT_EQUAL(a, b) \
do { \
var/__a_value = ##a;
var/__b_value = ##b;
if (__a_value != __b_value) { \
return Fail("Expected [__a_value] to be equal to [__b_value]."); \
} \
} while (FALSE)
```

Now our code correctly reports `Expected 80 to be equal to 60`.

### ...but if you must be unhygienic, try to restrict the scope.

This guideline can make some code look extremely noisy if you are writing a large proc, or using the macro a large amount of times.

In this case, if your macro is only used by one proc, define the macro in that proc, ideally after whatever variables it uses.

```dm
/proc/some_complex_proc()
var/counter = 0
#define MY_NECESSARY_MACRO counter += 5; do_something(counter);
// My complex code that uses MY_NECESSARY_MACRO here...
#undef MY_NECESSARY_MACRO
```

### Don't perform work in an unsuspecting macro

Suppose we have the following macro:

```dm
#define PARTY_LIGHT_COLOR (pick(COLOR_BLUE, COLOR_RED, COLOR_GREEN))
```

When this is used, it'll look like:

```dm
set_color(PARTY_LIGHT_COLOR)
```

Because of how common using defines as constants is, this would seemingly imply the same thing! It does not look like any code should be executing at all. This code would preferably look like:

```dm
set_color(PARTY_LIGHT_COLOR())
```

...which *does* imply some work is happening.

BYOND does not support `#define PARTY_LIGHT_COLOR()`, so instead we would write the define as:

```dm
#define PARTY_LIGHT_COLOR(...) (pick(COLOR_BLUE, COLOR_RED, COLOR_GREEN))
```

### `#undef` any macros you create, unless they are needed elsewhere

We do not want macros to leak outside their file, this will create odd dependencies that are based on the filenames. Thus, you should `#undef` any macro you make.

```dm
// Start of corn.dm
#define CORN_KERNELS 5
// All my brilliant corn code
#undef CORN_KERNELS
```

It is often preferable for your `#define` and `#undef` to surround the code that actually uses them, for instance:

```dm
/obj/item/corn
name = "yummy corn"
#define CORN_HEALTH_GAIN 5
/obj/item/corn/proc/eat(mob/living/consumer)
consumer.health += CORN_HEALTH_GAIN // yum
#undef CORN_HEALTH_GAIN
// My other corn code
```

If you want other files to use macros, put them in somewhere such as a file in `__DEFINES`. That way, the files are included in a consistent order:

```dm
#include "__DEFINES/my_defines.dm" // Will always be included first, because of the underscores
#include "game/my_object.dm" // This will be able to consistently use defines put in my_defines.dm
```

### Use `##` to help with ambiguities

Especially with complex macros, it might not be immediately obvious what's part of the macro and what isn't.

```dm
#define CALL_PROC_COMPLEX(source, proc_name) \
if (source.is_ready()) { \
source.proc_name(); \
}
```

`source` and `proc_name` are both going to be directly pasted in, but they look just like any other normal code, and so it makes reading this macro a bit harder.

Consider instead:

```dm
#define CALL_PROC_COMPLEX(source, proc_name) \
if (##source.is_ready()) { \
##source.##proc_name(); \
}
```

`##` will paste in the define parameter directly, and makes it more clear what belongs to the macro.

This is the most subjective of all the guidelines here, as it might just create visual noise in very simple macros, so use your best judgment.

### For impure/unhygienic defines, use procs/normal code when reasonable

Sometimes the best macro is one that doesn't exist at all. Macros can make some code fairly hard to maintain, due to their very weird syntax restrictions, and can be generally fairly mysterious, and hurt readability. Thus, if you don't have a strong reason to use a macro, consider just writing the code out normally or using a proc.

```dm
#define SWORD_HIT(sword, victim) { /* Ugly backslashes! */ \
##sword.attack(##victim); /* Ugly semicolons! */ \
##victim.say("Ouch!"); /* Even ugly comments! */ \
}
```

This is a fairly egregious macro, and would be better off just written like:
```dm
/obj/item/sword/proc/hit(mob/victim)
attack(victim)
victim.say("Ouch!")
```

## Things that do not matter
The following coding styles are not only not enforced at all, but are generally frowned upon to change for little to no reason:

Expand Down

0 comments on commit 743fec0

Please sign in to comment.