Commit Graph
28 Commits
Author SHA1 Message Date
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
nikothedudeandGitHub 4ae9d2c934 Partially reverts #4614, leaving record defaults but separating exploitables and security (#5560)
## About The Pull Request

Partially reverts #4614.

Exploitables, background, and security are now separate.
## Why It's Good For The Game

This was never a good change. Exploitables and sec records hold
completely separate purposes. Sec should not see every single
exploitable node you have, basically. Additionally, some people have
stuff in their exploitables and background they cant access right now.
Exposing them again lets people retrieve them.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

<img width="787" height="620" alt="image"
src="https://github.com/user-attachments/assets/b8b464a8-ff4a-40f1-a48f-086c99abb6af"
/>

</details>

## Changelog
🆑
add: Exploitables, background, and security records are now distinct
record fields, instead of being combinced.
/🆑
2026-05-16 01:10:09 +02:00
+37 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
Leland KembleandGitHub 68f5a555d0 Nonbinary people can respawn (#95854)
## About The Pull Request

locked records(admin-only records) now use the `gender` variable to keep
the mob's actual gender, not resorting to "Other". This means that
nonbinary people are once again capable of being respawned. As locked
records are admin-only, and used in few other locations, the gender
variable is only accessed by respawning code at the moment, and should
never be accessed in a player-facing manner, so it doesn't matter that
plural & neuter are in there.

## Why It's Good For The Game

fixes #95768

## Changelog
🆑

fix: Nonbinary people can respawn

/🆑
2026-04-24 18:15:08 -06:00
John WillardandGitHub 736b6b4206 Medical LARP: Cause of Death field (#95655)
## About The Pull Request

This was sitting on my deathwatch branch, thought I might as well add
it. When pronounced dead, Medical Records will now ask for a cause of
death.

<img width="749" height="551" alt="image"
src="https://github.com/user-attachments/assets/a2733131-ca5a-4dd5-b768-4a82e0bccd2e"
/>


## Why It's Good For The Game


<img width="373" height="65" alt="image"
src="https://github.com/user-attachments/assets/1f2bfc21-78f0-4c0c-bf73-56854178a030"
/>


## Changelog

🆑
add: Medbay/Detectives can now add a Cause of Death to people's medical
records when set as deceased.
/🆑
2026-04-07 15:23:39 -04:00
ReturnandGitHub b5aa4f649b [Records rework] Creates defaults for all records (#4614)
## About The Pull Request
This PR does four things:
- Shortens and simplifies the medical records template, making it more
accessible
- Expands Security records flavor into a personnel file that includes
exploitables and your character's background, so that you can have
Security records without having a criminal history
- Creates defaults for medical records, general records, and Security
records in the character creator, rather than just the wiki.
- Removes exploitables and background records as they've now been
integrated into Security records.

## Why It's Good For The Game
This PR should make records more accessible for individual players by
reducing the amount of work involved, as well as expanding Security
records to be more useful.

## Proof Of Testing
<img width="656" height="494" alt="image"
src="https://github.com/user-attachments/assets/2b5455b2-0e73-4e0a-b9c8-fd278db85040"
/>

## Changelog

🆑 ReturnToZender (code)
add: All records now have enhanced defaults when making a new character 
add: Security records have been expanded into personnel records,
containing more information on your character
del: Exploitables and Background records have been merged into the
definition of Security records, which are now Personnel Records.
/🆑
2025-09-14 22:54:46 +03:00
Waterpig 753d8e5ba4 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a 2025-04-08 18:58:45 +02:00
SmArtKarandGitHub 431bf75d53 Color Code Audition: Human rendering hates me (#89702)
## About The Pull Request

This trainwreck of a PR is (hopefully) a final solution to all rendering
jank stemming from the new filter-based coloring system. I went over
every single instance of RESET_COLOR, either adding KEEP_APART or
rewriting them entirely so they render properly. I've also fixed blood
rendering issues by utilizing alpha filters and adding an abstract
"holder" appearance for worn items, which holds blood overlays on worn
clothing as to avoid coloring it. I've also fixed horrible
inconsistencies with atmos pipe coloring as a result (of getting sucked
down that rabbit hole) and converted all uses of COLOR_VERY_LIGHT_GRAY
in atmos code to ATMOS_COLOR_OMNI to avoid confusion.

MODsuit modules still get colored into MOD unit's color, need to
refactor their rendering for this.

Closes #88989
Closes #87526
Closes #89837

## Changelog
🆑
refactor: Audited all remaining coloring code - among noticeable
changes, blood should no longer get colored or "leak out" of item
bounds, atmos pipes no longer color weirdly and repairbots are white
again.
/🆑
2025-03-24 15:05:33 +01:00
8291b65793 Fixes records on examine for ghosts and other scenarios. ADDS EXPLOITABLES TO GHOST ROLES (#2484)
## About The Pull Request
Closes https://github.com/Bubberstation/Bubberstation/issues/2482
Closes https://github.com/Bubberstation/Bubberstation/issues/1955
## Why It's Good For The Game
Firstly, bugs bad.
Secondly, allowing exploitables to be visible on ghost roles, such as
persistence hostages, is very rich for roleplay, esp since these
people's place in the world doesnt just suddenly vanish if you stop off
the station.

With the help of another PR I will soon make, this will very much help
with dauntless interrogations.
## Proof Of Testing


![image](https://github.com/user-attachments/assets/390ab32d-2c84-49fc-ad50-a9a34061af05)
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
fix: Records on examine now works properly
add: Ghost roles now have exploitables
/🆑

---------

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
2024-12-07 16:17:30 -07:00
CursorandGitHub 5c2228de56 [PORT][NON-MODULAR] Physical Age & Chronological Age (#27928)
* [PORT][NON-MODULAR] Physical Age & Chronological Age

* Whoopsy

* Update RecordView.tsx

* Update RecordView.tsx

* Fixes a toggle with the star wars helmet

* Revert "Fixes a toggle with the star wars helmet"

This reverts commit 0b17d52a2be7a5fbd27c443eef5ba40d579763ef.

* Update code/game/machinery/computer/records/medical.dm
2024-06-10 01:27:22 +05:30
+15 2b60c77e55 Yet another mirror batch (#27314)
* A skub-related station trait. Reduced weight of annoyingly frequent neutral traits. (#81388)

## About The Pull Request
This PR introduces a new station trait that lets people choose if they
want to be pro-skub or anti-skub (or neither, really). It works the same
lobby buttons that job-related station traits also use. Depending on
whether you chose to be pro or anti skub, you'll spawn in with a special
box that contains the (bulky) skub and a pro-skub shirt, or an anti-skub
shirt. EDIT: Both also receive a number of stickers to propagate their
causes.

Kudos to @Fikou for coding the lobby buttons to be accessible by any
station trait rather than only job-related ones when you made the
Cargorilla station trait.

Another thing this PR also halves the exaggerated weight of low-cost
traits such as scarves, wallets and glitched PDAs, which I clearly
underestimated.

## Why It's Good For The Game
We've learned that low-cost, high weight traits are a bit of a design
mistake, because they tend to tip the scales toward themselves over and
over and over, leveling the diverseness of the feature and therefore
making it shallow and boring.

Beside, I've been thinking of the popular [skub comic
strip](https://pbfcomics.com/comics/skub/) lately.


## Changelog

🆑
add: Added a Skub-related station trait. You can now choose if you want
to be pro-skub or anti-skub, complete of shirt and stickers. Please
don't shank each other over it.
balance: Halved the weight of station traits such as scarves, wallets
and glitched PDAs.
/🆑

* Fix some slime species subtypes not having burn resistance (#82164)

## About The Pull Request

All slime species limb subtypes now inherent from the parent `/jelly`
subtype, giving them all their proper burn resistance.

## Changelog

🆑 Melbert
fix: Slimepeople and Luminescents are now 50% burn resistant like
Stargazers
/🆑

* There we go

* FIX: Makes Hatsune mi-go a (friendly) gold slime mob (#82251)

## About The Pull Request:

The hatsune mi-go is now a friendly gold slime mob. This means it won't
try and kill you. It also now doesn't make your ears hurt, and drops a
keyboard synth on death (you monster.)


![migomigodance](https://github.com/tgstation/tgstation/assets/69398298/9dd6eb82-68d6-470c-9538-12298c3a6008)
## Why It's Good For The Game


So in making my resprited mi-go and subsequent speedmerge, I failed to
realize that there are only 10 possible migo spawnpoints - 5 in snowdin
gateway, 3 on ceres whiteship, and 2 on kilo whiteship. This means at
most eight can exist on anyround, with a decent likelyhood of 0. This,
combined with the fact the hatsune migo is banned from spawning outside
of roundstart locations, along with the fact people seem to love the
thing, made it feel _too_ rare, even for a shiny mob. You still have to
roll the random odds with the life chem or friendly gold slime pools,
but you should actually see them outside of two mutually exclusive space
ruins and a gateway now. Also, they don't try and kill you now, because
it would have been wrong to add a hostile creature to the friendly pool.

🆑
fix: Hatsune mi-go now is a friendly gold slime mob, and doesn't hurt
your ears.
add: Hatsune mi-go drops a keyboard synth on death (you monster.)
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>

* [THE QUIRKENING] Adds customization options to Organ Prosthetic, Junkie, Smoker, and Alcoholic! (#82051)

## About The Pull Request

Lets people pick:
- The shitty organ they spawn with (still has the restrictions of not
being possible to get heart when you are a plasmamen, for example)
- Their favorite alcohol to blackout with
- Their favorite brand of cigs
- Their favorite brand of drugs!
A lot of the code was taken from a downstream, made by @Floofies, i
already had my own implementation but it was buggy and not nearly as
clean, then i was made aware of theirs.
## Why It's Good For The Game

Character Customization is good and fun and lets people have more choice
in their roleplay.
## Changelog
🆑
add: Prosthetic organ users are now allowed to pick what they want to
start with.
add: Junkie of all kinds, including smokers and alcoholics, are also
able to pick their favorite type.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>

* [NO GBP] Fixes the "Drop Pod: Syndies" deathmatch modifier. (#82216)

## About The Pull Request
I've had false memories of `pick_weight` working with assoc-value-less
lists.

## Why It's Good For The Game
This will fix an issue with deathmatch modifiers.

## Changelog

🆑
fix: Fixed the "Drop Pod: Syndies" deathmatch modifier.
/🆑

* Fix robocontrol access runtime (#82242)

## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/51863163/568fa916-d167-4038-b0e8-7b0870754bf9)

`check_access` expects an item, such as an ID card, to... check access.
Not a mob.

We can circumvent this entirely by using `allowed`.

But this has an averse effect in that `allowed` will only check the
user's ID, not the ID in the mod PC.

So we need to run a separate check of `check_access` for the computer ID
card.

## Changelog

🆑 Melbert
fix: Robocontrol should work better.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>

* Adds a photobooth (#82105)

## About The Pull Request

Adds a photobooth machine to the HoP line which can be used to update
your security records photo.
It updates the records of the person's name, which means hiding your
identity and wearing an ID will let you change other people's photos. If
you aren't hiding your identity and are wearing someone else's ID, it
won't update at all because it will be unable to find your record.
There's 2 variants of this machine, one at the HoP line that's tied
behind Law Office access (so Lawyers have an extra thing they can help
out with if no one's available, but maybe it would be better behind
Library access since Curators are our "photographer" role?), and the
Security one that requires Security access.
The Security one has a special feature that it adds a height chart
behind the player.

![image](https://github.com/tgstation/tgstation/assets/53777086/c4eb0661-d752-4052-8006-2898af78c528)

This machine is used by either right-clicking on it or by pressing a
button, so the HoP can do it remotely from their line (except on Tram
where it's in the library), and after a few delays it'll update your
records automatically to how you look like.

Emagging the machine will remove its access restrictions but every time
it updates your photos it will spam camera flashing and blind you.

Sprites

Open

![image](https://github.com/tgstation/tgstation/assets/53777086/d5e97d84-46d8-40b5-995f-c0ef5c7f18ac)
Closed

![image](https://github.com/tgstation/tgstation/assets/53777086/520e88ed-4630-40d8-9039-4c6dd85a9872)
Security version on the left, has a red tint on it

![image](https://github.com/tgstation/tgstation/assets/53777086/ef71a092-8d1b-4776-bdb4-6718308967c7)

Video demonstration (old sprites):


https://github.com/tgstation/tgstation/assets/53777086/a2e59f08-2d58-4f5b-b081-e137c7606d35

## Why It's Good For The Game

Current security records has no way to change your photo ID, something
that was a feature before it was moved to TGUI. The only alternative is
to fully delete your record and make a new one with a photo and the same
name, but this shares a major issue with the HTML UI: You're immediately
sold out by the fact you have a background. No matter how well you try
to cover your tracks, any security officer looking at records will see
you are the only photo on the manifest that has a background and even a
camera in your hand, which makes it impossible to get away with it
unless security essentially takes pity on you.
This opens up the ability to fully mask yourself in records, finally.

This is also better even for non antagonists because you can now
properly update your photos to match what you look like in the event of
an appearance change or even just a job change, which makes it a benefit
for HoPs who likes to keep records as up-to-date as possible.

## Changelog

🆑 JohnFulpWillard, Twox
add: Added a new photobooth machine to the HoP's line.
fix: Things checking for access now checks your off hand, too.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>

* Converts slimes to basic mobs (#82176)

After months of preparation, and further months of work, I am finally
done. Please bear with me, as this is a massive refactor, but I have
already atomized everything I could. This is now ready for review.

General

- 	The hilbert hotel slimes are now a subtype instead of a varedit.
- The `use_mob_ability` subtree now also accepts non cooldown abilities.
If set_behaviours is set up properly, mobs won't keep continously
triggering it as if it were a 0 second cooldown action. The alternative
would have been turning the slime abilities into cooldown abilities.
- Wrestling off a slime now signs up to the `COMSIG_ATOM_ATTACK_HAND`
signal, instead of being part of attack_hand.
- Adds datum/ai_controller/controller as a fourth, optional argument to
`/datum/ai_behavior/find_hunt_target/valid_dinner()` to make it possible
to access blackboard keys.
- Slimes no longer attack windows if they would accidentally move into
them (when the conditions are met), since random walk behaviour ignores
tiles they can't go in. It was also not worth to keep. Did you know this
was the sole override of `ObjBump()`?
- Examine was made less snowflaky/bespoke. Also added a new element:
`/datum/element/basic_health_examine`, which is a simple bespoke element
that prints out a custom message based on how damaged the basic mob it
is attached to is.
- Slimes only perform knockdown instead of paralysis, as they can attack
more often now, and paralysis is not that fun.
- LAssailant has been removed due being archaic code. To befriend a
slime, you have to spawn a monkey with the slime console, or feed them a
sheet of plasma. Simple grabbing the monkey or stuffing them in
disposals do not work anymore. Slime console spawned monkeys will have a
visible status effect, with pheromones coming off them to make this
clearer.

Actions
- 	Feeding, reproduction and evolution is no longer a verb.
- Slime feeding is no longer an action button. You have to use right
click, or as previously, mousedrop. Slimes can always unbuckle from mobs
they are attached to.

Hunger

- Instead randomly changing the starvation and max nutrition values
while growing up, evolution costs 200 nutrion. This makes the code more
readable, and behaviour more predictable, while still giving the
intended time between evolving and splitting. As a result, I could also
turn these into defines.
- Added a component that handles doing an effect over time while buckled
to a mob, until the mob dies or you get unbuckled.
- Slimes gained nutrition is no longer randomly multiplied by the damage
config value, but rather gain nutrition equal to twice the damage dealt.
You'll have to eat one monkey to evolve, just as before.
- Slimes do not heal passively. They only heal from eating. It was a
rather miniscule value that did not have much effect.
- Slimes generate electricity from hunger threshold, instead of the
random amount of hunger threshold + 100.

Environment

- Slimes take 15 damage from cold every second, instead of using a
complex formula (that also decreased the damage up to a point?).
- Slimes still heal from burn damage, but this is now set on the damage
coefficient list.
- Slimes instead of getting stunned by the cold, freeze in an ice cube.
BZ instead of setting them unconscious, calls the stasis status effect,
allowing you to safely stash your hungry slimes for later. They also no
longer slow down from the cold, as they are already slowed down by the
damage they get. Conversely they no longer get a speed up from a random
amount of temperature. I could be convinced to readd this either as part
of the basic sensitive component, or a similar one.

AI
- Removed the attacked_stacks system. Slimes will just perform regular
retaliation if you hit them in a harmful manner.
- Slimes now use the pet orders component. They will interrupt their
feeding when given a command by their master.
- Slimes have their own subtrees. I tried to replicate as much as I
could from the old code, dividing ancient code artifacts and intentional
stuff, so there might be some weirdness.
- Slime speech has been almost fully reduced to basic blorbing, as you
can not even understand them anymore, and most of them require the slime
to loop through all of their surroundings.
- Discipline does not have stacks either. Disciplined baby slimes have a
chance to clear their attack and hunt blackboard keys. All slimes will
stop feeding on the target otherwise.
- Since discipline is not a stack, rabidity instead gets removed at a
10% chance per disciplining.
- 	Slimes faces are a bit more randomly picked now.

- We want to convert all simple animals to basic mobs. Old slime code
was also very strange, and had some systems that have been replicated by
components.
- Slimes fully paralyzing you is not fun at all. Knockdown should give
you a fighting chance when a slime would like to eat you.
- Slimes slow down from the heavy damage they get from the cold, so I
don't think they need extra slowdown, nor do they need to speed up from
warmth, as they are already fast.
- Slimes turning into an icecube instead of becoming paralyzed from the
cold is more fun for the slimes, as they can break out for a few
moments. It is also funny.
- Slimes entering proper stasis from BZ is not just a visual indicator
of a slime that is safe to approach, but also keeps the slimes's hunger
value in check, allowing it to not starve while stopped. They can also
look around and blorble, instead of staring at a black screen, if player
controlled.
- The attack_stack and discipline_stack behaviours were rather
overcomplicated, and the xenobio mains I talked with didn't even know it
was a thing, so I argue it needed simplification.
- The bespoke friendship system of slimes was also too complicated.
Slimes slowly gained levels of trust, and at certain levels commands
costed friendship, and other levels, they did not. The binary friend/not
friend system that everything else in the game uses is much more
sensible.
- Using right click for feeding is much more sensible than using an
action, and then picking someone from a dropdown.
- Slime speech was very soulful but not only did it loop through
everything in sight, you couldn't even understand it unless you spoke
slime. Maybe it can be readded later in a different form.
- Slime's passive healing was miniscule, and having them rely on feeding
is more interesting.

also
fixes #81463

🆑
refactor: Slimes are now basic mobs. Please report any strange
behaviours!
balance: Slimes only stun you for two seconds when they shock you, the
rest of the duration is a knockdown.
balance: Slimes are not stunned from the cold, but rather, get frozen in
a freon icecube. BZ also puts them in complete stasis, instead of making
them unconscious. Their speed is likewise unchanged by temperatures.
balance: Slimes do not passively heal, they instead rely on feeding.
fix: Slimes can use the buckling screen alert to unbuckle and stop
feeding, along with clicking on the mob they are riding
/🆑

* Oh, right.

* Fixes AI verb Jump To Network (#70016)

* check for camera loc to not be a silicon

* check for z=0 instead

* Update code/modules/mob/living/silicon/ai/ai.dm

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>

* evil touch

* redundancy

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>

* Removes camera assembly structures (#81656)

Removes the camera assembly structure middleman between the camera
wallframe and camera machine. All its behavior has been instead moved to
the camera, and I've tried to keep as much of the behavior the same as
before.
This also fixes the issue that camera assemblies had where, upon the
construction being finished, it would move itself into the newly
finished camera machine, therefore taking itself off a wall, therefore
deconstructing itself. This resulted in 2 piece of iron being in each
camera machine (except roundstart ones), and because camera machines
rely on the assembly inside of them for upgrades and such, upgrading
didn't work at all.

I've also made camera nets use defines (not in map) so it's easier to
find a list of them all, and tried to add autodoc comments to nearly
every var in camera code.

Removes copy paste and spaghetti code between structure and machine
camera, thus making it easier to work around with.
Closes https://github.com/tgstation/tgstation/issues/79019

🆑
fix: Cameras built in-round can be upgraded again.
fix: Deconstructing cameras now more consistently return to you the
upgrades inside of the camera.
fix: RD's telescreen can now properly see Ordnance cameras again.
fix: [Deltastation] Library art gallery no longer has an invisible
camera.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>

* [MDB Ignore] Combines Cargobus consoles with Dept. Order Consoles, freeing all departments of 1 whole tile of space (#82210)

## About The Pull Request

- Departmental orders are now an NTOS app
   - To download, they require `ACCESS_COMMAND`.
   - To use, they require one access from the department.
- This means you cannot order things from not-your-department unless you
have an ID.
- When newly downloading the app, it will prompt a head of staff to
insert an ID, to determine which department to be linked to.

- Changes chat room overlay from the kind that AI uploads use to a new
icon.

- Minor refactors to department order in general. 


![image](https://github.com/tgstation/tgstation/assets/51863163/605c2499-e5e9-4f91-aa2a-aa8af8b05a9f)


![image-1](https://github.com/tgstation/tgstation/assets/51863163/089d3fe1-787c-4f5a-bc3d-edb9611dfbb2)

## Why It's Good For The Game

These two computers are surprising waste spacers for two things which
are tied together.
So why not combine them?

The lesser used cargobus chat is still there, and departmental orders
are front and center.

This gives mappers a ton more leeway when mapping departments out and is
overall less clutter.

## Changelog

🆑 Melbert
qol: Cargobus chat console and Departmental Order console are now
combined into one.
qol: Mod PCs active on the "chat client" apps no longer look like AI
uploads (and now have their own sprite)
refactor: Departmental order consoles were refactored a bit, report any
oddities.
/🆑

* This should cut it.

* Was it really just skub?

* [No GBP] Fixes slow slime feed (#82284)

## About The Pull Request

Slimes were supposed to gain the same amount of nutrition as the damage
they dealt while feeding. However, I have accidentally multiplied this
again by `seconds_between_ticks` a second time. This meant that locally
slimes fed normally, but on the server they got about the third
nutrition they were supposed to, probably due to having more ticks per
second then my machine. This PR fixes that.

Also raised the nutrition gained by slimes by 20%, after careful
testing, one monkey wasn't always enough.

## Why It's Good For The Game

 Fixes #82283

## Changelog

🆑
fix: Slimes now feed faster, and should only need one monkey to reach
their next lifestage.
/🆑

* [No GBP] Fixes a slime speed config and ai controller null error in slime nutrition handling (#82330)

## About The Pull Request

Someone has linked the runtimes logs of round 226376 to show off a
runtime, and I took a look, and found some unrelated runtimes in slime
code.

- The config file for slime slowdown was still using the simple_animal
path. This has been fixed.
- Somehow, a grey slime has lost its AI controller, and when it got
hungry, it runtimed. For now, a coalesce operator has been put in place.
Later, an investigation is needed to figure out where did its AI
controller go.

## Why It's Good For The Game

Runtimes bad.

## Changelog

🆑
fix: Slime properly load their slowdown values from the config files.
fix: Slimes who lose their AI controller will no longer runtime when
they get hungry.
/🆑

* [No GBP] Slime stasis fixes (#82304)

## About The Pull Request

`handle_environment` is never called when the target was in stasis, so
slimes stayed in stasis forever. This PR fixes that, albeit in an ugly
way.
It also makes slimes actually not get hungry while in stasis.

## Why It's Good For The Game

Fixes #82300
I also claimed slimes can be safely kept in stasis, but I didn't
actually put a stasis check before handle_nutrition. This is fixed now.

## Changelog


🆑
fix: Slimes stop being in stasis when taken out of a BZ filled
environment
fix: Slimes no longer become hungry while in stasis
/🆑

* Add a unit test to check that maploaded simple/basic mobs are in an environment they can survive in. (#82180)

I've recently noticed that the maploaded penguins from the snowdin away
mission were dying from unsafe atmos/temperature. This sparked the idea
of making a (focus only) unit test that would prevent this sort of
issues from happening.

This PR also implements the usage of the `atmos_requirements` and
`body_temp_sensitive` elements for simple animals too, cutting down the
copypaste.

More unit tests to make sure things are done correctly.

🆑
fix: Made sure that mapped critters (i.e. penguins on the snow cabin
away mission) can survive in the environment they're spawned in.
/🆑

* This all is going to suck.

* A step further

* Is this hell over?

* I hope it is.

* Autosort I suppose

* This should cut it for VoidRaptor

* And Blueshift

* Revert "Autosort I suppose"

This reverts commit 9100de67c30514fc25db3ba29df81d1b0ac54e24.

* Dear god, the chicken.

* I fucking hate mapping

* fixes gas analyzers (#82278)

## About The Pull Request

#82180 accidentally messed up air analyzers being able to read or send
readouts to the chat.

## Why It's Good For The Game

air analyzer good

## Changelog

🆑
fix: air analyzers work again
/🆑

* [NO GBP]Grind & juice fixes (#82272)

- Fixes #82266. Anything that has reagents can be either grinded or
juiced
- If something doesn't have reagents but has grind results it can still
be grinded but not juiced

🆑
fix: anything that has reagents can be either grinded or juiced
fix: stuff that does not have reagents but has grind results can still
be grinded but not juiced
/🆑

* Birdshot Engineering Retrofitting (#81840)

Warning: Nanotrasen Confidential Proprietary Information (NCPI) must
only be accessed and viewed within a Nanotrasen Virtual Environment
(NVE, vNTOS-3). Employees in violation of this information ordnance will
have their wages A) garnished, and B) sent to a labour camp up to a
maximum of ten (10y) years. Questions regarding policies related to NCPI
should be directed towards departmental heads or your sector Central
Command Information Authority (CCIA) personnel.

## About The Pull Request

Credentials Confirmed
The Birdshot Engineering Revitalization Plan (formerly proposal
Blindfold, now BERP) is a procurement effort to address growing
maintenance liabilities and costs on the Skitter-MDR Class Orbital
Station located in the Spinward Stellar Cluster (SSC, Sector 28-7b).
Over the course of the previous year, ongoing analysis data has provided
vital feedback since the station was once again brought into operation
after 17 years of abandonment; and using this data, 4 options were
outlined for the Blindfold Proposal.
1) Abandonment - No Cost. Operations on Birdshot will cease. 28-7b
operations will be moderately impacted.
2) Procurement - Medium Cost. Replace offending station sections
completely with low-cost, working alternatives. Operational gains in
28-7b expected.
3) Do Nothing - No Cost. Moderate long-term impacts to operations in
28-7b.
4) >>>_Was removed_

Option 2 was selected for BERP. Procurement efforts identified 3
solutions and later narrowed it down to 1. Following the selection
process architects were brought in to draft up low-impact refits to the
designated hulk. 5 selections made it past initial drafting, with 3
ultimately being selected for engineering board review. Penultimately
draft proposal 3 was selected for the project and now awaits engineering
certification. The draft plan is provided on the next page:


![Birdshot Eng
Final](https://github.com/tgstation/tgstation/assets/33048583/441a6ca8-d7e1-4962-82b9-c412393ad73b)

Following board certification, implementation of the plan will be
commenced by 28-7b Nanotrasen Enigneering Corps. (NECs). Construction
time-frame pending Project Foremans review.

## Why It's Good For The Game

Birdshot Engineering is where this whole station began. Back then,
things were going to look closer to Birdboat Station, but that became
looser and more ill-defined as progress was made on the overall station.
While I was satisfied of the decrepit feel of Birdshot Enigneering
initially, I knew that at some point, it would require modification to
better play into Birdshots strengths.

I've had a long laundry list of a roadmap that I've wanted to implement
since the station was added, and this was the top item. Tier Zero.
Problema Numero Uno. You get the idea. This has been a year of drafting,
redrafting, and redrafting everything until it fit Birdshot right. With
this, we're nearly there. I see this being the definitive Engineering
Department for this station for quite some time to come. However, this
is still a draft and some elements are subject to change as I begin to
work out some of the more minor kinks in the draft such as pipe
locations and transit tubes.

Presently Atmospherics is completely rebuilt from the bottom up. There
is more space, enough to do projects, but you'll have to tear down some
windows and walls to gain it. Nothing ventured, nothing gained. You also
have most of the gas distro line outside. I'm a firm believer in
enabling whatever antics ANY lunatic may have. Atmos techs can rest
assured that outside lines are completely reconfigurable (and powered)
enabling some... unique project prospects. You also gained an inside HFR
and Spare burn chamber. Enjoy.

The Engineering Common Areas are now inside the department proper
instead of the satellite treatment in the original implementation.
Security gets an actual outpost and engineers now have a proper office
to file engineering documentation. They say that office colleagues can
form tight bonds so let's see whose is stronger: Purples or Yellows?

The Supermatter Engine is more of an upgrade over the previous model
(Leaky SM is here to stay so deal with it). The room is larger with less
rock, allowing some manner of greater customization, but I believe
engineers will be more than happy to find that they now have a Burn
Chamber of their own. I have zero clue of what they'll do with it, but I
think any enterprising CE will be able to create something that even god
should fear.

Finally we have maint improvements. Nothing really to see here though
maybe there's the beginning of something for the future if you care to
speculate. I couldn't really keep the meandering maint of the previous
rock, so instead we now have some pseudo dead-ends. It's all connected
by transit tubes to the north (not shown) so you can slowly get around
if you will it. Of course there's plenty of cut-throughs,
not-so-finished sections, and opportunity for those who need it. Caution
to the blind, this whole rock is spicy.

Overall I'm happy with this and want to open it up in Draft Mode for
initial thoughts. I have a rough timeline on finishing this that
stretches out to the weekend, so the earlier comments are, the more
likely I'll be able to MAYBE do something about it. Thanks for the
patience and hopefully this is a doozy of an update for all our players.

Previous Engineering Provided for Point of Reference:

![Screenshot 2024-03-04
190827](https://github.com/tgstation/tgstation/assets/33048583/55355582-2129-4744-a75b-0cd97f2b5008)

closes  #75590

## Changelog
🆑
qol: Wholesale Revamp of Birdshots Engineering Department
fix: Some Birdshot Amtospherics Concerns
fix: Some Birdshot Engine Concerns
/🆑

* Bumps `dependencies.sh` to 515.1633 Stable (#82138)

## About The Pull Request

Two reasons for this.

1. It's the stable branch, so let's move it up. This PR will detect any
issues that we might have with the latest 515.1633 as far as the
codebase is concerned (the servers have been running 1633 for at least a
week now).
2. ~~I'm fucking sick of seeing the Lua Scripting Notice in CI even
though it was fixed a few days ago in #82074
(5624d94524)

`![image](https://github.com/tgstation/tgstation/assets/34697715/0cc889c9-25d0-48cb-a0d1-304738acd8cc)`~~

* Makes simple bodycam component `COMPONENT_DUPE_SELECTIVE` (#82310)

## About The Pull Request

The thought only just occurred to me people may want to throw multiple
bodycams with different networks on them onto one mob, and it would be
trivially easy to support, so here.

I used `COMPONENT_DUPE_SELECTIVE` rather than `COMPONENT_DUPE_ALLOWED`
so people can avoid adding two of the same camera (network) to one mob.

* Fixes unfathomable curios not blocking when equipped. Fixes the shielded component still blocking despite not having a 'wearer'. (#82073)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

The unfathomable curio now only blocks when equipped to the belt slot,
and not when equipped in the hand.

The shielded component now no longer blocks despite not having a wearer,
and does not block if the wearer is not the same as the owner in the
``hit_reaction()`` proc.

Fixes https://github.com/tgstation/tgstation/issues/82068

## Why It's Good For The Game

The curio was only blocking while in-hand, rather than how it should be;
in the belt slot. Now it does what it is supposed to.

On top of that, this fixes what I think has been a bug for quite some
time with shield_inhand just not being respected whatsoever with regards
to whether or not the component worked. It only really determined
whether or not you got the sprites added/removed, but didn't factor into
the blocking ability whatsoever.

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
fix: Unfathomable Curios now properly block as expected.
fix: The shielded component actually respects the shield_inhand when
determining blocking potential.
fix: Ensures that the shielded component has a wearer before attempting
to block, and that this wearer is the same as the owner of the item.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: san7890 <the@san7890.com>

* Chem dispenser UI minor patches (#82123)

## About The Pull Request
- Fixes #82119. ph is not computed & shown when recording recipes is
enabled. The ph value was inaccurate anyway because it was not computed
from the recorded recipe but from the beaker.
- Removed deprecated `content` tag from buttons in the UI

## Changelog
🆑
fix: chem dispenser UI doesn't brick when beaker is ejected while
recording recipes
code: removed deprecated `content` tag from buttons in chem dispenser
/🆑

* Resprites supermatter theft (#82326)

## About The Pull Request

Resprites supermatter theft tools to match the current style surgical
tools they're based off of, as well as esprites the sliver to not be a
shard of pee glass.


![image](https://github.com/tgstation/tgstation/assets/5479091/bd37909d-afff-4316-91f4-1b87d45d57fa)

## Why It's Good For The Game

Consistency in surgical tool derived sprites that previously kept the
old style from before the last surgery resprite, and making supermatter
shards not look like glass.

## Changelog
🆑
image: Supermatter slivers and the tools used to steal them have been
resprited.
/🆑

* GAGSifies the jester costume (#82339)

## About The Pull Request

Updates the jester costume to support GAGS.


![image](https://github.com/tgstation/tgstation/assets/5479091/d76f4aaf-d3aa-489a-8a0b-cf443bda7252)

## Why It's Good For The Game

More freedom for players to customise their jestering.

## Changelog
🆑
image: The jester costume now supports GAGS
/🆑

* There we go

* You win, chicken, take your leave. (apparently nulls in prefabs default to the normal mob stuff)

* Makes the Captain's Spare safe actually secure from being smashed open now that it's been removed from a wall. (#82076)

## About The Pull Request
Makes the Captain's Spare safe actually secure from being smashed open
now that it's been removed from a wall. Damage Deflection of 30 has been
added to it.

## Why It's Good For The Game

Because the Captain's Safe was moved off of the wall it's now vulnerable
to direct attack and projectiles way, way more than before and now
there's a lot of avenues to inflict AP damage, which is directly
subtracted from the armor value before application of damage. I've added
a damage deflection of 30 to make it

## Changelog

🆑
balance: Makes the Captain's Spare safe actually secure from being
smashed open now that it's been removed from a wall. Damage Deflection
of 30 has been added to it.
/🆑

* [NO GBP] Fixes prosthetic limb quirk preferences (#82354)

## About The Pull Request

Accidentally broke it during my latest quirk PR, oops!
## Changelog
🆑
fix: Fixed Prosthetic limb quirk preferences
/🆑

* Makes deconstruction of computer & machine frames consistent (#82378)

## About The Pull Request
- Adds a missing examine for when the machine frame can be deconstructed
- Both the machine & computer frames needs to be unanchored before it
can be deconstructed & adds examines to explain the same. Currently
computer frames don't have the unanchor requirement which is
inconsistent, but now both frames share the same code

## Changelog
🆑
qol: adds missing examine for when machine frames can be deconstructed 
qol: both machine & computer frames must be unanchored before it can be
deconstructed & adds examines to explain the same
/🆑

* [NO GBP] Emergency Birdshot Maintenance (#82380)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

I forgot about changing these when I moved stuff around, and smart pipes
kinda did their smart-piping things.

Whoops forgot a cable hookup. Non-Critical, but still needs to be there.

## Why It's Good For The Game

Clear Labels make things more readable. 

APCs should start powered. 

Atmos Turbines should make the atmos techs work for their paycheck. 

## Changelog


🆑
balance: Readds some N2O to the Birdshot AI sat. I'll be working on a
better solution for this in the coming weeks.
fix: Due to a Misprint, the Atmos Gas -> Pure pipes were incorrectly
labeled on Birdshot. Your Cargo Techs have since remedied this.
fix: Our cable laying intern team didn't lay cable to the Secure Storage
APC in Enigneering. Getting coffee instead of working is a big no-no
here at Nanotrasen Tech Support, and they have since been reassigned.
Your Chief Engineers have been instructed to make the modifications on
all Birdshot Class Stations.
fix: We've noticed some Heads-Of-Staff getting lost on Birdshot. While
Telecommunications does have a GPS waypoint, our staffs stubbornness
often means this is ineffective. Additional Signage has been placed to
help direct our most senior of staff.
fix: The Birdshot Turbine will no longer Pre-Load itself with highly
flammable Plasma Gas. Do your own jobs you lazy atmos bums.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

* Makes highlander layer hoisting code actually work (#82388)

Whoops

* Small Social Anxiety Fixes (#82387)

## About The Pull Request

- Speech filters from speech impairments don't apply unless they
actually change the message
- Psicodine properly stops stutter

## Changelog

🆑 Melbert
fix: Psicodine helps Socially Anxious people again (as does signing) 
fix: Speech effects such as stuttering no longer applies its TTS filter
if the resulting message doesn't actually change the message
/🆑

* Merge ordinance burn chamber with main lab for MetaStation (#82322)

## About The Pull Request
Fixes the issue specified in #82294 for Metastation ordinance burn
chamber.

Now both the burn chamber and the lab are combined together as one
area(no physical objects were displaced just their area properties were
modified) so they share the same apc allowing the igniter to function
there

## Changelog
🆑
fix: igniter in meta station ordinance burn chamber works again
/🆑

* TGUI: bumps yarn version (#82385)

Bumps our bundled yarn version up to 4.1.1.

This seemed previously impossible due to an indecipherable error
message:
```
SyntaxError: missing ) after argument list
    at wrapSafe (internal/modules/cjs/loader.js:979:16)
```

I'm assuming this was a bug in (earlier) versions of yarn ~4.0.2.
Meaning, this is probably worth testing or test merging, as it seems to
be running fine currently.

Better build tools

N/A

* Yeah, this should do.

* TGUI: updated dependencies (#82377)

Updates some of the dependencies in tgui. Should have zero gameplay
impact at all.

This puts our typescript version up to 5.4.3! And it detected errors
immediately

Bzzz here comes the airplane

N/A

* Clown anomalous crystals turn the dead into living clowns, rather than anyone who speaks in proximity (#82373)

## About The Pull Request

Rather than turning people into clowns if they speak within proximity of
the crystal, the clown anomalous crystal instead transforms the dead
into clowns, similar to the dark revival crystal.

This also adds logging for crystal activation.

## Why It's Good For The Game

We've had a significant number of admin issues with this crystal being
abused to both grief and killbait people by turning them into clowns as
of late. The crystal literally only exists to do this basically. And it
is also grossly unlogged despite the fact that many of the effects could
be cause for investigation.

Rather remove this crystal, I'm making it useful...with a catch.

## Changelog
🆑
qol: Makes the clown anomalous crystal actually useful for once rather
than an open griefing tool. It now revives the dead...as clowns!
admin: Adds logging for the anomalous crystal activation, including
fingerprints.
/🆑

* Fix all nighter runtimes (#82405)

## About The Pull Request

So, recently, someone asked me why their All Nighter eyebags weren't
working, and though after a short conversation we worked out it was
working as intended and they had just taken a few naps to train fitness,
I still checked the round logs once they were public.
https://scrubby.melonmesa.com/round/226476/runtimes

![image](https://github.com/tgstation/tgstation/assets/42909981/162d76ae-2d43-428b-bc7e-37371ba27a1c)
Coincidentally! Someone else _did_ have an All Nighter runtime!
Well. Time to fix it.

I look into the code, and lo and behold, it seems we're really just not
caring about whether the head actually exists.

https://github.com/tgstation/tgstation/blob/d38f9385b863e49f83455a227764d302629e2867/code/datums/quirks/negative_quirks/all_nighter.dm#L50-L56

But that reminds me. We have more ways to lose your head, like
H.A.R.S.... So... I boot the game, and...
Oh no.
_Oh no._
That's a _lot_ of runtimes huh. (See "Why It's Good For The Game")

Soooo we just add a check for whether our head-in-question actually
exists to both adding and removing our bags, and be done with it.
```dm
///adds the bag overlay
/datum/quirk/all_nighter/proc/add_bags()
	var/mob/living/carbon/human/sleepy_head = quirk_holder
	var/obj/item/bodypart/head/face = sleepy_head?.get_bodypart(BODY_ZONE_HEAD)
	if(isnull(face))
		return
	bodypart_overlay = new() //creates our overlay
	face.add_bodypart_overlay(bodypart_overlay)
	sleepy_head.update_body_parts() //make sure to update icon

///removes the bag overlay
/datum/quirk/all_nighter/proc/remove_bags()
	var/mob/living/carbon/human/sleepy_head = quirk_holder
	var/obj/item/bodypart/head/face = sleepy_head?.get_bodypart(BODY_ZONE_HEAD)
	if(face)
		//our overlay is stored as a datum var, so referencing it is easy
		face.remove_bodypart_overlay(bodypart_overlay)
		sleepy_head.update_body_parts()
	QDEL_NULL(bodypart_overlay)
```
Right?

Well, no. Yes, this stops the runtimes, but while testing this I also
noticed that the bags don't come back.
We lose our head, we regenerate a new one, and we don't have bags. Even
though we removed our head, we never actually removed _our bags_.
So our `bodypart_overlay` is never set to null, and it's never actually
attempting to apply them to our new head.

To resolve this, we then just add a new proc called on
`COMSIG_CARBON_REMOVE_LIMB`, which handles removing the eyebags before
we remove our head if needed.
```dm
///if we have bags and lost a head, remove them
/datum/quirk/all_nighter/proc/on_removed_limb(datum/source, obj/item/bodypart/removed_limb, special, dismembered)
	if(bodypart_overlay && istype(removed_limb, /obj/item/bodypart/head))
		remove_bags()
```

Oh, we also remove the unused `client/client_source` argument from both
the `add_bags(...)` and `remove_bags(...)` procs.
## Why It's Good For The Game

![image](https://github.com/tgstation/tgstation/assets/42909981/31fd97b5-dce3-46ec-9388-abf568fe4f0b)
## Changelog
🆑
fix: All Nighter: fixed a runtime from not having a head, whether from
hars/deletion/somesuch.
fix: All Nighter: losing and regaining your head while you had eyebags
no longer removes your eyebags until you've slept.
/🆑

* [NO GBP] Fixes Alcoholic quirk selection and addiction in general not being forever. (#82403)

## About The Pull Request

Fixes #82346
Also fixes a bug where Junkie, Smoker, and Alcoholic would not give you
more addiction once yours ran out.
## Changelog
🆑
fix: Fixes Alcoholic quirk selection
fix: Fixes Junkie, Smoker, and Alcoholic not giving you more addiction
when you come clean.
/🆑

* Fixes root beer rounding down to 0 delay for laser carbines/disabler SMGs (#82414)

## About The Pull Request

Title.
Closes https://github.com/tgstation/tgstation/issues/80921.

Uses SSprojectiles wait, via lemon's suggestion
(https://discord.com/channels/326822144233439242/326831214667235328/1195468576514130010)
## Why It's Good For The Game

bug bad
## Changelog
🆑
fix: Root beer no longer causes laser carbines and disabler smgs to fire
infinitely fast.
/🆑

* Fixes quirk being examined when observing (#82424)

Examining a human as ghost now shows their quirks again. This was
unintentionally removed with
https://github.com/tgstation/tgstation/pull/80692

This was unintentionally removed. Bugfix good me thinks?

![image](https://github.com/tgstation/tgstation/assets/49160555/57a8d817-c9f4-4bf5-bc10-498be58ed23d)

🆑
fix: Observers can now see people's quirks again
/🆑

* Moves that one wall in NorthStar Maints   (#82382)

You know the one, right? 

![image](https://github.com/tgstation/tgstation/assets/69398298/43f98dcb-2a00-43bb-9b9c-6541a77a8454)
Seriously though I asked "where's that random wall in northstar maints"
and not only did people know what I meant, within 5 min people told me
where it was.

<img width="825" alt="image"
src="https://github.com/tgstation/tgstation/assets/69398298/449ff97f-f256-449a-9eb0-d34b1e09f8f4">

## Why It's Good For The Game

Hallways work best when they're traversable. 

## Changelog

🆑
fix: Moves that one wall on NorthStar to not block the maints passage
/🆑

* fixes material scanning, so we can scan again (#82428)

I broke material scanning, This fixes it.

* Fixes access to borg panels (#82427)

## About The Pull Request

https://github.com/tgstation/tgstation/pull/81681 removed the access
requirement to unlock a borg, which of course meant anyone with any ID
could fiddle with them.

## Why It's Good For The Game

back to sanity

## Changelog
:cl:Zergspower
fix: borg panel access now requires robotics access again
/🆑

* Adds a visual effect to breathing in cold environments (#82336)

## About The Pull Request

Humans (who breathe) (with lungs) now has a particle associated when
breathing in cold air. The colder the air, the more likely the particle
to occur per breath.


https://github.com/tgstation/tgstation/assets/51863163/f375dd1b-87f6-4124-9329-4714fe988c16

Other changes:

- Adjusts the probability of getting "your lungs feel cold/hot" when
breathing cold/hot air depending on how cold/hot the air is.
- Very cold air now has a chance of causing humans to shiver when they
breathe it in.

## Why It's Good For The Game

Some nice VFX to breathe some style into the game. 

## Changelog

🆑 Melbert
qol: Breathing cold air now has a particle effect associated, careful
not to let your glasses fog up.
qol: Breathing cold air will now occasionally make your spaceman shiver.
Brrr.
/🆑

* [NO GBP] Emergency Birdshot Maintenance (#82380)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

I forgot about changing these when I moved stuff around, and smart pipes
kinda did their smart-piping things.

Whoops forgot a cable hookup. Non-Critical, but still needs to be there.

## Why It's Good For The Game

Clear Labels make things more readable. 

APCs should start powered. 

Atmos Turbines should make the atmos techs work for their paycheck. 

## Changelog


🆑
balance: Readds some N2O to the Birdshot AI sat. I'll be working on a
better solution for this in the coming weeks.
fix: Due to a Misprint, the Atmos Gas -> Pure pipes were incorrectly
labeled on Birdshot. Your Cargo Techs have since remedied this.
fix: Our cable laying intern team didn't lay cable to the Secure Storage
APC in Enigneering. Getting coffee instead of working is a big no-no
here at Nanotrasen Tech Support, and they have since been reassigned.
Your Chief Engineers have been instructed to make the modifications on
all Birdshot Class Stations.
fix: We've noticed some Heads-Of-Staff getting lost on Birdshot. While
Telecommunications does have a GPS waypoint, our staffs stubbornness
often means this is ineffective. Additional Signage has been placed to
help direct our most senior of staff.
fix: The Birdshot Turbine will no longer Pre-Load itself with highly
flammable Plasma Gas. Do your own jobs you lazy atmos bums.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

* [NO GBP] Emergency Birdshot Maintenance (#82380)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

I forgot about changing these when I moved stuff around, and smart pipes
kinda did their smart-piping things.

Whoops forgot a cable hookup. Non-Critical, but still needs to be there.

## Why It's Good For The Game

Clear Labels make things more readable. 

APCs should start powered. 

Atmos Turbines should make the atmos techs work for their paycheck. 

## Changelog


🆑
balance: Readds some N2O to the Birdshot AI sat. I'll be working on a
better solution for this in the coming weeks.
fix: Due to a Misprint, the Atmos Gas -> Pure pipes were incorrectly
labeled on Birdshot. Your Cargo Techs have since remedied this.
fix: Our cable laying intern team didn't lay cable to the Secure Storage
APC in Enigneering. Getting coffee instead of working is a big no-no
here at Nanotrasen Tech Support, and they have since been reassigned.
Your Chief Engineers have been instructed to make the modifications on
all Birdshot Class Stations.
fix: We've noticed some Heads-Of-Staff getting lost on Birdshot. While
Telecommunications does have a GPS waypoint, our staffs stubbornness
often means this is ineffective. Additional Signage has been placed to
help direct our most senior of staff.
fix: The Birdshot Turbine will no longer Pre-Load itself with highly
flammable Plasma Gas. Do your own jobs you lazy atmos bums.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com>
Co-authored-by: DATAxPUNGED <44149906+DATA-xPUNGED@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Higgin <cdonny11@yahoo.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Zytolg <33048583+Zytolg@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: Bilbo367 <163439532+Bilbo367@users.noreply.github.com>
Co-authored-by: Zergspower <Griffinj88@yahoo.com>
2024-04-16 06:05:57 +00:00
762779f3f2 Adds a photobooth (#82105)
## About The Pull Request

Adds a photobooth machine to the HoP line which can be used to update
your security records photo.
It updates the records of the person's name, which means hiding your
identity and wearing an ID will let you change other people's photos. If
you aren't hiding your identity and are wearing someone else's ID, it
won't update at all because it will be unable to find your record.
There's 2 variants of this machine, one at the HoP line that's tied
behind Law Office access (so Lawyers have an extra thing they can help
out with if no one's available, but maybe it would be better behind
Library access since Curators are our "photographer" role?), and the
Security one that requires Security access.
The Security one has a special feature that it adds a height chart
behind the player.

![image](https://github.com/tgstation/tgstation/assets/53777086/c4eb0661-d752-4052-8006-2898af78c528)

This machine is used by either right-clicking on it or by pressing a
button, so the HoP can do it remotely from their line (except on Tram
where it's in the library), and after a few delays it'll update your
records automatically to how you look like.

Emagging the machine will remove its access restrictions but every time
it updates your photos it will spam camera flashing and blind you.

Sprites

Open

![image](https://github.com/tgstation/tgstation/assets/53777086/d5e97d84-46d8-40b5-995f-c0ef5c7f18ac)
Closed

![image](https://github.com/tgstation/tgstation/assets/53777086/520e88ed-4630-40d8-9039-4c6dd85a9872)
Security version on the left, has a red tint on it

![image](https://github.com/tgstation/tgstation/assets/53777086/ef71a092-8d1b-4776-bdb4-6718308967c7)

Video demonstration (old sprites):


https://github.com/tgstation/tgstation/assets/53777086/a2e59f08-2d58-4f5b-b081-e137c7606d35

## Why It's Good For The Game

Current security records has no way to change your photo ID, something
that was a feature before it was moved to TGUI. The only alternative is
to fully delete your record and make a new one with a photo and the same
name, but this shares a major issue with the HTML UI: You're immediately
sold out by the fact you have a background. No matter how well you try
to cover your tracks, any security officer looking at records will see
you are the only photo on the manifest that has a background and even a
camera in your hand, which makes it impossible to get away with it
unless security essentially takes pity on you.
This opens up the ability to fully mask yourself in records, finally.

This is also better even for non antagonists because you can now
properly update your photos to match what you look like in the event of
an appearance change or even just a job change, which makes it a benefit
for HoPs who likes to keep records as up-to-date as possible.

## Changelog

🆑 JohnFulpWillard, Twox
add: Added a new photobooth machine to the HoP's line.
fix: Things checking for access now checks your off hand, too.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-03-27 17:58:01 +13:00
c7c102f5a0 [MIRROR] Quick Harddel Fixeees [MDB IGNORE] (#23975)
* Quick Harddel Fixeees

* Update manifest.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-28 01:33:46 -04:00
LemonInTheDarkandGitHub 99950517aa Quick Harddel Fixeees (#78253) 2023-09-27 21:05:55 -04:00
32e9778c23 [MIRROR] TTS: Gas Mask muffling, Hailer Mask voice effects, support for more filters that use samplerate, voice effects for lizards, ethereals, and xenomorphs. [MDB IGNORE] (#23942)
* TTS: Gas Mask muffling, Hailer Mask voice effects, support for more filters that use samplerate, voice effects for lizards, ethereals, and xenomorphs.

* Update RecordView.tsx

* Update types.ts

---------

Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-27 02:27:56 -04:00
IamgoofballandGitHub dd87788877 TTS: Gas Mask muffling, Hailer Mask voice effects, support for more filters that use samplerate, voice effects for lizards, ethereals, and xenomorphs. (#78567)
## About The Pull Request


https://github.com/tgstation/tgstation/assets/4081722/7c8df2e2-8795-4048-b11e-e831f749a097


https://github.com/tgstation/tgstation/assets/4081722/d0bec7fd-25b1-4bdd-98a6-0ebfea749551


https://github.com/tgstation/tgstation/assets/4081722/31c0259a-2bd4-4575-a758-a2044ccf17b0


## Why It's Good For The Game

Improves TTS audio immersion.

## Changelog
🆑
qol: Gas masks now muffle your voice with TTS.
qol: Security Hailer masks now disguise your voice to protect your right
to brutalize greytiders.
qol: Lizards, Ethereals, and Xenomorphs now have a vocal effect.
qol: Security Records now show someone's voice name.
/🆑
2023-09-27 01:01:47 +00:00
LovliestPlantandGitHub 372f1c243b Records Console Formatting Support (#21686)
* The Goods

- Preserves whitespace (linebreaks) when viewing records consoles.
- Ditto for printed rapsheets.
- Removes the requirement of logged crimes for printing rapsheets.

* Update RecordPrint.tsx

* merge conflicts
2023-06-15 00:18:11 -07:00
5ac0aae724 [MIRROR] Removes all uses of text() [MDB IGNORE] (#21579)
* Removes all uses of text()

* Update record.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-06-07 14:43:37 +02:00
LemonInTheDarkandGitHub cb4a836d41 Removes all uses of text() (#75766)
## About The Pull Request

Apperantly it's deprecated. Also people misunderstand how to use it,
which leads to silly looking code and redundant wraps.

It is potentially useful to do a sort of format style string embedding,
but we don't have anything that really warrents it IMO.

## Why It's Good For The Game

Maybe byond will break on version upgrade slightly less now.
Also the code's less cluttered, and boomer posting has been excised.


![image](https://github.com/tgstation/tgstation/assets/58055496/c630e522-962c-4344-80f7-36d5df00a8b5)

![image](https://github.com/tgstation/tgstation/assets/58055496/f4cb3eb5-f07f-4489-8813-f59b19406bda)

![image](https://github.com/tgstation/tgstation/assets/58055496/6df7eb62-dae8-43b5-a511-1130ab4a2870)
2023-06-01 16:13:33 -04:00
b8c92a8c27 [MIRROR] Fix Respawn Character Admin Verb [MDB IGNORE] (#20159)
* Fix Respawn Character Admin Verb (#74295)

## About The Pull Request

while testing #74293 i tried to use this verb and it didnt work because
some stuff wasnt parsing in correctly so i fixed it

## Why It's Good For The Game

we want all of the admin tools to work

## Changelog

🆑
fix: admin respawn character verb works properly
/🆑

* Fix Respawn Character Admin Verb

---------

Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
2023-03-29 22:31:58 +01:00
Sol NandGitHub c4b95c7ccd Fix Respawn Character Admin Verb (#74295)
## About The Pull Request

while testing #74293 i tried to use this verb and it didnt work because
some stuff wasnt parsing in correctly so i fixed it

## Why It's Good For The Game

we want all of the admin tools to work

## Changelog


🆑
fix: admin respawn character verb works properly
/🆑
2023-03-28 23:22:22 -06:00
4e42b7fb04 [MIRROR] Re-implements Physical and Mental statuses in crewmember Medical Records [MDB IGNORE] (#19832)
* Re-implements Physical and Mental statuses in crewmember Medical Records

* wew

---------

Co-authored-by: Antonio Tosti <5588048+atosti@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-15 00:47:21 +00:00
Antonio TostiandGitHub 73172f8836 Re-implements Physical and Mental statuses in crewmember Medical Records (#73882)
## About The Pull Request
These changes re-implement the functionality for Physical and Mental
Statuses, which used to be present in Medical Records (visible via
medical filing cabinents, medical records consoles, and MED-HUDs). These
Physical/Mental statuses can once again be updated through examining a
crewmember (while wearing a Med-HUD), or through the new TGUI interface
for medical records consoles.

## Why It's Good For The Game
Primarily, this resolves the bugs mentioned in [Issue
#73477](https://github.com/tgstation/tgstation/issues/73477), and
restores functionality which appears to have been accidentally removed
via [PR #72725](https://github.com/tgstation/tgstation/pull/72725).
Additionally, the re-implementation of these statuses allows for more
in-depth medical RP (and bureaucracy), especially in regards to the
Psychiatrist role and managing crewmember sanity.

## Changelog
🆑
fix: Re-implements physical and mental statuses in crewmember medical
records.
fix: Re-implements changing a crewmember's physical/mental status via a
Med-HUD.
/🆑

Edit: Image of the new TGUI buttons which now handle Physical/Mental
statuses.

![medical-records-symbols-circled](https://user-images.githubusercontent.com/5588048/224860672-43486b9e-3b71-4ea5-8a71-b86545e08632.png)

Closes #73477
2023-03-13 19:21:55 -06:00
c040ddb857 [MIRROR] A few records-related manual mirrors (so I don't have to deal with annoying conflicts) (#19588)
* Records: Clerical expansion (#73022)

A few changes to sec records geared towards making it obvious how and
why someone is wanted.

- You can no longer set someone to arrest via console unless they have a
valid prior.
- Setting players to arrest via HUD creates a crime entry for that
person.
- Priors can be edited by the author and qualified personnel (armory
access).
- Priors can be invalidated by qualified personnel. This redacts the
info from huds and rapsheets.
- Invalidating the last crime sets a player to discharged
- Much like real life, you can no longer outright delete crimes. This
prevents gaming the arrest system by adding/deleting.
- Deleting an individual record in a sec console removes it from the
manifest (@JohnFulpWillard) this was previous behavior
- Purging records in sec requires higher access

Have you ever brought a wanted person into the brig only to find there's
no reasons listed and no one in sec will explain why they're wanted?
🆑
fix: Deleting a sec record removes it from the manifest again
qol: It's now easier to see security notes via HUD.
qol: It's now easier to see why someone is set to arrest.
qol: Crime authors and armory access can edit crimes.
balance: Setting players to arrest requires a valid crime.
balance: Armory access can invalidate priors.
balance: Setting players to arrest via HUD creates a crime for the
suspect.
/🆑

---------

Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: san7890 <the@san7890.com>

* Records hotfix [NO GBP] (#73363)

A remake of #73169
Repaths records consoles to their own subtype
Fixes some weirdness with observers logging into sec/med consoles
Fixes security notes not being able to be set etc

Bug fixes and cleaner code

🆑
fix: Security can set notes through consoles again
fix: Observers are now properly logged out of record consoles
/🆑

---------

Co-authored-by: Jeremiah <jlsnow301@pm.me>

* Fixes the map merge conflicts, hopefully.

* Fixes player created security records being unprintable for wanted/missing posters. (#73666)

## About The Pull Request

If a player created a security record during a round and attempted to
print it the printing process would runtime and result in the printer
being unusable.

As a side effect of fixing this I've discovered an annoying bug with
posters with them defaulting to the bottom left corner of a record. So
currently mugshot uploads has been restricted to 32x32 pixels with
approval from @jlsnow301 . Ideally at some point a player exposed photo
cropping system can be implemented to make it easier to create mugshots
using larger photos.

## Why It's Good For The Game

Fixes a bug.

## Changelog
🆑
fix: You can now create wanted/missing posters using player created
security records. Due to a visual bug and usability issue photos above 1
by 1 meters in size will no longer work for mugshots in records.
/🆑

* Fixes ui_data on ntosrecords [NO GBP] (#73670)

## About The Pull Request
Missed this while redoing records, this makes it match what the UI is
expecting
## Why It's Good For The Game
Bug fixes
## Changelog
🆑
fix: Fixes NTOS records program receiving bad medical disability data
/🆑

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

* Updates all of our maps with the new records computer paths

* Actually I don't know where this came from but I think it'll fix the linters

* Okay now it should work properly, hopefully

* mapas

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jeremiah <jlsnow301@pm.me>
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-10 02:42:52 +00:00
1f753d5d4c [MIRROR] Refactors crew records (#72725) + Medical/Security records now use the max/min age. [MDB IGNORE] (#19078)
* Medical/Security records now use the max/min age.

* merge conflict

* Refactors crew records (#72725)

I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.

- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)

<details>
<summary>previews</summary>

Editable fields & security console

![CM6d74brnC](https://user-images.githubusercontent.com/42397676/213950290-af6cfd76-eb8b-48e9-b792-925949311d9a.gif)

Medical records

![bFJErsvOaN](https://user-images.githubusercontent.com/42397676/214132534-59af1f8c-9920-4b51-8b27-297103649962.gif)

Look and feel of the more current version

![cxGruQsJpP](https://user-images.githubusercontent.com/42397676/214132611-0134eef0-e74c-4fad-9cde-328ff7c06165.gif)

</details>

TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler.
Manifest_inject is made readable.
Probably bug fixes

🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑

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

* I've got something that now actually works

Just got to incorporate the records into what players can actually see.

* Turns out that client has already been transferred after all

* Adds the past records in the TGUI records (they're kinda ugly but it works, so y'know)

* Whoops

* Hate you too sometimes Prettier

* Fixes ghost roles using LITERAL records, which caused problems

* Fixes the leaks caused by ghost roles not getting their name right because of the stupid freaking special() proc

* I hate list operations man they're so stupid

* Fixes the stars on the crew manifest!

---------

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: KathrinBailey <53862927+KathrinBailey@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-02-28 14:14:24 -05:00
NamelessFairyandGitHub e6ef38fd36 Fixes player created security records being unprintable for wanted/missing posters. (#73666)
## About The Pull Request

If a player created a security record during a round and attempted to
print it the printing process would runtime and result in the printer
being unusable.

As a side effect of fixing this I've discovered an annoying bug with
posters with them defaulting to the bottom left corner of a record. So
currently mugshot uploads has been restricted to 32x32 pixels with
approval from @jlsnow301 . Ideally at some point a player exposed photo
cropping system can be implemented to make it easier to create mugshots
using larger photos.

## Why It's Good For The Game

Fixes a bug.

## Changelog
🆑
fix: You can now create wanted/missing posters using player created
security records. Due to a visual bug and usability issue photos above 1
by 1 meters in size will no longer work for mugshots in records.
/🆑
2023-02-27 23:24:41 -08:00
3715cae41d Records: Clerical expansion (#73022)
## About The Pull Request
A few changes to sec records geared towards making it obvious how and
why someone is wanted.

- You can no longer set someone to arrest via console unless they have a
valid prior.
- Setting players to arrest via HUD creates a crime entry for that
person.
- Priors can be edited by the author and qualified personnel (armory
access).
- Priors can be invalidated by qualified personnel. This redacts the
info from huds and rapsheets.
- Invalidating the last crime sets a player to discharged
- Much like real life, you can no longer outright delete crimes. This
prevents gaming the arrest system by adding/deleting.
- Deleting an individual record in a sec console removes it from the
manifest (@JohnFulpWillard) this was previous behavior
- Purging records in sec requires higher access

## Why It's Good For The Game
Have you ever brought a wanted person into the brig only to find there's
no reasons listed and no one in sec will explain why they're wanted?
## Changelog
🆑
fix: Deleting a sec record removes it from the manifest again
qol: It's now easier to see security notes via HUD.
qol: It's now easier to see why someone is set to arrest.
qol: Crime authors and armory access can edit crimes.
balance: Setting players to arrest requires a valid crime.
balance: Armory access can invalidate priors.
balance: Setting players to arrest via HUD creates a crime for the
suspect.
/🆑

---------

Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
2023-02-02 09:51:15 +13:00
5e80257423 Refactors crew records (#72725)
## About The Pull Request
I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.

- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)

<details>
<summary>previews</summary>

Editable fields & security console

![CM6d74brnC](https://user-images.githubusercontent.com/42397676/213950290-af6cfd76-eb8b-48e9-b792-925949311d9a.gif)

Medical records

![bFJErsvOaN](https://user-images.githubusercontent.com/42397676/214132534-59af1f8c-9920-4b51-8b27-297103649962.gif)

Look and feel of the more current version

![cxGruQsJpP](https://user-images.githubusercontent.com/42397676/214132611-0134eef0-e74c-4fad-9cde-328ff7c06165.gif)

</details>

## Why It's Good For The Game
TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler. 
Manifest_inject is made readable.
Probably bug fixes

## Changelog

🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-01-24 18:34:27 +00:00