* Simple suit storage fixes (#76267)
## About The Pull Request
Makes toys, stamps, and spacecash invisible in suit storage, fixing some
missing textures
adds stamps to the allowed suit storage items for hop, qm, and cargo
wintercoats
## Why It's Good For The Game
The /datum/unit_test/suit_storage_icons failure list is awfully long,
and while some of them require more thoughtful fixes, just these couple
of lines clears more than 100 lines from the failure list.
While I was here I added the stamps to the allowed suit storage for hop,
qm, and cargo wintercoats cause that seems fair
## Changelog
🆑 Seven
fix: toys, stamps, and spacecash no longer has a missing texture when
put into suit storage
qol: stamps are now allowed suit storage items in the hop, qm, and cargo
wintercoats
/🆑
* Simple suit storage fixes
* Fixes the issue with tennis balls not showing up properly
---------
Co-authored-by: Lufferly <40921881+Lufferly@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.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>
* [NO GBP] Fixes papercutter's Exited() proc (#76153)
## About The Pull Request
#76131 was merged instead of drafted when asking for this change
Look at this the items get removed right yippee yahoo

## Why It's Good For The Game
~~maintainer told me to~~ Makes removing stuff from the cutter actually
work right
## Changelog
No player-facing changes
* [NO GBP] Fixes papercutter's Exited() proc
---------
Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
* Robust Photocopiers + Adds the Access Request blank (#76048)
## About The Pull Request
Currently, photocopiers parse the `blanks.json` file in `ui_data` and
send the entire thing to the client. Then, the client sends the entire
blank back to the server to commit it into the paper, in raw form. This
is a detriment to server performance. This PR puts paper blanks into a
global associative list that uses the `code` field as an index.
Printer toner color for some reason would check if the charges were
below 10, even though default cartridges only go up to 5. The value has
been changed to 2, which is still a high number. Toner cartridges are
scams.
Also photocopiers now have to hold actual paper and no longer
materialize it out of thin air. It's done similarly to paper bins, where
there is a starting integer value dictating how much paper is inside so
paper is lazily loaded into existence, as well as a paper stack list
that holds newly inserted paper. Photocopier paper starts out at 30 and
can go up to 60.
Additionally, the photocopier copying loop has been refactored to be a
lot more sane. The previous version ~~ab~~used timers for copying,
making a timer for each i interval to num_copies. I changed it to be a
proc that loops from i to num_copies, sleeping for a short amount of
time whilst playing a sound. This is a lot tidier and nicer since we
don't deal with timers, plus we get to play a printing sound too.
`make_thing_copy` now works by returning the copied object, or null if
something went wrong, so we know when to continue or exit.
This PR refactors UI code so entire blanks aren't sent to the client,
instead relying on the IDs for the blanks. Also, photocopiers now store
actual paper and also run out of it instead of materializing some out of
thin air.
Also, while I am already editing `blanks.json`, I added the Access
Request blank because people asked me to.
I can revert the config changes if it's too much of a hassle.
<details>
<summary>Screenshots/Me testing a printer for 5 minutes</summary>

https://github.com/tgstation/tgstation/assets/47710522/11c4b63b-7cfc-4425-96c6-970d4a5f51cahttps://github.com/tgstation/tgstation/assets/47710522/2f7a4a15-3400-49f3-9aca-c4d04c886bechttps://github.com/tgstation/tgstation/assets/47710522/14afe7d9-53ea-4d17-870f-1e90319284eb
</details>
<details>
<summary>Access Request form</summary>



</details>
## Why It's Good For The Game
Speeb. Also having photocopiers relying on an ingame stock of paper is
also very cool.
## Changelog
🆑 distributivgesetz
add: Photocopiers now use actual paper instead of materializing it out
of thin air.
add: Adds the "Access Request" form.
refactor: Greatly improve the reliability and performance of
photocopiers.
qol: Changed the blanks so they look nicer, whilst also fixing the
lawsuit request form.
qol: Nanotrasen's bureaucracy division has ""improved"" the quality of
their printer toner after many complaints from furious customers.
/🆑
* Robust Photocopiers + Adds the Access Request blank
---------
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
* Fixes several issues and a runtime with paper cutters (#76131)
<!-- 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
Was meant to just fix a runtime in the context screentips for
papercutters but now I've got several things fixed:
- Fixes context tips runtiming
- Fixes some context tips that just didnt ever appear
- Fixes the icons not updating when removing papers/blades
- Moves the blade to an overlay
- Adds a list of blocked paper types that don't fit: paperslips, NSpect
inspections, calling cards, pamphlets, and sparring contracts
- Fixes papers and blades not actually removing when removed
- Fixes being able to add papers when one is already inside
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Fixes
https://github.com/tgstation/tgstation/assets/76465278/c30127d3-24b0-4a1d-8272-76af68b24469
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## 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: fixed the context tips on papercutters
fix: fixes papercutters not properly updating their icons, removing
their stored papers/blades, and eating papers when one is already stored
/🆑
<!-- 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. -->
* Fixes several issues and a runtime with paper cutters
---------
Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
* Fix Biscuit (paper) hard delete (#76097)
## About The Pull Request
`contained_slip` is a reference to one paperslip in the "folder"
contents, when said slip was removed and eventually deleted caused a
hard delete.
## Why It's Good For The Game
Hard deletes bad
## Changelog
🆑 Melbert
fix: Fix Hard Delete from the captain's spare ID code paper
/🆑
* Fix Biscuit (paper) hard delete
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Named barrels (#75976)

## About The Pull Request
Barrels are nice stationary reagent containers, but it's hard to use
many of them because they're non-transparent and to see the reagents
with science glasses, you need to open the lid.
Now you can name barrels to not mistake them.
## Why It's Good For The Game
You don't need to open the barrel to figure out what you're going to get
from the tap.
## Changelog
🆑
qol: You can name barrels with a pen now, changing its icon
/🆑
* Named barrels
---------
Co-authored-by: Andrew <mt.forspam@gmail.com>
* Fixes some missing textures on the labcoat suit storage + makes the paper hat a craftable item (#75681)
## About The Pull Request
Fixes epipens, pillbottles, and test tubes having a missing texture when
put into suit storage.
Makes pills and patches invisible on the player when put into suit
storage.
Turns the paper hat into a craftable item, and by extention fixing an
issue where a paper hat would appear on your head when you put paper
into suit storage.
fixes: #69504
## Why It's Good For The Game
Fixes some missing texture sprites, makes it so the paper hat does not
appear on your head when you put it in suit storage.
Pills and patches also appeared on your body when put into suit storage,
which I thought looked weird, since they would be in your pocket or
something.
## Changelog
🆑 Seven
fix: Fixes epipens, pillbottles, and test tubes missing texture when put
into suit storage
fix: A paper hat no longer appears on your head when putting paper into
suit storage
add: The paper hat is now a craftable item
image: Pills and patches are no longer visible on a person when put into
suit storage
/🆑
* Fixes some missing textures on the labcoat suit storage + makes the paper hat a craftable item
---------
Co-authored-by: Lufferly <40921881+Lufferly@users.noreply.github.com>
Sets UNIQUE_RENAME max description length to 280, up from 140 (#75045)
player creativity with their funky little mining tools or other
implements of violence. or food items. ~~personally i just thought that
140 characters was too small~~
Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
* PT1 MAP RESET
* Lints
* [MDB Ignore] Adds a unit test for typepaths that are required to be mapped onto each station map (#74985)
Inspired by #74967 and #68459 , and the fact that Tramstation regresses
very often -
Adds a unit test, `required_map_items`, which ensures that certain
typepaths which should definitely be mapped onto every map is mapped
onto every map
It can also be used to ensure that items which should not be mapped in
multiple times are not, among other things.
I included a few examples -
- Min 1, max inf of each head of staff stamps
- Min 1, max 1 departmental order consoles
- Min 1, max inf comms console
- Min 1, max 1 Pun Pun
- Min 1, max 1 Poly
- Min 1, max 1 Ian
If, in the future, a mapper decides they (for some reason) do not want a
certain previously-required item on their map, the test can be adjusted
such that it allows excluding or something, but currently it should be
for items which require conscious thought about.
I attempted to make this a linter before realizing two things
1. Someone might make a spawner which spawns the items, or they might
get placed in a locker, in any case this accounts for everything on init
2. Linters run on every map, non-station maps included
So I went with a test
Why is it always the CMO stamp?
Not necessary (unless I find a map missing something, then this will be
updated)
* yay
* Update VoidRaptor.dmm
* Update blackmesa.dmm
* wew
* New sand and water sprites (ported from Bay) (#75254)
* e
* Update AntagInfoClock.tsx
* Update LimbsPage.tsx
* Update area_spawn_entries.dm
* Update LimbsPage.tsx
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes some miscapitalization of Nanotrasen (#75026)
## About The Pull Request
Fixes#75019
Also fixes it in a drink, the ethereal lore, and some photocopier
paperwork.
And also adds "NanoTrasen" to common spelling mistakes
## Why It's Good For The Game
Nanotrasen is the correct capitalization
## Changelog
🆑
spellcheck: Fixed Nanotrasen being miscapitalized in traitor posters, a
drink, the ethereal lore, and some photocopier paperwork
/🆑
* Fixes some miscapitalization of Nanotrasen
* Fixes the linters
---------
Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Fixes paper text length not counting correctly for cyrillic characters (#75021)
## About The Pull Request
It turns out someone used regular length() in papers code which caused
all cyrillic and some other characters to count as two symbols even
though tgui itself shows and counts them as one. Should be working fine
now.
## Why It's Good For The Game
less bugs = better game
## Changelog
🆑
fix: papers should count cyrillic and other non-ascii characters
correctly both server and client-side
/🆑
* Fixes paper text length not counting correctly for cyrillic characters
---------
Co-authored-by: Iajret <8430839+Iajret@users.noreply.github.com>
* Allows the book binder to remember font typing (#75007)
use that for book binding
## About The Pull Request
Closes https://github.com/tgstation/tgstation/issues/74996
## Why It's Good For The Game
## Changelog
🆑
fix: Bookbinder no longer takes your pen's font and throws it out the
nearest window
/🆑
* Allows the book binder to remember font typing
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Adds book burning (#74873)
## About The Pull Request
For some reason, unlike other paper items, you couldn't ignite books
with a lighter or other hot item.
Now, you can!
(Also made it so the odd obscure mechanic of cutting pages out of books
can be done by any sharp item, not just wirecutters or knives)
## Why It's Good For The Game
Consistency.
~~Burning copies of WGW.~~
## Changelog
🆑
add: Books can now be burned just like any other paper item.
add: You can cut pages out of books with any sharp item, not just knives
or wirecutters.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Adds book burning
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Reworks burning objects to be a component (#74688)
## About The Pull Request
Title.
## Why It's Good For The Game
Simply put, allows for atoms which are not /obj but use atom_integrity
to burn up too, which is nice and good.
But also, it allows for neat behavior like burning particle effects
(only structures use that right now to spawn smoke)

## Changelog
🆑
add: Burning structures spawn smoke particles. Sick.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Reworks burning objects to be a component
* modular
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Updates paper biscuits and the paper cutter (#74473)
## About The Pull Request
Well this started as a PR updating some of the spelling and grammar on
the biscuits... though spilled out a little into other aspects of the
relevant code.
There are a few things I've done here.
**Paper biscuits:**
- Updated spelling and grammar for paper biscuits. Confidental ->
confidential, that sort of thing.
- A little reorganisation and cleanup of the code itself.
- Preset slips are now generated on init on the parent from a var,
rather than each having its own init proc.
- Early returns, clearer vars, etc
**Paper Cutters**
Ended up doing more here, even though it wasn't the original reason I
started looking at this code.
- Added one (1) paper cutter blade to the paper cutters cargo crate.
Raised the price a little. This is just a reskinned hatchet, so I don't
think it's much of a balance concern.
- Clarifies and docs vars
- Cleans up refs on destroy
- Many `to_chat`s to `balloon_alert`s
- Removed single-letter vars
- Cancelled attack chains when trying to actually use the cutter. You
now pick it up either by having the blade secured and no paper inside,
or by dragging it into your hand.
## Changelog
🆑
spellcheck: Paper biscuits now have more proper spelling and grammar
qol: You now get one spare paper cutter blade in the paper cutter cargo
crate.
tweak: You now use right click to cut paper with a paper cutter
fix: You can now remove paper from a paper cutter if you change your
mind.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Updates paper biscuits and the paper cutter
---------
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* "Biscuit" cards, and also now slip papers are actually paper! (#74329)
## About The Pull Request
**This is not a literal biscuit which you eat. "Biscuit" is just a
nickname of this kind of snap-cards.**
Slip paper is now actually paper, before that, it was just literally
nothing, an object which does nothing. Because of that, the paper cutter
was useless as well, as it turned normal paper into useless paper slips.
Because of this now paper cutters are placed at:
- Bridge
- HoP office
- Warden office
- Cargo
Also adds biscuit cards. If you have no idea what it is, it's a kind of
card placed around a piece of paper usually to conceal some document and
it can be opened by cracking it with a crunchy sound (that's why it's
named a biscuit). Those are usually only opened in certain situations or
emergencies (The most famous example is the US president's nuclear
biscuit, which contains nuclear codes)
There are 2 biscuits: Normal and Confidential.
Normal is a plain biscuit with nothing really special, can be coloured
if you want as it's white.

The confidential biscuit is blue and has "NT" on it.

There is a not-sealed biscuit you can print in autolathe, it starts open
so you can put paper in and seal later making it a normal crackable one.
Now spare ID safe code automatically spawns in a confidential biscuit in
a new paper slip subtype - corporate slip paper. It's a plastic card
which is sturdier than the normal paper clip.

You can also create the corporate paper slip paper using - normal paper
slip, plastic, and captain rubber stamp (making this paper having a rare
status)


## Why It's Good For The Game
Paper slips being not paper is stupid and has no point in being that
way. This also made the paper cutter useless; hence, it was never placed
on any map (and never used).
This PR makes it paper, so it's usable when crew members need a paper
slip instead of a full-size sheet.
Placing paper cutters around the station makes it so the crew can
produce paper slips when they need them, this also gives it finally a
use and place on the station.
The 'biscuits' are cool and give more flavour to the spare ID safe
codes, as well as to other documents people might put in future PRs.
This also makes those paranoid captains which are scared of their spare
ID safe code being stolen and read can sleep tight, as now if someone
opens it up it's really obvious. Now also you can really make sure if
that head is lying about "not touching the spare ID", _but not as anyone
cares really._
**Okay, it's draft for now just so I can add some new things, and fix
the dupe bug:**
- [x] Being able to fax the paper biscuits
- [x] Make it impossible to cut paper slips into paper slips
- [x] Make corporate paper slips craftable or printable
- [x] Make confidential biscuits craftable or printable
- [x] Make paper cutters orderable at the cargo
_CRUNCH_
## Changelog
🆑 DrDiasyl aka DrTuxedo#0931
add: Added 'biscuit' cards! They can contain documents and can only be
accessed by cracking them open, you can't close them back. Nanotrasen
now stores spare ID safe codes in them.
add: Placed paper cutters around the station. They're in Bridge, HoP
office, Warden office, and Cargo.
add: Now you can order paper cutters at cargo.
fix: Now the paper slip is actually paper.
imageadd: The paper slips sprite was slightly tweaked to have text lay
more logically, added the corporate paper slip.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* "Biscuit" cards, and also now slip papers are actually paper!
---------
Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Syndicate Lavaland Base Photocopier is now Free (Gratis) (#74268)
## About The Pull Request
The syndicate ripped out the payment charger for VERY
IMPORTANT BUSINESSWORK.
i dunno if the syndicate ever get a fax machine they'll be able to send
people ass photos?
I decided to go with the subtype being named `gratis` because i didn't
want people to confuse whatever a `free` subtype would mean... free to
photocopy your own ass or anyone's ass? unlimited ass? photocopy smut?
whatever i think it's funny since it gives you to the answer of the joke
that i put in the desc... i'm such a master of comedy
* Syndicate Lavaland Base Photocopier is now Free (Gratis)
---------
Co-authored-by: san7890 <the@san7890.com>
* Removes networks from the game (#74142)
## About The Pull Request
This is a continuation of
https://github.com/tgstation/tgstation/pull/74085 - I announced in the
comments there that this would be my next PR, and this is it.
Removes SSnetwork, ``/datum/ntnet``,
``/datum/component/ntnet_interface``, ``var/network_root_id``, the
network unit test, and a lot of other things related to networks.
- NTNet circuits now check for an Ntnet relay, and uses signals to
operate.
- Logs in Wirecarp is now only for PDA and Ntnet Relay things, so you
can no longer see what ruins exist using it (why should Wirecarp know
that Oldstation spawned? The flavor is that they dont know its there).
- Removed it from MULEbots entirely, I don't think it even did anything
for them? Botkeeper seems to work without it, so it's possibly there
from pre-tgui PDAs.
- Moves assigning random names to a base proc instead of being tied to
network, this is things like random-naming scrubbers/vents. The behavior
hasn't changed at all.
- Makes Ntos work for consoles when relays are down, as the comments
said they're supposed to (because they're wired). I think this was an
accidental change on my part, so this is a revert of that.
## Why It's Good For The Game
Ntnet is ancient code that hasn't given us much that we can't do with
already existing alternatives, we've been slowly moving away from it for
init times, and though a large portion of that was limited to airlocks,
I still don't think this is a system worth keeping around.
It's way too complex to expect feature coders to do anything with it,
and too old with better alternatives for anyone to want to improve any
of it.
## Changelog
🆑
fix: Computers are now properly connected to Ethernet, and can use Ntos
when Relays are down.
refactor: Removes Ntnet and Ntnet interfaces, which was only used by
Ntnet circuits (which now directly checks for a Relay to work) and
MULEbots, which did nothing with it.
balance: Wirecarp no longer tells you what ruins spawned in a round,
instead it's limited to PDA logs, and tells you the source too. This
means the RD can catch someone running illegal programs if they don't
make any attempt at hiding it.
qol: Wirecarp logs is now set to save 300 at once, instead of 100 and
being increased to 300 by the RD during the round. This is pretty
insignificant, since there's no reason to NOT want as many logs as
possible.
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Removes networks from the game
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* changes paper slips to be tiny instead of normal sized (#74202)
## About The Pull Request
currently sheets of paper are tiny sized, but cutting them in half
creates paper slips, which are normal sized.
## Why It's Good For The Game
paper slips are too large to fit into some containers that full sheets
of paper can easily fit into. this hopefully fixes that
## Changelog
🆑
qol: adds the weight class 'tiny' to paper slips
/🆑
* changes paper slips to be tiny instead of normal sized
---------
Co-authored-by: nicky <c4g@cats4gold.net>
* Fixes some invisible inhands from the transforming component (#73807)
## About The Pull Request
The original issue caused by #70037
Esword issue caused by #73716
Originally the transforming component did not override the inhand icon
state of the the item on its own (instead putting the onus on the item
itself if they wanted unique behavior). It was changed to always update
inhand icon state, most of which don't have one
I don't really like this fix, it should be explicit "I want inhand to
change" and not default, but this will work for now
Also the PR that fixed the Jaws issue didn't actually set the var they
created
Fixes#73805Fixes#73711 (Actually)
## Why It's Good For The Game
Invisible sword bad
## Changelog
🆑 Melbert
fix: Fixed a eswords, some tools, and some other misc. items from being
invisible while extended / active
fix: Teleshields and other misc items not extending in hand when active
fix: Switchblades click on extend again
fix: Pendrivers click on extend
/🆑
* Fixes some invisible inhands from the transforming component
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes a major source of papercode lag and optimises paper for less (but still some) lag. (#73628)
## About The Pull Request
Doesn't quite fix but helps mitigate #71697 - The issue report is still
valid, just less so.
Marked.js is just... Slow when used in BYOND's web browsing environment.
New markdown elements **and HTML tags** add significant fractions of a
millisecond to parsing time on my local.
However, I suspect I messed up with using the custom extensions and
every parsing pass it may have be appending a new extension to the
extension list.
I'm not sure why this never manifested in my 6 minutes of testing gif
from the original PR, mind you. I checked out that commit and local and
everything worked the same as I remember. Perhaps a change or version
bump in the interim modified the behaviour.
That aside, on current master it's MASSIVELY obvious something is
fucked.
Spamming 1000 characters of
```
# Slow
## Slower
### Slowest
```
then saving it, then puting **another** 1000 characters of the same
thing for 2000 previewed characters total gave the following performance
metrics:

The marked.js parse time was about 150-180ms for the saved text and
220+ms for the input box text.
Moreso, if you leave the paper open for for a few minutes...

Yeah. That's 500+ms per parse (with 2 per render - one from the paper's
saved text and one from the input box) and the game will basically
crash.
Similar results using this template provided to me for testing purposes:
```
<center><b>Department Psychological Evaluation Survey</b></center>
<center><i>Test Log 230126-01</i></center>
<b>Question 1</b>
What department do you work in?
[_____________________________________]
<b>Question 2</b>
Which department are you least likely to recommend to a friend that they should work in?
<i>Please only choose one</i>
* Command [__]
* Security [__]
* Service [__]
* Cargo [__]
* Medical [__]
* Science [__]
* Engineering [__]
<b>Question 3</b>
Which department are you most likely to recommend to a friend that they should work in?
<i>Please only choose one</i>
* Command [__]
* Security [__]
* Service [__]
* Cargo [__]
* Medical [__]
* Science [__]
* Engineering [__]
<b>Question 4</b>
What is your favorite animal?
[_____________________________________]
---
Please sign here to confirm you are completing this survey voluntarily:
[_____________________________________]
<i>All Nanotrasen brand pens have an automatic signature system. Please write % s to automatically sign it.</i>
```
On first input + save, render time is normal but you can see it clearly
rising each second...


You get the idea.
Fixing the problem by using the proper markdown method for accomplishing
the same thing:
Markdown # Slow # Slower # Slowest test:

HoPaperwork Form

And these numbers don't increase over time. So I think I nailed an
interim fix.
Ultimately, marked.js in tgui/BYOND just seems slow as molasses. But it
can at least be **usable** for now and this should majorly mitigate or
even eliminate problems players have been having with paper (depending
on how loaded it is with HTML and markdown tags).
All the features we had before seem to still work after I feex. So
hopefully good for now?

## Beeg edit
I decided I'd go a step further and implement some basic caching logic.

This means that you don't pay a parsing cost from already saved text
while writing new text, allowing complex forms to be created in multiple
saved or one big copy-paste.
This means that reading paper and filling in input boxes in paper is
free after the first parse, using the cache afterwards.
This is a workaround for the fact a parse can take longer than we'd like
for complicated paper forms.
## Why It's Good For The Game
Paper good.
## Changelog
🆑
fix: Papercode has been significantly improved and trivially filled
paper forms should no longer lag or crash players' game clients.
/🆑
* Fixes a major source of papercode lag and optimises paper for less (but still some) lag.
---------
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* 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

Medical records

Look and feel of the more current version

</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>
* Fixes text input fields not working on copied paper. (#73633)
## About The Pull Request
Fixes#71698
The paper copying proc was incomplete and didn't copy over the total
field count, which is used for sanity checking/user input verifying.
Because this wasn't copied over, none of the copied fields passed
validation checks for text input and the ui_act would have rejected the
inputs as invalid.
## Why It's Good For The Game
I feex.
## Changelog
🆑
fix: Fixes broken input fields on photocopied paper.
/🆑
* Fixes text input fields not working on copied paper.
---------
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Adds checkgrep for improper or missing atom Initialize args (`mapload`) (#72846)
## About The Pull Request
Adds a grep for atom initialize overrides which does not include mapload
Regex used
`^/(obj|mob|turf|area|atom)/.+/Initialize\((?!mapload).*\)`
Also replaced some space indentation with some tab indentation in some
other greps

## Why It's Good For The Game
See #69107, #61759, #61623
## Changelog
No player facing changes
* Missed by #8374
* Add (mapload) to a //Skyrat Edit so that it passes
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fix paperplanes unfolding into different hand; balloon alerts (#73522)
🆑 coiax
fix: Paper planes when unfolded will put the paper in your active hand,
rather than a different hand, just like cardboard boxes.
/🆑
- Also, use balloon alerts for folded/unfolded to match boxes
## Why It's Good For The Game
Generally when you transform items from one form into another while
having them in your hand, they generally go into the same hand. Also,
people like balloon alerts now for these sorts of very minor
transformations.
* Fix paperplanes unfolding into different hand; balloon alerts
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
* Refactors photocopiers and fixes some bugs with them. (#73316)
## About The Pull Request
I set out today to fix a bug with photocopiers, I couldn't replicate the
bug but instead found two more and removed a bunch of duplicate code.
Fixes being able to print blanks despite having no money to print them.
Fixes paperwork not being removed from the photocopier when mounting it.
## Why It's Good For The Game
duplicate code bad, bug fixes good.
## Changelog
🆑
fix: You cannot print blank documents from a photocopier if you cannot
afford them anymore.
fix: Mounting the photocopier will now eject paperwork as it does with
photos and paper.
refactor: Lots of duplicate code and some unnecessary vars removed from
photocopier code.
/🆑
* Refactors photocopiers and fixes some bugs with them.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Modify photocopiers to no longer cause drones to delete toner (#73390)
A non-human user would skip the "put in hands" call, and just have the
reference to the toner be set to null without actually moving it.
Silicons still just make the toner drop on the floor as before.
No doubt in the future, when Ian is given a mouth slot to do paperwork,
he too will be able to use the photocopier.
🆑 coiax
fix: Drones no longer destroy toner cartridges when ejecting them from
photocopiers.
/🆑
## Why It's Good For The Game
It seems non-intuitive that interacting with photocopiers as a drone or
other non-human with hands would cause the toner to get marooned inside
the photocopier.
* Modify photocopiers to no longer cause drones to delete toner
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
Big Paperwork: Adds the Paperwork loan offer, paperwork fraud, and ancient paperwork! (#70863)
Adds paperwork -- an indecipherable mess of papers that only a seasoned
department head could hope to decipher. If processed and sent to Central
Command via the cargo shuttle, the budget gets a bonus.
Paperwork is distributed through a new Shuttle Loan offer. A nearby
station needs some paperwork reviewed. Do you have what it takes to
handle BIG PAPERWORK?
Processing paperwork is relatively simple. You can inspect it to see
which head of staff it "belongs" to, and you can use their stamp to
complete it. You get a lot of these, so the bonuses can add up if you
get them all in. Just be careful not to return any unprocessed
paperwork.
With big paperwork comes big paperwork fraud, and big fines.
You can photocopy your completed paperwork to double-dip with Central
Command and squeeze out a little bit more money. The more paperwork
fraud you commit, the higher the chance you'll be caught and fined.
On top of that:
Some say that in the long forgotten halls of maintenance, there lies
_ancient paperwork_. Documents whose importance has long since passed,
but are still important for bookkeeping at Central Command. With a keen
eye, you might spot one of these while scouring through maintenance.
Make sure it gets forwarded to the right person, cargo will thank you.
Co-authored-by: Rhials <Datguy33456@gmail.com>
Crafting light switches, request consoles, telescreens, and ticket machines (#72859)
## About The Pull Request
Breaking down #72371 because it's... unreasonably large.
So this PR adds recipes for light switches, request consoles,
telescreens, and ticket machines. Ticket machine frame by Kryson.
You can't print all of the telescreens, like the head of staff ones, but
the general department ones can be printed in their respective
departments.
## Why It's Good For The Game
Wallening compliance, and more of me on my shit breaking down long
files.
## Changelog
🆑 Tattle, Kryson
qol: light switches, request consoles, telescreens, and ticket machines
can now all be printed from lathes
/🆑
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
* Change admin comm console alert sound [NO GBP] (#72637)
## About The Pull Request
The original sound I used for the admin comm/fax notification causes
confusion with shuttle uplink being enabled/disabled for various
reasons.
## Why It's Good For The Game
You wonder who disabled the shuttle, but it's just a fax.
## Changelog
🆑 LT3
admin: Changed admin comm/fax notification sound to be less confusing
/🆑
* Change admin comm console alert sound [NO GBP]
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Allows admins to skip some paper sanitization (#72553)
## About The Pull Request
This PR allows admins with R_FUN to create paper that doesn't sanitize
as much HTML as the default, player-accessible paper. Specifically, the
ability for admins with R_FUN to add images that papercode would
normally sanitise via HTML img tags.
## Why It's Good For The Game
I'd like to make some fancy papers to send as faxes, but the current
sanitization doesn't allow for images.

This was a fax I threw together in a few minutes after making the logo
## Changelog
🆑
admins: Admins with the appropriate permissions can now use HTML image
tags in paper and faxes.
/🆑
* Allows admins to skip some paper sanitization
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars
* merge conflicts
* adjust_eye_blur and set_eye_blur_if_lower
* adjust drowsiness overdoses
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Crafting/Cooking menu update
* Yeeted away all of the merge conflicts, time to fix the code
* Okay, now it compiles, and after testing, it seems to work just fine
* Actually, early addition of an upstream fix, so those that don't have hunger can still open the cooking menu
* Fixes the units tests by removing the extra comma in the Stuffed Muli Pod recipe
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Admin alert for communications console messages (#72412)
Adds an audio alert when a CentCom or Syndicate communications console
message is sent, for things such as ERT requests.
It is optional and can be toggled in the Game Preferences menu.
Also fixes an incorrect line in the prefs readme.md
Less missing CentCom messages because you're busy doing other things,
less complaining that you're ignoring them.
* Adds a stamp sound effect when stamping papers (#72367)
## About The Pull Request
This pull request adds a .ogg file of a stamp stamping a paper, a
playsound function for stamping a paper, stamping a paper while blind,
and stamping yourself in the head to commit suicide.
In addition, it modifies the attributions.txt file to include credits to
the creator of the stamp noise.
## Why It's Good For The Game
Most item interactions tend to have a sound effect that plays. Putting
most items down, throwing them, cutting certain items with the knife,
scanning bounty cubes, putting a destination tag on a package, etc. all
play sounds, which makes it a bit odd that stamping papers doesn't. This
PR adds audio feedback to stamping papers.
https://user-images.githubusercontent.com/45489195/210032424-d3168a16-3d4b-47d3-95f3-75a1d3a6aac9.mp4
## Changelog
Stamping paper now makes noise.
🆑
soundadd: Added a new sound for stamping papers with a stamp. On an
unrelated note, there are reports of stamp-based suicides becoming more
noisy.
/🆑
* Adds a stamp sound effect when stamping papers
Co-authored-by: RedBaronFlyer <45489195+RedBaronFlyer@users.noreply.github.com>
Fixes a bunch of sidemap/plane cube issues (#72178)
## About The Pull Request
[fixes solor trackers offsetting wrong, and panels not using plane
offsets](8f461ab8ec)
[fixes cyborg hats offsetting phyiscally over their
head](5fd5b4240e)
[fixes reflector parts z fighting with their neighbors. if we physically
offset them, they'll have nothing to fight
with](088dcfe91f)
[fixes burgers layering wrong. uses a combo of pixel z to do the visual
offsets, and pixel_y to modify
layering](ec39e2bcd3)
[fixes signs, needed to use pixel_w instead of x, I think we may be
living under iso rules? I'm not totally sure I need to investigate
more](560d152fd7)
[fixes paperbin
rendering](e6c57ec00e)
## Why It's Good For The Game
Closes#72094Closes#72035
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Replaces the direct central command contact from fax machines with nanotrasen departmental contacts (#72009)
<!-- 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
Does what it says on the tin, instead of being able to fax central
command fax machines are linked to a randomly selected Nanotrasen
department. Current options are as follows but more can be added if any
creative ideas are provided.
- NT HR Department
- NT Legal Department
- NT Complaint Department
- NT Customer Relations
- Nanotrasen Tech Support
- NT Internal Affairs Dept
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Re-restricts contacting the top dogs at central command to people with a
captain ID. Being able to contact central commands highest ranks from an
IC perspective makes sense to be restricted to the captain only through
the use of the communications console. The crew can instead contact what
is likely an intern working in a specialized department.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## 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. -->
🆑
spellcheck: Admin fax report names now default to standard report rather
than standart.
del: Central Command can no longer be faxed directly from fax machines.
spellcheck: Replaced the ability to contact central command directly by
being able to contact a randomly selected nanotrasen department.
/🆑
<!-- 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. -->
* Replaces the direct central command contact from fax machines with nanotrasen departmental contacts
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>