Commit Graph

4642 Commits

Author SHA1 Message Date
Cyprex
59b587131a Merge from upstream 2023-03-03 19:22:13 +01:00
SkyratBot
b047ad0ad8 [MIRROR] Fixes paper formatting on vote box tallies, for democracy. [MDB IGNORE] (#19559)
* Fixes paper formatting on vote box tallies, for democracy. (#73639)

In the spirit of AnturK's original PR the voting season, I present to
you: Fixing a piece of paper.

Due to using DM's multiline template formatting, the `<div>` for the
header started with double tab.

Markdown interpreted that as a code block, quote:
> [Code blocks](https://www.markdownguide.org/basic-syntax/#code-blocks)
are normally indented four spaces or one tab. When they’re in a list,
indent them eight spaces or two tabs.

So I just changed a line of code, then messed around with some other
formatting.

* Fixes paper formatting on vote box tallies, for democracy.

---------

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2023-02-26 19:04:45 -05:00
SkyratBot
1c524fa584 [MIRROR] filled trashcarts spawn nearby grime when initialized instead of when opened for the first time [MDB IGNORE] (#19550)
* filled trashcarts spawn nearby grime when initialized instead of when opened for the first time (#73608)

## About The Pull Request
Filled trashcarts spawn some trash in them once they are opened for the
first time. But they also spawn grime, and the problem with that is that
grime spawns in a range around the trashcart. So opening the trashcart
for the first time would cause the grime to suddenly pop in around the
cart.

This PR changes it so that the grime is spawned when the filled
trashcart is initialized.
## Why It's Good For The Game
Having trash spawn around the trashcart the moment that you open it is
probably not intended. The grime is probably meant to be there before
the trashcart is opened for the first time.
## Changelog
🆑
fix: filled trashcarts spawn nearby grime when initialized instead of
when opened for the first time
/🆑

---------

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

* filled trashcarts spawn nearby grime when initialized instead of when opened for the first time

---------

Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-02-26 15:22:15 -05:00
SkyratBot
a2cb8c5c0c [MIRROR] Completely removes do_mob and do_after_mob [MDB IGNORE] (#19126)
* Completely removes do_mob and do_after_mob

* update modular

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2023-02-19 19:19:50 +00:00
SkyratBot
36c52d3913 [MIRROR] Guillotine can be unanchored again [MDB IGNORE] (#19371)
* Guillotine can be unanchored again (#73423)

## About The Pull Request

Guillotines could not be unanchored, because the unfasten check checked
if any action is being applied to the guillotine, including being
wrenched at the moment. This PR fixes that.

This PR also autodocs everything, adds a missing UNDEF, and renames
GUILLOTINE_BLADE_IDLE to GUILLOTINE_ACTION_IDLE to make it clearer that
this is intended for the current_action var, and not the blade_status
var.

## Why It's Good For The Game

Fixes a bug that prevents something from being moved around.

## Changelog

🆑
fix: Guillotines can be unanchored again
/🆑

* Guillotine can be unanchored again

---------

Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-02-18 21:37:09 -08:00
SkyratBot
6ebdfdc73f [MIRROR] Makes Shake() proc work [MDB IGNORE] (#19424)
* Makes Shake() proc work (#73480)

## About The Pull Request

Fixes #72321
Fixes #70388

The shake proc didn't work and hasn't for ages.
I remember it having worked at some point, but it was quite a long time
ago.
I cannot guarantee that the end result here is the same as it was, the
reason here being that I have no idea how this proc ever worked in the
first place. My limited understanding of the `animate` proc implies that
the previous implementation as written would never have acted as you
would expect it to, but clearly at some time in the past it did work. A
mystery.

As a result of the previous, possibly because the proc never _did_ work
as expected and just did something which looked vaguely correct most of
the time, both the default values and the values people were passing
into this proc were completely ridiculous.
Why would anyone ever want to pixel shift an object with a range of _15_
pixels in all directions? That's half a full tile! And why would you
want it to do this for 25 seconds?
So I also changed the values being passed in, because you really want
pretty small numbers passed into here most of the time.

Here's a video of everything that vibrates:
https://www.youtube.com/watch?v=Q0hoqmaXkKA

The exception is the v8 engine. I left this alone because it seems to
try and start shaking while in your hands, which doesn't work, and I
don't know how to fix that. This has potentially _also_ never worked.

## Why It's Good For The Game

Now you can see intended visual indicators for:
- Lobstrosities charging.
- Beepsky being EMPed.
- The Savannah Ivanov preparing to jump.
- The DNA infuser putting someone through the spin cycle.
- The mystery box admin item I had no previous idea even existed (fun
animations on this one).
- Anything else which wants to use this proc to create vibrating objects
in the future.

## Changelog

🆑
fix: Lobstrosities and Tarantulas will once more vibrate to let you know
they're about to charge at you.
fix: The Savannah Ivanov will once more vibrate to let you know it's
about to jump into the air.
fix: The DNA infuser will now vibrate to let people know that it's busy
blending someone with a dead animal.
/🆑

* Makes Shake() proc work

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-02-18 16:58:30 -08:00
SkyratBot
3fcac8d317 [MIRROR] [NO GBP] Maintainer requested changes to the locker/closet grammar PR [MDB IGNORE] (#19350)
* [NO GBP] Maintainer requested changes to the locker/closet grammar PR

* merge conflict markers

---------

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
2023-02-18 15:03:55 -05:00
SkyratBot
cef8390012 [MIRROR] Fixes an inverted if check on false wall attackby code. [MDB IGNORE] (#19395)
* Fixes an inverted if check on false wall attackby code. (#73459)

## About The Pull Request

#64428 made it so using a non-tool on a false wall that was closed would
return the "You must wait until the door has stopped moving" message,
this was caused by a flipped if statement so I've re-flipped it by
changing it to an early return instead.
## Why It's Good For The Game

Bug fix!
## Changelog
🆑
fix: False walls will no longer tell you to wait until they've stopped
moving when you use an item on them.
/🆑

Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>

* Fixes an inverted if check on false wall attackby code.

---------

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
2023-02-17 11:08:43 -08:00
SkyratBot
d17b330c5b [MIRROR] De-hardcodes spawnDebris in windows, fixes a bunch of issues with windows. [MDB IGNORE] (#19357)
* De-hardcodes spawnDebris in windows, fixes a bunch of issues with windows. (#73274)

## About The Pull Request

spawnDebris was being overridden by almost every type of window, I've
set up some new vars for it to pull shard and its debris decal from so
spawnDebris only needed to be set up once (+ once more for paper windows
which are unique).
Fixes an issue with reinforced plasma glass windows dropping regular
glass when broken.
Fixes an oversight where tram windows were dropping only 1 rod instead
of 2 and dropping glass sheets instead of shards.
Cleans up tram window code a bunch.
## Why It's Good For The Game

Fixes several issues, cleans up code and cuts down on a lot of repeat
code.
## Changelog
🆑
fix: Reinforced plasma windows will now drop plasma glass instead of
regular glass when broken.
fix: Tram windows drop the correct number of rods and a shard when
broken instead of a sheet.
code: Removed a ton of duplicate vars in tram window code and
re-organize the file slightly.
refactor: spawnDebris has been un-hardcoded and all (but one) override
of it has been removed.
/🆑

* De-hardcodes spawnDebris in windows, fixes a bunch of issues with windows.

---------

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2023-02-15 13:04:19 -08:00
7f8ad35137 Fix morgue not checking for DNR quirk 2023-02-15 16:47:52 +10:00
SkyratBot
e895d0f98c [MIRROR] Tram signal defines, subtypes, documentation, compound damage calc [NO GBP] [MDB IGNORE] (#19313)
Tram signal defines, subtypes, documentation, compound damage calc [NO GBP]

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
2023-02-14 11:12:27 -05:00
SkyratBot
ef3deed131 [MIRROR] Fixes the benches' appearance and odd sitting offset [MDB IGNORE] (#19338)
* Fixes the benches' appearance and odd sitting offset (#73397)

## About The Pull Request
Introduced in https://github.com/tgstation/tgstation/pull/73057,
undocumented, was a change in the offset of players sitting in benches,
which just made it look like if everyone was standing on benches, rather
than sitting on them. I can understand the original goal behind that
change (after discussing with LT3 about it), but I still think that, for
one direction where it might _arguably_ look better, _every_ other
direction looks absolutely awful, and goes against the norm when it
comes to sitting on an chair/sofa/anything you can buckle onto that
serves as a place to sit.

Introduced in https://github.com/tgstation/tgstation/pull/73243,
undocumented, was a new color for benches that just made them look blue
rather than the brown they were meant to be. I'm returning them to their
prior color, as I think that it fits a lot better in its surroundings in
light brown than it did with dirty blue.

This fixes both of these issues, bringing the benches back to
consistency with the rest.

## Why It's Good For The Game
It just looks more consistent with everything else.

![image](https://user-images.githubusercontent.com/58045821/218340276-ee42d15b-fc54-4e56-b565-164b8a8b4db2.png)

## Changelog

🆑 GoldenAlpharex
fix: Sitting on benches no longer gives you a weird offset that makes
you look like you're standing on them.
fix: Returns benches to their original light brown color, rather than
the middle between brown and cyan that they were at for a bit.
/🆑

* Fixes the benches' appearance and odd sitting offset

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-02-13 20:07:20 -08:00
SkyratBot
bd3fd77d82 [MIRROR] Fixes kitchen spike add context screentip runtime [MDB IGNORE] (#19330)
* Fixes kitchen spike add context screentip runtime (#73392)

## About The Pull Request

`held_item` does not always exist, hovering over spikes with empty hands
caused a runtime error

## Changelog

🆑 Melbert
fix: Fixed a runtime from hovering over a meat spike / kitchen spike
with an empty hand
/🆑

* Fixes kitchen spike add context screentip runtime

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-02-14 02:17:23 +00:00
SkyratBot
19608fbac6 [MIRROR] Barsign UI/UX Improvements - Emissive effects, balloon alerts, and refactored code [MDB IGNORE] (#19121)
* Barsign UI/UX Improvements - Emissive effects, balloon alerts, and refactored code (#73106)

The barsign code is over a decade old so this is a big refactor with
some notable improvements:

- Emissive effects (neon lights now glow in the dark)
- Balloon alerts instead of `to_chat` messages
- Mapping helpers based on direction and all_access
- Barsigns are considered machinery now and use power

* Barsign UI/UX Improvements - Emissive effects, balloon alerts, and refactored code

* fixes modular maps

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
2023-02-13 12:59:01 -05:00
SkyratBot
5f9f60713b [MIRROR] Starlight Polish (Space is blue!) [MDB IGNORE] (#19059)
* Starlight Polish (Space is blue!) (#72886)

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

Adds support to underlays to realize_overlays
Ensures decals properly handle plane offsets
Fixes space lighting double applying if it's changeturf'd into. this
will be important later
Makes solar vis_contents block emissives as expected
Moves transit tube overlays to update_overlays, adds emissive blockers
to them

#### Adds render steps

An expansion on render_target based emissive blockers. 
They allow us to hijack an object's appearance and draw it somewhere
else, or even modify it, THEN draw it somewhere else.
They chain quite nicely

Fixes shuttles deleting z holder objects

#### Makes space emissive, makes walls and floors block emissives
The core idea here goes like this:
We make space glow, and give its overlays some color

This way, the tile and space parallax remain fullbright, along with
anything that doesn't block emissives, but anything that does block
emissives will instead get shaded the color of starlight

This requires a bit of extra work, see later

This is done automatically with render relays, which now support
specifiying layer and color (Need to make an editor for these one of
these days)

The emissive blocking floor stuff requires making a second render plate
to prevent double scaling

Also adds some new layering defines for lighting, and ensures all turf
lights have a layer. We'll get to this soon

#### Makes things in space blue

We color them the same as starlight, by taking advantage of space being
emissive
This means that things in space that block emissive will block it
correctly and be colored blue by the light overlay, but space itself
will remain fullbright

This does require redefining what always_lit means, but nothing but
cordons use that so it's fineee


#### Makes glass above space glow, and some other stuff

Glass tiles that sit above space will now shine light with matching
color to the glasses color. This includes mat tiles.

Glass tiles (not mat because they have no alpha) also only partially
block emissives.
Adds a new proc that uses render steps to acomplish this, essentially
we're cutting out bits below X alpha and drawing what remains as an
emissive.

#### Modifies partial space showing to support glow

Essentially, alongside displaying space as an underlay, we also display
a light overlay colored like starlight.
That starlight overlay gets masked to only be visible in bits that do
not contain any alpha.

We also mask the turf lighting to not go into bits that have no alpha,
to ensure we get the effect we want.
This is done with that lighting layer thing I mentioned earlier.

#### Makes appearance realization's list output ordered

I want it output in order of overlay, sub overlay suboverlay, next
overlay
Need to use insert for that

## Why It's Good For The Game

Pretty!
Also having space be emissive is a very very good way to test for fucked
emissive blockers (If it's broken why are we even drawing the overlay)
I know for a fact mob blockers on lizards and socks are kinda yorked, I
think there's more

<details>
<summary>
Old
</summary>


![image](https://user-images.githubusercontent.com/58055496/213916157-d4b38aa7-3ab6-42a4-989f-7bfba2dc2cba.png)

![image](https://user-images.githubusercontent.com/58055496/213916077-637fa288-bbee-477d-aded-730d9683477e.png)

![image](https://user-images.githubusercontent.com/58055496/213916088-0657a8a2-5627-48e2-8c4b-870c90ef2072.png)

</details>


<details>
<summary>
New
</summary>


![image](https://user-images.githubusercontent.com/58055496/213916107-2af74e64-1817-4a44-b528-180a9160cb9e.png)

![image](https://user-images.githubusercontent.com/58055496/213916115-5fa36fcc-b988-4ccf-850e-21c26ed463d0.png)

![image](https://user-images.githubusercontent.com/58055496/213916120-6833187d-b12e-42a7-ac4b-63c56deb71e5.png)

</details>

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

🆑
add: Space now makes things in it starlight faintly blue
fix: Glass floors that display space now properly let space shine
through them, rather then hiding it in the dark
add: Glass floors above space now glow faintly depending on their glass
type
/🆑

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

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>

* update modular

* Update _decal.dm

* Update _decal.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-02-12 00:42:28 -08:00
SkyratBot
1c93bd94e1 [MIRROR] Sign/plaque contextual screentips and file reorganizing [MDB IGNORE] (#19227)
* Sign/plaque contextual screentips and file reorganizing (#73246)

## About The Pull Request

This PR adds contextual screen tips to signs and plaques based on the
held tool. Wrenches unfasten, and welders repair. Behaves the same with
plaques, but plaques also get a screentip for using a fountain pen on
them if they can be engraved. Also adds a tip to editable-item signs
with a pen out.
Tested to avoid issues with posters from cropping up, and it appears to
still behave correctly with paper posters, which are apparently a type
of sign. Go figure.

![image](https://user-images.githubusercontent.com/41715314/216807994-c2400fa0-77fa-48e9-8c2e-5c5ea660a1d8.png)

I've also reorganized the sign and plaque files to follow our more
standard object hierarchy of base type -> inherited procs -> subtype
specific procs, where these were interspersed throughout the file. I did
however leave the armor datums below the object, as they appear to
follow new convention.

## Why It's Good For The Game

Screentips avoid ambiguity and improve readability of construction. Easy
improvement.

Plus, improves consistency of the signs file layout-wise.

## Changelog

🆑
qol: Adds screentips to both signs and plaque construction/modification.
/🆑

* Sign/plaque contextual screentips and file reorganizing

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2023-02-08 02:16:26 +00:00
SkyratBot
93f76593e2 [MIRROR] Adds examine, balloon alert & screen tips for Meat Spike Frame [MDB IGNORE] (#19180)
* Adds examine, balloon alert & screen tips for Meat Spike Frame (#73126)

## About The Pull Request
- Examining a meat spike frame will tell how you can either deconstruct
it with an welding tool or add spikes to it with iron rods
- Examining a meat spike will tell you how to remove its spikes and how
to basically use it
- A balloon alert will pop up if you don't have enough iron rods to add
spikes to a meat spike frame
- Screen tips when holding the correct tool are displayed

## Why It's Good For The Game
New players don't have to wiki this and honestly i got confused the
first time i used it so there is that. More information basically

## Changelog
🆑
qol: examining a meat spike frame & meat spike will tell you about
itself
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>

* Adds examine, balloon alert & screen tips for Meat Spike Frame

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-02-08 02:14:36 +00:00
SkyratBot
7de0538c94 [MIRROR] Fixes freezers locking automatically when closed. [MDB IGNORE] (#19194)
* Fixes freezers locking automatically when closed. (#73253)

## About The Pull Request

Took a little while to figure out what was going on, Freezers override
close() but never return true when they successfully close which results
in the code for locking the freezer being called right after closing it.
## Why It's Good For The Game

Fixes an oversight.
## Changelog
🆑
fix: Freezer no longer lock automatically when closed.
/🆑

* Fixes freezers locking automatically when closed.

---------

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2023-02-08 02:08:27 +00:00
lessthanthree
8198e578ca [MANUAL MIRROR] Fix a merge skew on armor datums (#19212)
* Fix a merge skew on armor datums (#72909)

And also add a check grep to find it in the future

* fix linters

* damn youuuu

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-02-07 15:20:00 -05:00
SkyratBot
cc51989bea [MIRROR] Tram Mk. IV hotfixes [NO GBP] [MDB IGNORE] (#19190)
* Tram Mk. IV hotfixes [NO GBP] (#73243)

## About The Pull Request
Fixes some little issues in
https://github.com/tgstation/tgstation/pull/73057

- tram doors only crush people if either emagged (100%) or
malfunctioning (15%)
- emag works on tram doors
- crossing signals use correct amount of power, increased brightness
- crossing signals and destination signs consume power when idle
- green static crossing signal shuts off when power lost
- left/right emag icons are swapped
- tram bench override shouldn't override all benches | Fixes
https://github.com/tgstation/tgstation/issues/73250
- reduced damage from tram door crushing (60 > 45)

## Changelog
🆑 LT3
fix: Fixed motion sensors on tram doors, they will now crush you much
less often!
balance: Reduced damage from being crushed by tram doors
code: Un-nested emag blacklist
code: emag works properly on tram doors
fix: Backwards tram door sparks animation
fix: Tram displays power consumption
fix: Tram crossing signals power consumption
balance: Increased brightness on tram crossing signals
fix: West Wing NW/SW and East Wing NE/SE crossing signals now shut off
when power is lost
fix: Tram benches don't override standard benches
fix: Reduced saturation and brightness of standard bench
/🆑

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>

* Tram Mk. IV hotfixes [NO GBP]

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
2023-02-06 05:04:52 -05:00
SkyratBot
1fe0d145a3 [MIRROR] Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind [MDB IGNORE] (#18760)
* Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind

* Fixes the conflicts and makes shit compile!

* Fixes other things that didn't show up because I hadn't updated

* Fixes the lints.

* Okay NOW it's ready (please don't add anything else that touches blindness I beg you)

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-02-03 16:08:32 -05:00
lessthanthree
2127d305b3 [MANUAL MIRROR] Tram Mk. IV (#19131)
Tram Mk. IV (#73057)

- After one too many tram malfunctions, Nanotrasen's insurance provider
finally sprung the cash for a new tram. Made with the latest in
lightweight materials, there's more capacity than ever before to shuttle
your crew around the station.

https://user-images.githubusercontent.com/83487515/215639768-3f7fcb84-cfd2-4efe-b578-998197651f13.mp4

- Consolidates all the tram turfs, objs, and structures into respective
.dm files because they were haphazardly spread everywhere.
- Fixes tram doors playing open/close animations when they're already in
the correct state, corrects timing for when they change density.
- Tram now correctly has an operating status and will stop functioning
when power is lost.
- Call buttons no longer dispatch a tram that doesn't have power.
- Fix for emergency exit when tram has no power.
- Running at closing tram doors is a gamble, you may be crushed
- Fixes https://github.com/tgstation/tgstation/issues/73125

Looks nice, more space, tram doors demand a pound of flesh.
🆑 LT3
imageadd: Nanotrasen's insurance provider finally sprung the cash for a
new tram. Made with the latest in lightweight and mostly* non-flammable
materials, travel in comfort and style!
code: All tram components are now organised based on type
code: Tram is now aware if it has power or not
del: Removed movement slowdown running on tram plates
fix: Tram call buttons will not work calling an unpowered tram
fix: Tram doors will no longer cycle open/closed when they're already in
the correct position
fix: Fixed an edge case where running onto the tram you bounce off the
open door as if it was closed
fix: Unpowered tram doors can only be forced into the open position
fix: Westbound travel shows the correct controls animation
add: Tram doors take a chunk of flesh if you run at them last minute
qol: Reduced duration of amber stage on tram crossing signals
/🆑
2023-02-03 15:55:39 +00:00
SkyratBot
97f2208e53 [MIRROR] Malfunctioning AIs whos brain is removed from the core and rehomed in another core will retain their law 0. [MDB IGNORE] (#19053)
Malfunctioning AIs whos brain is removed from the core and rehomed in another core will retain their law 0. (#73047)

## About The Pull Request

Currently if you are able to deconstruct a malfunctioning AI, such as
through methods that gib AIs, rehoming the AI in a new core results in
it losing its law 0, but it retains its antagonist datum and combat
upgrades. This is due to the law 0 only being generated when the AIs
gains the antag datum, I've made it so that when a brain with the
malfunctioning AI datum is inserted into an AI core it will re-produce
its law 0.
## Why It's Good For The Game

"Exploit"(?) that could be used to de-malf AIs patched and should cause
less confusion for malf AI players since they wont end up in a situation
where they have no law 0 but have all other malf AI components.
## Changelog
🆑
fix: Removing a malf AIs brain and inserting it into a new core
no-longer clears its zeroth law
/🆑

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2023-01-31 13:52:36 +00:00
SkyratBot
042911fa3f [MIRROR] Fixes extinguisher cabinet examine saying to alt-click to toggle (it is now right-click) [MDB IGNORE] (#19046)
Fixes extinguisher cabinet examine saying to alt-click to toggle (it is now right-click) (#72955)

Fixed fire cabinet examine text falsely saying to alt-click to
open/close; it now has contextual screentips, and uses balloon alerts
when relevant

Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
2023-01-31 02:11:39 +00:00
Funce
60bfb76832 [MIRROR] Dynamic Human Icon Generation For Simple/Basic Mobs (& Cardboard Cutouts) [MDB IGNORE] (#18884)
* Dynamic Human Icon Generation For Simple/Basic Mobs (& Cardboard Cutouts) (#72517)

revive of #68760
this time a proc, not an element
this time supports cardboard cutouts
this time supports mob corpses

![image](https://user-images.githubusercontent.com/23585223/211064291-81070650-189f-4afa-8116-81b687e3ea35.png)

prevents these icons ever being outdated, they'll always look what they
are supposed to, saves spriting work

🆑 Fikou, a hood by Viro
refactor: humanoid mobs and cardboard cutouts automatically generate
their sprites, they no longer will be outdated
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>

* Modular!

* Fix signal override merge skew (#72882)

Caused by https://github.com/tgstation/tgstation/pull/72517, with
https://github.com/tgstation/tgstation/pull/72561 raising an error that
was being hidden before

This changes equip logic somewhat so that set_wearer was being called
twice.

I don't think this should be being run in visualsOnly at all, as it does
a ton of stuff like registering signals, updating UI, etc etc etc. Don't
have time to investigate further.

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-01-27 13:56:00 -05:00
SkyratBot
406b6870bd [MIRROR] adds atmospheric gloves, small resprite of firefighter gear, repaths stupid glove paths [MDB IGNORE] (#18785)
* adds atmospheric gloves, small resprite of firefighter gear, repaths stupid glove paths (#72736)

repaths a lot of gloves off /color because they were incredibly stupid
firefighter gear has gotten an update (it doesnt cover hands anymore
though, you need something else)
firefighter helmets no longer hide your mask or glasses

![image](https://user-images.githubusercontent.com/23585223/212542599-c004d0e4-c141-40b4-a1bb-c838f9893c4b.png)
fixed engine goggles starting with darkness vision
to the atmos lockers adds atmospheric gloves, a pair of thick (chunky
fingers) gloves that are fireproof and fire protective, slightly shock
resistant and let you fireman carry people faster.
atmospheric firefighter helmets now are a subtype of welding hardhats,
you can enable a welding visor.
welding hardhats change mode with right click instead of altclick

im not a good spriter but i think this resprite makes them fit nicer
with other engi equipment
lets me firefighter rp

🆑
add: Atmospheric Gloves, thick gloves that are fully fireproof and fire
protective and let you fireman carry people faster.
fix: fixes engine goggles starting with darkness vision
qol: firefighter helmets can now enable a welding visor
qol: welding hardhats change mode with right click instead of altclick
balance: firesuits no longer protect your hands
/🆑

* Makes shit compile

* Updates the digi and snouted stuff to match the new sprites (thanks Halcyon!)

* Fixes a whole ton more issues that popped up

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-01-27 12:15:17 -05:00
Bloop
1e443894b5 [MANUAL MIRROR] Fixes toilet bongs, and fixes a serious bug in the crafting system (#18921)
* Fixes toilet bongs, and fixes a serious bug in the crafting system (#72893)

The PR everyone has been waiting for...fixed toilet bong crafting. Now
you can craft them just as before using the new crafting system.

![image](https://user-images.githubusercontent.com/13398309/213944308-74b3e50e-965d-4e69-9025-d011764b3247.png)

In attempting to fix this I encountered one of the gnarliest, nastiest,
meanest and most infuriatingly difficult to debug bugs I have come
across so far. And it's existed for as long as the crafting system has,
but due to unique circumstances it has been allowed to go unnoticed this
whole time.

Technical details below. Full list of changes here:

- crafting recipes can now contain structures as part of their
requirements
- removed deprecated var 'additional_req_tex' and changed text to use
the 'steps' list instead so they actually show in the gui
- toilet bongs are now passable terrain like normal toilets are
- fixed an atrocious bug with crafting that was by pure coincidence not
causing any problems
- this bug would prevent any recipes that did not contain a material
from deleting properly
- this bug would also cause any recipes that are supposed to use but not
consume machinery to consume them regardless

---

Basically, the bug that took me hours upon hours of debugging and
head-scratching to find is this:

from crafting.dm:
```
	main_loop:
		for(var/path_key in requirements)
			amt = R.reqs[path_key] || R.machinery[path_key]
			if(!amt)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
				continue main_loop
```
specifically this line:

`amt = R.reqs[path_key] || R.machinery[path_key] `

The culprit ended up being that if you do machinery[path_key] on an
empty list, it can lead to very unexpected behavior (see: EXITING THE
FUNCTION without actually doing anything).

I spent so much time thinking that item deletion wasn't working because
amt was being set to 0, false, or null perhaps when no, it wasn't that.
The function was just exiting out even before the (!amt) check due to
the atrocities committed by someone before me.

Setting amt = `R.reqs[path_key] || R.machinery[path_key]` on the other
hand always evaluates to a positive integer (either the successfully
retrieved reqs amt, or a 1 from the OR expression). It was only by
coincidence that the code did what it was supposed to, because:

1) Every single recipe has R_reqs, so the first part will never cause
the function-exiting failure because the list is never empty.
2) As for the second part of the expression, there are no recipes that
make use of CRAFTING_MACHINERY_USE, so the fact that machinery[path_key]
was never actually being accessed and thus set to a var (which is what
causes the function to exit) didn't matter.

So these two things together have basically allowed a really bad bug to
go unnoticed this whole time. I only noticed it because when trying to
add a third part to the expression it just did not work at all how you
would expect.

The solution is rather simply to add a check like so:
```

	main_loop:
		for(var/path_key in requirements)
			amt = R.reqs?[path_key] || R.machinery?[path_key]
			if(!amt)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
				continue main_loop
```

Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/18732 .

Fixes a bug with crafting that would inevitably torment someone else as
soon as they tried to add the right kind of recipe, if that hasn't
already happened by now.

<details>
<summary>Toilet bongs are back baby!!</summary>

![image](https://user-images.githubusercontent.com/13398309/213941079-ae7d007a-ca92-4de3-9de6-7a156b4a0618.png)

</details>

🆑
fix: toilet bongs crafting recipes
fix: fixed crafting itself
refactor: cleaned up some old code in the recipes file, added support
for structures in recipes
/🆑

* Update tgui/packages/tgui/interfaces/PersonalCrafting.tsx

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

* Update tgui/packages/tgui/interfaces/PersonalCrafting.tsx

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

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-01-26 16:45:53 -05:00
SkyratBot
0c852c734e [MIRROR] Moves mining points from the ID to the bank account (+credit type shown on order console) [MDB IGNORE] (#18952)
Moves mining points from the ID to the bank account (+credit type shown on order console) (#72726)

## About The Pull Request

Mining points are now stored on the ID's bank accounts instead of the
individual IDs, bringing them on-par with credits. This allows miners to
safely replace their ID and keep their mining points just like they can
for their credits.

I also added the cost type on Produce Consoles, so people using them
will know whether they're using mining points or credits.

Because all IDs have a bank account by default, this won't be a problem
to Golems or the like.

## Why It's Good For The Game

1. It's more clear to the player what type of credit is being used in
the order console
2. Mining points being tied to the ID is no longer needed as all IDs
have a bank account
3. Brings mining points up to the same standard as credits.

## Changelog

🆑
qol: Mining points is now tied to bank accounts instead of individual
IDs, so they transfer over in cases of an ID replacement.
/🆑

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-01-26 14:29:04 -05:00
SkyratBot
eb8b902c35 [MIRROR] Change typepath for tram hit counter [NO GBP] [MDB IGNORE] (#18942)
Change typepath for tram hit counter [NO GBP] (#72896)

Minor change request from JohnFulpWillard. Changes the typepath added
in https://github.com/tgstation/tgstation/pull/72811

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-01-24 14:32:12 -08:00
SkyratBot
92a3f862ef [MIRROR] Layering: Fixes wires and pipes on lattice catwalk, glass floor [NO GBP] [MDB IGNORE] (#18930)
Layering: Fixes wires and pipes on lattice catwalk, glass floor [NO GBP] (#72703)

## About The Pull Request
- Fixes https://github.com/tgstation/tgstation/issues/72894
- Fixes layering for wiring and disposal pipes on lattice-based catwalk.
(Goes on top.) Wiring and pipes on floor-based catwalk. (Goes
underneath.)
- Glass floor shifted to show wires/pipe underneath it.
- Moves tram plaque to the game plane, layered underneath tossed
objects.
## Why It's Good For The Game
Wiring the solars looks weird with the wrong layering.
## Changelog
🆑 LT3
fix: Wires and pipes again rest on top of lattice catwalk
/🆑

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-01-24 14:31:46 -08:00
Bloop
c3f970c0e0 [MANUAL MIRROR] Crafting fireaxe cabinets, mech removal cabinets, and mirrors (#18919)
Crafting fireaxe cabinets, mech removal cabinets, and mirrors (#72856)

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2023-01-23 17:06:34 -05:00
SkyratBot
21b133c56c [MIRROR] Exempts horrible goose from tram hit counter [MDB IGNORE] (#18891)
Exempts horrible goose from tram hit counter (#72811)

Tram hitting the goose increments the hit counter, this fixes it so
mobs without clients don't increase the Tram's hit counter.

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-01-23 12:16:54 -08:00
SkyratBot
4a9f2754a0 [MIRROR] Crafting urinals, noticeboards, and pod controllers [MDB IGNORE] (#18897) 2023-01-23 10:31:22 -08:00
SkyratBot
f3827518fa [MIRROR] You can no longer climb ladders from anchored buckleables [MDB IGNORE] (#18880)
You can no longer climb ladders from anchored buckleables (#72808)

This PR prevents you from climbing ladders while buckled to something
that is anchored. You can still climb while buckled to non-anchored
things like wheelchairs or people.

Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
2023-01-22 18:51:05 -05:00
SkyratBot
8f0f144202 [MIRROR] Mannequins [MDB IGNORE] (#18869)
Mannequins (#72830)

## About The Pull Request
you can now craft mannequins using 25 wood or plastic
they work with the mob stripping system letting you put items on em!

![image](https://user-images.githubusercontent.com/23585223/213600352-ad79cbaa-3ce0-4bf0-aa25-d31d01b5f51a.png)

![image](https://user-images.githubusercontent.com/23585223/213676239-065f266b-5874-43f1-81e6-2730e0a32fa7.png)

## Why It's Good For The Game
fun stuff for CARGO FASHION showcases.

## Changelog
🆑
add: You can now craft mannequins with wood or plastic.
/🆑

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-01-21 22:14:33 -08:00
Paxilmaniac
2f1b18e114 Stops overriding the sprite of every single chair for one rather mid sprite change (#18586)
* bruhhhhh

* dont forget this
2023-01-21 11:43:46 -08:00
SkyratBot
78cc603187 [MIRROR] Fixes strange geyser and geyser regen [MDB IGNORE] (#18808)
Fixes strange geyser and geyser regen (#72221)

Called the random reagent code after it was initialized
Registered the reagent del/remove signal on the geyser, not the reagent
datum of the geyser

Closes #72037 

🆑
fix: Strange geysers have random reagents again
fix: Geysers regen reagents again
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2023-01-19 15:27:26 -05:00
SkyratBot
8074be3cdf [MIRROR] Moves extinguisher cabinet open/close to right click [MDB IGNORE] (#18768)
* Moves extinguisher cabinet open/close to right click (#72735)

## About The Pull Request

Changes the open/close of extinguisher cabinets from AltClick() to
attack_hand_secondary() to make it more intuitive to use

## Why It's Good For The Game

If closing extinguisher cabinets is easier to do people will be more
encouraged to clean up after themselves and put the extinguishers back.

## Changelog
🆑
qol: Extinguisher cabiners are now opened and closed with right click
instead of alt+click.
/🆑

* Moves extinguisher cabinet open/close to right click

Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
2023-01-17 04:39:11 +00:00
SkyratBot
2785d37cf0 [MIRROR] Cutting the Burdened Cheese Part 1: Removes free burden points from removing unnecessary or cosmetic organs. [MDB IGNORE] (#18493)
* Cutting the Burdened Cheese Part 1: Removes free burden points from removing unnecessary or cosmetic organs. (#71938)

Burdened organs now only count for the main organs only. Cyberimplants
don't count, alien organs don't count, etc. This is because someone
could get a bunch of extra organs, and then take the burdened sect and
remove them for free burden points.

Useless organs for species also do not count (stomachs given to species
that do not hunger, for instance)

Removes the error on burden points clamping on negative values. This can
happen when someone previously disabled takes burden sect.

Cheese is being used to bypass the unique gameplay goals burdened sect
provides. Will throw another pr when fikou finishes bat mutants ;)

🆑
fix: Removed some cheese strategies from burdened sect.
/🆑

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

* Modular!

* Aaaaaa

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2023-01-17 14:06:18 +13:00
Paxilmaniac
22b92efd3c Removes the hop's osprey and gives them their egun back, makes the captain's osprey unsuppressed as god intended (#18656)
youll have to find ammo
2023-01-15 13:46:11 +00:00
Zonespace
8fabd54ad6 Mirrors #72354 (#18654)
* [no gbp] removes all duplicate armor datums (#72354)

closes #72348
Title

My bad

Heres the script I used this time if you want to
```cs
var baseDir = Environment.CurrentDirectory;

var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList();
var known = new Dictionary<string, List<KeyValuePair<string, int>>>();

foreach (var file in allFiles)
{
	var fileLines = File.ReadAllLines(file);
	for (var i = 0; i < fileLines.Length; i++)
	{
		var line = fileLines[i];
		if (line.StartsWith("/datum/armor/"))
		{
			var armorName = line.Replace("/datum/armor/", "").Trim();
			if (!known.ContainsKey(armorName))
				known[armorName] = new List<KeyValuePair<string, int>>();
			var knownList = known[armorName];
			knownList.Add(new KeyValuePair<string, int>(file, i));
		}
	}
}

Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums.");

var duplicates = new Dictionary<string, List<int>>();
foreach (var (_, entries) in known)
{
	var actuals = entries.Skip(1).ToList();
	foreach (var actual in actuals)
	{
		if (!duplicates.ContainsKey(actual.Key))
			duplicates[actual.Key] = new List<int>();
		duplicates[actual.Key].Add(actual.Value);
	}
}

Console.WriteLine($"There are {duplicates.Count} files to update.");

foreach (var (file, idxes) in duplicates)
{
	var fileContents = File.ReadAllLines(file).ToList();
	foreach (var idx in idxes.OrderByDescending(i => i))
	{
		string line;
		do
		{
			line = fileContents[idx];
			fileContents.RemoveAt(idx);
		}
		while (!String.IsNullOrWhiteSpace(line));
	}
	File.WriteAllLines(file, fileContents);
}
```

* modular

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-01-13 18:05:12 -05:00
SkyratBot
85b56a310d [MIRROR] Fix JSON description for solo bench and tram [NO GBP] [MDB IGNORE] (#18661) 2023-01-12 13:58:59 -08:00
SkyratBot
9e4a277cfd [MIRROR] Adds the Cursed quirk [MDB IGNORE] (#18492)
* Adds the Cursed quirk

* Update negative_quirks.dm

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-12 15:21:21 -05:00
YakumoChen
ba5403c3ab Makes department guard gear consistent (#18161)
* makes department guard gear consistent

* forgot cuffs

* does it right this time

* Update security.dm

* Update security.dm
2023-01-12 17:16:01 +00:00
SkyratBot
5a18ff0bbb [MIRROR] Completely Culls req_access_txt/req_one_access_txt [MDB IGNORE] (#18458)
* Completely Culls req_access_txt/req_one_access_txt (#72281)

Hey there,

Now that every instance of `req_access` and `req_one_access` is a list
of strings, there is absolutely no reason for
req_access_txt/req_access_one_txt to exist. In fact, any instance where
they were still used in the codebase was very convoluted and was very
broken! Don't worry, I fixed it all out, and life is good.

I also dmdoc the surviving access variables, because those were missing.
I went on the side of caution and made a more verbose documentation with
an example just to have people really grasp this (it took me a while to
actually get it)

I believe that we changed _everything_ over to the
req_access/req_one_access system earlier this year in VV, but the
problem is that _new mappers don't understand the difference between the
two systems_. In fact, the "txt" system is completely redundant since
all it does is transition stuff to the "base" system. So, let's just
completely cull the one that's all but deprecated and ensure this
confusion no longer arises. The whole purpose of "txt" seemed to be to
convert the access, but it's all pointless now that we can just read the
list directly.

I'm also 99% certain that the "access check" on vending machines broke
(and didn't seem to have correct logic in the first place? I
legitimately couldn't find a case where it could fail in testing, so I
changed that up), and that's fixed up now. Let me know if I was clueless
there. I know it's short-circuiting now as opposed to "all must be
true", but it just didn't work.

* Completely Culls req_access_txt/req_one_access_txt

* oh the misery

* makes them use the thing that actually works

* test to see if engineering access is breaking it

* Revert "test to see if engineering access is breaking it"

This reverts commit 3cc2c554ff18f435a51601782e64c76193298db7.

* Fix access checks when req_access is null (#72458)

## About The Pull Request
Fixes #72450 - This seems to be an oversight in some of the access
refactors we've been through recently. When there was an assumption in
`check_access_list()` that `req_access` would always be a list, and that
if it was not something terrible had gone wrong and the door should
default to public access.

With the cleanup of the _txt access vars and the introduction of mapping
access helpers, this assumption is no longer true. `req_access` will be
null when multiple helpers are painted onto the same door, so we need to
handle that properly. Thanks to @MrMelbert for spitting out the attached
fix in mapping general and letting me PR it after testing.

This really needs a suite of unit tests around it. San has helpfully
volunteered to work on that for three hours before getting frustrated.

## Why It's Good For The Game
No more public access to engineering lobby, lathe, etc.


## Changelog
🆑 Vire, MrMelbert
fix: The engineering lobby and lathe are no longer public access
fix: Doors will no longer be treated as public access when they have
multiple accesses set on them
/🆑

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
Co-authored-by: Vire <66576896+Maurukas@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2023-01-12 11:43:52 -05:00
Zonespace
1135ac5e2c Mirror #72280 (#18648)
Add lints for idiomatic balloon alert usage (#72280)

Adds lints for `balloon_alert(span_xxx(...))` (which is always wrong),
and balloon alert where the first letter is a capital (which is usually
wrong). Fixes everything that failed them. As a reminder, abbreviations
like "AI" and "GPS" shouldn't be capitalized in a balloon alert.

In cases where this is intentional for flavor (there was one case), you
can `UNLINT` like so:

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-01-12 08:48:06 -05:00
SkyratBot
bbedb5d2a2 [MIRROR] Headpikes now use proper grammar when referencing their spear type [MDB IGNORE] (#18644)
* Headpikes now use proper grammar when referencing their spear type (#72626)

## About The Pull Request

When creating a name for the headpike structure, the spear name is now
used, rather than just a reference to the spear itself. This led to
funky grammar and ruined immersion etc etc.
## Why It's Good For The Game

Closes #72583.
## Changelog
🆑
spellcheck: Head-spears are now named properly when using alternate
spear types.
/🆑

* Headpikes now use proper grammar when referencing their spear type

Co-authored-by: Rhials <Datguy33456@gmail.com>
2023-01-11 22:30:12 -08:00
lessthanthree
280460bab8 [MANUAL MIRROR] [NO GBP] Side mounted tram controls (#18636)
* Side mounted tram controls (#72193)

Continuation of https://github.com/tgstation/tgstation/pull/72047 this
part was left out until it could be done using directional map helpers.
- Side mounts the tram controls freeing up the middle space for
shenanigans or whatever, and you can hit the controls faster from either
side of the tram.
- Emergency exit feature, doors can be forced open when the tram has
lost power.
- Accessible spots for wheelchairs (Ian's injured, you know!)

![image](https://user-images.githubusercontent.com/83487515/210920404-150f394b-4263-45d4-82ef-12eda0cfedb7.png)

- Looks like a tram direction sign instead of an awkward center placed
computer. Build an ice cream or illicit drugs shop or something in the
middle. Frees up space.
- You don't get stuck on an unpowered tram if you don't have a crowbar.
🆑 LT3
imageadd: Tram controls are now side mounted, freeing up space. Even
better, you now have two of them!
imageadd: Added a new accessible space on the tram for wheelchairs
fix: Removed duplicate tram plate/platforms
code: Tram has its own floor subtype for the walls and windows
add: Emergency exit feature added for people who are silly enough to not
carry a crowbar
/🆑

* floors.dmi
2023-01-11 08:14:12 -08:00
SkyratBot
b44967501c [MIRROR] Optimizes explosions (very slightly) [MDB IGNORE] (#18624)
* Optimizes explosions (very slightly)

* Update explosions.dm

* Update atoms_movable.dm

* Update dungeon.dm

* Update stone.dm

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-10 12:34:26 -08:00
SkyratBot
be18901411 [MIRROR] [ready] unit tests all worn icons [MDB IGNORE] (#18491)
* [ready] unit tests all worn icons (#72370)

Fixes #71692

🆑 ShizCalev
code: Added a unit test for ALL worn icons.
fix: Fixed a bunch of broken worn icons!
/🆑

* [ready] unit tests all worn icons

* Should have fixed most of the failures now

* Here, hopefully that should fix what was left

* Okay maybe it just hadn't been fixed yet

* I can be a bit dumb sometimes

* Okay, now it's going to work, I promise

* I'm so tired of this

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-01-09 21:10:28 -05:00