Skip to content

Commit

Permalink
Update Dec 15 (#284)
Browse files Browse the repository at this point in the history
* fixes seed ruin logic preventing forced ruins from spawning when budget is zero, fixes map_logging CI test (#87910)

## About The Pull Request

The ruins get added to forced_ruins, quite often after all ruin budget
is exhausted and thus they don't get spawned.

This adjusts the logic to ignore the budget when there's forced_ruins to
be had.

Also apparently fixes map_logging CI test which was broken by the logic,
and makes the stacked_lights test scream at you with the area name for
the sake of easier debugging as it can proc on the ruins now

## Why It's Good For The Game

Adjusts some logic to allow multi-ruins to spawn correctly, and to make
sure our mappers make good space ruins too

## Changelog

:cl:
fix: Ruins will now correctly spawn their tied ruins in
fix: The map_logging test now runs proper
code: The stacked_lights test now screams with area names too.
/:cl:

* Automatic changelog for PR #87910 [ci skip]

* [s] ensure key config is set for any secure request (#88367)

## About The Pull Request
If you set up a server without `COMMS_KEY` set it will be blank, which
is a valid key
## Why It's Good For The Game
CommKey validation should fail closed not open
## Changelog

* Automatic changelog compile [ci skip]

* [NO GBP] Fixes atrocinator not yeeting you up (#88350)

## About The Pull Request
Closes #88338

## Changelog
:cl:
fix: Fixed atrocinator not yeeting you up
/:cl:

* Fixes a qdel loop in hypnosis brain trauma (#88349)

## About The Pull Request

Code bad lack of runtimes good

## Changelog
:cl:
fix: Fixed a qdel loop in hypnosis brain trauma
/:cl:

* Updates the Icebox Phonebooth alarm to actually be inside the booth (#88335)

## About The Pull Request

![image](https://github.com/user-attachments/assets/101bd911-c7ae-465a-99a6-f7a91b6c01e5)

A very light remapping, a few cosmetic improvements such as snowy
plating and some space by the door so it isn't flush against rockwalls.
Most notably, the air alarm is actually on the inside now, so it reads
the room inside instead of telling you that the Icemoon is indeed
ice-cold. Also has all-access because would-be-callers might want to
shut it up.
## Why It's Good For The Game
The alarm being on the outside and reading the outside hurt me. Now it's
a tiny bit nicer and cleaner.

Except, you know. Still a frozen hellscape out there.
## Changelog
:cl:
fix: fixed the Icebox Phonebooth air alarm being on the outside, thus
triggering because the planet is, indeed, cold. It is now inside and
all-access so that callers can turn it off when they decide the phone's
more important than their health and safety.
/:cl:

* Map vote now cares about population at the time of the mapvote instead of round start (#88316)

## About The Pull Request
Mapvote will pull maps from the config based on the player count at time
of vote creation, rather than round start
## Why It's Good For The Game
if there are 30 connected round start, then 80 connected when the vote
is made, the options available shouldn't be the smallest possible maps
for the next round
## Changelog
:cl:
fix: Map vote now cares about current player count
/:cl:

---------

Co-authored-by: Odairu <[email protected]>

* Automatic changelog for PR #88350 [ci skip]

* Automatic changelog for PR #88349 [ci skip]

* Automatic changelog for PR #88335 [ci skip]

* Automatic changelog for PR #88316 [ci skip]

* Refactor shield satalites to use proximity_monitor making them more reliable (#87799)

## About The Pull Request

Refactors the meteor satalites to use proximity_monitor making them MUCH
more reliable

## Why It's Good For The Game

Previvously it would process and check if meteor is in range every 0.2
seconds via subsystem. This made it very possible that meteor flew past
it before it even got detected, bypassing the shield. For it being
station objective that feels rather silly. Especialy when meteors can
actuely HIT THE SAT AND DESTROY IT

Also slight delay in toggleing on so you cant spam toggle it

## Changelog
:cl:
refactor: Nanotrasen has introducted new upgrades into the aging station
shield statalites, they require a but longer to toggle on however
/:cl:

---------

Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #87799 [ci skip]

* Build(deps): Bump JamesIves/github-pages-deploy-action from 4.7.1 to 4.7.2 (#88359)

Bumps
[JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action)
from 4.7.1 to 4.7.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jamesives/github-pages-deploy-action/releases">JamesIves/github-pages-deploy-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.7.2</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>Bug Fixes 🐝</h3>
<ul>
<li>fix: enable rsync mkpath to be backwards compatible with older
Ubuntu versions by <a
href="https://github.com/JamesIves"><code>@​JamesIves</code></a> in <a
href="https://redirect.github.com/JamesIves/github-pages-deploy-action/pull/1757">JamesIves/github-pages-deploy-action#1757</a></li>
</ul>
<h3>Build 🔧</h3>
<ul>
<li>build(deps): bump the misc group across 1 directory with 2 updates
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/JamesIves/github-pages-deploy-action/pull/1756">JamesIves/github-pages-deploy-action#1756</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/JamesIves/github-pages-deploy-action/compare/v4.7.1...v4.7.2">https://github.com/JamesIves/github-pages-deploy-action/compare/v4.7.1...v4.7.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/JamesIves/github-pages-deploy-action/commit/15de0f09300eea763baee31dff6c6184995c5f6a"><code>15de0f0</code></a>
Deploy Production Code for Commit
d5dce9b90a6d5a8ff3cf3d2d8e6762aeddcc8026 🚀</li>
<li><a
href="https://github.com/JamesIves/github-pages-deploy-action/commit/d5dce9b90a6d5a8ff3cf3d2d8e6762aeddcc8026"><code>d5dce9b</code></a>
Merge branch 'dev' into releases/v4</li>
<li><a
href="https://github.com/JamesIves/github-pages-deploy-action/commit/389b85feff74538faf374f5fbf429aac582396c1"><code>389b85f</code></a>
fix: enable rsync mkpath to be backwards compatible (<a
href="https://redirect.github.com/jamesives/github-pages-deploy-action/issues/1757">#1757</a>)</li>
<li><a
href="https://github.com/JamesIves/github-pages-deploy-action/commit/12622a23d5246ff5656e6c2a16ce5b36e9e801a5"><code>12622a2</code></a>
build(deps): bump the misc group across 1 directory with 2 updates (<a
href="https://redirect.github.com/jamesives/github-pages-deploy-action/issues/1756">#1756</a>)</li>
<li><a
href="https://github.com/JamesIves/github-pages-deploy-action/commit/588d83fdf6b8f851e5dff99dc0086ad4e6242f05"><code>588d83f</code></a>
Release 4.7.1 📣</li>
<li>See full diff in <a
href="https://github.com/jamesives/github-pages-deploy-action/compare/v4.7.1...v4.7.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=JamesIves/github-pages-deploy-action&package-manager=github_actions&previous-version=4.7.1&new-version=4.7.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Automatic changelog compile [ci skip]

* Recovered crew no longer show up on roundend report, (#88345)

## About The Pull Request

Recovered crew no longer show up on roundend report, they are
technically antags, but they are not antags

![image](https://github.com/user-attachments/assets/255e26bb-acb0-419e-91bd-d203897dc26a)
## Why It's Good For The Game

Too easy to get greentexts. we don't want players to feel accomplished
too often
## Changelog
:cl:
fix: Recovered crew no longer show up on roundend report
/:cl:

* Automatic changelog for PR #88345 [ci skip]

* Fix drink labels for alcohol bottles (#88355)

## About The Pull Request
- Fixes #88351

An examine proc used bitflags to determine the contents of a bottle
despite whatever reagents are inside. I went and changed the examine
message to use `The label says it contains` instead of `It is` which is
more appropriate. Also the empty bottle parent type was listed as
`ALCOHOL` despite spawning with no reagents. A lot of alcohol subtypes
relied on this to give them the correct bitflag.

## Why It's Good For The Game
Drink consistency.

## Changelog
:cl:
fix: Fix drink labels for alcohol bottles
/:cl:

* Automatic changelog for PR #88355 [ci skip]

* AI laws and tape recorders no longer cause radio blips (#88285)

## About The Pull Request

Closes #87423

## Why It's Good For The Game
The sound this produces when AI states laws on a non-common frequency is
highly jarring and shouldn't be spammed every time someone from command
asks AI to state laws (or security uses a tape recorder in the
interrogation room).

## Changelog
:cl:
qol: AI laws and tape recorders no longer cause radio blips
/:cl:

* Automatic changelog for PR #88285 [ci skip]

* Minor maintenance for borg Inducer (#88250)

## About The Pull Request
- Moves borg inducer to the same file as other inducers for easy
maintainence
- Compressed code for its `get_cell()` proc
- Fixes examines & screentips for borg inducer

## Changelog
:cl:
code: slightly improved code for borg inducer
spellcheck: fixes examines & screentips for borg inducer
/:cl:

---------

Co-authored-by: AMyriad <[email protected]>

* Automatic changelog for PR #88250 [ci skip]

* Reorganizes and splits shuttle code (#88228)

## About The Pull Request

refer to title

No code changes were made here, i just copypasted code around
The only real difference is that I removed a pretty useless define that
depended on TESTING because it got in my way of splitting emergency.dm

tbh i didnt want a 50k line refactor pr that nobody is going to review
so im getting it out of the way in a separate PR

## Why It's Good For The Game

Shuttle code is literally all over the place please help me oh gosh

## Changelog

Nothing player facing or developer facing (at least I really hope so)

* [NO GBP] Fixes projectile homing (#88379)

## About The Pull Request

Most sane projectile code (This was written prior to point changes when
they stored both coordinates and pixel values in x/y vars, and I forgot
to change it)

Closes #88293

## Changelog
:cl:
fix: Fixed projectile homing
/:cl:

* Automatic changelog for PR #88379 [ci skip]

* Tram spoiler/malf fix (#88371)

## About The Pull Request

- Fixes emagged tram spoilers from appearing welded/displaying weld
hints
- Tram malfunction checks for humans before throwing
- Tram control panel flashes orange when malfunction can be fixed

## Why It's Good For The Game

- Better visual indicator that the tram is malfunctioning and can be
reset
- You're correctly told welder or multitool hints depending on if the
tram is welded or emagged
- Don't bother running a tram malfunction if nobody is around

## Changelog

:cl: LT3
fix: Tram spoilers correctly provide welder or multitool hints depending
on their damage
fix: Malfunctioning tram controller flashes orange and can be
preemptively fixed before it crashes
/:cl:

* Automatic changelog for PR #88371 [ci skip]

* Fix gravity bugs and exploits (#88362)

## About The Pull Request
- Fixes #88272
- Fixes #75480
- Fixes #77658
- Fixes #76380
- Fixes #78664
- Fixes #88272
- Fixes #50078

Gravity checks used to be on `mob/life()` proc and were moved to an
event based architecture to boost performance which lead to some edge
cases not being fully covered. The primary one being any teleport effect
which is now fixed. Another niche way was involving creating/destroying
floor tiles underneath a mob which is now also fixed.

## Why It's Good For The Game
Gravity now behaves normal.

## Changelog
:cl:
fix: Fix gravity not updating for mobs when teleporting, wormhole
jaunters, wizard spells, tile creation/destruction, mech entry/ejection
and other methods.
/:cl:

* Automatic changelog for PR #88362 [ci skip]

* [NO GBP] Fixes mechs with crowbar-like tools not holding firelocks open at all (#88346)

## About The Pull Request
I apparently missed a second proc that handles sanity checks with
holding a firelock open. Since it expected mobs, it would challenge the
crowbar holder against an `isliving()` check, which non-mobs
automatically fail. So I'd fixed the issue of a mech holding half a
station's firelocks open remotely, but now the mech couldn't hold one
firelock adjacent.

I've done the same checks with mobs using crowbars (both human and
borgs), and this change again doesn't affect them.
## Why It's Good For The Game
Fixing my own bugs.
## Changelog
:cl:
fix: Mechs with crowbar-like tools can now hold adjacent firelocks open
correctly.
/:cl:

* Automatic changelog for PR #88346 [ci skip]

* [NEBULA] Adds fire alarms to the fore primary hallway (#88237)

## About The Pull Request

Adds two more fire alarms to teh fore primary hallway in nebula

## Why It's Good For The Game

I personally found myself stuck in one of the sections of that very big
area with no way of getting out, these two thingies should at least
prevent this a tad more

## Changelog

:cl:
map: Nanotrasen engineers have installed more fire alarms on
Nebula-class stations, for your convenience.
/:cl:

* Makes wild anomaly spawns more bearable (#87960)

<!-- 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

- Material anomaly will now self-delete after 1-4 relocations
- Bioscrambler now has a countdown like all other anomalies
- Increased anomaly lifetime from 99 seconds to 120
- Adds some more detonation effects where there were none (see: I abuse
the circle effect jacq added (again))

## Why It's Good For The Game

<!-- 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. -->

Material anomalies can wreak insane havok throughout the station if it's
not caught quickly. It's a cat and mouse game, which can get kinda
frustrating (flashbacks to trying to get the anomaly but it constantly
teleporting just before I get to it). I don't wanna kill the cat & mouse
game, but putting a limit on it so the entire station doesn't suffer
endlessly to pizza/snow/jungle toilets is a nice middle road.

Bioscramblers are actually beyond frustrating. If someone doesn't
immediately go for them, they'll start locking on and noclipping through
the entire station and mutating every single person for the rest of the
shift. This would probably be less bad if the bioscrambler couldn't give
every single organ (par some blacklisted), causing a lot of irreversible
damage, spontaneous combustions, glitches and creeping rare organs and
limbs into a round "for the lulz". (This doesn't fix the absolute organ
slop that they cause, but reworking bioscramblers not to be shit is for
later.)

I've also given anomalies 20 extra seconds of runtime. Anomalies take 99
seconds, take 30 to announce (for most), giving scientists 69 seconds to
get anomaly catching gear and navigate to the area and defuse it. It's
always felt like just barely too little time, often not getting the
anomaly even when I am beelining. It was usually enough from when we
just had meta, but we got bigger and bigger maps. It also gives them
more time to wreak havoc for chaos lovers.

## 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 its 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. -->

:cl:
balance: Bioscramblers are no longer immortal
balance: Anomalies give 20 extra seconds to defuse! Or 20 extra seconds
for them to reach havoc...
balance: Material anomalies only teleport 1-4 times before detonating
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: 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. -->

* Fix gravity for areas in space near station (#88176)

## About The Pull Request
- Fixes #76827

This removes gravity from the following areas:
- Solars
- Nearstation
- Space
- Ordnance bomb testing

##### Note - Asteroid areas (Tram) or planet areas (Ice) are not
affected.

<details>
<summary>Examples of outside gravity turfs</summary>


![dreamseeker_Mml3HmRaIK](https://github.com/user-attachments/assets/b6e410b7-e242-4c77-8cc8-34e15bd96b42)

</details>

Now stepping on floor plating in those areas will result in mobs
drifting. (like they do inside the station when gravity is offline)
Stepping on or near catwalks, lattices, or walls stills controls your
movement. Also refactored a little bit of the `has_gravity` code to use
defines instead of `TRUE/FALSE`.

## Why It's Good For The Game
Consistency. Mag boots are highly recommended when performing EVA.

## Changelog
:cl:
fix: Fix gravity for areas in space near station (solars, nearspace,
bomb testing, etc.)
/:cl:

* Automatic changelog for PR #87960 [ci skip]

* Automatic changelog for PR #88176 [ci skip]

* gatfruit shoots peas (#88051)

## About The Pull Request
basically #64128 slightly redone (with permission)

gatfruit now shoots peas; 
(injects assuming hit zone is unblocked and this assumes you havent
modified the plants reagent genes)
at 0 potency to god knows what potency a single pea (bullet) deals 5
brute and injects 1u of phytotoxins
at 50 potency it fires 10 brute and injects 15u of phytotoxin
at 100 potency it fires 15 brute and injects 30u of phytotoxin
phytotoxin is the Toxin chemical but with no liver damage, it is not
particularly strong but serves to recreate the original PRs 5 tox with
possibility of actually modifying that

![2024-11-20
17_04_00-Window](https://github.com/user-attachments/assets/4803f02a-d8a5-4acd-bc49-fd50959b4794)

upon peeling the fruit its reagents are spread among the revolvers 7
casings

also i attempted to make the revolver look more plant-like but im pretty
sure i screwed up

![image](https://github.com/user-attachments/assets/0e1b374d-0b8a-441c-b359-6c94298c6ad1)


## Why It's Good For The Game

a bullet of 357 deals 60 brute (not counting falloff (which i dont think
it gets) and armor)
there are 7 bullets of 357 in a revolver so 420 brute in 1 revolver, and
it basically takes 200 brute to kill someone outright if oxygen and
other damage doesnt do it first
at 10 yield (or whatever max yield is i cant really remember) thats 10
revolvers, so 10 x 420 so 4200 in a bag brute per harvest (again 200
brute if you decide to shoot until something dies so you can kill like
21 people if you dont miss in a single yield 10 harvest)
thats pretty busted for something you can achieve fast by making REALLY
easy chems after getting the seeds from exodrones or lavaland

with this change its still a viable weapon but not a supremely lethal
traitor weapon, and also enables some botany gaming if you make it
contain felinid mutation toxin or something

## Changelog
:cl:
balance: A mutation in gatfruit seeds has led to a drastic alteration in
the observable traits of the plant, which now fires hardened peas that
deal less damage, but poison the target. Additionally, its poison can
be, with some botanical engineering, replaced with whatever you wish.
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>

* Runechat no longer awkwardly fades in if in bulk (#88089)

## About The Pull Request

So you know how if you tried to use a ? or ! in a message with signer
the second message would very slowly fade in? I fixed that

## Why It's Good For The Game

why IS IT good for the game?

## Changelog

:cl:
fix: runetext fades in correctly in bulk. signers rejoice
/:cl:

* Automatic changelog for PR #88051 [ci skip]

* janitor modsuit space cleaner mister (#87973)

## About The Pull Request
![2024-11-17
10_33_43-Window](https://github.com/user-attachments/assets/93f3f0f4-9475-4537-9a75-a973a9886eea)

generates 2u of space cleaner per second if active
it shoots space cleaner
janitor ert gets it

## Why It's Good For The Game

at long last janitors get some actually useful modsuit module

## Changelog
:cl:
add: janitor modsuit space cleaner mister module
/:cl:

* Automatic changelog for PR #88089 [ci skip]

* Automatic changelog for PR #87973 [ci skip]

* Eradicates some obj/item overrides of /New (#88135)

## About The Pull Request
Removes some /New overrides, replacing them either with nothing because
they're entirely redundant or with more intuitive/consistent interfaces
## Why It's Good For The Game
Code consistency/readability, fixes an obscure potential-bug that would
delete non-implanted cybernetic implants that are a part of a
loadout/outfit, I'm being haunted by code from 2015 send help
## Changelog
Hopefully not player facing. Except this random thing I saw while I was
here.
:cl:
spellcheck: paywall firing pins no longer set the gun description to the
pin's description on removal
/:cl:

* Automatic changelog for PR #88135 [ci skip]

* u can now hand-feed animals. like cats and raptors (#88173)

## About The Pull Request
this PR does 2 things, firstly it allows u to directly feed animals from
ur hand instead of having to drop it on the floor and relying on their
AI to go eat it. So you can now directly feed ore to raptors or wheat to
cows by simply clicking on them with the item. secondly, it links the
tameable component and the eating element together, as now the former
relies on signals sent by the latter.

## Why It's Good For The Game
Small QOL for pet owners when it comes to feeding their animals.

## Changelog
:cl:
qol: u can now directly feed animals from ur hands, like raptors or
cats, by clicking on them with their preferred food.
balance: u can now heal ur raptors mid or post battles by hand feeding
them ores
/:cl:

* [no gbp] manufacturing assembling machine fixes and stuff (#88305)

## About The Pull Request

ok idk how to structure this but
basically the crafter (assembling machine) crafts stuff on top of it now
again items created by the crafter are tracked and will be attempted to
sent forward at once everytime it processes or crafts
this means junk shells and lizard boot recipes work
additionally, you can no longer have it craft initially anchored
objects. this was already a thing the check just never worked

also fixed some dumb define stuff and i made it call recipe completion

## Why It's Good For The Game

fixes #87876
the MANUFACTURING_FAIL_FULL define was basically just useless and if
statements thinks its a true value which makes certain things harder to
read
pockets defines got left in by accident because i tried to rework it at
some point (spoiler: did not work)

## Changelog
:cl:
fix: manufacturing assembling machine crafts junk shells and lizard
boots properly, may no longer craft anchored objects (broken check), and
sends its crafted stuff at once
/:cl:

* [NO GBP] Fixes an edge case with meteor moveloop code (#88229)

## About The Pull Request

This felt like an infinite delete trap so I've tested it and didn't find
anything but there's a couple of qdel loop traces in server logs, I
think this happens if something destroys the meteor?

## Changelog
:cl:
fix: Fixed an edge case with meteor moveloop code
/:cl:

* Toolbox Mastery: Finally gives toolboxes a real use (#88252)

## About The Pull Request

Using a toolbox on an object will now bring up a radial menu containing
all "tools" inside of it, and picking one will put it in your offhand
and use it on the object you clicked. After use, the item will be stowed
back in the toolbox. Welding tools will be turned on (and off when
stowed), and spess knives will give you an option to pick which tool you
want to use. Only certain items qualify as tools (most items that would
fit into a toolbelt do), so you cannot use this to sneakily attack
someone with an esword.


https://github.com/user-attachments/assets/0cd5c859-490f-4643-b451-92ce15a34fba

Using a toolbox in such a fashion passes click modifiers through,
allowing you to use left/right, ctrl and alt click modes of items just
fine.

God bless our attack chain.

## Why It's Good For The Game

Toolboxes are inferior to toolbelts and boxes in almost every single
way, being only capable of storing 7 items and not fitting anywhere.
This gives them an actual use and maybe they'll see use in actual
construction projects.

## Changelog
:cl:
add: Toolboxes can be used on any object to pull out and use a tool from
it as long as your offhand is free.
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>

* Automatic changelog for PR #88173 [ci skip]

* Automatic changelog for PR #88305 [ci skip]

* Automatic changelog for PR #88229 [ci skip]

* Automatic changelog for PR #88252 [ci skip]

* Adds rare chance for surgery trays to become medical toolboxes (#88276)

<!-- 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

Surgery trays now have a small chance to become medical toolboxes.
Autopsy trays can become coroner toolboxes.


![image](https://github.com/user-attachments/assets/a6f6182b-5840-4494-8326-ea88f76e195b)

They work basically the same, just that they can't be rolled around and
don't slow you down when walking around.

Medical toolboxes are fairly weak, but coroner toolboxes are pretty
strong.

Added a 1 in 1.000.000 chance for a toolbox to have four latches.

<!-- 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

> Surgery trays now have a small chance to become medical toolboxes.
Autopsy trays can become coroner toolboxes.
> They work basically the same, just that they can't be rolled around
and don't slow you down when walking around.

The idea of going to the surgery room and finding a _medical toolbox_
instead of a surgery tray is inexplicably amusing to me.

> Medical toolboxes are fairly weak, but coroner toolboxes are pretty
strong.

Healers and hurters!

> Added a 1 in 1.000.000 chance for a toolbox to have four latches.

peak absurdity is reached

~~next pr will include brown toolboxes, which clip to your belt~~

credit 2 @SmArtKar for sprites

<!-- 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 its 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. -->

:cl:
carlarc, smartkar
add: Surgery trays now have a small chance to become medical toolboxes.
Autopsy trays can become coroner toolboxes.
add: Added a 1 in 1.000.000 chance for a toolbox to have four latches.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: 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. -->

* Automatic changelog for PR #88276 [ci skip]

* Implements icon size caching to avoid unnecessary load in updatehealth (#88266)

## About The Pull Request

Technically an improved port of
https://github.com/DaedalusDock/daedalusdock/pull/651, instead of only
storing height over 32 pixels for HUDs we store both pure height and
width for the sake of cutting down on icon operation spam (which is
pretty costly). Should save us a significant amount of time, cuts down
update_health_hud times by 45% and total update_health by 30% which is
pretty good for a somewhat hot proc.

## Why It's Good For The Game

Our health HUDs constantly fetch icons ***twice*** every update_health,
jesus.

## Changelog
:cl: SmArtKar, Kapu
code: Implemented caching for icon sizes which should significantly
improve mob health performance due to HUDs constantly fetching icons
/:cl:

* Automatic changelog for PR #88266 [ci skip]

* Removes organ "refreshing" from multiple heal sources (#88328)

## About The Pull Request

Removed HEAL_REFRESH_ORGANS flag from:
 * Legion cores
 * Helbital janken achievement
 * Adminodrazine (just annoying to deal with in practice)
 * Regenerative slime extracts
 * Wands of healing/death (for undead)

Closes #87520
Closes #87007

## Why It's Good For The Game

HEAL_REFRESH_ORGANS forces the species datum to delete and re-create all
of mob's organs, deleting all non-natural organs. This leads to loss of
augmentations or non-standard organs, and is usually excluded from most
revives (but was intentionally, or unintentionally, missing from these).
This should stop miners and scientists from losing their
implants/infusions/augmentations, and make it easier for testers to heal
themselves without losing organs (since this allows you to heal self by
spawning adminodrazine, as normal aheal still refreshes your organs)

## Changelog
:cl:
balance: Removed organ "refreshing" from legion cores, magic wands and
regenerative crossbreeds so they no longer get rid of your implants
/:cl:

* gives three tiny buffs the knock heretic path (#88291)

## About The Pull Request

burglars finesse range increased and it may loot any storage object on
the back
caretakers refuge cooldown is only applied when exiting refuge
labyrinth handbook accepts any crayon instead of a white crayon

less balance related:
click on an id card with eldritch id card to make it consume it
eldritch id portals are slightly smoother

## Why It's Good For The Game

burglars finesse will immediately get you valided at max range anyway so
lets make it longer
caretakers refuge is not that good to need a 2 minute total cooldown
the labyrinth handbook recipe is too bad to even consider making it
ever, making it use a crayon makes it more accessible and its still not
that good of an item anyway

## Changelog
:cl:
balance: burglars finesse spell range increased from 4 to 6 and it may
loot any back storage object, caretakers refuge cooldown is only applied
when exiting refuge, labyrinth handbook accepts any crayon instead of a
white crayon
qol: you may click an id with the knock heretic id card to make it
consume it
/:cl:

* Automatic changelog for PR #88328 [ci skip]

* Minor maintenance for reagent grinder (#88199)

## About The Pull Request

**1. Code Improvements**
- Removed `can_interact_with()` checks. They aren't required if we don't
have a TGUI window & `can_perform_action()` can suffice here
 - Shortened code for tool acts & `attack_hand_secondary()`
 
**2. Fixes**
- Fixes #88180. It now has checks after the user has selected a radial
menu option
- You can eject contents & examine (AI only) the grinder without
requiring it to be anchored or powered via the radial menu
   - Examine block is properly formatted

## Changelog
:cl:
code: condensed code for reagent grinder
fix: reagent grinder won't break when 2 or more people are
simultaneously interacting with it
fix: ejecting contents & examining the reagent grinder as an AI via the
radial menu does not require it to be powered or anchored
fix: examine block for reagent grinder as an AI is properly formatted
/:cl:

* Automatic changelog for PR #88291 [ci skip]

* Automatic changelog for PR #88199 [ci skip]

* Add human organ crate to emergency medical holodeck simulation (#88195)

## About The Pull Request
This adds a crate to medical holodeck sim with a full set of human
organs inside a freezer containing:
- heart
- lungs
- eyes
- ears
- tongue
- liver
- stomach
- appendix

##### (And yes, a holodeck organ can fade away while it's still inside
someone causing them to suffer organ loss)

## Why It's Good For The Game

Immersion.

## Changelog
:cl:
add: Add medical human organ crate emergency medical holodeck simulation
/:cl:

* Automatic changelog for PR #88195 [ci skip]

* General maintenance for `machinery.dm` (#87972)

## About The Pull Request
- Removed the following unused/unchanging vars from machines
  - `wire_compatible`
  - `machine_power_rectifier`
  - `market_verb`
- Removed setting `fair_market_price` in places which did not check for
NAP violations like cryo & coffee pot
- Autodoc for other vars & procs. Adds modifiers for procs where it
makes sense
- Merged `base_item_interaction()` with its already existing
implementation. RPED now adds finger print to the machine & respects
`COMSIG_TRY_USE_MACHINE`
- Removed proc `locate_machinery()` which was only used by turbine
machinery,

## Changelog
:cl:
code: improved code for machinery
/:cl:

---------

Co-authored-by: LemonInTheDark <[email protected]>
Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #87972 [ci skip]

* Third Time's the Spessman: Solves jetpack struggles once and for all (#88317)

## About The Pull Request

This PR improves our jetpacks in 2 major ways: partially decoupling them
and intentional space movement from SSnewphys, and implementing
consistent pushoff speeds.

Currently jetpacks work by applying constant newtonian force whenever an
input key is held down by a client and stabilizing the movement every
time they get processed by SSnewphys which is an SS_TICKER subsystem,
which means that it attempts to fire prior to everything else and has a
wait of a single tick. This would be fine if we could guarantee that
there isn't another SS_TICKER subsystem with a higher priority that
constantly overtimes... oh right, that'd be the most important subsystem
of SSinput.

Newtonian impulses, both when starting a drift and when applying
continious force rely on SSnewphys to fire the loop, which can end up
not happening due to overtime in input (and is a frequent issue on
highpop). To circumvent this, newtonian impulses now forcefully fire
their drift loop regardless of SSnewphys, thus ensuring that the
movement always happens in the tick it was called (If you ask something
to move with an ``instant`` flag you'd expect it to move the same tick).

Second issue stems from the fact that jetpacks try to move you at your
movement speed, except when pushing you off objects they hijack normal
movement code that would've ran, resulting in a single tile of slow,
janky movement (Or, when moving along walls, making the controls feel
"sticky" and worse than what you'd have without a jetpack in the first
place). By forcefully applying enough force to make players move at
expected speeds, we can solve that issue.

Third issue stems from a minor mistake in SSnewphys processing order -
process() on jetpacks ran **after** moveloops have fired, so all
stabilization only applied next tick. I swapped fire orders around which
solves this problem too, although it won't be triggering much as
stabilization would now forcefully fire the related loop by itself.


https://github.com/user-attachments/assets/1068f68b-2cd1-49b0-bff0-1f79ed0aed5a

Also I've refactored wings to be jetpacks since they behave exactly the
same, which is a bit cursed if you think about it.

## Why It's Good For The Game

Jetpack movement is highly inconsistent in speed/smoothness, janky and
gets ruined by even a slightest amount of overtime in subsystems above
it - this should solve all of those issues.

## Changelog
:cl:
qol: Jetpacks are significantly smoother and nicer to use now - and not
affected by lag anymore!
code: Cleaned up spacemove/jetpack code a bit and moved some common code
to helpers.
refactor: Wings are now... jetpacks. They behave exactly the same and
this should reduce the amount of copypaste code in spacemove
significantly.
/:cl:

* Automatic changelog for PR #88317 [ci skip]

* last resort works as monkey or animal (#88322)

## About The Pull Request
changeling last resort works if youre a monkey or animal
any reasonably organic animal that is (golems included) so no
constructs, no spirits (shades, etc), no deathmatch/bitrunning body and
also not a headslug

## Why It's Good For The Game

for a "last resort" ability you cant use it if you got monkified which
is something that can happen fucking you over which is not great
or perhaps due to some foul magicks you became a rat or whatever youre
basically fucked because you cant do anything and all you can do is
bumrush people

this fixes both

## Changelog
:cl:
balance: changeling last resort works as a monkey or animal
/:cl:

* Automatic changelog for PR #88322 [ci skip]

* Automatic changelog compile [ci skip]

* General maintenance for RPD (#88047)

## About The Pull Request
**1. Code Improvement**
- Moved global pipe crafting recipe list into
`code/__DEFINES/globalvars/list` folder because its a global list & it
should belong there. Reduces size of RPD file
- Moved `datum/pipe_info` into `code/__DEFINES/globalvars` folder
because it's used by both RPD & crafting recipe so its a global var.
Reduces size of RPD file
- Replaced a bunch of `usr` with the proper user variable when available
  - Autodoc for procs & vars
 
**2. Refactor**
- Attack chain for RPD has been refactored to `interact_with_atom()` &
`interact_with_atom_secondary()`


## Changelog
:cl:
refactor: improved attack chain code for rapid pipe dispenser
code: organized lists & global vars for rapid pipe dispenser into their
own respective files & improved a bunch of code
/:cl:

* Automatic changelog for PR #88047 [ci skip]

* Automatic changelog compile [ci skip]

* HSSSS, GRRRR, meow: feral edition (#88385)

<!-- 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


https://github.com/user-attachments/assets/8700ba46-b505-4f8b-8977-c20472c72ceb


https://github.com/user-attachments/assets/954b5f3b-7fe4-4ade-9e67-e3ac9bad6550

A collaborative work between sadboysuss/grungussuss and Sothanforax
adds a hiss emote to humans and gives sounds to:
- [X] Lizard
- [X] Ethereal
- [X] Human
- [X] Monkey
- [X] Felinid
~~[ ] Moff get real~~
<!-- 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

![image_2024-12-06_141858923](https://github.com/user-attachments/assets/0d80d34d-1366-4bc4-a84a-12eac0ff8ce6)

<!-- 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 its 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. -->

:cl: grungussuss and Sothanforax
add: hiss emote
sound: hissssssing sounds
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: 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: Sothanforax <[email protected]>

* Automatic changelog for PR #88385 [ci skip]

* Adds a mail sorting unit to sort mail per department; some flatpack stuff (#88288)

Adds a mail sorting unit!

The unit accepts mail, stores it and sorts it per department. It can
also search for individual envelopes, change it's output tile and be
VERY loud.

At the meantime, this PR also adds two flatpack subtypes - flatpacker
subtype and mail sorter subtype. The first one is intended to be used by
mappers to have a flatpacker be accessible roundstart, and the second
one is now sold at cargo wardrobes to make the mail sorter also
available roundstart.

* Automatic changelog for PR #88288 [ci skip]

* [NO GBP] Hotfix for CI flaky due to the spacemove fix (#88408)

## About The Pull Request

We don't check if the loop is actually queued as we attempt to remove,
fire and queue it, which makes our loop potentially run in parallel with
a higher priority loop, which (for some reason specifically on during
engiborg tests and specifically on wawa) was causing a flaky CI failure.

Closes #88400

## Changelog
:cl:
/:cl:

* Fixes some instances of PostTransfer not using new_parent argument (#88398)

## About The Pull Request

Since #87866 PostTransfer now has it's parent set to nil, and instead
has a `datum/new_parent` argument supplied to it.
Why does the ***post*** transfer proc not have it's parent set yet? Not
sure, but some procs (and the documentation) haven't been adjusted yet
and this PR fixes that

also:
fixes #88156 
fixes #88325 

## Why It's Good For The Game

Fix man good...

## Changelog

:cl:
fix: /datum/component/PostTransfer() procs that didn't have their
new_parent arguments have now been fixed
fix: This means that turning into a Domain gondola shouldn't RR people
anymore
/:cl:

* Fix anomaly shifter deleting global themes (#88402)

## About The Pull Request
Makes the dimensional shifter relic not delete global data.
## Why It's Good For The Game
We need those. Please don't delete those.
## Changelog
:cl:
fix: Dimensional shifter relics work more reliably.
/:cl:

* Automatic changelog for PR #88398 [ci skip]

* Automatic changelog for PR #88402 [ci skip]

* Add better logging for ruins (#88403)

## About The Pull Request
~~This adds a new test for the CI/CD so that we can load all space ruins
instead of it being RNG.~~
Adds more robust logging for ruins so we can see when they fail/succeed
and how many are placed on a map.

This also removes a deprecated CI config setting. It prevented ALL ruins
from spawning during CI tests which is bad.

The config setting was made redundant in:
- #87910

## Why It's Good For The Game
More robust CI/CD.

## Changelog
:cl:
code: Add better logging for ruins
/:cl:

* Automatic changelog for PR #88403 [ci skip]

* multitile airlock assemblies from a broken multitile airlock are the same direction (#88409)

## About The Pull Request

multitile airlock assemblies from a broken multitile airlock are the
same direction

## Why It's Good For The Game

fixes #81406

## Changelog
:cl:
fix: multitile airlock assemblies from a broken multitile airlock are
the same direction
/:cl:

* Automatic changelog for PR #88409 [ci skip]

* Pressure Tanks no longer runtime when shuttleRotated, Remedies constant CI fails (#88413)

## About The Pull Request

Fixes #71092 

## Why It's Good For The Game

Flaky tests bad, fixman good...

## Changelog

:cl:
fix: Pubby's whiteship no longer breaks when it tries to dock
/:cl:

* fixes access on that one engineering maintenance door on birdshot (#88387)

## About The Pull Request
fixes #88383

## Why It's Good For The Game

fixes #88383

## Changelog
:cl:
fix: The Men in Grey may no longer access birdshots engineering via a
certain maintenance airlock
/:cl:

* Automatic changelog for PR #88413 [ci skip]

* Automatic changelog for PR #88387 [ci skip]

* [NO GBP] Gives tiziran water turfs their own fish again (#88381)

* Automatic changelog for PR #88381 [ci skip]

* Adds winterhood hair masks (#88390)

## About The Pull Request

![image](https://github.com/user-attachments/assets/a078883d-7428-4ddb-ac5c-96eb7ae1417c)

## Why It's Good For The Game

Its nice to not go bald when wearing a wintercoat since you can still
see some of your supposed-to-be-hairy-head

## Changelog
:cl:
image: Wintercoat hoods now show a bit of your hair!
/:cl:

* Automatic changelog for PR #88390 [ci skip]

* Repaths heavy crowbar so people don't map it in accidentally (#88384)

* Automatic changelog for PR #88384 [ci skip]

* pointing DLC, neurodivergency edition (#88333)

## About The Pull Request
Closes https://github.com/tgstation/tgstation/issues/88327
- if a carbon has their hands blocked or missing, they will instead try
to point with their legs with probability to fail
- if they have the freerunning trait they get a lower probability to
fail
- if they have 1 leg they get higher probability to fail
- if they have no shoes on they will point with their toes
- if they have no legs - they will `gives meaningful glance at %t!`
- if they have no eyes - they will motion with their tongue
- if they have no tongue - they will bump their head on the floor
towards the target, getting brain damage
<details>


https://github.com/user-attachments/assets/9363e184-64dc-4890-9673-5d9fe9cc1b7e



https://github.com/user-attachments/assets/192b2503-887f-43ee-afa9-80b49060e9c2



https://github.com/user-attachments/assets/ed54dc4a-0308-4088-ada4-fc343cbe6844



https://github.com/user-attachments/assets/b88f2bc8-4762-4cd7-b60b-0ac039e52853



https://github.com/user-attachments/assets/a248d0af-09ec-498a-9c46-50ab2611b62b



https://github.com/user-attachments/assets/d65e9674-ffc7-4263-89b4-0d743b0a7f2d

</details>

## Why It's Good For The Game


![spongebob-tongue](https://github.com/user-attachments/assets/265beac2-1547-48da-ad46-9d454e897482)

also for the balance change, I think it's silly that you can't point
while cuffed, I don't think it'll impact powergaming much at all
## Changelog
:cl: grungussuss
add: pointing now has interactions with the amount of limbs/organs you
have
balance: you can now point while restrained
sound: pointing with your head makes a sound
/:cl:

* Automatic changelog for PR #88333 [ci skip]

* Adds unique sprites for Endotherm wintercoats (#88389)

* Automatic changelog for PR #88389 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes a flaky caused by a maintenance spawner creating decals in space on KS13 (#88421)

## About The Pull Request

I'm malding

## Changelog
:cl:
/:cl:

* Fixes smokey remains flaky (#88422)

## About The Pull Request

Closes #88363

Smokey remains sometimes triggered instantly upon initializing, which
happens before the smoke SS is set up - thus runtiming due to attempting
to add newly created smoke to a non-existing carousel. Solved by moving
fluid SS init above atoms, god knows this'll probably happen more down
the line.

## Changelog
:cl:
/:cl:

* Update rust_g to 3.5.1 (#88181)

## About The Pull Request
Kapu told us to do it because it has the function for sound length now.

## Why It's Good For The Game
rust_g updated.

## Changelog
N/A

---------

Co-authored-by: Watermelon914 <[email protected]>

* Eradicative Chronic Illness (#87985)

## About The Pull Request
Chronic Illness quirk now shows that it's not just "eat pills and be
safe" illness
New Icon:

![image](https://github.com/user-attachments/assets/1a4dfd4e-e68d-46ec-9eed-31fff4f1656f)
New Name:
Eradicative Chronic Illness
New Description:
You have an anomalous chronic illness that requires constant medication
to keep under control, or else causes timestream correction.
New Gain and Lose Text:
You feel like you are fading away...
You suddenly feel more substantial.
New Medical Records Text:
"Patient has an anomalous chronic illness that requires constant
medication to keep under control."
## Why It's Good For The Game
CLUELESS:
1) pick a quirk
2) get round removed
3) scream 

we dont want this to happen, right?
## Changelog
:cl:
qol: changes Chronic Illness quirk name, description and icon to match
it's dangerousness
/:cl:

* Automatic changelog for PR #87985 [ci skip]

* Automatic changelog compile [ci skip]

* Map vote picks winner out of choices (#88425)

* Fix fitness examine runtime (#88427)

* Automatic changelog for PR #88425 [ci skip]

* [NO GBP] Fixing a couple nits with hot spring turfs. (#88318)

* Improving the fish unit tests a little (#88397)

* Automatic changelog for PR #88397 [ci skip]

* Fixing remote/ghost alt-click on aquariums + missing plasma tetra (#88334)

* Automatic changelog for PR #88334 [ci skip]

* Fixes items not falling from a lattice's loc after it's deconstructed (#88439)

## About The Pull Request
closes https://github.com/tgstation/tgstation/issues/81060
## Changelog
:cl: grungussuss
fix: fixed items not falling from a lattice after being
deconstructed/destroyed
/:cl:

* Automatic changelog for PR #88439 [ci skip]

* Fixes *me emote running when using *help (#88437)

## About The Pull Request
The code for running the *me emote was in the `can_run_emote` proc,
which the *help emote uses to see if you can use an emote
closes https://github.com/tgstation/tgstation/issues/88323
## Changelog
:cl: grungussuss
fix: fixed *me emote being called when using the *help emote
/:cl:

* Automatic changelog for PR #88437 [ci skip]

* fixes completion gate getting mad about screenshot tests being skipped (#88417)

Co-authored-by: Ghom <[email protected]>

* Removes empty overlay from airlocks when lights not needed (#88410)

## About The Pull Request
Adds a check if there should be light_state overlay present. It was
adding an empty overlay `lights_`.
Found by adding a "no_name" error icon_state for overlays.

## Why It's Good For The Game
Bug fixing good

* Fixes two mech power issues caused by megacell rework (#88414)

…'s production in line with the megacell rework.
## About The Pull Request

The durand's shield and the mech plasma generator never got their values
adjusted with the power rework. this led to 15 shots (a mag from a laser
smg) instantly draining the cell if it hits the durand's shield, ten
times more than normal. Also, the plasma generator's power never got
increased proportionally, meaning every second it recharged a tenth of
what it was meant to.

## Why It's Good For The Game

Fixes yet another thing broken by making the base power unit ten times
higher than previously.

## Changelog


:cl: WebcomicArtist
fix: Durand shield now uses proper amount of power upon taking damage
fix: Mech plasma generator now produces the correct amount of charge,
previously bugged to be 10% of intended.
/:cl:

* Automatic changelog for PR #88414 [ci skip]

* unhecks bar seating attack chain heck (#88440)

## About The Pull Request
closes https://github.com/tgstation/tgstation/issues/88312
## Changelog
:cl: grungussuss
fix: fixed being unable to remove bar seating holograms
/:cl:

* Automatic changelog for PR #88440 [ci skip]

* traversing over slippery surfaces while buckled to a mob will no longer slip you off (#88430)

## About The Pull Request
- buckled to a raptor: raptor slips, you stay
- buckled to a cyborg: don't care
- buckled to a wheelchair: you slip
## Why It's Good For The Game
it doesn't make sense to slip off a mount when traversing over slippery
surfaces
## Changelog
:cl: grungussuss
fix: you will no longer slip off your mount when traversing slippery
surfaces
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #88430 [ci skip]

* Fixes master (slip runtimes) (#88467)

## About The Pull Request
pr that touched slipping was merged without tests passing
## Changelog
:cl: grungussuss
fix: fixed an error with slipping
/:cl:

* Automatic changelog for PR #88467 [ci skip]

* Adds suicides to fishies (#88258)

## About The Pull Request

Adds suicides to fish. Like, a lot of suicides. Almost all of them very
unique. I'm too lazy to make a video, but they've been thoroughly
tested.

Improves the go_away status effect to have no timer - but delete you on
z-level change.

Adds a trait that prevents combat mode changes.
## Why It's Good For The Game

I want to kill myself with fish - and terrify bystanders in the process.
## Changelog
:cl:
add: Adds suicides to fish. Like, a lot of suicides. Almost all of them
very unique. I'm too lazy to make a video, but they've been thoroughly
tested.
/:cl:

---------

Co-authored-by: Ben10Omintrix <[email protected]>
Co-authored-by: MrMelbert <[email protected]>

* Automatic changelog for PR #88258 [ci skip]

* Removes rogue sand decals from Island Brawl domain walls (#88191)

## About The Pull Request

Island Brawl bitrunning domain had sand decals hidden underneath some of
its walls (presumably due to copypaste), resulting in a very ugly look
(because those are only meant to be used on floor tiles)

* Automatic changelog for PR #88191 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes wendigo lag at cost of its attacks' visuals (#88441)

## About The Pull Request

This is very ugly but we're trading in-loop angle setting/refreshing and
animates in favor of out-loop ones, doing so should cut down on the
amount of animates we're calling which are all sent to clients which
ramps up their ping into thousands and lags them clientside to all hell.
I've also significantly (x3) increased the delay between shots, since
they move so slow the distance between them won't get large enough for
you to squeeze through in a tiny arena, which should also help with lag
massively.

Ideally we should get rid of projectiles here and make it use some other
way, maybe dust clouds?


https://github.com/user-attachments/assets/0480cd3a-4e82-4d80-833c-a2ca4eefed53

Downside of this approach: the attack now looks significantly jankier
The upside of this approach: You can somewhat clearly see which tile the
projectile is on

## Why It's Good For The Game

It lags everyone who sees it

Closes #88395

## Changelog
:cl:
fix: Made wendigo's bullet hell lag less, at cost of its visuals.
/:cl:

* Automatic changelog for PR #88441 [ci skip]

* 1

* hot springs yet again my opps

* moves all admin requests in admin stuff section (#88396)

## About The Pull Request
~~i have absolutely no idea what all this is called correctly~~

adds `type = MESSAGE_TYPE_PRAYER` to all messages that are a request to
admins. Because there is no reason why half of these requests should be
of type "info"

<details>
<summary>Screenshots (before)</summary>


![image](https://github.com/user-attachments/assets/96b6b8ea-5027-4e89-8969-fa485741f84b)

![image](https://github.com/user-attachments/assets/4222701d-9312-45f4-9eb2-13fdd4aff74c)

</details>
<details>
<summary>Screenshots (now)</summary>


![image](https://github.com/user-attachments/assets/d4732687-3b1e-4fdc-bde8-07c053adac57)

</details>

## Why It's Good For The Game

All requests can now be moved to a separate tab, without unnecessary
information
## Changelog
:cl:
admin: moves all admin requests in admin stuff section. Now they have
type Prayers
/:cl:

* Automatic changelog for PR #88396 [ci skip]

* [NO GBP] Fixes toolboxes automatically using the first item, allows placing them on/into tables/racks/closets/crates (#88459)

## About The Pull Request

Closes #88446	
I swear to god I should stop listening to webedit suggestions

## Changelog
:cl:
fix: Toolboxes can now be placed onto tables/into crates
fix: Fixed toolboxes automatically using the first item in them
/:cl:

* Automatic changelog for PR #88459 [ci skip]

* Automatic changelog compile [ci skip]

* [no gbp] hotfix for *me emotes (#88477)

* Automatic changelog for PR #88477 [ci skip]

* Fix language scramble cache nuking(?)(maybe 10 years old bug?) (#88485)

## About The Pull Request

I was looking at a bay code base's language and saw this
```dm
	// Add it to cache, cutting old entries if the list is too long
	scramble_cache[input] = scrambled_text
	if(scramble_cache.len > SCRAMBLE_CACHE_LEN)
		scramble_cache.Cut(1, scramble_cache.len-SCRAMBLE_CACHE_LEN-1)
```
Then I noticed "Wait isn't this broken? 51 - 50 - 1 = 0, so it's doing
`Cut(1, 0)` which cuts the whole list, what's the point of all this
arithmetic?"

Then I saw we have the same code so this is probably very old

At this point I'm not sure if it's a bug or not, but I've reasoned it as
one:

- If it was NOT a bug, and we just wanted to clear the entire list, why
do we over-complicate it (why is it not just `.Cut()`)?
`scramble_cache.len` *will never be larger than* `SCRAMBLE_CACHE_LEN +
1` because this proc only ever adds entries one at a time, meaning the
result will always be `0`

- And if it's not a bug, why do we bother putting most recent items at
the bottom of the list? We do all this effort for no reason, it's just
wiped at the end of the day.
```dm
/datum/language/proc/check_cache(input)
	var/lookup = scramble_cache[input]
	if(lookup)
		scramble_cache -= input
		scramble_cache[input] = lookup
	. = lookup
```

Thus I am running with the assumption that this code was meant to be
`scramble_cache.len - SCRAMBLE_CACHE_LEN + 1` - that's a `+1` at the end
not a `-1`

But that would still just be an overly complicated way to say `51 - 50 +
1`, or, just `2`

So I'm just changing it to cut the first element out

## Changelog

:cl: Melbert
fix: Words in other languages will be randomized far less often
(depending on how commonly they are used). This bug was 10 years old.
/:cl:

* Fixes necropolis gates being pushable by fauna (#88483)

## About The Pull Request

Turns out some fauna can walk their way over to the necropolis gates an
shove them aside. This should prevent that, or any other force of
nature, from moving these ancient gates anywhere.

## Why It's Good For The Game

It's silly that this is even possible

## Changelog

:cl:
fix: Fauna can no longer push necropolis gates
/:cl:

* Automatic changelog for PR #88485 [ci skip]

* Automatic changelog for PR #88483 [ci skip]

* Updates scarf sprites (#88473)

## About The Pull Request

![image](https://github.com/user-attachments/assets/ef4d781e-7cbd-4415-a859-9a3bc2d4b403)

Normal scarf item sprites are now less horizontally stripy and have a
new palette (and some texture)
Large scarves also received an update in palette, texture and their worn
sprites are now more consistent with their item sprite (with thicker
stripes, instead of being just longer hanging normal scarves when worn)

## Why Is This Good For The Game

Current scarves have perfectly horizontal 1 pixel wide stripes which
look ugly. Plus large scarves are almost 1 to 1 normal scarves when worn
which's not very cool.

## Changelog
:cl:
image: Scarves have received a minor update to their sprites
/:cl:

* Automatic changelog for PR #88473 [ci skip]

* Hud elements and certain in-world objects will now change your cursor to indicate they are clickable (windows style)  (#88470)

## About The Pull Request

Basically just goes through and adds `mouse_over_pointer =
MOUSE_HAND_POINTER` to a bunch of screen elements (player hud and lobby
menu)

Also adds it to very small wall mounted objects like buttons, fire
alarms, and light switches


https://github.com/user-attachments/assets/c501cd3d-8efd-4fd0-a486-a53f2102a2cb


https://github.com/user-attachments/assets/89f7cdcb-b40c-4ef3-b578-fee66ddf1ce2

## Why It's Good For The Game

- Makes interacting with screen elements a bit more tactile
- Makes it a bit easier to click on tiny buttons and such (being able to
know when you're actually hovering the thing)
- Maybe can be expanded to more world objects to indicate they are
clickable vs non-interactable?

## Changelog

:cl: Melbert
qol: Hovering over clickable screen elements will now update your mouse
cursor to indicate they're clickable
qol: Hovering over small wall mounts (light switches, buttons, fire
alarms) will now update to mouse cursor indicating you're hovering them
/:cl:

* Automatic chang…
  • Loading branch information
Show file tree
Hide file tree
Showing 469 changed files with 7,425 additions and 4,588 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/ci_suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -288,10 +288,11 @@ jobs:
completion_gate: # Serves as a non-moving target for branch rulesets
if: always() && !cancelled()
name: Completion Gate
needs: [ test_windows, compare_screenshots, compile_all_maps, run_linters ]
needs: [ test_windows, compare_screenshots, compile_all_maps, run_all_tests, run_alternate_tests, run_linters ]
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
allowed-skips: compare_screenshots
2 changes: 1 addition & 1 deletion .github/workflows/generate_documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
touch dmdoc/.nojekyll
echo codedocs.tgstation13.org > dmdoc/CNAME
- name: Deploy
uses: JamesIves/[email protected].1
uses: JamesIves/[email protected].2
with:
branch: gh-pages
clean: true
Expand Down
102 changes: 61 additions & 41 deletions _maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm
Original file line number Diff line number Diff line change
@@ -1,99 +1,119 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/obj/machinery/holopad,
/turf/open/floor/iron/dark/smooth_edge{
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
},
/turf/open/floor/iron/dark/smooth_large,
/area/ruin/powered/icemoon_phone_booth)
"c" = (
/obj/machinery/door/window/left/directional/north,
/obj/machinery/door/window/left/directional/south,
/turf/open/floor/iron/dark/smooth_edge{
dir = 4
},
/area/ruin/powered/icemoon_phone_booth)
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"e" = (
/obj/structure/lattice,
/turf/open/misc/asteroid/snow/icemoon,
/area/ruin/powered/icemoon_phone_booth)
/area/icemoon/underground/explored)
"k" = (
/obj/machinery/vending/coffee,
/obj/machinery/vending/cigarette{
all_products_free = 0
},
/obj/structure/window/reinforced/spawner/directional/east,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"q" = (
/obj/machinery/airalarm/directional/south,
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
dir = 8
},
/obj/machinery/atmospherics/components/tank/air/layer4{
/obj/effect/turf_decal/weather/snow/corner{
dir = 8
},
/obj/structure/window/reinforced/spawner/directional/west,
/obj/effect/turf_decal/weather/snow,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"v" = (
"q" = (
/obj/structure/lattice,
/obj/structure/billboard/Phone_booth,
/turf/open/misc/asteroid/snow/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"z" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
/area/icemoon/underground/explored)
"v" = (
/obj/structure/window/reinforced/spawner/directional/west,
/obj/machinery/light/small/directional/north,
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
},
/obj/item/gps/spaceruin{
gpstag = "Public Holophone"
},
/obj/effect/turf_decal/weather/snow/corner{
dir = 5
},
/obj/effect/turf_decal/weather/snow,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"z" = (
/obj/machinery/door/window/left/directional/north,
/obj/machinery/door/window/left/directional/south,
/obj/effect/turf_decal/weather/snow/corner,
/turf/open/floor/iron/dark/smooth_edge{
dir = 4
dir = 1
},
/area/ruin/powered/icemoon_phone_booth)
"J" = (
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
},
/obj/item/gps/spaceruin{
gpstag = "Public Holophone"
},
/obj/machinery/light/small{
dir = 1
/obj/machinery/atmospherics/components/tank/air/layer4{
dir = 8
},
/obj/structure/window/reinforced/spawner/directional/west,
/obj/effect/turf_decal/weather/snow/corner{
dir = 4
},
/obj/effect/turf_decal/weather/snow,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"M" = (
/turf/closed/wall/ice,
/area/ruin/powered/icemoon_phone_booth)
"R" = (
/obj/effect/spawner/structure/window/hollow/reinforced,
/turf/open/floor/plating/icemoon,
/obj/machinery/holopad,
/obj/machinery/airalarm/directional/north,
/obj/effect/mapping_helpers/airalarm/all_access,
/turf/open/floor/iron/dark/smooth_large,
/area/ruin/powered/icemoon_phone_booth)
"V" = (
/obj/structure/lattice,
/turf/open/misc/asteroid/snow/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"W" = (
/obj/machinery/vending/cigarette{
all_products_free = 0
},
/obj/machinery/vending/coffee,
/obj/structure/window/reinforced/spawner/directional/east,
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 8
},
/obj/effect/turf_decal/weather/snow/corner{
dir = 8
},
/obj/effect/turf_decal/weather/snow,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/icemoon_phone_booth)
"W" = (
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)

(1,1,1) = {"
v
q
M
V
k
W
M
c
"}
(2,1,1) = {"
e
W
M
R
a
z
c
"}
(3,1,1) = {"
V
e
M
v
J
q
M
c
"}
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@
},
/obj/structure/rack,
/obj/item/wrench,
/obj/item/crowbar/large/heavy,
/obj/item/crowbar/large/twenty_force,
/obj/machinery/light/small/built/directional/south,
/turf/open/floor/plating/icemoon,
/area/ruin/powered/shuttle)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3503,7 +3503,7 @@
/area/ruin/syndibiodome)
"Pw" = (
/obj/structure/table/reinforced/plastitaniumglass,
/obj/item/surgery_tray/full,
/obj/effect/spawner/surgery_tray/full,
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 5
},
Expand Down
1 change: 0 additions & 1 deletion _maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
/area/ruin/space/djstation)
"t" = (
/obj/structure/closet/secure_closet/freezer/fridge/all_access,
/obj/machinery/light/directional/south,
/obj/effect/turf_decal/tile/bar/opposingcorners,
/obj/machinery/light/small/directional/south,
/turf/open/floor/iron,
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/SpaceRuins/anomaly_research.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@
"kp" = (
/obj/effect/spawner/random/environmentally_safe_anomaly/immobile,
/turf/template_noop,
/area/space)
/area/space/nearstation)
"kt" = (
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 1
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/SpaceRuins/bus.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@
/turf/open/misc/asteroid/airless,
/area/ruin/space)
"ET" = (
/mob/living/basic/lizard,
/mob/living/basic/lizard/space,
/turf/open/misc/asteroid/airless,
/area/ruin/space)
"Fo" = (
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/SpaceRuins/dangerous_research.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/dangerous_research/medical)
"aZ" = (
/obj/item/surgery_tray/full,
/obj/effect/spawner/surgery_tray/full,
/obj/structure/table,
/turf/open/floor/plating/rust,
/area/ruin/space/has_grav/dangerous_research/medical)
Expand Down
2 changes: 0 additions & 2 deletions _maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@
/area/ruin/space/has_grav/garbagetruck/toystore)
"lm" = (
/obj/structure/spider/stickyweb,
/obj/structure/spider/stickyweb/very_sticky,
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/toystore)
"mf" = (
Expand Down Expand Up @@ -182,7 +181,6 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/toystore)
"qX" = (
/obj/structure/spider/stickyweb/very_sticky,
/obj/item/food/badrecipe/moldy,
/obj/structure/spider/stickyweb,
/obj/item/food/spidereggs{
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/SpaceRuins/interdyne.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -1015,7 +1015,7 @@
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/has_grav/interdyne)
"PD" = (
/obj/item/surgery_tray/full,
/obj/effect/spawner/surgery_tray/full,
/obj/structure/table/reinforced/rglass,
/turf/open/floor/mineral/plastitanium,
/area/ruin/space/has_grav/interdyne)
Expand Down
14 changes: 7 additions & 7 deletions _maps/RandomRuins/SpaceRuins/meatderelict.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@
/obj/effect/turf_decal/siding/blue{
dir = 6
},
/obj/item/surgery_tray/full/deployed,
/obj/effect/spawner/surgery_tray/full/deployed,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"kh" = (
Expand Down Expand Up @@ -728,8 +728,8 @@
/obj/effect/turf_decal/siding/purple{
dir = 1
},
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/c357/spent,
/obj/item/ammo_casing/c357/spent,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"oQ" = (
Expand Down Expand Up @@ -887,7 +887,7 @@
/obj/effect/turf_decal/siding/purple{
dir = 1
},
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/c357/spent,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"rl" = (
Expand Down Expand Up @@ -1561,9 +1561,9 @@
/turf/open/indestructible/plating,
/area/ruin/space/has_grav/powered/biooutpost)
"DC" = (
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/c357/spent,
/obj/item/ammo_casing/c357/spent,
/obj/item/ammo_casing/c357/spent,
/turf/open/indestructible/white,
/area/ruin/space/has_grav/powered/biooutpost)
"DJ" = (
Expand Down
12 changes: 6 additions & 6 deletions _maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/area/ruin)
"dI" = (
/obj/item/grown/bananapeel,
/obj/item/ammo_casing/a357/spent{
/obj/item/ammo_casing/c357/spent{
dir = 9;
pixel_x = -13;
pixel_y = 10
Expand Down Expand Up @@ -78,19 +78,19 @@
},
/obj/effect/decal/cleanable/blood/gibs,
/obj/machinery/light/small/broken/directional/south,
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/c357/spent,
/turf/open/floor/iron/checker/airless,
/area/ruin)
"uc" = (
/obj/effect/decal/cleanable/blood/footprints{
dir = 4
},
/obj/item/ammo_casing/a357/spent{
/obj/item/ammo_casing/c357/spent{
pixel_x = -5;
dir = 5;
pixel_y = 6
},
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/c357/spent,
/obj/item/gps/spaceruin,
/turf/open/floor/plating/airless,
/area/ruin)
Expand Down Expand Up @@ -204,7 +204,7 @@
/obj/effect/mob_spawn/corpse/human/clown,
/obj/effect/decal/cleanable/blood/footprints,
/obj/effect/decal/cleanable/dirt,
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/c357/spent,
/turf/open/floor/plating/airless,
/area/ruin)
"Ij" = (
Expand Down Expand Up @@ -253,7 +253,7 @@
"Pq" = (
/obj/machinery/light/broken/directional/north,
/obj/structure/reagent_dispensers/watertank,
/obj/item/ammo_casing/a357/spent,
/obj/item/ammo_casing/c357/spent,
/turf/open/floor/iron/checker/airless,
/area/ruin)
"Qb" = (
Expand Down
8 changes: 4 additions & 4 deletions _maps/RandomRuins/SpaceRuins/old_infiltrator.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,8 @@
"nF" = (
/obj/item/radio/intercom/directional/south,
/obj/effect/decal/cleanable/blood/old,
/obj/item/ammo_casing/a357/match,
/obj/item/ammo_casing/a357/match{
/obj/item/ammo_casing/c357/match,
/obj/item/ammo_casing/c357/match{
pixel_y = -4;
pixel_x = -7
},
Expand Down Expand Up @@ -306,7 +306,7 @@
/area/ruin/space/unpowered)
"uS" = (
/obj/machinery/newscaster/directional/south,
/obj/item/ammo_casing/a357/match,
/obj/item/ammo_casing/c357/match,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/unpowered)
"vi" = (
Expand Down Expand Up @@ -425,7 +425,7 @@
/turf/open/floor/mineral/plastitanium/red/airless,
/area/ruin/space/unpowered)
"Cv" = (
/obj/item/ammo_casing/a357/match,
/obj/item/ammo_casing/c357/match,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/unpowered)
"CC" = (
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/SpaceRuins/prison_shuttle.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@
/turf/open/floor/iron/dark/airless,
/area/ruin/space/prison_shuttle)
"O" = (
/mob/living/basic/cockroach,
/obj/effect/turf_decal/tile/brown/fourcorners,
/obj/effect/decal/cleanable/xenoblood/xsplatter,
/turf/open/floor/iron/dark/airless,
/area/ruin/space/prison_shuttle)
"P" = (
Expand Down
Loading

0 comments on commit de463bd

Please sign in to comment.