Commit Graph

998 Commits

Author SHA1 Message Date
DATAxPUNGED
3cbbefa742 Mini Fridges now have a grimy subtype, can go over tables, and start off anchored. (#76517)
## About The Pull Request

/obj/structure/closet/mini_fridge is now a clean nice one, which only
spawns beverages and does not have that cockroach reference in the
description, and starts off anchored. now
/obj/structure/closet/mini_fridge/grimy works like the old mini-fridge,
with syndicake, moldy bread, and now the chance of an ACTUAL cockroach.
I've replaced them on maps according to each one's needs, So, as an
example, Northstar gets a regular one (it var edited it before) while
tram maints get the grimy subtype.
mini-fridges now can properly go over tables, so you don't have to
deconstruct said table to put it on top again.
## Why It's Good For The Game

I've found the need for a nice subtype while doing a ruin, and so has a
few other mappers apparently, as northstar had a var edited variant. The
fact that it couldn't go over tables and started off unanchored was
annoying on tram and icebox, where it is present on the kitchen and you
could easily push it to the ground and suffer.
## Changelog
🆑
qol: It has been issued brand new mini-fridges for our active stations,
Featuring more booze and less moldy pizza!
/🆑
2023-07-08 09:49:44 -07:00
ChungusGamer666
9940fb62e6 Destroys /obj/vehicle/sealed/mecha/working with a W80 nuclear warhead (#76296)
## About The Pull Request

Title.

Also, fixes https://github.com/tgstation/tgstation/issues/75568 at the
request of @TheVekter

## Why It's Good For The Game

This subtype only exists to append ore box behavior and is clearly a
relic of pre-2020 mechcode.
Keeping it around will only make it harder in the future to add new
mechs with ore box support.

## Changelog

🆑
fix: Clarke ore box now has a less confusing dump contents button.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-06-27 21:10:23 -06:00
John Willard
5c0c095079 Makes decals only caught on mapload & removes turf_loc_check (#76130)
Theres one player-facing change in this PR and it's that I removed human
gibs from being valid in space turfs, making it more consistent with the
other gib decals.

I've cleaned up many instances of decals spawning in bad turfs on
mapload in https://github.com/tgstation/tgstation/pull/75189, but making
it error anytime in-game a decal is put over an invalid turf is bad as
it punishes contributors for not optimizing their decals properly.
This changes it so it only errors if it's on mapload, unit testing or
not.

I've also removed ``turf_loc_check`` and replaced instances of it with
overwriting ``NeverShouldHaveComeHere``, which gives us greater control
of where decals can be placed.
This let me remove 2 subtypes that were made to have decals in specific
places (which then got placed elsewhere, ruining it all).

Mappers are still able to set decals to be placed anywhere, they just
need to add it as a valid turf for that decal.
2023-06-24 20:16:38 +00:00
Jolly
8184167948 [MDB IGNORE] Subtypes out kirbyplants, also changes them to said subtypes (#76050) 2023-06-20 17:14:51 -07:00
John Willard
8229972398 Tablet apps are now deleted when necessary & removes console preset. (#75863)
## About The Pull Request

Apps now properly delete themselves when removed, so they don't exist in
nullspace anymore.
Chat client now actually updates the uid, because its New() didn't call
parent.
Deletes the 'console' subtype of modular computer
Updates how downloading and transferring files are handled
Fixes being able to infinitely upload apps to a disk

## Why It's Good For The Game

Fixes some more bugs I found with apps and prevents spamming apps in a
disk.

## Changelog

🆑
fix: Maintenance data disks now properly transfer from PC to disk
fix: Disks can no longer be flooded with the same app repeatedly.
/🆑
2023-06-19 22:59:09 -07:00
John Willard
b5975bd915 Unit tests now catch decals in walls/space (#75189)
## About The Pull Request

Unit tests will now fail if there's a decal in a wall or open space
turf. Open space turf could be limiting to mappers but I don't think it
makes sense for decals (like dirt, glass shards, etc) to be floating
around in space in the exact same spot.

If there's a decal you want to put in space, decals have a
``turf_loc_check`` var that will bypass this.

**Important note: This is not changing existing behavior. Decals already
delete themselves when they spawn in these incorrect locations, we're
just avoiding them from spawning in the first place.**

### Changes I made

- Ash flora are now lava immune, rivers spawn after flora does, so I
decided that it would be easiest (and more flavorful) to have them be
lava-immune rather than to not have them spawn at all.
- Decals can now be spawned in non-turf locations. This is currently
done by mail, which can give you bones as part of the mail. Currently it
will just delete itself instead.
- Trading Card button is now on the same tile as their display, which
now uses an offset. Before it would spawn it on the tile next to it,
which could be a wall in some instances.
- Mirrors now have floating movement type. They ARE floating since
they're attached to the wall, and it prevents them from burning up due
to lava in the Pride ruin.
- I also added a broken mirror subtype because I thought the icon_state
check was terrible.
- Bubblegum called ``DestroySurroundings`` several times on the same
thing, I hopefully fixed some of that. Their charge ability also
registered ``COMSIG_MOB_STATCHANGE`` despite ``/datum/action`` doing it
by default, so I fixed that too.

## Why It's Good For The Game

Decals in walls is already a bad idea, but currently all it does is
delete it on Initialize. It would be better if we ensured they wouldn't
spawn in the first place.

## Changelog

🆑
fix: Lava will no longer burn 6 of the mirrors in pride ruin
fix: Lava will no longer burn plants that spawn in them.
/🆑
2023-06-15 16:39:22 -07:00
Nick
1648bcc47e Plasma flower MOD core from the lavaland patch of eden ruin (#75959)
This PR gives a small update to the patch of eden lavaland ruin, and
adds a new item that can be used as an upgrade to the plasma mod core.
The idea around this item is that it's a flower that has absorbed all
the plasma and bad-vibes in the small area around the ruin, leaving an
area full of plants, and a flower full of energy. This flower can be
taken from the oasis and turned into a functional MOD core using some
wires. As a MOD core, it is the same as the plasma mod core, but has a
higher energy capacity, being equivalent to a super power cell. It also
gives you a cool pollen effect, and spawns butterflies around you while
your suit is active. These butterflies disappear when they get too far
away, or if the suit deactivates. They also don't leave corpses, so they
shouldn't cause too much clutter.
2023-06-14 03:29:00 +00:00
Zephyr
22c682af52 Removes old palm tree and coconut overlay effects (#75966)
## About The Pull Request

Title.
## Why It's Good For The Game

Fixes https://github.com/tgstation/tgstation/issues/73827
## Changelog
🆑
fix: Trees and Coconuts are no longer immune to singularities.
/🆑
2023-06-14 02:06:50 +02:00
ShizCalev
7923d83dd4 Potted plant fixes (#75929)
Fixes #75918

Alternative to #75926

🆑 ShizCalev
fix: The RD's plant will no longer say that it's not very healthy after
being restored with seeds.
fix: Potted plants no longer randomly swap icons after being thrown.
fix: Plants that started the round dead are no longer all the same kind
once revived.
fix: Admins can now varedit plants to be alive / dead! 
/🆑
2023-06-10 12:54:50 -06:00
Rhials
133d5b4a85 Converts Spaceman mobs from simple to basic (#75944)
## About The Pull Request

This changes the Spaceman simplemobs into basic mobs.

They really didn't do anything besides stand around and retaliate, so no
new AI datums had to be added.
## Why It's Good For The Game

Scratch it from da list.
## Changelog
🆑
code: Spaceman simple mobs have been converted to basic mobs.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-06-10 18:44:29 +00:00
Rex9001
d387fe6867 Fixes the areas of the_faceoff (#75865) 2023-06-08 17:49:29 -07:00
Andrew
2e5806626c Proper broken tiles (#75623)
![before-export](https://github.com/tgstation/tgstation/assets/3625094/505eaed3-b429-45c4-ab65-6c92d1c9e20e)

## About The Pull Request

The current broken tiles have some visual issues:

- There is an ambient occlusion shade when it touches normal tile
- It has a layer higher than it should be which leads to things that are
normally above the floor layer, render below it. Such as atmos
machinery, cleanable overlays, etc.

This PR makes the render on a proper layer and work like a partially
destroyed floor tile that can be reclaimed with crowbar.

Also, the cleanables are now on FLOOR_CLEAN_LAYER to make dirt appear
above catwalks and these new tiles.

And the flat dirt now has 4 variants of sprites, while dust uses the old
dirt sprite. It seems like dust was just dirt with different description
before.

## Why It's Good For The Game

A broken tiling with no visual bugs and proper floor-like logic.

## Changelog

🆑 MTandi, Borbop
fix: Dust now has dust icon, instead of dirt icon. Dust on all maps
replaced with dirt
image: Flat dirt now picks from 4 new sprites
refactor: Made broken tiling work more like tiling and have
corresponding visuals. Added directional mapping variants.
fix: Cleanables now use FLOOR_CLEAN_LAYER to make sure that trash is
visible above catwalks
/🆑
2023-06-09 09:50:21 +12:00
Ghom
3a8592d258 Improves mob resizing (and UpdatePaths). (#75892) 2023-06-08 11:59:30 -06:00
Helg2
6378ef5687 Changes the base amount of bone gel. (#75851)
## About The Pull Request
Changed the amount from 1 to 5 for original `bone_gel` so it's easier
for mappers to add the right bone gel.
Deleted subtype `/four` and added subtype `/one` specifically for bone
gel creating.
Increased from 4 to 5 because surgical tape has 5.
## Why It's Good For The Game
Having 1 bone gel near 5 surgical tapes always seemed off.
## Changelog
🆑
balance: Bone gel standart amount has been increased to 5.
/🆑
2023-06-05 21:13:06 -04:00
TheVekter
c88d6b2666 Replaces antag softsuits with alternatives and balances some gun loot in space ruins (#75762)
Next part of my pass on space loot. This touches a few of the higher
powered ones I found with the help of Donglesplonge. The main goal here
was to replace a few significantly powerful items with less powerful or
harder to carry variants while retaining most of their value as well as
removing a few blatant antag-only items. The affected ruins and what was
changed:

Caravan Ambush - Replaced a mini energy gun with a survival knife.
There's apparently a chameleon kit here but I'm actually okay with these
staying - their relative impact on the round is low and they can be used
for creative drip reasons by crewmembers.

Old Infiltrator - Replaced the black-and-red softsuit with the
Contractor suit. It's in one of the suit storage units, which you'll
need a crowbar to open up.

Waystation - Removed a magazine from the WT-550 Autorifle crate. There's
still a Syndicate combat medkit and a set of night-vision goggles here
but they're behind multiple pod turrets. I want to get input on how hard
these are to get, but it seems relatively difficult, and I'm okay with
"a better medkit and night visions" as space loot. You outright can't
get the M1911 in antag stuff (as far as I can tell) so it stays.

The Faceoff - Replacing the syndie spacesuit/gear in the mining lockers
up north with unique Syndicate variants of the mining gear. Thanks to
necromanceranne for the sprites.
2023-06-04 14:02:02 -04:00
san7890
874ada4278 Refactors Ant into Basic Mob (#75662)
## About The Pull Request

On the tin. No new fancy AI wheels or anything, just a simple port. 
## Why It's Good For The Game

Knocks another one off the list, just really light stuff. They're a bit
smarter now too, I think the intention was them for them to be pet-like
as well (according to the code). Should be really rather easy to give
them the pet-like behaviors and elements if someone really wants to in
the future, just sorta paving the way for more work to be done to make
mobs more intricate/interesting.
## Changelog
🆑
refactor: Giant ants are now more capable of distinguishing friend and
foe.
/🆑
2023-06-03 14:41:05 +12:00
Andrew
4318f9401b Oldstation QoL tweaks and minor fixes (#75259) 2023-05-30 17:31:41 -07:00
Andrew
e155d49a8f Potted plant revival (#75602)
![dreamseeker_0JH7yYpKEq](https://github.com/tgstation/tgstation/assets/3625094/dc586ae5-8ace-4272-a93f-f18578ac15bd)

## About The Pull Request

Dead potted plant seems to be originating from RD's office, but it's
widely used in abandoned areas for mood.
This PR makes the dead plant more generic, making RD's plant a subtype.

Also now you can turn dead plant into a living one by using any seed on
it.

## Why It's Good For The Game

No more RD's plants in space ruins.
And now there is a way to do something with those dead plants again
(they could be sheared into a living plant with bonsai skill previously)

## Changelog

🆑
qol: dead potted plant can be revived with a seed
/🆑
2023-05-27 22:30:03 -06:00
Jolly
be2b5f9e74 [MDB IGNORE] Adds a map lint against using non-dir helper posters (#75620)
## About The Pull Request
Title.


## Why It's Good For The Game
Similar to #75610.
Gets our posters on the mapping directional helpers where needed.

## Changelog

🆑 Jolly
code: The code for posters internally has been tweaked slightly. If you
see posters floating in hallways, please report them ASAP!!
/🆑
2023-05-27 19:47:45 -04:00
Jolly
dc7fa929eb [MDB IGNORE] Adds a map lint against using dir-var edited window panes (#75610)
## About The Pull Request
Title.

## Why It's Good For The Game
#75528 but with a map lint.

I also don't know what to call these, so for clarity sake I'm referring
to them as "panes", which I think helps convey what they are.

## Changelog
Not needed.
2023-05-26 12:41:42 -06:00
san7890
456b58754d Turns lightgeists into a basic mob (#75626)
## About The Pull Request

https://www.youtube.com/watch?v=bcUuqKrnvVY <- me getting rid of every
simple animal one thing at a time

Turns lightgeists into a basic mob. There are a few key advantages into
its implementation that was previously impossible in the simple animal
framework, which is entirely possible now.
## Why It's Good For The Game

Lightgeists can actually have a bit of AI now, as a treat. They didn't
have it prior because I assume if they attacked anything, they would end
up healing it, and we didn't really have an option in the simple animal
AI to say "do not attack"... This really fixes that so they can wander
around a bit and look cute if some admin decides to spawn them in (but
the only way to get them outright is to use the anomalous crystal, which
auto-assigns a player). You don't see the AI if a player ghosts out of
the lightgeist because the lightgeist will delete itself on ghost
(previous behavior).

It also gets rid of some janky AttackingTarget() override that was
completely un-needed post-#73202.
## Changelog
Nothing really player facing.
2023-05-25 22:23:53 +01:00
san7890
88a5ef624a Turns Cat Butcher/Surgeon/Whatever into a Basic Mob (#75599)
## About The Pull Request

On the tin, I keep trying to tackle the larger basic mob projects but
burn out, so just enjoy these small ones to just keep that list looking
lighter and less insurmountable.

No big complex AI either, it choppa the tail off. That's all you really
need to be honest.
## Why It's Good For The Game

The cat surgeon will be just that slightly smarter. I suppose they're
still a doctor, just simply infatuated with the thought of cat tails...


![image](https://github.com/tgstation/tgstation/assets/34697715/a1b4d7f6-f591-4412-91e4-6d6c8f320deb)


noooooo my tail!!!
## Changelog
🆑
code: Cat Surgeons are a bit more smarter about attacking threats to the
world around them on their endless pursuit for those felinid tails.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-05-24 20:00:56 +00:00
san7890
83723acab0 Turns Chickens into Basic Mobs (#75592) 2023-05-24 15:04:27 -04:00
Rhials
ea5273d290 Removes some excess grilles from the Waystation ruin (#75550) 2023-05-22 17:40:54 -07:00
Zergspower
a292815d84 Space Ruin - Mech Transport Ship redux (#75121) 2023-05-22 17:10:30 -07:00
Tom
e5ce1c09a7 Converts butterflies to basic mobs and adds them to cytology (#75582)
## About The Pull Request

Converts butterflies into basic mobs.
Also a little list organisation.

<details>
<summary>Yep, those are some butterflies alright</summary>


![image](https://github.com/Skyrat-SS13/Skyrat-tg/assets/8881105/d9e3a14e-e0a5-4275-b440-af0a56e7b8fe)

</details>

## Changelog
🆑
refactor: Converted butterflies to the basic mob system
add: Butterflies can now be grown in cytology
/🆑
2023-05-22 10:30:48 -06:00
Treach
eb0e6e0e24 Replaces Lavaland research plumbing constructor with chemistry one (#75541)
## About The Pull Request
Replaces the Lavaland research plumbing constructor with a chemistry
one, fixes #75484
## Why It's Good For The Game
Syndicate agents on Lavaland should be able to actually do plumbing now.
## Changelog
🆑 Treach
fix: The Lavaland Syndicate base now has the correct plumbing
constructor.
/🆑
2023-05-22 09:30:23 +02:00
Thunder12345
75537b97a5 GAGSifies Plushies (#75442)
image: Space lizard, carp, slime and snake plushies have been resprited and set up to support GAGS.
2023-05-20 04:16:45 -04:00
san7890
e2bc712714 Converts Lizards to Basic Mobs (#75515)
This was pretty simple since they didn't have too much custom behavior,
and whatever they did have already had AI behavior. I got really burned
out the last two times I wrote intricate AI action/decision behaviors so
I'm just taking it light and doing the bare minimum.

one day our shackles will be free of the simple animal scourge. they're
also a bit more intelligent, and i daresay a bit cuter too now.

also that lizard gib animation has been sitting there for god knows how
long completely unseen, so let's actually hook it into the mob.
2023-05-19 00:52:20 +00:00
Helg2
f0fea164d2 Replaces var edited freezers. (#75439)
## About The Pull Request
Besides cleaning up code a little i changed all the bar lockers near
`boozeomats/all_access` to also be `all_access`. And also changed
freezer on Beach away mission to be free accessed like the freezers near
it.
## Why It's Good For The Game
Cleaner code, i guess?
Free beer.
## Changelog
🆑
add: Old bar on Metastation, tranquility emergency shuttle and Beach
away mission now have free access bar closets. Also freezers on beach
are now all access so you can now open them.
/🆑
2023-05-15 17:04:15 -06:00
ChungusGamer666
dff70625e7 Bible refactor (#75350)
## About The Pull Request

This started as a simple addition where burning a bible would curse you,
but then I realized... Bibles aren't even proper books, thus can't be
burned!
So yeah, since that is not necessary due to how atom_storage works, I
reworked that.

## Why It's Good For The Game

Because burning bibles and getting cursed for it is funny.

![image](https://github.com/tgstation/tgstation/assets/82850673/2a8489ce-ecd6-45ee-9eb9-168ff820af65)

![image](https://github.com/tgstation/tgstation/assets/82850673/ebe98ad6-2d0d-4d20-9ea1-5d472d6ca465)

## Changelog

🆑
add: You can burn bibles now! But heresy has a steep cost...
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-15 04:27:43 +00:00
YehnBeep
3e74e3282b Small ruin fixes and cleanup (#75435)
## About The Pull Request

Some minor ruin changes/fixes/cleanup:

Turret outpost: Airlocks are now properly linked to all work together
(instead of being in 2 pairs, where sometimes opening an external lock
wouldn't close the inner lock or vice versa).

DJ Outpost: Kitchen fridges no longer require kitchen access to open.

The Faceoff: Two girders placed to thematically obstruct enemies from
leaving the ruin.

## Why It's Good For The Game

Turret Outpost: A small thing but this ruin has no tiny fans so it
should help keep the air in a bit better, and I've occasionally seen
people double back because they don't expect the old behavior so I hope
this makes it work more intuitively.

DJ Outpost: Kitchen fridges on ruins either start open or don't require
access, and now this is true for the DJ outpost too. It's not that
difficult to break open lockers but it is a bit time consuming and
tedious (particularly on variant 4), and since it's just a few standard
ingredients and no explorers are likely to have kitchen access (nor is
there an ID card to find there), it just seems like it would be best for
them to be unlocked.

The Faceoff: This ruin has enemies that move faster than an explorer
with a jetpack, instant-aggro, and can deal an ultimately lethal blow in
just one hit to the unprepared explorer. That wouldn't be a problem if
you had to enter the ruin first, but the real problem is that even
catching a glimpse of the outpost while approaching from the east or
south is, effectively, a death sentence.

Of course there's ruins like Trade Routes that are dangerous, but one
can dodge and get away, enemies take a little longer to aggro and even
if they do, they can be outrun with a jetpack. The problem with this
ruin is there's no counterplay other than have a good weapon (RIP
pacifists), and that and the need for medical supplies might put
pressure on people to take more things from the station when exploring.

So, simply enough, two girders have been added that fit with the
destroyed section aesthetic, but mean that even glimpsing them for a
single tick won't result in getting impossible-to-outrun enemies on you.
The ruin has to be accessed (or someone has to linger around long enough
for the obstacle to be destroyed).

Also it's worth noting that in testing I found viscerators can still
attack across diagonals even with no access - which also means the ruin
still isn't completely safe if one gets too close (and might be worth a
bugfix itself..?)


## Changelog

🆑
fix: Turret Outpost's external airlocks now all cycle together instead
of as 2 separate pairs.
fix: DJ Station's kitchen fridges no longer require kitchen access to
open.
fix: The Faceoff's faster-than-jetpack-speed enemies no longer attack
explorers only passing by.
/🆑
2023-05-14 22:47:31 -04:00
Addust
3523b06a00 Heavily updates the Syndicate Lavaland Compound (#75095) 2023-05-14 15:38:44 -07:00
Thunder12345
90a57a4d4c Adds the rest of the dueling pistol set to the Sulaco ruin (#75373)
## About The Pull Request

Replaces the lone (and thus useless) dueling pistol on the Sulaco space
ruin with the lockbox containing a pre-linked pair.

## Why It's Good For The Game

One dueling pistol is completely useless on its own, so we should really
give a complete set so they can be used.

## Changelog
🆑
fix: Dueling pistols found in deep space now come in linked pairs for ∞%
greater usability.
/🆑
2023-05-13 03:53:14 +00:00
Jolly
8d86efeffe [Ruins] Fixes missing template_noop area in deepstorage + adds back turf helpers (#75289) 2023-05-09 17:52:24 -07:00
Jolly
bca7e82067 [Ruins] Fixes the missing template_noop area in crashedship + other area fixes (#75288) 2023-05-09 17:52:06 -07:00
Jolly
e480836b3a [Ruins] podcrash now uses template_noop instead of general space turf (#75290) 2023-05-09 17:51:48 -07:00
tattle
eaf962dbf9 New sand and water sprites (ported from Bay) (#75254)
## About The Pull Request
Ports over new water sprites originally made by Flashkirby in
https://github.com/Baystation12/Baystation12/pull/3724

Also made some code adjustments because they don't have that weird
in-between sprite that the old water had.

## Why It's Good For The Game

![image](https://user-images.githubusercontent.com/66640614/236734326-fd492313-270e-4ba5-ae68-3e5adf8d3c89.png)
This could be us but you're still using those jank-ass old water sprites
:\

## Changelog
🆑 Tattle, Flashkirby
sound: increased the volume of the water step noises
image: ported over bay's water sprites
/🆑

---------

Co-authored-by: tattle <article.disaster@gmail.com>
2023-05-09 19:51:16 +01:00
Zergspower
4ab5e6d142 Space Ruin - Whiteship ruin overhaul (#75123) 2023-05-08 17:40:53 -07:00
SyncIt21
2068ea9ab5 Crate, Closet Refactors & Access Secured Stuff (#74754)
## About The Pull Request
This PR is actually 2 parts, one that fixes runtimes with crates & the
other that allows secured closets to be crafted
along with a secured suit storage unit

**Crate Fixes**

Fixes #74708

The problem starts here

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L31-L34)
Not only does this if condition look ugly but it's highly error prone
because one single call to `update_appearance()` can cause this to fail,
and sure enough if you look at the parent `Initialize()` proc it calls
just that

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L81-L88)
Since we know the appearance is guaranteed to be changed in some way
before the if condition gets executed let's check what the final state
of the crate would be before this if check

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L54-L56)
We see that the final icon state depends on the variable `opened` so if
we want to place/spawn a crate that is opened at round start we have to
ensure that `opened = TRUE` so the `if(icon_state ==
"[initial(icon_state)]open")` succeeds and does its job correctly.
Sadly we did dum shit like this
```
/obj/structure/closet/crate{
	icon_state = "crateopen"
}
```
throughout the entire code base, we thought backwards and were only
concerned in making the closet look open rather than setting its correct
variables to actually say that it is opened. because none of these
crates actually set `opened = TRUE` the final icon state becomes just
"crate" NOT "crateopen" therefore the if condition fails and we add the
component

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L36-L37)
with the wrong parameters, so when closing the closet after_close()
removes the component with the wrong arguments

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L81-L84)
that is does not unregister the signals and readds the component i.e.
re-registers the signals causing runtime.

The solution just do this
```
/obj/structure/closet/crate/open[mapping helper]
```
To clearly state that you want the closet to be open, that way you don't
have to memorize the icon_state for each different type of crate, it's
consistent across all crates & you don't get runtimes.

And that's exactly what i did everywhere

Another issue that is fixed is "Houdini crates" i.e. crates which are
open & appear empty but when you close & reopen them magical loot
appears, Go ahead walk upto to cargo and find any empty crate that is
open and do this

Fixes #69779


https://user-images.githubusercontent.com/110812394/232234489-0193acde-22c8-4c19-af89-e897f3c23d53.mp4

You will be surprised, This is seriously harmful to players because they
can just walk by a crate that appears to be open & empty only to realize
later that it had some awesome loot. Just mean

The reason this happens is because of the Late Initialization inside
closets

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L85-L86)

What late initialization does is suck up all stuff on its turf

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L97-L100)

In theory this is supposed to work perfectly, if the closet is closed
move everything on the turf into the closet and so when the player opens
it, they all pop back out.
But what happens if the closet is opened before ` LateInitialize()` is
called? This breaking behaviour is caused by object spawners

f117834208/code/game/objects/effects/spawners/random/structure.dm (L94-L100)
And maint crates

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L141-L143)
These 2 spawners open up the crate based on random probability before `
LateInitialize()` is called on the crate and so what happens is the
crate is first opened and then stuff on the turf is sucked in causing an
open but empty crate to appear.

The solution is simple just check again in ` LateInitialize()` if our
crate is still closed before we proceed.That's fixed now too

**Code Refactors**
1. Introduced 2 new signals COMSIG_CLOSET_PRE/POST CLOSE which are the
counter parts for the open signals. hook into them if you ever need to
do stuff before & after closing the closet while return BLOCK_CLOSE for
COMSIG_CLOSET_PRE_CLOSE if you want to block closing the closet for some
reason
2. 2 new procs `before_open()` & `before_close()` which are the counter
parts for `after_open()` & `after_close()`. If you need to write checks
and do actions before opening the closet or before closing the closet
override these procs & not the `open()` & `close()` procs directly

**Secured Craftables** 
This is just a reopened version of #74115 after i accidently merged
another branch without resolving the conflicts first so i'll just
repaste everything here, since crates & closets are related might as
well do all in one

1. **Access secured closets**
   
   - **What about them?**
          **1. Existing System**
If you wanted to create a access secured closet with the existing system
its an 4 step process
            - First construct a normal closet
            - Weld it shut so you can install the airlock electronics
            - Install the electronics [4 seconds]
            - Unweld
This is a 4 step process which takes time & requires a welding tool
         **2. New system**
Combine the 4 steps into 1 by crafting the secure closet directly
                    
![Screenshot
(184)](https://user-images.githubusercontent.com/110812394/235904926-c2ea231c-eba7-45d0-a5af-e0456fdd40bc.png)

    - **Bonus Features**
              **1. Card reader**
The card reader acts as an interface between the airlock electronics &
the player. Usually if you want to change access on a locker you have to
                  - Weld the closet shut
                  - Screw driver out the electronics
                  - Change the settings
                  - Install it back
                  - Unweld
With a card reader there is no need of a welder & screwdriver. You can
change the access of the locker while its operational

        **How do i install the card reader?**
             1. Weld the closet shut
             3. Insert card reader with hand
4. To remove the card reader use crowbar or just deconstruct the whole
closet with a welding tool
             5. Unweld closet

         **How to change its access?**
This will overwrite the settings on your airlock electronics. To do this
1. make sure the closet is first unlocked. This is important so that no
random person who doesn't have access to the closet can change its
access while its locked. It would be like giving the privilege of
changing your current password without first confirming if you know the
old password
2. attack/swipe the closet with your PDA. Make sure your ID card is
inside the PDA for this to work. You can also just use your ID card
directly without a PDA
         3. You will get 3 options to decide the new access levels
           
![Screenshot
(174)](https://user-images.githubusercontent.com/110812394/233454364-d99a2fb6-9f26-4db3-9fac-a10689955484.png)


        They work as follows
- **Personal**: As the name implies only you can access this locker and
no one else. Make sure to have your ID on you at all times cause if you
loose it then no one can open it
- **Departmental**: This copies the access levels of your ID and will
allow people having those exact same access levels. Say you want to
create a closet accessible to only miners. Then have an miner choose
this option and now only miners can open this closet. If the Hop sets
custom access on your ID then only people with those specific access
levels can open this closet
         - **None**: No access, free for all just like a normal closet

**Security:** After you have set the access level it is important to
lock the access panel with a "multi-tool", so no one else can change it.
Unlock the panel again with the "multi-tool" to set the new access type

       **2. Give your own name & description**
To rename the closet or change its description you must first make the
closet access type as personel i.e. make it yours, then use an pen to
complete the job. You cannot change names of departmental or no access
closets because that's vandelism

       **3. Custom Paint Job**
    Use airlock painter. Not intuitive but does the job. 
   
![Screenshot
(181)](https://user-images.githubusercontent.com/110812394/234202905-00946b88-2513-489d-b0a2-d618a72f3e49.png)

      **4. Personal closets**
Round start personal closets can have their access overridden by a new
ID when in it's unlocked state. This is useful if the last person has no
use for the closet & someone else wants to use it.


    - **Why its good for the game?**      
1. Having your own personal closet with your own name & description
gives you more privacy & security for your belongings so people don't
steal your stuff. Personal access is more secure because it requires you
to have the physical ID card you used to set this access and not an ID
which has the same access levels as your previous ID
2. Make secure closets faster without an welding tool & screw driver
3. Bug fix where electronics could be screwed out from round start
secured closets countless times spawning a new airlock electronic each
time
      
2. **Access secured freezers**

    - **What about them?**
The craftable freezer from #73942 has been modified to support secure
access. These can be deconstructed with welders just as before

![Screenshot
(185)](https://user-images.githubusercontent.com/110812394/235905000-ba165feb-4384-4759-b46b-dba77c9e6ba3.png)


    - **How does it work?**
The access stuff works exactly the same as secure closets described
above. You can rename & change description with pen just like the above
described secure closets. No paint job for this. Install card reader
with the same steps described above.

    - **Why it's good for the game?**
1. Make access secured freezers faster without a welder and screwdriver
2. Your own personally named & locked freezer for storing dead bodies is
always a good thing

4. **Access secured suit storage unit**
   - **What about them?**
Suit storage units now require airlock electronics for construction. The
access levels you set on it will be used to decide
       1. If a player can unlock the unit
       2. If the player can open the unit after unlocking
       3. If the player can disinfect whatever is inside
       
      By default all round start suit storage units have free access

   - **Install card reader**
Provides the same functionality as secured closets described above. To
install it
     1. Open its panel with a screw driver
     2. Add a card reader to it with hand
     3. Close the panel
     
     When you deconstruct the machine the card reader pops back out

   - **Why it's good for the game?**
1. Having your own access protected and named suit storage unit so
random people don't steal your mod suits? Who wouldn't want that.?
Provides security for department storage units.
2. If you have the unit locked then you cannot deconstruct the machine
with a crowbar providing additional security
3. Fixes #70552 , random people can't open/unlock the suit storage unit
without access. You can set personal access to make sure only you can
access the unit

## Changelog
🆑
add: Access secured closets. Personal closets can have their access
overwritten by an new id in it's unlocked state
add: Access secured freezers.
add: Access secured suit storage units.
fix: Suit storage unit not having access restrictions.
fix: airlock electronics not properly getting removed after screwing
them out from round start lockers
fix: round spawned open crates run timing when closed
fix: open crates hiding stuff in plain sight
fix: open closets/crates sucking up contents during late initialize
causing them appear empty & open
/🆑

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
2023-05-08 10:42:54 -07:00
Andrew
69aab73e9c New Smart Fridge sprites (#75022)
## About The Pull Request

Resprites smart fridges. Inspired by the smart fridge by @Krysonism.


![dreamseeker_YHGPSCCEs3](https://user-images.githubusercontent.com/3625094/235185629-72b6fd2f-7e9d-4fc9-82ca-a45360c2ce6f.gif)


![dreamseeker_1HJFZwQbjR](https://user-images.githubusercontent.com/3625094/235277300-de4716c2-1435-49f2-9a06-bf4d215bb5ff.gif)

Versions:


![image](https://user-images.githubusercontent.com/3625094/235186007-64f85fd9-5068-4bef-85c6-23d209009037.png)

## Why It's Good For The Game

It looks nice.

## Changelog

🆑 @Krysonism, @Imaginos16, @MTandi, @san7890 
image: updated smart fridge sprites for all variants
fix: smart fridges no longer overlap with walls, but they can be welded
down to a floor and mapspawn welded
/🆑

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-05-08 10:23:37 -07:00
Thunder12345
154c9ebe82 Stock Part Resprite (#75149)
## About The Pull Request

Resprites stock parts to bring them up to date, changes manipulators to
servo motors as I couldn't make manipulators work well at this scale.


![image](https://user-images.githubusercontent.com/5479091/236561493-b34da588-dee1-405a-8557-d11741ae3f21.png)
(Power cells sold separately)

## Why It's Good For The Game

The old stock parts are dated, in some cased quite ugly, and in the case
of manipulators a ball of assorted pixels. Incidentally removed a couple
of single letter var names.

## Changelog
🆑
image: Stock parts have been resprited.
code: Manipulators have been renamed to servo motors, all related types
have been repathed to match.
/🆑
2023-05-07 23:52:03 -07:00
MrMelbert
4c5254d47a Removes ELITE SYNDICATE MODSUIT from Space Ruin (#75213)
## About The Pull Request

- Removes an ELITE SYNDICATE MODSUIT SPAWN from infested_frigate.dmm
- Removes a Combat Defibrillator from infested_frigate.dmm
- Removes Dart Pistol from infested_frigate.dmm

## Why It's Good For The Game

We will never learn. Space Loot should not be put in control of easily
cheesable simplemobs, and we shouldn't be straight up putting NUKIE
STUFF in Space

## Changelog

🆑 Melbert
del: You can't get an Elite Syndie Modsuit (or combat defib, or dart
pistol) from Space Ruins
/🆑
2023-05-07 16:30:40 -07:00
Helg2
f0ceea4934 [NO GBP] Deletes unused airlock helper from Syn-c Brutus. (#75182)
## About The Pull Request
Kinda continues https://github.com/tgstation/tgstation/pull/74751

![image](https://user-images.githubusercontent.com/93882977/236552739-1d39cc34-25ef-49d6-997b-d72c14fc669d.png)
I didn't notice it as it was just 1 line.
## Changelog
🆑
fix: deleted unused airlock helper from syn-c brutus.
/🆑
2023-05-07 13:18:56 -06:00
YehnBeep
8e3bfd9ad2 Fixes for the all-american diner ruin (#75202)
## About The Pull Request

- Fixes accesses for the all-american diner
- Fixes airlock cycling for the same

## Why It's Good For The Game

Currently the ruin requires the deep storage "bunker access ID" or
similar to open doors. This seems like it's probably an oversight; it's
not exactly a ruin bursting with swag and seems to be more just a
thematic place to hang out (and the access helper is, perhaps,
counterintuitively named?). So, this removes the access requirements
from all doors except the "boss's room", making it a bit more friendly
as a hangout instead of a place where every door must be busted open in
one way or another.

The external-access airlocks were cycling as separate pairs rather than
all together. This has also been fixed.

## Changelog
🆑
fix: The All-American Diner no longer requires a bunker ID card for most
rooms nor requires accesses to use the jukebox.
fix: The All-American Diner's external airlocks now all work together.
/🆑
2023-05-07 13:17:20 -06:00
Rex9001
096bac99dd Fixes the Golemship having the wrong orm subtype (#75200)
## About The Pull Request
See title here
## Why It's Good For The Game
Makes golems actually able to redeem stuff
## Changelog
🆑
fix: Fixes the orm board in the golem ship being the wrong subtype
/🆑
2023-05-07 13:16:17 -06:00
MrMelbert
4de3df461e [MDB Ignore] Adds a unit test for typepaths that are required to be mapped onto each station map (#74985)
## About The Pull Request

Inspired by #74967 and #68459 , and the fact that Tramstation regresses
very often -

Adds a unit test, `required_map_items`, which ensures that certain
typepaths which should definitely be mapped onto every map is mapped
onto every map

It can also be used to ensure that items which should not be mapped in
multiple times are not, among other things.

I included a few examples - 
- Min 1, max inf of each head of staff stamps
- Min 1, max 1 departmental order consoles
- Min 1, max inf comms console
- Min 1, max 1 Pun Pun
- Min 1, max 1 Poly
- Min 1, max 1 Ian

If, in the future, a mapper decides they (for some reason) do not want a
certain previously-required item on their map, the test can be adjusted
such that it allows excluding or something, but currently it should be
for items which require conscious thought about.

#### QA: Why not make this a linter?

I attempted to make this a linter before realizing two things
1. Someone might make a spawner which spawns the items, or they might
get placed in a locker, in any case this accounts for everything on init
2. Linters run on every map, non-station maps included

So I went with a test

## Why It's Good For The Game

#50468
#61013
#74967

Why is it always the CMO stamp?

## Changelog

Not necessary (unless I find a map missing something, then this will be
updated)
2023-05-04 15:20:25 -06:00
Andrew
d3d2da52f9 Damaged window and broken machine helpers (#75132)
## About The Pull Request

Added a helper that makes it possible to spawn broken machines without
var-editing.

Removed the damaged reinforced window spawner and added a general
damaged window helper working on any first window found on a tile.

<img width="787" alt="2"
src="https://user-images.githubusercontent.com/3625094/235808169-c6143606-52e8-4bb7-bab4-e7ce3d359eb2.PNG">

<img width="787" alt="1"
src="https://user-images.githubusercontent.com/3625094/235808160-688f56eb-269a-4019-8c1c-2819cc3a4432.PNG">

## Why It's Good For The Game

Less var edits, better tools for mappers, more immersive ruins.

## Changelog

🆑
qol: Mapping: Added broken machine map helper
qol: Mapping: Replaced damaged window spawner with a universal helper
/🆑
2023-05-04 14:06:30 -06:00
Zergspower
251ff357f3 Space Ruin - Dangerous Research with dangerous areas (#75016) 2023-05-02 17:07:43 -07:00
Andrew
6fa298fc5b Air alarm helpers (#74997)
## About The Pull Request

Replaces air alarm variants with directional alarms and corresponding
helper overlays, similar to APCs.


![image](https://user-images.githubusercontent.com/3625094/234709656-fac3d5c3-af04-496a-a28a-a3ca8d7e854f.png)

## Why It's Good For The Game

Less var edits, easier management.

## Changelog

🆑
qol: Mapping: Air alarm variants replaced with corresponding helpers
/🆑
2023-04-30 19:19:08 -06:00