* Fixes runtime with mime kissing (#73394)
## About The Pull Request
Not all living mobs have a reagent datum, but you can kiss all living
mobs.
## Changelog
🆑 Melbert
fix: Fixed a runtime from mime *kissing silicons and simplemobs.
/🆑
* Fixes runtime with mime kissing
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Makes A-Formal coat into our SR basetype (and removes ugly xmas coat)
* Few fixes and formatting things
* Move Bartender and HoPFormal to Skyrat
* Move Narsie/Ratvar coats to Skyrat, remove unused armored variants
* Move christmas coats to Skyrat
* Tosses obsolete HoPFormal (We have a HoP coat that's updated now)
* Syndie coat to skyrat subtype, assorted cleaning, rename
* oopsies
* Does checklist, adds todo notes for upcoming sorting, removes politics
* whoops
* tiny formalcoat sprite update per Hal
* 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>
* Fix Tiziran canned goods from being eaten by ants (#73401)
Because these canned goods didn't inherit from /obj/item/food/canned,
they didn't inherit the imperishable nature. Ideally in the future,
they'll inherit properly from that, but they'll need trash and open
sprites to make that happen.
Until then, let's just make the goods non-perishable.
🆑 coiax
fix: Tiziran canned goods no longer decompose into mush.
/🆑
## Why It's Good For The Game
Inconsistent that canned goods would turn to mush if left on the ground.
Doesn't happen to other (non-opened) canned goods.
* Fix Tiziran canned goods from being eaten by ants
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
* Fix extinguisher switch range, changing the delay on using it with a chair or something (#73403)
Blocks compilation on newest BYOND
## Changelog
🆑
fix: Using a fire extinguisher with a chair now properly
does...something with how fast you move I think it makes you slower
/🆑
* Fix extinguisher switch range, changing the delay on using it with a chair or something
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* 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>
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event (#73024)
## About The Pull Request
This PR description might be a bit rushed because I accidentally
submitted the PR and want to bang out a quick explanation of what this
is before people start asking questions.
Adds a new, rare, ghost-themed anomaly event -- The Ectoplasmic
Outburst.

This event increases in power as more ghosts orbit it, with three
important thresholds to meet.
If 10% or more of all active observers are orbiting the anomaly, an
effect will occur in the nearby area akin to the revenant's defile
spell, damaging flooring, windows, and making a mess.
If 35% or more are orbiting the anomaly, nearby objects in the effect
radius have a chance to become haunted, and will fling themselves at
anyone nearby for a bit. Spooky!
Now, at 50% or more participation, things get serious. Ghosts orbiting
the anomaly will be polled to be brought back into the world for a brief
period as a vengeful spirit, anchored to a SUPER spooky ghost portal.
The portal closes after two minutes (alternatively, smash it with a
toolbox) and deletes all of the ghosts it spawned. Vengeful spirits are
mostly just meant to smash stuff and be a nuisance while they can. It's
a wonderful opportunity to let deadchat desalinate a little.

Oh, also, the anomaly is deadchat controlled. With enough ghosts, you
could theoretically outrun anyone trying to neutralize it!
The associated reactive armor has an effect similar to the anomaly,
haunting nearby objects for a time when the wearer is struck. Not
particularly outstanding, but it can introduce an element of chaos into
a fight that your opponent might not expect.
## Why It's Good For The Game
Anomaly events are great for ghosts. Why not make one tailored just for
them!
Gives admins something to spawn when a wizard has killed half of the
crew but it's not quiiiite time for an ERT.
It's a bit of a silly event with a novelty reward, but I think it's rare
enough not to be a huge issue.
## Changelog
🆑 Rhials
add: Ectoplasmic Outburst anomaly event
add: Reactive Ectoplasm Armor
/🆑
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* 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>



</details>
<details>
<summary>
New
</summary>



</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>
* Remove NTNet from doors (saves 0.2s of init) -- Fixes windoors not working with remotes, and balloons them (#71735)
## About The Pull Request
Removes NTNet from doors. NTNet as a whole is getting excised, but this
was an enormous cost to initialize. Was only used for door remotes, so
just changes them to act on the door directly.
Windoors were supposed to be controllable, but were broken at some point
to always display an error message in chat.
Closes https://github.com/tgstation/dev-cycles-initiative/issues/3
## Changelog
🆑
fix: Door remotes now open windoors again.
qol: Door remotes now use balloon alerts for failures.
/🆑
(cherry picked from commit db2566f44d)
# Conflicts:
# code/game/machinery/doors/airlock.dm
* Update airlock.dm
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Buckle sanity (#73335)
## About The Pull Request
When you slip on ice or lube, you get unbuckled from whatever you were
buckled onto. The issue with this is that when you buckle yourself to
something in the first place, you move onto the loc of the buckled item,
which triggers this slip due to signals. Buckling code then continues,
and post_buckle is called, which might have varied odd effects, such as
setting the rollerbed into a dense and deployed state without anyone
being in it; scooters, wheelchairs and secways adding you to the
occupant lists, making you unable to buckle yourself into them again,
stasis beds applying the stasis effect permanently, or this:

Of course the last one requires you to build a guillotine before the
tile stops being lubed, but it was still a real threat, and also, really
funny.
Sadly, this is not the cleanest fix. Due to the slip calling
post_unbuckle_mob before post_buckle_mob getting called, there might be
some offset weirdness while the lubed person is flying through the air,
thanks to buckling and unbuckling directly altering pixel_x and pixel_y,
but they seem to realign themselves after the knockdown ran out.
## Why It's Good For The Game
Cleans up some rare slipping edge cases that result in odd behaviour.
Actually fixes#67841 (which got closed because I foolishly thought this
was not referring to lube)
## Changelog
🆑
fix: slipping on lube while buckling will lead to less weird states
/🆑
* Buckle sanity
---------
Co-authored-by: Profakos <profakos@gmail.com>
* Fixes exosuit board sprites (#73332)
## About The Pull Request
Any circuit board whose icon state is not "circuit_map" (others dont
have gags) dont have gags applied to them
## Why It's Good For The Game
Fixes#71332
## Changelog
🆑
fix: Any circuit boards with custom sprites now actually use that sprite
/🆑
* Fixes exosuit board sprites
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Fixes a bug where glide-size could become out of sync if you get unbuckled (#73150)
This fixes a bug where you could theoretically un-sync your glide-size
from your movespeed if you unbuckled. Currently, if you unbuckle, we use
a proc that's only used there which gets all of the slowdowns from all
of your movespeed modifiers. There's two problems with that:
1. We already have a variable with your movespeed (cached)
2. This proc does not check any of the conditionals that might make a
movespeed modifier not apply, such as whether or not you are flying, or
if you're immune to it for some other reason.
This means that in specific edge-cases you could mess up your
glide-size.
I have not actually seen this happen, but this seems like a better way
of doing it :)
* Fixes a bug where glide-size could become out of sync if you get unbuckled
---------
Co-authored-by: CapybaraExtravagante <110635252+CapybaraExtravagante@users.noreply.github.com>
Add investigate_deaths (#71112)
## About The Pull Request
Adds INVESTIGATE_DEATHS, an investigate category intended to better show
causes of death.


Also makes suicide_act take a `mob/living` as an argument instead of a
`mob`, and some minor style improvements since apparently I hate
atomicity.
## Why It's Good For The Game
Inspired by a mysterious death and dusting. More logging and leads for
admins investigating deaths.
Also fixes#59028
## Changelog
🆑 Tattle
admin: added investigate deaths to shed some more light on unusual
demises, dustings, and gibbings
/🆑
Co-authored-by: tattle <article.disaster@gmail.com>
(cherry picked from commit ad5debaaa1)
# Conflicts:
# code/datums/dna.dm
# code/game/machinery/washing_machine.dm
# code/game/objects/items/clown_items.dm
# code/game/objects/items/food/misc.dm
# code/game/objects/items/food/monkeycube.dm
# code/game/objects/items/stacks/sheets/glass.dm
# code/game/objects/items/storage/toolbox.dm
# code/game/objects/items/tools/crowbar.dm
# code/game/objects/items/tools/screwdriver.dm
# code/game/objects/items/tools/wrench.dm
# code/game/objects/items/weaponry.dm
# code/game/objects/structures/petrified_statue.dm
# code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
# code/modules/mob/living/carbon/human/death.dm
# code/modules/mob/living/living_defense.dm
# code/modules/mob/living/simple_animal/guardian/guardian.dm
# code/modules/mob/living/simple_animal/hostile/headcrab.dm
# code/modules/paperwork/stamps.dm
# code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
# code/modules/reagents/chemistry/reagents/toxin_reagents.dm
# code/modules/shuttle/on_move.dm
# code/modules/spells/spell_types/touch/smite.dm
# code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Fixes immortal anomalies having a death timer overlay (#68694)
Fixes immortal anomalies having a death timer countdown overlay
(cherry picked from commit 1c95f34e27)
# Conflicts:
# code/game/objects/effects/anomalies.dm
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Effects no longer runtime on being attacked (#73300)
## About The Pull Request
Effects didn;t override generic attack, which caused runtimes when
attacked
## Why It's Good For The Game
Closes#73295
## Changelog
Signed-off-by: GitHub <noreply@ github.com>
* Effects no longer runtime on being attacked
---------
Signed-off-by: GitHub <noreply@ github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* 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.

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>
* 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>
* Abductor scientist self-retrieve failure/runtime fix (#73172)
## About The Pull Request
Since the abductor outfit/implant would load before the abductor ship
(and it's teleport pad) when first generating a team, a runtime would
occur when trying to link the pad to the implant. Another would occur
every time you attempted to retrieve yourself (as the linked pad would
be null), preventing recall and completely neutering an abductor team's
most important maneuver.
Now, using the implant will perform the linking process again if no
linked pad is found, and provides the owner with a warning if (by some
great calamity) they genuinely have no pad to teleport back to. This
solves the issue of the implant sometimes not linking to a pad properly
on initialize, and makes them way less prone to breaking.
Apparently this has been broken for a while, presumably since the
abductor ship was made into a lazyloading template.
## Why It's Good For The Game
The funny silly grey men get to torture the poor hapless crew once
again.
## Changelog
🆑
fix: abductor scientist's retrieval implants will now properly recall
the owner, and inform them upon recall failure.
/🆑
* Abductor scientist self-retrieve failure/runtime fix
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* 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>
* Fairy Grass Inhands (#73209)
<!-- 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. -->
fixes#72549
## 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. -->
🆑 itseasytosee
imageadd: inhands for fairy grass tiles
/🆑
<!-- 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. -->
* Fairy Grass Inhands
---------
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
* Makes some improvements to how AI can use JPS with movement loops (#72685)
## About The Pull Request
This PR makes some changes to how JPS is used in movement loops, as it
was causing a variety of issues:
- Fixed some code where JPS would fail because the path is still being
made. Instead, the movement loop will now wait.
- Reduced the subsystem wait for the pathfinder subsystem from 2 seconds
to 0.1 seconds. @ LemonInTheDark told me that this is better, I'll update
this with a better explanation once I squeeze it out of him :D
- Allows you to provide an initial path to the movement loop, in case
you pre-calculated one while making a plan.
## Why It's Good For The Game
Makes working with JPS a bit easier when making AI.
---------
Co-authored-by: Capybara <Capybara@ CapybaraMailingServices.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Makes some improvements to how AI can use JPS with movement loops
---------
Co-authored-by: CapybaraExtravagante <110635252+CapybaraExtravagante@users.noreply.github.com>
Co-authored-by: Capybara <Capybara@ CapybaraMailingServices.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* 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>
* Improves the error message of inducer (#73183)
## About The Pull Request
Now instead of saying "Error unable to interface with device" it says
"Error: unable to interface with device".
## Why It's Good For The Game
The message now sounds better
## Changelog
🆑
spellcheck: Added a ":" to inducer error message
/🆑
* Improves the error message of inducer
---------
Co-authored-by: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
* 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>
* Fix some reference leaks (#72669)
For some reason, this repo doesn't have a problem with these references,
but the downstream I work on catches these on the new 515 alternative GC
test 100% of the time, despite us having not modifying these types. Go
figure.
Removed the tank var from the mister as it's basically unused except to
leak a reference.
Garbage collector happy
Not player-facing
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Fixes the compile issue
---------
Co-authored-by: Tastyfish <crazychris32@gmail.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Renames Datum Parts above tier 1 accordingly to their tier.
* Makes it so all of our machine also use the datum stock parts, because that's also important
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Adds nutriment factor to liquid gibs. (#73033)
## About The Pull Request
Over the years I've heard quite a few lizard players scratch their heads
in confusion due to the lack of gibs filling you up. I gave it a fairly
low value of 2 so people don't end up trying to power game it.
## Why It's Good For The Game
Adding an alternative use to gibs is always nice, at the moment it's
mostly just used for soap and cytology (Which barely anyone does.)
## Changelog
🆑
balance: Gibs now provide a small amount of nutriment.
/🆑
* Fixes the modular uses of liquid gibs
* Fixes an error that somehow slipped through.
---------
Co-authored-by: carshalash <carshalash@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* 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>
Don't initialize stack components inside machines (#72863)
## About The Pull Request
An attempt at the
[Initiative](https://github.com/tgstation/dev-cycles-initiative/issues/29)
all types/subtypes of `obj/item/stack` no longer exist inside any
machine. Only during deconstruction is the stack created from the
circuit boards requested components.
Also moved the component printer & module duplicator circuitboards into
`machine_circuitboards.dm` so they all are in one place
I was unable to do this for circuitboards because that still needs to
exist so we can use `apply_default_parts()` on the machine. I tried to
do the whole datum circuitboard approach just like with stock parts but
i'm unsure about it so maybe next time
## Changelog
🆑
refactor: stack components no longer exist inside a machine's
component_parts
refactor: move component printer & module duplicator circuitboards into
machine_circuitboards.dm
/🆑
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
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
/🆑
* Replace most uses of say() on tape recorder with balloon alerts to reduce spam (#72784)
## About The Pull Request
The tape recorder would spam the chat with multiple spoken lines when
Play was pressed on an empty tape or when playback ended. This fixes
that by replacing the spoken lines with balloon alerts only visible to
the user of the tape recorder.
Playback still uses say().
## Why It's Good For The Game
Less chat spam
## Changelog
🆑
qol: Tape recorder actions (e.g. starting/stopping playback) now use
balloon alerts instead of say() to reduce chat spam
fix: You can no longer get a tape stuck in the tape recorder by
unspooling it before inserting
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Replace most uses of say() on tape recorder with balloon alerts to reduce spam
---------
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Last TGC Holodeck PR before the freeze! Card marking and Blank cards! (#73013)
## About The Pull Request
This should be the final PR required to finish my goal of the holodeck
TGC arena having all the features of the tabletop version. Marking cards
(e.g. for hivemind cards) and cards that summon other cards are both
intended to use the flipper as a counter. This is not possible on the
holodeck and as such this PR adds that functionality. When a card is in
a holder a new option to mark the card has been added which will add a
small indicator to the top right of the card summon when activated. For
empty card holders you can now right click them to create a blank card,
you will be prompted to input a name for the blank card, (e.g. Resin
Wall) and then the card will act like a regular card.
## Why It's Good For The Game
TGC can now be played in its entirety on the holodeck, at this point all
tabletop features should have representations on the holodeck.
## Changelog
🆑
add: You can now mark TGC cards on the holodeck battle arena, useful for
keeping track of effects such as hivemind.
add: Right clicking a card holder on the TGC holodeck battle arena will
allow you to generate a "blank card", useful for when using cards that
summon other cards, such as the xenomorph hivelord.
spellcheck: Capitalized some descriptions for TGC machines
/🆑
* Last TGC Holodeck PR before the freeze! Card marking and Blank cards!
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Station monitoring console patches (#73096)
## About The Pull Request
- Distro & Waste loop sensors were only displaying the values of the air
on its turf not the actual pipes they were on, so the values were always
constant. Thats fixed now.
- Created a macro to map chamber id to air sensor to avoid typos. This
also fixed being unable to connect to the waste loop sensor due to a
typo in the word "_sensor".
- When reconnecting to a different chamber other than distro & waste
`atmos_chambers` is not lost when switching so you can once again
connect back to distro & waste. After reconnecting make sure to again
select the chamber from the drop down box cause the ui doesn't update
automatically
https://user-images.githubusercontent.com/110812394/215701505-105eba4d-d5d1-4a09-9ac7-0ab73fee2196.mp4Fixes#73055
## Changelog
🆑
fix: distro & waste sensors not reading values from the actual pipes
they are on
fix: losing distro & waste options from the drop-down box after
connecting to a new sensor.
refactor: all occurrences of _sensor with a macro to avoid typos.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Station monitoring console patches
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Implements functionality for variable weapon attack and secondary weapon attack speeds. (#72959)
## About The Pull Request
The click cooldown after attacking with a weapon can now be controlled
with a var. A var can also be set for secondary attack cooldown, if
unset it is the same as the weapon's normal attack speed.
The two weapons who already had hardcoded mechanics to achieve this
effect (see: The Stinger, Hyper Frequency Blade) have been converted to
this system.
## Why It's Good For The Game
Future varying of weapon qualities and admin shenanigans.
## Changelog
🆑
code: Greater support for variability in weapon attack speed
admin: Admins are now able to grief you by hitting you with a toolbox 10
times in one second.
/🆑
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
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>
Posters now say that you can trap them (#72974)
## About The Pull Request
Examining a poster will now say that you can trap it with a glass shard
## Why It's Good For The Game
While trapping posters with shards is a fun mechanic, not everyone knows
that you can do that. This PR makes easier to find out about this
mechanic for new players.
## Changelog
🆑
qol: Posters now tell that you can trap them with a glass shard when
examined
/🆑
---------
Co-authored-by: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
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>
Shuffles around the reagent scan readout to display as empty when only invisible reagents are present (#72915)
<!-- 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
Formerly, the reagent scan would provide a header based on whether or
not reagents are present in a person's blood/stomach. This works, until
you get cases where a user only has invisible reagents in their system,
in which case the "Subject contains the following reagents" header would
appear, but no chemical readouts would be present.
The blood/stomach reagent readouts on the scanner now put their contents
into a separate list, before adding it to the master readout list. This
alternate list is checked for length, rather than whether or not the
user has any reagents in their system at all, to determine what readout
header to give. If there are no reagent readouts to provide, the scanner
will report as if there is nothing present.
In summary: If you have only invisible reagents in your system, the
health scanner will provide the same readout as if you had nothing in
you at all.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Closes#72311.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑 Rhials
fix: The chemical scanner will now properly display that "no" reagents
are present in a subject when only invisible reagents are present.
/🆑
<!-- 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: Rhials <Datguy33456@gmail.com>
Add advanced fire extinguisher to techweb (#72933)
## About The Pull Request
This adds the advanced fire extinguisher to the `Experimental Tools`
node.
## Why It's Good For The Game
There are several advanced engineering tools in this node. This is an
item that is considered a better version of a regular fire extinguisher
for atmos techs. It makes sense to put this with the other upgraded
tools in techweb, since ya know, it's technically an advanced version.
It does spawn empty, so it needs to be refilled with a foam tank
dispenser.
## Changelog
🆑
qol: Add advanced fire extinguisher to techweb
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
One use portals will only become used up when they successfully teleport (#71034)
Makes one use portals self-qdel only when they confirm that whatever
tries using them has teleported.
(cherry picked from commit ecd62aed24)
Co-authored-by: Striders13 <53361823+Striders13@users.noreply.github.com>