* Fixes AIs being able to untilt vendors remotely (#76819)
## About The Pull Request
Title. Also prevents AIs from making shocked vendors repeatedly do
sparks as failed shock() procs happen on each click.
## Why It's Good For The Game
Bugs... bad?
## Changelog
🆑
fix: The AI can no longer untip vendors remotely/spam sparks from
shocked vendors
/🆑
* Fixes AIs being able to untilt vendors remotely
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
* Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts
* Update communications.dm
* Modular override
* Some modular adjustments, removes 'emagged' vars in favor of obj_flags
* whoops, mobs don't have obj_flags.
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
* Adds a new heavy weight space pirate variant: The space IRS!
* Fix merge conflicts, UpdatePaths
* Fixes some path changes
* Updates icon files, adds a new sprite for breacher slug box illustration
* Removes some skyrat edits and puts them in modular overrides instead
---------
Co-authored-by: Singul0 <127663818+Singul0@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
* Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests
* Fixing merge conflicts
* don't forget to ctrl+s!
* Another forgotten file
* urgh
* gets rid of vestiges of update_atom_languages()
and mind language holders
* No longer needed
* Fixes some modular grant_language calls
* Deprecated code
* This was up here before..
* Fixes failing unit tests, refactors silverscale lizards language a bit removing the need for skyrat edits
Removes some no longer needed code
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
* Adds a few things to drobes (#76757)
## About The Pull Request
Adds latex gloves and medical headsets to the MediDrobe.
Adds pyjamas and white shoes to the ClothesMate.
Adds science backpack, duffel bag and satchel to the RoboDrobe.
## Why It's Good For The Game
It is nice be able to replace your medical headset on Metastation where
there is no lockers with medical headsets in.
More clothes in the ClothesMate allows people to have more fun dressing
up their spaceman in the locker room.
RoboDrobe currently lacks backpacks which is a bit annoying and this PR
fixes that.
## Changelog
🆑
add: Adds latex gloves and medical headsets to the MediDrobe.
add: Adds pyjamas, nightcaps and white shoes to the ClothesMate.
add: Adds science backpack, duffel bag and satchel to the RoboDrobe.
/🆑
* Adds a few things to drobes
---------
Co-authored-by: Archie <72550375+Archimus12@users.noreply.github.com>
* Adds more job relevant items to drobes (#75973)
Adds coloured large scarfs and winter coats to ClothesMate
Adds latex gloves to SciDrobe, ChemDrobe, ViroDrobe and GeneDrobe
Adds nitrile gloves to MediDrobe
Adds science headsets to GeneDrobe and RoboDrobe
Adds medical headsets to ViroDrobe and ChemDrobe
Adds black shoes to ChefDrobe
Adds black wizard robes and black wizard hat to MagiVend
Adds grey backpack, grey satchel, leather satchel and grey duffel bag to
CargoDrobe
## Why It's Good For The Game
It makes it so that some job relevant items such as gloves are in drobes
which makes them harder to steal, this will make it less likely that a
latejoin medical doctor will be unable to find and nitrile gloves. The
gloves are added in departments which already have access to them so it
won't result in more people having access to the gloves.
* Adds more job relevant items to drobes
---------
Co-authored-by: Archie <72550375+Archimus12@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Fixes some stupid airlock sleeps
* Fixes the conflicts before checking the merge conflicts
* Converts another wires = to set_wires() and removes another issue
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Changes brand intelligence to check onstation var instead of station z level. Well, kind of both. (#76266)
## About The Pull Request
Checks the `.onstation` var on `/obj/machinery/vending` instead of
checking the z-level directly.
The z-level check is already run in init to set this var in the first
place, but this way it allows the var to be set manually to secure
vendors that are on the station z-level but are not wanted as candidates
for brand intelligence.
This scenario doesn't currently exist here, but it affects things like
https://github.com/Skyrat-SS13/Skyrat-tg/issues/21918 and
future-proofing is always nice.
I did consider doing this as another var, but that felt a bit excessive.
Can change if wanted.
(also removes some duplicate comments because I was there)
## Why It's Good For The Game
Wasted events uhh bad
## Changelog
🆑
fix: Brand intelligence can no longer affect off-station vendors in some
specific circumstances.
/🆑
* Changes brand intelligence to check onstation var instead of station z level. Well, kind of both.
---------
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Categorizes chef equipment vendor (#76122)
## About The Pull Request
Slots the chef equipment vendor into categories, since it was pretty
cluttered with a variety of things.

## Why It's Good For The Game
Main page had a combination of clothing, tools, utensils, condiments,
skill chips, and books. What a mess
## Changelog
🆑 Melbert
qol: Categorizes chef vendor
/🆑
* Categorizes chef equipment vendor
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* New Wizard spell "branch": Vendormancy (#75679)
## About The Pull Request
New item for wizards, ~~the Staff~~ Scepter of Runic Vendormancy.
With it, you can summon Runic Vending machines to block your enemies,
push them 2 tiles back around the summoning tile, throw the vendors 4
tiles away to squash them or simple detonate the vendors for direct
damage against enemies within a 2 tile range.
The scepter has 3 charges that can be recharged after a "long" channel
so while powerful, it is a tactical weapon and wizards can't directly
steamroll the crew with endless vendors. (Unless they buy multiple
scepters, but that is just funny.)
Also, there is a bug with the throw... I copied how baseball bats deal
with knockback, but they consistently don't push the vendors back, just
spin them on the same tile... I appreciate if anyone has any idea on how
to fix or change that to a better system.
## New changes I made
The vendor has a random set of REAL wizard robes and hat, sandals and a
foam vendor scepter as products to sell now.
This gives the crew some real armor, and if it is considered too much, I
can swap it for the fake versions.
IMO the real clothes work as the perfect bait for the crew to approach
the vendors and get exploded in the process, and while a random
assistant might get real wizard armor to go valid hunt the wizard, the
crew might just mistake them for the real wizard and beat them to death,
which is too funny.
## Why It's Good For The Game

About a year ago I played Stoneshard, and it has such an amazing
Geomancy Wizard that I wanted to port some of its gameplay to SS13 as
our wizards, while funny and destructive, are kinda simple to play...
Summoning and blowing up rocks was nice, but I randomly had the idea of
summoning Vendors while at work and vendors squashing people has become
such an iconic SS13 thing to me that I had to stop being lazy and start
working on this.
Something, something, enviromental combat wizard.
## Changelog
Gonna polish the changelog later too...
🆑 Guillaume Prata
add: New Wizard spell branch: Vendormacy! Summon runic vending machines
with your Vending Scepter, force push them on your enemies to squish
them or blow them up while they are busy buying from the machines.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>
* New Wizard spell "branch": Vendormancy
---------
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>
* Changes the base amount of bone gel. (#75851)
## About The Pull Request
Changed the amount from 1 to 5 for original `bone_gel` so it's easier
for mappers to add the right bone gel.
Deleted subtype `/four` and added subtype `/one` specifically for bone
gel creating.
Increased from 4 to 5 because surgical tape has 5.
## Why It's Good For The Game
Having 1 bone gel near 5 surgical tapes always seemed off.
## Changelog
🆑
balance: Bone gel standart amount has been increased to 5.
/🆑
* Changes the base amount of bone gel.
* i am NOT a coder do NOT ask me what i did
---------
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
* Adds Ethereal Drinks (#75487)
## About The Pull Request
Adds 3 new electric-themed drinks for ethereals. They count as food for
etherials, (not much, one glass is about equivelant to a plasma burger),
but humans can drink them as well, among other effects.
## Why It's Good For The Game
As an ethereal player, I do feel while our food is convenient, that we
miss out on the RP other species get from going to the bar. This allows
for etherials to order drinks from the bartender. All effects work on
all races, with the hunger satiation as the exception.
## Changelog
🆑
add: Voltaic Yellow Wine - New "base" drink, found in booze-o-mat. No
special effects besides acting as a weak ethereal food. Not very potent
in terms of alcohol.
add: Telepole - New mixed drink themed after thunderstorms, gives the
same shock-resist grey bull does. Made from 1 part Voltaic Wine, 1 Part
Sake, and 2 parts Dark & Stormy. Moderately potent.
add: Pod Tesla - New mixed drink, themed after the old removed tesla
engine (the singulo gets a cocktail, it should too!) Grants a brave -
bull phobia resist, and a stronger grey bull shock resist allowing you
to (temporarily) resist tesla arcs from reactive armor and the SM's
tesla coils. Gives a pleasant thought to whoever drank it, because this
thing is a pain to make. Made from 5 parts admiralty, 5 parts telepole,
and 3 parts brave bull. Highly potent.
qol: Unsure if this counts as QOL or balance, but the fact sol dry is in
3 different cocktails but the bartender has to buy 30u cans of it made
me feel it deserved being added to the soda dispenser.
image: Added graphics for the above drinks, shown below, from left to
right: Pod tesla, Voltaic Yellow wine, Telepole, Voltaic Wine (bottle)
<img width="171" alt="image"
src="https://github.com/tgstation/tgstation/assets/69398298/901b2f64-1723-44b6-8f78-ef21bd477d96">
/🆑
---------
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Adds Ethereal Drinks
---------
Co-authored-by: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com>
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Adds Hereditary Manifold Sickness, a Chronic Illness Quirk (#75035)
## About The Pull Request
Adds a new quirk called Chronic Illness. It provides a -12 score as it's
a pretty life-altering quirk, but could give way to interesting RP.
- Hereditary Manifold Sickness (HMS) can not be cured, it can only be
delayed and treated using a new unmakable vaccine called
"Sansufentanyl". You spawn with 6 pills and are able to order crates
containing 12 more from cargo as it's proprietary to Interdyne.
- HMS has 5 stages total.
Stage 1 does nothing
Stage 2 gives minor effects
Stage 3 becomes debilitating
Stage 4 is a danger zone.
Upon reaching Stage 5, there are 4 possibilities, 1 is a recovery back
to stage 1, and the other 3 are deaths which I won't explain here to
avoid ruining it. (read the code I guess.)
This also adds a new traitor objective to infect someone with HMS.
- [x] Correcting the chronic aspect.
- [x] Add traitor objective.
- [x] Tweaking for fairness.
## Why It's Good For The Game
HMS is a new quirk that gives a much more hardcore junky or tumor
playstyle. Neglecting HMS can mean the end of your shift. it's not
something you want to mess with.
It puts a reliance on cargo rather than medical for a quirk and gives a
use case for money. (price may be tweaked still). I think it'd be
interesting to see if people will start mugging or robbing the vault
more to get their life-saving medication.
## Changelog
🆑
add: Interdyne has released a new medication to treat those who are in
the wrong timeline!
add: Interdyne has also realized this is VERY profitable! They've begun
arming their operatives with an autoinjector.
/🆑
---------
Co-authored-by: Tom <8881105+tf-4@ users.noreply.github.com>
* Adds Hereditary Manifold Sickness, a Chronic Illness Quirk
---------
Co-authored-by: Charlotte <98856144+orthography@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@ users.noreply.github.com>
* Coroner Tweaks (#75250)
I played some as coroner, and realized there were a few things that were
either errors in the original PR, left out, or that could be added to
improve the feel of the job a little more. It ended up covering a fair
bit of ground, with a number of changes, but i'll go over the biggest
parts here:
First up! jumpsuits and jumpskirts! the medical doctor job, despite
starting with scrubs, still has a jumpsuit and skirt available in the
medidrobe. So, i added a pair for coroners to the mortidrobe, enjoy!
(and thanks to the kind morgue skeleton for modeling these with me!)
also, you may notice some black pixels on my head - that's because i
added a black scrubcap to the mortidrobe as well! the sprites were done
for this already, so when i noticed it was absent i opted to include it
here, for consistency with the other scrub types in the game.
next up, we have the other addition of this PR, the coroner's medkit
this is mainly for storing and consolidating coroner job items, in a
flavorful and interesting way. the coroner spawns with the larger
variant, that has more storage, but can still only hold up to small
items. it also includes a few more flavor items, that the compact
version lacks. the smaller version can be obtained in the autopsy kit
from cargo, and one more is available in the mortidrobe.
smaller changes:
i fixed some weird transparent pixels on the autopsy scanner itself, and
cleaned up some incorrect shading on the obj icon for the black scrubs.
before and after here:
i also gave the coroner their own type of pda, since they were
previously inheriting the medical one. this one matches their color
palette! in addition to this, i swapped the botkeeper app they
previously had for plexagon crew manifest.
* Coroner Tweaks
---------
Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
* Reagent soup / Soup rework / Stoves - A kitchen expansion
* fixes that stuff
* puts the range stove on maps that sohuld have it
* fixes some paths that don't exist anymore
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
* Adds service radio to jani/curator/chaplain/lawyer vendor (#74086)
## About The Pull Request
**Adds service radio to jani/curator/chaplain/lawyer vendor**
## Why It's Good For The Game
Janitor/curator/chaplain/lawyer belong to service department; yet
janitor/curator/chaplain/lawyer have no source of getting service radio
if transferred/lost. They don't have it in their vendor or closet.
## Changelog
🆑
qol: adds service radio to jani/curator/chaplain/lawyer vendor
/🆑
* Adds service radio to jani/curator/chaplain/lawyer vendor
---------
Co-authored-by: Ray <64306407+OneAsianTortoise@users.noreply.github.com>
* Adds a martial artist gi to the AutoDrobe. (#73794)
## About The Pull Request
On a dark and stormy night, @ Cheshify asked in OOC if anyone would be
down to make a martial arts gi of no known origin for an event idea they
had.
Naturally, I decided to put my talent (CITATION NEEDED) to use, and I
have both sprited and coded in (the latter with the help of Cheshify
ofc) the aforementioned gi of no known origin.
<details>
<summary>Picture</summary>

</details>
## Why It's Good For The Game

## Changelog
🆑 dessysalta, Cheshify
add: Nanotrasen has added a martial artist gi to the AutoDrobe for those
who want to go even further byond.
imageadd: Aforementioned gi sprites.
/🆑
* Adds a martial artist gi to the AutoDrobe.
---------
Co-authored-by: Rem/Dess <117083785+dessysalta@users.noreply.github.com>
Vendors now tip in the opposite direction when struck from inside of a wall (#72898)
When someone standing on a closed turf strikes a vendor, the vendor will
now instantly tip over, in the _opposite_ direction. This will provide
no chance for goodies, meaning you cannot build walls on top of yourself
and abuse this for free stuff.
Co-authored-by: Rhials <Datguy33456@gmail.com>
* adds atmospheric gloves, small resprite of firefighter gear, repaths stupid glove paths (#72736)
repaths a lot of gloves off /color because they were incredibly stupid
firefighter gear has gotten an update (it doesnt cover hands anymore
though, you need something else)
firefighter helmets no longer hide your mask or glasses

fixed engine goggles starting with darkness vision
to the atmos lockers adds atmospheric gloves, a pair of thick (chunky
fingers) gloves that are fireproof and fire protective, slightly shock
resistant and let you fireman carry people faster.
atmospheric firefighter helmets now are a subtype of welding hardhats,
you can enable a welding visor.
welding hardhats change mode with right click instead of altclick
im not a good spriter but i think this resprite makes them fit nicer
with other engi equipment
lets me firefighter rp
🆑
add: Atmospheric Gloves, thick gloves that are fully fireproof and fire
protective and let you fireman carry people faster.
fix: fixes engine goggles starting with darkness vision
qol: firefighter helmets can now enable a welding visor
qol: welding hardhats change mode with right click instead of altclick
balance: firesuits no longer protect your hands
/🆑
* Makes shit compile
* Updates the digi and snouted stuff to match the new sprites (thanks Halcyon!)
* Fixes a whole ton more issues that popped up
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Adds the eyepatch to the Autodrobe (#72742)
Adds the eyepatch to the Autodrobe costume vendor.
* Adds the eyepatch to the Autodrobe
Co-authored-by: Slurge00 <102489377+Slurge00@users.noreply.github.com>
* Refactors memories to be less painful to add and apply, moves memory detail / text to memory subtypes. Adds some new memories to demonstrate. (#72110)
So, a huge issue with memories and - what I personally believe is the
reason why not many have been added since their inception is - they're
very annoying to add!
Normally, adding subtypes of stuff like traumas or hallucinations are as
easy as doing just that, adding a subtype.
But memories used this factory argument passing method combined with
holding all their strings in a JSON file which made it just frustrating
to add, debug, or just mess with.
It also made it much harder to organize new memories keep it clean for
stuff like downstreams.
So I refactored it. Memories are now handled on a subtype by subtype
basis, instead of all memories being a `/datum/memory`.
Any variety of arguments can be passed into memories like addcomponent
(KWARGS) so each subtype can have their own `new` parameters.
This makes it much much easier to add a new memory. All you need to do
is make your subtype and add it somewhere. Don't need to mess with jsons
or defines or anything.
To demonstrate this, I added a few memories. Some existing memories had
their story values tweak to compensate.
Makes it way simpler to add new memories. Maybe we'll get some more fun
ones now?
🆑 Melbert
add: Roundstart captains will now memorize the code to the spare ID
safe.
add: Traitors will now memorize the location and code to their uplink.
add: Heads of staff winning a revolution will now get a memory of their
success.
add: Heads of staff and head revolutionaries who lose their respective
sides of the revolution also get a memory of their failure.
add: Completing a ritual of knowledge as a heretic grants you a quality
memory.
add: Successfully defusing a bomb now grants you a cool memory. Failing
it will also grant you a memory, though you will likely not be alive to
see it.
add: Planting bombs now increase their memory quality depending on how
cool the bomb is.
refactor: Memories have been refactored to be much easier to add.
/🆑
* Modular!
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Unironically removes the atmos and black beret (#72722)
## About The Pull Request
Removes atmos berets
## Why It's Good For The Game
Berets shouldn't be thrown into every job, it's milsim circlejerking
dressup shit that creeps out of our milsim containment jobs (security)
and into other innocent jobs. There is absolutely no reason for this job
to have a beret just straight up. Can we add unique hats to the game,
not the same one recolored every way to Sunday? That's my problem. We
don't have unique clothes, we have a billion types of beret when the
BASE BERET TYPE has `IS_PLAYER_COLORABLE_1` so ANYONE can color it. So
again, why do we have the atmos beret? To clog the wardrobe, a vending
machine added specifically because we couldn't stop clogging the
original locker atmos techs spawned in?
The black beret has the same problem: recolored item when you can get
the item of any color
## Changelog
🆑
del: Atmospherics beret and black beret
/🆑
* Unironically removes the atmos and black beret
* update modular
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* [no gbp] removes all duplicate armor datums (#72354)
closes#72348
Title
My bad
Heres the script I used this time if you want to
```cs
var baseDir = Environment.CurrentDirectory;
var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList();
var known = new Dictionary<string, List<KeyValuePair<string, int>>>();
foreach (var file in allFiles)
{
var fileLines = File.ReadAllLines(file);
for (var i = 0; i < fileLines.Length; i++)
{
var line = fileLines[i];
if (line.StartsWith("/datum/armor/"))
{
var armorName = line.Replace("/datum/armor/", "").Trim();
if (!known.ContainsKey(armorName))
known[armorName] = new List<KeyValuePair<string, int>>();
var knownList = known[armorName];
knownList.Add(new KeyValuePair<string, int>(file, i));
}
}
}
Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums.");
var duplicates = new Dictionary<string, List<int>>();
foreach (var (_, entries) in known)
{
var actuals = entries.Skip(1).ToList();
foreach (var actual in actuals)
{
if (!duplicates.ContainsKey(actual.Key))
duplicates[actual.Key] = new List<int>();
duplicates[actual.Key].Add(actual.Value);
}
}
Console.WriteLine($"There are {duplicates.Count} files to update.");
foreach (var (file, idxes) in duplicates)
{
var fileContents = File.ReadAllLines(file).ToList();
foreach (var idx in idxes.OrderByDescending(i => i))
{
string line;
do
{
line = fileContents[idx];
fileContents.RemoveAt(idx);
}
while (!String.IsNullOrWhiteSpace(line));
}
File.WriteAllLines(file, fileContents);
}
```
* modular
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Completely Culls req_access_txt/req_one_access_txt (#72281)
Hey there,
Now that every instance of `req_access` and `req_one_access` is a list
of strings, there is absolutely no reason for
req_access_txt/req_access_one_txt to exist. In fact, any instance where
they were still used in the codebase was very convoluted and was very
broken! Don't worry, I fixed it all out, and life is good.
I also dmdoc the surviving access variables, because those were missing.
I went on the side of caution and made a more verbose documentation with
an example just to have people really grasp this (it took me a while to
actually get it)
I believe that we changed _everything_ over to the
req_access/req_one_access system earlier this year in VV, but the
problem is that _new mappers don't understand the difference between the
two systems_. In fact, the "txt" system is completely redundant since
all it does is transition stuff to the "base" system. So, let's just
completely cull the one that's all but deprecated and ensure this
confusion no longer arises. The whole purpose of "txt" seemed to be to
convert the access, but it's all pointless now that we can just read the
list directly.
I'm also 99% certain that the "access check" on vending machines broke
(and didn't seem to have correct logic in the first place? I
legitimately couldn't find a case where it could fail in testing, so I
changed that up), and that's fixed up now. Let me know if I was clueless
there. I know it's short-circuiting now as opposed to "all must be
true", but it just didn't work.
* Completely Culls req_access_txt/req_one_access_txt
* oh the misery
* makes them use the thing that actually works
* test to see if engineering access is breaking it
* Revert "test to see if engineering access is breaking it"
This reverts commit 3cc2c554ff18f435a51601782e64c76193298db7.
* Fix access checks when req_access is null (#72458)
## About The Pull Request
Fixes#72450 - This seems to be an oversight in some of the access
refactors we've been through recently. When there was an assumption in
`check_access_list()` that `req_access` would always be a list, and that
if it was not something terrible had gone wrong and the door should
default to public access.
With the cleanup of the _txt access vars and the introduction of mapping
access helpers, this assumption is no longer true. `req_access` will be
null when multiple helpers are painted onto the same door, so we need to
handle that properly. Thanks to @MrMelbert for spitting out the attached
fix in mapping general and letting me PR it after testing.
This really needs a suite of unit tests around it. San has helpfully
volunteered to work on that for three hours before getting frustrated.
## Why It's Good For The Game
No more public access to engineering lobby, lathe, etc.
## Changelog
🆑 Vire, MrMelbert
fix: The engineering lobby and lathe are no longer public access
fix: Doors will no longer be treated as public access when they have
multiple accesses set on them
/🆑
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
Co-authored-by: Vire <66576896+Maurukas@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
Adds a various amount of costumes that were added in the game before in
https://github.com/tgstation/tgstation/pull/30303
More costumes is always nice especially ones in the code that aren't
used and pretty much only were available for chamkits
Co-authored-by: jughu <melvin2626@live.nl>
* Hologram Projectors for TGC! (#72226)
## About The Pull Request
Adds a new holodeck layout that features a TGC card fighting arena,
complete with holographic representations of your cards. Cards act the
same as physical cards when displayed except you can see the stats of
the cards without needing to inspect and the cards stats can be modified
on the fly for keeping track of equipment.
Example:

## Why It's Good For The Game
TGC is a significantly more complicated game then the other ones we have
like UNO and CAS and is extremely messy to play on a table ingame, this
provides a much clearer way of visualizing the game by having all active
creature stats on full display at all times without having to rely on
inspecting cards to check.
## Changelog
🆑
add: Introducing a new holodeck map, the TGC Arena, featuring hologram
projectors for your trading cards.
fix: Janitor and Intern TGC cards are now considered creatures rather
than just humans.
balance: The price of card packs has been reduced from double a paycheck
to 3 quarters of one.
balance: The number of cards available in the good clean fun vendor has
been doubled.
/🆑
* Hologram Projectors for TGC!
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>