* [NO GBP] RCD converts miscellaneous turf to plating (#81628)
## About The Pull Request
This was unintentionally changed in #78443.
RCD converts turfs like basalt, sand, beach etc to plating first & not
put a wall directly on top of them, just like it already does for lava,
chasms & space
## Changelog
🆑
fix: RCD converts miscellaneous turfs like basalt, sand, beach etc to
plating first & not put a wall directly on top of them
/🆑
* [NO GBP] RCD converts miscellaneous turf to plating
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese (#81666)
## About The Pull Request
Adds a 1 second delay to moving up and down with the verb/keybinds to
disable z-level combat cheese
## Why It's Good For The Game
Fighting someone using keybinds to move between z-levels over and over
again is damn near impossible. Try it sometimes, it's as bullshit as if
we had bombs that were cross-Z-level.
## Changelog
🆑
balance: Adds a 1 second delay to moving up and down with the
verb/keybinds to disable z-level combat cheese
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese
---------
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* fix mob ai using attacks while inside pokeballs (#81671)
## About The Pull Request
fixes pokemon AI still being active while inside the pokeball closes
#81669
## Why It's Good For The Game
fixes pokemon AI still being active while inside the pokeball
## Changelog
🆑
fix: fixes pokemon ai still being active when inside the pokeball
/🆑
* fix mob ai using attacks while inside pokeballs
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* Logs holochip credits worth zero or less credits and prevents them from spawning. (#81605)
* Logs holochip credits worth zero or less credits and prevents them from spawning.
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fixes random CI error (#81657)
## About The Pull Request
Closes https://github.com/tgstation/tgstation/issues/81329
Closes https://github.com/tgstation/tgstation/issues/81538
I made some improvements to tactical and twohanded in general, but
here's the fixes I made:
- Two-handed now unregisters signals for fantasy bonuses
- Tactical was registering signals for update icons, which in the case
of kirbyplants was called every time the item was picked up due to
two-handed's ``update_appearance`` call, so every time you picked up the
plant it would actually register signals twice, applying overlays twice,
etc. I removed the signal to update icon because it didn't really make
sense, we update on equip/move/z move, which should be all the cases we
need.
For some reason someone made Monkeys able to hold two-handed items now,
and it appears that in monkey business a monkey can try to pick up a
kirby plant, causing this CI error to be sporadic.
## Why It's Good For The Game
Fixes a CI error by removing a useless signal that was causing kirby
plants to register a bunch of signals twice over every time you picked
one up.

## Changelog
Nothing player facing.
* Fixes random CI error
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Alternate job titles (chef, department security) actually imprint this title onto your PDA (#81602)
* Alternate job titles (chef, department security) actually imprint this title onto your PDA
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* Fix runtime when food processor handles items without reagents (#81646)
## About The Pull Request
### Alternate title: "Stop the popsicle stick maximizer."
<details>
<summary>The popsicle stick maximizer in question</summary>

</details>
So when using the food processor to produce popsicle sticks from logs,
it seemed to never actually delete the log, letting you create more and
more and more and more and more and etc popsicle sticks.
This seemed to be caused by the popsicles not actually having reagents
to clear nor copy to, and thus it caused a runtime before it got the
opportunity to delete the log.
<details>
<summary>Runtime</summary>

</details>
Adding a check to make sure neither of these are null before proceeding
to use them resolves this issue.
## Why It's Good For The Game
Less runtimes, less popsicle stick maximizing.
Fixes#81644.
## Changelog
🆑
fix: Disabled the popsicle stick maximizer. (Producing popsicle sticks
actually deletes the input logs.)
/🆑
* Fix runtime when food processor handles items without reagents
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* updates bb convert objective text (#81658)
## About The Pull Request
adds some explainer text to BB conversion.
## Why It's Good For The Game
I've run into several people recently having issues with this - not
knowing who they can convert or what to do if they lose/break their
flash without successfully converting. Adds a little bit of text to
hopefully help.
## Changelog
🆑
qol: Blood Brother convert objective now explains who you can convert
and what to do if you mess up with your flash.
/🆑
* updates bb convert objective text
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>
* Fixed Typo in Mech Construction Steps (#81664)
## About The Pull Request
Removes the servo tier in mech construction examine text, so it's more
consistent with other parts.
## Why It's Good For The Game
I hate inconsistency of servos containing tier in mech construction.
## Changelog
🆑 MrDas
spellcheck: The tier of servo in mech construction is no longer
explicitly stated.
/🆑
* Fixed Typo in Mech Construction Steps
---------
Co-authored-by: MrDas <62486730+Das15@users.noreply.github.com>
* buff corporate modsuit (#81525)
buffs the corporate modsuit's armor
also expands the other-description on it because flavor mmm yum yum
munch
* buff corporate modsuit
---------
Co-authored-by: EEASAS <109891564+EEASAS@users.noreply.github.com>
* Fixes feeding through masks using spoons and ladles (#81633)
* Fixes feeding through masks using spoons and ladles
---------
Co-authored-by: Echriser <EthanSC2001@outlook.com>
* Item Blood Overlay Optimization (#81577)
## About The Pull Request
Previously it cached by (icon and icon state) of the item and modified
the blood decal overlay with icon procs
Now there is no cache and everything is done with MAs and overlays,
except for reading the width and height of the item's icon in order to
scale the blood splatter
## Why It's Good For The Game
There was no need to cache the blood splatter since it is exactly the
same sprite for every item
## Changelog
🆑
refactor: Bloody item overlays no longer use icon procs to generate the
overlay
/🆑
* Item Blood Overlay Optimization
---------
Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
* Fixes Summon Simian spell killing you as a monkey (#81619)
## About The Pull Request
The old logic worked like this: It checked for monkey faction (good),
however, monkey faction is given to roundstart monkey human subtypes
(bad) instead of using the inherent_factions variable on the species.
## Why It's Good For The Game
A spell advertised as not backfiring if you're a monkey should probably
not backfire if you're a monkey
## Changelog
🆑
fix: The Summon Simians spell will now properly check for monkey
faction, allowing people who are monkeys to not be mauled.
/🆑
* Fixes Summon Simian spell killing you as a monkey
---------
Co-authored-by: SgtHunk <68669754+SgtHunk@users.noreply.github.com>
* Fixes arcade cabinets being un-hittable (#81620)
## About The Pull Request
What if we put all of our item based interactions in the same function
that attacks are handled? Great idea, I'm sure no one will ever forget
to call parent
Fixes that.
Also cleans up ticket code.
Also renames the base type so mappers stop mapping it in.
## Changelog
🆑 Melbert
fix: You can now take our your anger upon arcade cabinets upon losing
(they can be hit again)
/🆑
* Fixes arcade cabinets being un-hittable
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* It's a start
* more stuff
* a
* nice
* Update attachable_soulcatcher.dm
* code work better :3
* mal requested proc
* let's move this little file over
* Update soulcatcher_mob.dm
* hehe :)
* say
* some more touches
* Update soulcatcher_component.dm
* working on signals
* a
* more
* sending some signals :)
* Update soulcatcher_component.dm
* a instance I missed
* some slimming down
* whoops
* Update declarations.dm
* Apply suggestions from code review
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_tgui.dm
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_user_component.dm
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_user_component.dm
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_user_component.dm
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_tgui.dm
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update soulcatcher_tgui.dm
* wew
* woag
* I don't want this PR to be hell to review
* okay, just a little bit of moving
* a
* defines, they do exist
* man
* more renaming
* mob
* Update carrier_component.dm
* Update soulcatcher_component.dm
* a
* some more moving
* Update soulcatcher_verbs.dm
* more tweaks
* a
* Update carrier_user_component.dm
* chat fixes
* updates how verbs work
* getting the code to work
* more adjustments
* aaaaaa
* Update carrier_tgui.dm
* final fixes
* Update carrier_tgui.dm
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Painkillers now actually induce analgesic effects (#81335)
This adds a new trait, `TRAIT_ANALGESIA`, and makes various painkillers
(+ tenacity trauma) apply said trait.
This prevents various pain-related effects, such as screaming due to
pain, and also provides a speed bonus during surgery.
Gives more of an incentive to actually use reagents such as morphine or
miner's salve.
🆑
add: Painkillers (i.e morphine, miner's salve) now actually induce
analgesic effects, preventing various pain-related effects, such as
screaming due to pain, and also provides a speed bonus during surgery.
add: The tenacity trauma (traumatic neuropathy) also applies analgesic
effects.
refactor: Simplified code related to reagents adding traits.
/🆑
* Oho, fixed.
---------
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Make Chefs show up as service on the crew monitor (#81597)
One of the cooks will always be 'promoted' to chef, which has a
different trim assignment. Because the crew monitor didn't account for
this in its display priorities, anyone with a card using its trim would
be displayed as a having departmentless job.
Adding its trim assignment name to the list like departmental security
fixes this.
I put it above cook as it's kind of the head cook.
It was mildly annoying.
🆑
fix: Chefs (not to be confused with cooks) actually display as being a
part of service on the crew monitor.
/🆑
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* Fixes CI runtime/race condition with forensics (#81610)
## About The Pull Request
Just a quick fix for the following CI runtime, and additionally passes
through the rest of this file's weakref instances for any other
potential bugs.

## Why It's Good For The Game
Bugfix
## Changelog
Nothing player facing
---------
Co-authored-by: san7890 <the@ san7890.com>
* Fixes CI runtime/race condition with forensics
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Removes some easily accessible sources of Mythril (#81595)
## About The Pull Request
- Deletes Mythril coins from random spawners, redestributes its weight
where relevant
- Deletes Mythril Sheets from icebox fishing, replaces it with Runite,
which is far less harmful (literally just a strong material)
## Why It's Good For The Game
Mythil's not supposed to be easily player available
Literally the first coin I spawned in testing was summoning, the most
gamebreaking one.
Also see this for more information
https://github.com/tgstation/tgstation/pull/75199#issuecomment-1537836361

With 2 sheets you can farm any prefix you want by combining and
splitting sheets. Nope!
## Changelog
🆑 Melbert
del: Deletes Mythril Coins from random coin spawners
del: Replaces Mythril sheets in icebox vent fishing with Runite sheets
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Removes some easily accessible sources of Mythril
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* General maintenance for all things boulder related. (#81358)
## About The Pull Request
**1. Qol**
- Adds screen tips & examines for screwdriver & crowbar acts on BRM,
Refinery & Smelter
- Adds examines to display number of boulders stored inside a refinery &
maximum number of boulders it can hold. Right click screentip to remove
boulders
- Adds examines to display maximum number of boulders than can be
teleported by a BRM & screentips for interacting with wires
- More audio & visual feedback for refinery processing. If a boulder
requires multiple steps you will get a balloon alert saying "crushing"
for refineries & "smelting" for smelters along with a sound per process
tick(which is every 2 seconds so no need for cooldown) giving you a
better idea of what's happening in the pipeline
- BRM now will display all lights when the "Automatic boulder retrieval"
is on & turn off the lights when disabled along with examines giving you
a visual indicator of its state
**2. Code Improvements**
- Splits types of boulders into its own file `boulder_types.dm` for easy
maintainability
- Moves beacon for refinery machines into its own file
`boulder_processing/beacon.dm` for easy maintainability
- Moves the cooldown for processing a boulder `processing_cooldown` into
the refinery machine itself. Since 100's of boulders can be created per
round this var can take up memory quickly so by moving them into the
refinery machine it gives us some savings
- Compressed & merged procs such as `create_mineral_contents()` ,
`flavour_boulder()` etc with the vent code. These procs were only used
by the vent 1 time & by merging the code we removed if conditions to
check if a parent vent was passed or not(since now that's always the
case). Helped in removing boilder plate code
**3. Fixes**
- **Fixes vents always spawning "Small size boulders" & not medium, nor
large boulders.**
Once a vent generates a boulder it calls `flavour_boulder()`
084f56938c/code/game/objects/structures/lavaland/ore_vent.dm (L385)
however this proc also accepts 2 more params `size` which would always
default to `BOULDER_SIZE_SMALL` and `is_artifact` which is simply unused
in the proc
fb83617ff9/code/modules/mining/boulder_processing/boulder.dm (L219)
Therefore vents would always generate small boulders giving us no
varity. Now the boulder size is set depending on the vent size &
durability for each boulder is set to a random value between 2 & the
boulder max size giving us the flavour we actually wanted
- **Fixes "Expanded Gulag boulders" using "normal gulag material list"
when setting its custom materials.**
If you look at the `add_gulag_minerals()` proc it always picks from the
`gulag_minerals` list & accepts no params
fb83617ff9/code/modules/mining/boulder_processing/boulder.dm (L235-L236)
So when we try to pass params to this proc which in reality doesn't
accept any we were wasting our time doing this
fb83617ff9/code/modules/mining/boulder_processing/boulder.dm (L274)
And for our case `expanded_gulag_minerals` list was simply unused
because our proc doesn't care about it and it went back to just using
`gulag_minerals` list thus ignoring our list
fb83617ff9/code/modules/mining/boulder_processing/boulder.dm (L282)
As i said in the "Code Improvement` section when i moved boulder types
into it's own unique file this was fixed & now expanded gulag boulders
actually has a chance to spawn with bluespace crystals inside them
- **Fixes manual tapping of ore vents by hand not using a cooldown**
`produce_boulder()` accepts a cooldown var for when you need to manually
tap the vent by hand.
e8b5b52d54/code/game/objects/structures/lavaland/ore_vent.dm (L374)
This var was always set to FALSE because we never passed `TRUE` into it.
Not once here
e8b5b52d54/code/game/objects/structures/lavaland/ore_vent.dm (L124)
Nor here
e8b5b52d54/code/game/objects/structures/lavaland/ore_vent.dm (L131)
Now we just pass `TRUE` so tapping these vents by hand have a cooldown
- **Fixes BRM off icon state never being used**
When the room ran out of power it would still look on. Now we use that
state correctly
- **Fixes Automatic Boulder Retrieval by the BRM not actually being
automatic**
You must have noticed that once you do "Right click" and wait for all
the boulders it can teleport (determined by `boulder_processing_max`) to
be teleported it stops permanently after that. Even if more boulders get
generated it won't do anything, You have to again "Right click" &
retoggle automatic boulder retrieval on again, thus forcing someone to
stand there & monitor the BRM
Now once you set Automatic Boulder Retrieval on you can leave & forget.
It will teleport boulders as & when available thus enabling automation
properly.
- **Fixes boulders ejected from refineries via right click from getting
teleported back into the machines loc**
Fixes
https://github.com/tgstation/tgstation/pull/78524#issuecomment-1911666995.
The problem is refinery machines & the BRM keep track of all the
boulders that entered into it via the `boulders_contained` list.
Now we directly check `contents` for boulders so we don't have to
maintain 2 seperate lists to keep track of boulders. It also now uses
`processed_by` var of boulders to ensure refinerries don't retake in the
same boulder it just processed. Not sure where exactly the problem got
fixed but implementing these 2 measures fixed it regardless.
- **Fixes boulders with 0 durability[a.k.a steps] from getting ejected
out**
Fixes
https://github.com/tgstation/tgstation/pull/78524#issuecomment-1914551952.
So inside `process()` we constantly decrease the durability of the
boulder till it becomes 0.
0a496f180c/code/modules/mining/boulder_processing/_boulder_processing.dm (L159)
When it reaches 0 it calls `breakdown_boulder()`
0a496f180c/code/modules/mining/boulder_processing/_boulder_processing.dm (L164-L165)
This proc has a chance to reject the boulder if it could not process any
materials
0a496f180c/code/modules/mining/boulder_processing/_boulder_processing.dm (L219-L222)
**"Without resetting its durability"** over here
0a496f180c/code/modules/mining/boulder_processing/_boulder_processing.dm (L241)
So it ends up rejecting a "0" or worse -1 durability boulder. Now we set
the durability in `remove_boulder()` so regardless of what circumstances
the boulder is ejected it always gets a positive durability
- **Fixes BRM & Refinery from rapidly spitting out boulders in their loc
which causes lag in the long terms**
Fixes#81404. Basically even if there is 1 boulder sitting at a BRM's
loc or an refineries loc. Operations are haulted i.e. the BRM will not
teleport any more boulders & the refinery will keep their already
processed boulders inside till their locs are cleared from boulders.
This prevents large number of boulders from pilling up in long rounds
- **[Priority : High] Fixes refineries incorrectly removing materials
from processed boulders**
Fixes#81109. This bug is quite serious because it can't literarily
affect any random item with custom materials in game. This one line of
code over here can break the entire material economy as we know it
0a496f180c/code/modules/mining/boulder_processing/_boulder_processing.dm (L217)
**"DONT DO THIS"**. The `custom_materials` list is a **"read only"**
list & if you ever want to change it call the `set_custom_materials()`
proc with your new values but do not edit this list manually as it is
done here.
All lists related to materials are cached by the `SSmaterials`
subsystem. List values are cached & shared across multiple objects so
when you edit those values like here, you might end up effecting an
item/multiple items in some random corner of the map that shares this
list.
This also causes boulders with empty list of materials to get spawned at
random so yeah again plzz don't do this
**4. Refactors**
- Repathes `obj/machinery/boulder_processing/brm` -> just
`obj/machinery/brm`.
Even though semantically it looks nice that the brm is a subtype of
`obj/machinery/boulder_processing` from a code & operation perspective
they have 0 similarities.
1) The BRM does not accept boulders feed into it from a conveyer belt
unlike a refinery but instead picks boulders from `SSore` subsystem &
put it on the conveyer belt. This means procs for accepting boulders
such `CanAllowThrough()`, `breakdown_boulder()`, `accept_boulder()` etc
have no use in the BRM. Their just code clutter at this point
2) The BRM overrides `process()` & does not call its parent proc making
that code wasted
3) It has no use for silo materials & mining points making those vars go
to waste
With so much wasted code its better to just let go off all of it & just
make it a basic instance of `obj/machinery` making maintainence easy
- BRM now teleports boulders in a batch (batch size determined by
`boulders_processing_max` max value from upgraded parts is 7) with a
boulder appearing every 1.5 seconds rather than spawning all at once.
After a batch is processed it has a cooldown of 3 seconds before
repeating the process if automatic boulder retrieval is on. This stops
the conveyer belt from getting crowded with boulders and makes the
refining process more efficient.
With this BRM wires are removed because only it had only 1 wire
responsible for toggling boulder retrieval but now since this process is
automatic, we have true control over the timing of boulders spawned &
don't want to leave it in the hands of players
## Changelog
🆑
qol: adds examines & screentips for crowbar, screwdriver acts to BRM &
refinery machines
qol: adds examines about the number of boulders stored & processed to
BRM & refinery machines
qol: BRM now has its lights turn on/off depending on wether automatic
boulder retrieval is on/off for visual clarity along with examines
qol: refinery machines now display ballon alerts & plays sounds more
frequently when processing boulders for better feedback
fix: vents now spawn boulders of all sizes & not just small ones
fix: expanded gulag boulders now have correct materials in them.
fix: manual tapping of vents now has a cooldown applied as intended.
fix: BRM has its light turned off when area power goes off
fix: boulders ejected from refineries by hand no longer teleport all
over the place occasionally.
fix: refineries no longer eject boulders with 0 durability
fix: Boulders & refineries no longer pile up on top of BRM's &
refineries in long rounds. Their locs have to be clear of boulders
before they spit out more boulders to prevent a large pile of boulders
from causing lag
fix: sheets ejected from lathes no longer get rejected when inserted
back which could happen at random, no more boulders with empty materials
code: splits boulder types into its own file along with other items
code: merges & autodocs procs, vars related to boulders
refactor: repaths BRM to a simpler subtype
refactor: BRM now spawns boulders in batches(batch size can be increased
with upgraded parts) with a boulder appearing every second. After a
batch is processed a 3 second cooldown is applied to stop the conveyer
belt from clogging up, With this BRM wires are removed as there is no
need for timers to be attached to wires which intefers without our batch
processing timings.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* [NO GBP]Some BRM Fixes (#81551)
## About The Pull Request
- The time from which the boulder is picked to when it's teleported onto
the conveyer belt is 1.5 seconds. During that time the boulder could get
deleted due to many factors and we lose our materials. No one like's
that that so now both steps are combined into 1 proc so we no longer
loose boulders during teleportation.
- Batch processing cooldown was not working when
`boulder_processing_max` is > 1. Now it does
## Changelog
🆑
fix: boulders are no longer lost when teleported by the BRM
fix: batch processing cooldown works when teleporting multiple boulders
/🆑
* Path replacements in maps
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Removes a double space from health analyzer (#81589)
## About The Pull Request
Fixes the message saying someone is deaf having 2 spaces in it.
## Why It's Good For The Game
minor typo.
## Changelog
🆑
spellcheck: Removed a double space in health analyzer's message telling
you someone is deaf.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Removes a double space from health analyzer
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Does it work? Who knows.
* Mirror of tgstation/tgstation/#81492
* hmmm
* is this it?
* Oh, also synth stuff
* Catching up with some disarm refactors.
* tg's #81400
* Oh right, this
* This should cut it
---------
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Fixes some issues with paper planes (#81453)
1. paper's examine was defined twice, which made spacemandmm throw a
minor notice about
2. paper's altclick had a second arg for some item, which would never be
the case because that's not a real arg
3. there was a check for src's type, now just removed to the type's
altclick
4. some papercode was sitting in paper plane code file, now moved
the rest is misc changes such as replacing camelCase and using SECONDS.
None of this is player-facing but it's updating some rather old code to
more modern code standards.
Nothing player-facing.
---------
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Adds an 'auto-reel' line reel to the fishing tech node. Minor gameplay changes to fishing. (#81407)
## About The Pull Request
This PR adds a new line reel, which speeds up the baiting phase of the
fishing minigame and skips the biting phase, thus starting the minigame
without the initial input from the player.
The auto-reel line will also throw items (or other people/things, if you
have the right hook) in your direction when snagged, with the added
bonus of catching the item mid-air. Turn your fishing rod into a
discount meat hook.
I've lowered the deceleration coefficient and bounce threshold of the
minigame by 1/4. My rationale is that these two numbers are a must lest
we end up with an uncontrollable mess of a minigame, though they also
feel like a sack of flour hitting gravel rn, making specific hooks like
the bi-directional one and the weighted other a bit useless.
Another change is to the baiting and biting phase. Previously, if you
clicked anywhere during the baiting phase, it'd reset the whole timer
back to any value between 1 and 30 seconds, spelling futility to the
time you've just spent waiting. Now, it'll simply add another 4 seconds
or so to the current timer, capping at 30s.
One last thing*. Once the biting phase start, the faster your input is,
the higher the starting completion of the minigame will be, and the
other way around, if you're very slow. The difficulty variable can also
lower the starting completion.
*I lied. I've also added a short cooldown to casting a fishing rod so
you can't just spam it.
## Why It's Good For The Game
Finetuning the minigame, quality of life and balance, making fishing
even more gimmicky.
## Changelog
🆑 Ghommie
add: Added a new fishing line reel that speeds up the first half of the
fishing minigame, and also let's you catch things from afar like a
discount meat hook.
balance: During the biting phase preceeding the actual minigame,
initiating it as soon as the "!!!" alert pops up will net you an
advantage. Conversely...
qol: Clicking during the baiting phase will no longer wholly reset it
and make you lose your patience. Instead, it'll delay the next phase by
about 4 seconds.
balance: The deceleration and bounce should feel less sudden and stiff,
meaning the controls are 25% more slippery again.
balance: Added a cooldown to spam-casting fishing rods.
imageadd: Resprited line reels a little.
/🆑
* Adds an 'auto-reel' line reel to the fishing tech node. Minor gameplay changes to fishing.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Air alarms display location/trigger information (#81436)
## About The Pull Request
Adds additional information to triggered fire alarms, viewable on the
air alarm. Displays the method of alarm trigger and the source of the
alarm.

## Why It's Good For The Game
Useful for engineers to track down the source of why the fire
alarm/firedoors are triggering. Fire alarms that are manually triggered
will never reset without intervention, so this also identifies these
cases instead of chasing down an issue that may not exist.
## Changelog
🆑 LT3
qol: Air alarms now display the source of triggered fire
alarms/firedoors
/🆑
* Air alarms display location/trigger information
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Reaction & holder tweaks (#81545)
## About The Pull Request
- Fixes#81537. For competing reactions where reaction B consumes the
results formed from reaction A `total_step_added` yields values higher
than the actual volume of products formed causing the reaction to end
early leading to less volume of product formed as explained in the
comment
- Removes `update_total()` from instant reactions as it already does
that for us making it a little faster
- merges `remove_all_direct()` with `remove_all()` to reduce code as
their functionalities are very similar
## Changelog
🆑
fix: multiple reactions occuring in the same holder like mixing drinks
will yield correct reagent result volumes
code: Removes `update_total()` from instant reactions improving
performance slightly
code: merges `remove_all_direct()` with `remove_all()` to reduce code
size
/🆑
* Reaction & holder tweaks
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Monster cores work while resting (#81548)
## About The Pull Request
Currently to use items like the regenerative core, you can either attack
yourself (or someone else), or use Z to use the item in-hand, unless you
are lying down in which case you have to specifically click, and can't
use in-hand. It's kinda dumb and this has been an issue I had since I've
started playing, and today I thought "wait why did I just never fix it
then?", so now I am.
## Why It's Good For The Game
Mostly explained in the about section, you can already use cores while
resting, this just means you can't use Z instead of having to click on
your character sprite.
## Changelog
🆑
fix: Regenerative cores (and other monster organs) now work when using
it in-hand while resting.
/🆑
* Monster cores work while resting
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Joker wont automatically reactivate itself (#81547)
## About The Pull Request
The DNA console's Joker button, when used and goes through its cooldown,
currently automatically reactivates itself, which causes Geneticists who
aren't aware of this and who do not want to use their joker yet, waste
it and have to wait its cooldown once again.
## Why It's Good For The Game
You are waiting at minimum a 300 second timer (on t4) between Joker
uses, so I do not expect people to think that this is something that
would remain active once its cooldown has expired. It's just better UI.
## Changelog
🆑
fix: The DNA scanner's joker button no longer instantly activates itself
when the cooldown between uses is done.
/🆑
* Joker wont automatically reactivate itself
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* [no gbp] Removes unused proc from deathmatch, deathmatch has 8 seconds delay as to not give lighting a stroke (#81549)
## About The Pull Request
removes an unused proc, and spawners should be slightly more reliable
deathmatch now has a 8 second delay before spawning you in as to give
lighting and smoothing a breather
the match being in progress is now shown in lobby UI
## Why It's Good For The Game

also unused proc bad
## Changelog
🆑
code: deathmatch lobbies take 8 seconds to start as to give lighting a
breather
/🆑
* [no gbp] Removes unused proc from deathmatch, deathmatch has 8 seconds delay as to not give lighting a stroke
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Adds tram throwing mobs through glass windows (#81284)
## About The Pull Request
- Adds a PASSWINDOW flag so that you can throw mobs through window
panes, smashing them
- Being thrown into the tram window by event only (not player thrown)
has a chance to break through the window
- Reduced throw range of tram emergency stop
## Why It's Good For The Game
Sometimes you don't want them to bounce off the window when they hit,
rather comically fly through it.
## Changelog
🆑 LT3
add: The tram has been equipped with enhanced safety glass to reduce the
severity of crew injuries
/🆑
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Adds a missing servo into the MK1 Ripley crate ordered from cargo (#81587)
## About The Pull Request
So cargo can order a box containing all the components you need to build
a ripley mech from the ground up.
Except a servo, which is required in the building process, and is needed
for the mech to move around anywhere.
This adds the missing part, so that the only thing you need is metal and
tools. (And a battery.)
## Why It's Good For The Game
If you order a crate containing (almost) all the components you need to
build a mech, and its missing a key part, I wouldn't call that a very
complete set. So having the servo included makes it complete.
Also, the chances are this crate was forgotten about when the servos
became a needed part of mech construction, so this fixes the
consistency.
## Changelog
🆑
fix: Adds a missing servo component into the MK1 Ripley Crate ordered
from cargo.
/🆑
* Adds a missing servo into the MK1 Ripley crate ordered from cargo
---------
Co-authored-by: Derpguy3 <85206687+Derpguy3@users.noreply.github.com>
* [NO GBP] fixing issues with cutouts and potted plants (#81570)
## About The Pull Request
This should fix#81560 and fix#81561,
## Why It's Good For The Game
Oh no, another invisibility exploit.
## Changelog
🆑
fix: fixed an issue with tactical appearance (potted plants / cardboard
cutouts) not going away after giving the item to someone else.
fix: Fixed slaughter demon cutouts being invisible. Also fixed another
issue with the tactical appearance not going away when the cardboard
cutout is pushed down.
/🆑
* [NO GBP] fixing issues with cutouts and potted plants
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* [no gbp] marks deathmatch areas as NOTELEPORT, and abductor and event proof (#81557)
## About The Pull Request
marks deathmatch areas as NOTELEPORT, and abductor and event proof
## Why It's Good For The Game
ok just incase they shouldnt be able to get out of here
* [no gbp] marks deathmatch areas as NOTELEPORT, and abductor and event proof
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* [no gbp] deathmatch does not preserve mind (but you can still return to your body) (#81567)
## About The Pull Request
deathmatch no longer preserves mind
also gives traits TRAIT_CANNOT_CRYSTALIZE, TRAIT_PERMANENTLY_MORTAL to
prevent shenanigans
fixes#81550
## Why It's Good For The Game
it took two minutes for the russians to start scheming on how to get to
CC
* [no gbp] deathmatch does not preserve mind (but you can still return to your body)
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Paintings update: Curators get a cut on patronage + zoom in/out buttons on UI (#81500)
## About The Pull Request
(Roundstart) Curators now get a 22.5% cut on credits spent on painting
patronages (divided by the number of curators). The service department
also gets another, 12.5% cut.
This PR also adds zoom in/out buttons to the painting canvas UI. So you
don't have to stare at a blob of such enormous squares while the UI is
open, which is only good when drawing.
Screenshot copypaste in paint:
## Why It's Good For The Game
The painting feature is mostly an end in itself, which is totally fine.
I've put quite a few quality-of-life changes into it through the years,
and I still want to kick in some stuff. However, I think the curator
should actually benefit from them in a more "mechanical" way.
Furthermore, I personally prefer them over the random written crap that
players make.
Also, as I said above, the canvas UI can feel a tad too big at times.
* Paintings update: Curators get a cut on patronage + zoom in/out buttons on UI
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* North Star QOL Updates (#81513)
## About The Pull Request
Just a routine, well-past-due, update to the North Star map.
This PR does a number of things, everything is tested and functional.
The list of full changes is below:
<details>
<summary> List of Changes! </summary>
Sec outpost on 1st floor moved
Central elevator can now access all floors
New maint door in 1st aft hall
New maint door in workout room
Chaplain has lesser smoke book
Chaplain starts in bed (they eeby)
Chaplain has more wallmounts
Shuffled some pipes & wires around in robotics
Renamed doors by psych & science
Fixed disposals above bitrunner's den
Replaced the central staircase with a sturdy ladder
Decorated the central ladder area
Rearranged loot in starboard dorms maint
Renamed the name of the floor in xenobio's pen
Replaced windoors at arrivals with proper subtype and gave them
hydroponics access to prevent animals from escaping early
Change the design on the floor outside of Robotics
Gave Robotics & Science a roundstart quantum pad for easy access to
eachother.
Updated some decals inside robotics
Added more windows to maint
Added more unrestricted helpers to all floor maints
Added more lights on the path to the gravgen from engineering
Security offices now have their cells replaced with a disposals tube
leading to security's "drunk tank"
Security's drunk tank now has wall mounted flashers
Added more landmine spawners
Added DNA disks and a geneticist outfit vendor to genetics
</details>
## Why It's Good For The Game
The map needed some polish, and this PR addresses some concerns and
suggestions in the feedback thread on the forums!
[https://tgstation13.org/phpBB/viewtopic.php?f=11&t=35536](url)
## Changelog
🆑
fix: The North Star's disposals are now functional!
qol: The North Star has had a staggering amount of quality of life
changes.
add: Nanotrasen has now supplied North Star security outposts with a
disposals line leading directly to the drunk tank.
/🆑
* North Star QOL Updates
---------
Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
* Fix organs being replaced when not needed (#81575)
## About The Pull Request
So it seems `regenerate_organs` on species was actually replacing organs
not belonging to the species regardless, which was making it so the
`HEAL_ORGANS` flag which is supposed to heal your organs and supposedly
replace missing ones too.
However, this made it so anything using that would also remove and
replace all organs not native to your species, including prosthetic
organs, cybernetic organs, organs alien to your species, and the
nightmare heart itself when you're not a nightmare and it tries to
revive and convert you.
This just makes it mimic its behaviour when used to convert from one
species to another, which is to not replace organs alien to your
previous species, and making it also not replace those when
`replace_current = FALSE`.
## Why It's Good For The Game
Fixes#81546.
Fixes ethereal reviving eating your prosthetics.
## Changelog
🆑
fix: Ethereal heart revive doesn't delete organs alien to your species,
like prosthetics, cybernetics, and possibly itself.
fix: Nightmare heart revive doesn't delete organs alien to your species,
like itself, upon which it would stop the conversion to shadowperson.
/🆑
* Fix organs being replaced when not needed
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>