Commit Graph

1977 Commits

Author SHA1 Message Date
jjpark-kb
3b16637d51 Spyprs (#27006)
* Minor Spy fixes, plus some bonus logging and feedback (#81781)

## About The Pull Request

Fixes #81776 

- Ensures machinery not sent to the black market dump what must be
dumped first
- Adds feedback messages to sentient bots being stolen
- Adds a few combat log messages to spies stealing things

## Changelog

🆑 Melbert
fix: Fixed spy stolen machines not dumping everything that needed to be
dumped
/🆑

* Fixes Spy OD things (#81778)

## About The Pull Request

I'm doing my part

* Fixes spies having multi-use autosurgeons (#81876)

## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/81827

## Why It's Good For The Game

Autosurgeons are deliberately not resuable for almost all instances they
show up in the game.

This is fine for a single use insertion of a highly illegal organ, the
autosurgeon then allowing you to entirely ignore surgery and player
interaction to get various power boosts via cybernetics from that point
onwards seems unintended.

## Changelog
🆑
fix: Spies no longer have access to infinite use autosurgeons.
/🆑

* there we go

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2024-03-24 01:16:37 +01:00
SkyratBot
4fb4a50167 [MIRROR] A red spy has entered the base: Adds Spies, a roundstart antagonist inspired by Goonstation's Spy-Thief (#26711)
* A red spy has entered the base: Adds Spies, a roundstart antagonist inspired by Goonstation's Spy-Thief

* Update code/__DEFINES/role_preferences.dm

* Update code/__DEFINES/role_preferences.dm

* closet fix

* I am stupid

* fix effects

* there we go

* is this the end?

* ugh

* please stop

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
2024-03-23 16:27:57 -04:00
SkyratBot
349be29641 [MIRROR] Allows the use of wirecutters for Tend Wounds (#26952)
* Allows the use of wirecutters for Tend Wounds (#82069)

## About The Pull Request
I've always found it weird that we can clamp bleeders, excise infection,
and attach grafts to hearts with wirecutters, yet we can't use this same
logic to stitch someone back together via Tend Wounds with wirecutters.
This update remedies that.
This will only touch the Tend Wounds surgery procedure as I don't see
using wirecutters to fix someone's brain as a good idea since the tool
is a tad bulky in design, but something as broad as regular damage to a
body should be fine. (But feel free to start a conversation about that,
I'm curious what other medical mains think)
I will respect the original PR though and have the wirecutters set for
60, below the screwdriver's 65. I have tested the code and made sure
that the wirecutters were usable on the hemostat step.
## Why It's Good For The Game
This adds consistency to Tend Wounds and follows the logic other
surgeries give as it's reasonable to think that if you can clamp
bleeders with wirecutters then surely you can tend basic wounds with
them. I've definitely seen a few ghetto surgeons do exactly this and
accidentally kill a person they were trying to save, so I hope that this
tweak will prevent these accidental deaths in the future.
## Changelog
🆑
qol: Can now use wirecutters when performing Tend Wounds.
/🆑

* Allows the use of wirecutters for Tend Wounds

---------

Co-authored-by: Nidvex250 <66303093+Nidvex250@users.noreply.github.com>
2024-03-20 06:33:21 -04:00
SkyratBot
2c7ac253b5 [MIRROR] Getting shrunk makes your voice small (#26916)
* Getting shrunk makes your voice small (#82025)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/66640614/83822a60-1324-45f2-9893-4a1628484d03)

![image](https://github.com/tgstation/tgstation/assets/66640614/9c22a846-d1b7-4b78-b773-cbfc1686528f)

![image](https://github.com/tgstation/tgstation/assets/66640614/84779e0c-02d8-4d0c-bbeb-c5bd176c4b6d)

![image](https://github.com/tgstation/tgstation/assets/66640614/90e76a29-8e8b-4a9e-86c5-3183fe8b60ee)

## Why It's Good For The Game
I think it's funny. Plus I like what helium introduced with the small
text, and wanted to add it to more places.

## Changelog
🆑 Tattle
add: Getting shrunk makes you talk small
/🆑

---------

Co-authored-by: tattle <article.disaster@ gmail.com>

* Getting shrunk makes your voice small

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
2024-03-16 17:17:18 -04:00
Waterpig
d5b55eb158 Removes TRAIT_NUMBED, using TRAIT_ANALGESIA instead (#26885)
* Goodbye my sweet prince

* Mood
2024-03-16 08:20:44 -04:00
SkyratBot
928da8b5a5 [MIRROR] Photocopier butt sprites refactor (#26715)
Photocopier butt sprites refactor

Co-authored-by: vinylspiders <13398309+vinylspiders@users.noreply.github.com>
2024-03-13 04:07:36 +01:00
SkyratBot
f8b87b994b [MIRROR] Overlay Lighting Color/Intensity Pass (#26825)
Overlay Lighting Color/Intensity Pass

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-03-11 22:26:46 -04:00
SkyratBot
251266d183 [MIRROR] Fixes missing args in a few procs registered to COMSIG_LIVING_ELECTROCUTE_ACT (#26755)
* Fixes missing args in a few procs registered to COMSIG_LIVING_ELECTROCUTE_ACT (#81807)

## About The Pull Request

That's it really.

![image](https://github.com/tgstation/tgstation/assets/13398309/08bd4dd7-b5e7-4c22-91b7-1dadf5776508)

It's supposed to have a `shock_source` arg, but 2/3 of the procs that
are registered to this signal don't include that in their args list.

## Why It's Good For The Game

Out of order positional args = bad.

## Changelog

Nothing player facing (probably)

* Fixes missing args in a few procs registered to COMSIG_LIVING_ELECTROCUTE_ACT

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-03-05 17:40:07 -05:00
SkyratBot
03a625a2b6 [MIRROR] Adds notification when toggling hud implant (#26698)
* Adds notification when toggling hud implant (#81740)

## About The Pull Request
Does what it says on the tin. When you toggle a hud implant on/off,
you'll get a balloon notification telling you if it was
enabled/disabled.

Fixes #81654
## Why It's Good For The Game
Good for implants where it might not be immediately obvious whether
they're on or off, like the diagnostic HUD.
## Changelog
🆑
qol: HUD implants will now notify you when toggled on or off
/🆑

* Adds notification when toggling hud implant

---------

Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
2024-02-29 23:25:21 +01:00
SkyratBot
2859e5161b [MIRROR] Smart monkeys now punch instead of bite (#26659)
* Smart monkeys now punch instead of bite (#81607)

## About The Pull Request

Split this off from https://github.com/tgstation/tgstation/pull/81598 in
hopes to keep it as atomic as I can.

Brought to you by the same guy that made monkeys able to do human things
if they were clever in https://github.com/tgstation/tgstation/pull/70331
you now also punch people if you are an intelligent monkey instead of
biting them, because you're now too civilized for such savagery.

I also replaced a PASSTABLE with PASSMOB because while it doesn't have
any in-game effects currently, it made no sense to check if a mob can
pass through a table to know if they should be knocking a mob over.

## Why It's Good For The Game

You're an intelligent being now, and you should be acting as such,
punching instead of biting sounded like an obvious addition to me but it
seems like it got left out and I didn't notice that until now.

## Changelog

🆑
qol: Intelligent monkeys now punch people instead of biting them.
/🆑

* Smart monkeys now punch instead of bite

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-26 23:12:41 -05:00
SkyratBot
11ecffbf8d [MIRROR] bodytypes to do with body shape and sprite handling have their own var (#26627)
* digi-cybernetics

* bodytypes to do with body shape and sprite handling have their own var

---------

Co-authored-by: Kromatopzia <94389683+aKromatopzia@users.noreply.github.com>
Co-authored-by: vinylspiders <13398309+vinylspiders@users.noreply.github.com>
2024-02-27 01:59:23 +01:00
SkyratBot
290a97d05e [MIRROR] You can do more things while floored (#26643)
* You can do more things while floored (#81641)

## About The Pull Request

While on the floor, you can:
- Use the UIs of Atmos machinery (except thermomachine and bluespace gas
vendor), Holopads, Crayons (spray cans too), radios, and Disposal bins
- Close extinguisher cabinets with Right-Click
- Click and drag yourself onto a photocopier to climb onto it.

I also changed all instances of ``ui_status`` to have all the args it's
being passed, I was messing with it a bit but it's gonna be for a later
PR.

## Why It's Good For The Game

It's an extra layer of harmless realism, also nice QoL for people who do
not have functional legs and do not have a wheelchair.

## Changelog

🆑
qol: You can use atmos machines, holopads, crayons, spray cans, and
disposal bins while floored.
fix: You can close extinguisher cabinets while floored.
fix: You can climb onto a photocopier from the floor.
/🆑

* You can do more things while floored

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-26 21:32:59 +01:00
SkyratBot
c2754d77ba [MIRROR] Footprint Sprites are BASED (on shoes and legs) (#26607)
* Footprint Sprites are BASED (on shoes and legs)

* Update code/modules/mob/living/carbon/human/human.dm

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2024-02-26 21:13:38 +01:00
SkyratBot
cdca625516 [MIRROR] Painkillers now actually induce analgesic effects (#26504)
* 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>
2024-02-22 15:20:05 -05:00
SkyratBot
88ea23ee6e [MIRROR] Removes holographic monkey species (#26605)
Removes holographic monkey species

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-22 16:56:54 +01:00
SkyratBot
e095703ae1 [MIRROR] Lizard spines no longer "float" on characters without lizard tails. [MDB IGNORE] (#25768)
* 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>
2024-02-22 00:32:17 +01:00
SkyratBot
6323c0acda [MIRROR] Half fixes organ blood dna not updating (#26590)
* Half fixes organ blood dna not updating (#81584)

## About The Pull Request

Organs have this mechanic where they store the first mob who owned it's
DNA

Anyways it was broken from the organ nullspace refactor because they
intended a block of code that shouldn't have been indented

But this only *half* fixes the issue, you see a problem here?

![image](https://github.com/tgstation/tgstation/assets/51863163/886dd926-3242-4305-825b-a715d6848281)

Yeah there's an order of operation thing going on here because you get
your organs before you get your species bloodtype
This only affects species with weird blood types (like lizards)
I'm not fixing it in this PR because it was certainly broken before and
needs a bit more unwinding somewhere

## Changelog

🆑 Melbert
fix: Organs have the blood DNA of their owns on them again
/🆑

* Half fixes organ blood dna not updating

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-02-21 19:46:58 +01:00
SkyratBot
56f02d7e30 [MIRROR] Cardboard cutouts are now tactical. (#26545)
* Cardboard cutouts are now tactical. (#81245)

## About The Pull Request
Basically, this means players holding cardboard cutouts will now assume
their appearance, just like for potted plants. Good for pranking.

I've had to tweak the tactical component and the waddling element a bit
to get them to work as intended while dealing with the multiple sources
of the waddling element.

## Why It's Good For The Game
![](https://media1.tenor.com/m/X1GimXmuByYAAAAd/tom-cruise-doorbell.gif)

## Changelog

🆑
add: Players holding cardboard cutouts will now assume their appearance,
just like for potted plants.
/🆑

* Cardboard cutouts are now tactical.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-02-17 13:25:03 -05:00
SkyratBot
46dde042c0 [MIRROR] Fixes various bloodied hand overlay related issues (#26486)
* Fixes various bloodied hand overlay related issues (#81430)

## About The Pull Request

Fixes #76900
I made it so bloodied hands use two separate overlays instead of jankily
swapping which icon is applied to the one overlay, because it was
literally never clearing the individual hand overlays, which is what
caused the linked issue

I also fixed your hands appearing bloodied when holding bloodied gloves,
this was caused by a _one character incorrect negation_
I remember this bug having been around for a long while I have no idea
how no one else has fixed this by now

Oh and also I think the overlays have never correctly updated when
removing or attaching limbs? Baffling, honestly.
## Why It's Good For The Game
Bugs are bad and these ones in particular were making me mad.
## Changelog
🆑
fix: Getting blood on your hand when you only have one no longer makes
your hands visually permanently bloody
fix: Holding bloodied gloves no longer makes your hands look bloody,
bloodied gloves now look bloody when worn, and damaged gloves now look
damaged when worn
fix: Gaining or losing an arm now correctly updates your hand overlays
/🆑

* Fixes various bloodied hand overlay related issues

---------

Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
2024-02-12 19:04:20 -05:00
SkyratBot
4f53ec2660 [MIRROR] Fixes complex lights not handling moving well, renames lighting defines (#26484)
* Fixes complex lights not handling moving well, renames lighting defines (#81423)

## About The Pull Request

[Fixes static lights not
moving](ffef43c05a)

Worked fine when the owner moved, but if the owner was inside something
else, it would try and trigger an update on the PARENT's lights, which
are obviously not us.

[Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they
do](de73a63bd4)

People keep trying to change the lighting system of lamps and it makes
me mad.
I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a
better name for turf matrix lighting. Suggestions welcome

## Why It's Good For The Game

Closes #80005
Hopefully improves understanding of lighting at a glance
## Changelog
🆑
fix: Fixes fancy lights not updating their source location when picked
up and moved
/🆑

* Oh well

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-12 22:25:22 +00:00
SkyratBot
a98266bdb1 [MIRROR] Removes the adapted flashlight (#26483)
* Removes the adapted flashlight (#81426)

## About The Pull Request

It doesn't need to exist, I killed see_in_dark so we can always see shit
emissives.

## Why It's Good For The Game

Cleaner code

* Removes the adapted flashlight

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-02-12 16:10:40 -05:00
SkyratBot
b0e1bd111b [MIRROR] Fix Lipoplasty not existing (#26465)
* Fix Lipoplasty not existing (#81397)

## About The Pull Request

Fixes #81395

Boo-womp, as they say.

![image](https://github.com/tgstation/tgstation/assets/51863163/531a1ffa-dfaf-4e0a-b8b7-ec9414514350)

## Changelog

🆑 Melbert
fix: Lipoplasty is An Option again
/🆑

* Fix Lipoplasty not existing

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-02-11 10:57:22 -05:00
SkyratBot
bca65962e5 [MIRROR] You can now move and talk through statues and mannequins (#26414)
You can now move and talk through statues and mannequins (#81188)

## About The Pull Request

I recently played a game where I rotated my skeleton model while
rotating my own character at the same time and it being in sync gave me
the realization on how cool it would be if the Coroner was able to
simply control the skeleton body.

I find skeleton displays very funny and I want to see more funny things
happen with them, so I thought this would be a good place to start, with
the benefits that it also works on mannequins and statues too so they
aren't left out.

Basically, while it is unanchored, if you have a statue/mannequin
grabbed, it will change its direction as you do, and speak the same
words you do. Your own messages can only be heard if the person is
directly next to you, revealing that it was you talking through it all
along.

I was originally gonna add this to the simple rotation component but
moved off when I decided to add talking through it, I left in the code
improvements I made to the component though since it is one of the
oldest components and hasn't been touched in a while.

Video demonstration (before I added the person also talking, just ignore
that missing)

https://github.com/tgstation/tgstation/assets/53777086/27242fc3-9649-418d-95cb-b31619319e97

While fixing the Toilet bong's rotation stuff I noticed a lot of it
wasn't up to proper code standards so I went over it and fixed issues I
had with it. It now doesn't give text saying you found something nasty
to species that still likes mice (like flypeople), and fixed its update
appearance to match the codebase standard set by the introduction of
``update_appearance`` many years ago.

## Why It's Good For The Game

It's a funny small idea I had and got inspired to add, it's a niche
mechanic that I think fits the aesthetic I am going for with Coroner and
also give a funny interaction with the human-like inanimate objects.

## Changelog

🆑
fix: Species that can eat mice don't get disgusted from seeing one in
the toilet bong.
add: Grabbing an unwrenched statue/mannequin/skeleton model will now
move its direction as you move yours, and you can talk through it.
/🆑

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-09 00:53:36 +01:00
SkyratBot
6980bfd465 [MIRROR] Fixes surgeries runtiming constantly when having the surgery initator open, fixes some surgeries missing sounds (#26411)
* Fixes surgeries runtiming constantly when having the surgery initator open, fixes some surgeries missing sounds (#81307)

## About The Pull Request

Fixes #79318

- See the issue for more information. I fixed the runtimes as expected,
and then removed `SURGERY_REQUIRE_LIMB` from some surgeries which don't
actually require a limb, such as implant removal, dissection, and living
revival. I could've easily missed some, and as a result some surgeries
are lost to the void and unselectable, but from what I could tell in
testing it seems... fine.

- Adds `SHOULD_CALL_PARENT` to surgery `can_start`. Cleans up some
surgery `can_start` overrides.

- Adds missing sounds to puncture repair surgery.

## Changelog

🆑 Melbert
fix: Fixed Puncture Repair surgery not having surgical sounds
fix: Fixed Surgery Initiator potentially showing invalid surgeries
/🆑

* Fixes surgeries runtiming constantly when having the surgery initator open, fixes some surgeries missing sounds

* Fixeed

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-08 21:54:06 +01:00
SkyratBot
0bbb8d1aca [MIRROR] [FIX] Makes Ghetto Surgery Behave In Line With Expectations (#26362)
* [FIX] Makes Ghetto Surgery Behave In Line With Expectations

* fixes

---------

Co-authored-by: Higgin <cdonny11@yahoo.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
2024-02-07 21:15:05 -05:00
SkyratBot
972e517cfe [MIRROR] Less laughing from trace nitrous (#26341)
* Less laughing from trace nitrous (#81223)

## About The Pull Request

Re-open of #80808 post embargo

I've increased the minimum amount of n2o required in the air to cause
giggling. Threshold is still well below the para and sleep values.

This should stop people randomly getting drugged and giggly from trace
amounts of gas.

I'm not gonna lie I had no idea how to fully dial this in, so the
numbers are an arbitrary ~~10x increase from .01 mol to .1 mol~~ 8x
increase from .01 mol to .08 mol.

## Why It's Good For The Game

After "extensive" real life testing I've determined that giggling and
euphoria from trace amounts of the gas is unrealistic.

Also it would be a lot less annoying. @ Cheshify also called it qol so
I'm sticking with that.

<img alt="220f1c0470cef181192facef1374bf5c"
src="https://github.com/tgstation/tgstation/assets/26744576/1f42cc27-24d0-42c1-a233-f0bae9f1aa77">

## Changelog
🆑
qol: Increased threshold of trace n2o required to make euphoria and
giggles happen.
/🆑

* Less laughing from trace nitrous

---------

Co-authored-by: Swift <jackwars4@gmail.com>
2024-02-04 08:01:05 -05:00
SkyratBot
f292feb0c8 [MIRROR] Fix robotic voicebox tongue using the wrong proc. (#26329)
* Fix robotic voicebox tongue using the wrong proc. (#81206)

## About The Pull Request

The robotic voicebox tongue had the `can_speak_language(language)` proc
set to return `TRUE` regardless, however it doesn't seem like this is
actually called on a tongue anywhere else in the code. I _believe_ this
proc is on the atom level, and isn't for the tongue itself.
I think the correct proc would be
`could_speak_language(datum/language/language_path)`. which is defined
on the tongue and most importantly actually called when checking which
language a carbon can speak.
```dm
/mob/living/carbon/could_speak_language(datum/language/language_path)
	var/obj/item/organ/internal/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE)
		// the tower of babel needs to bypass the tongue language restrictions without giving omnitongue
		return HAS_MIND_TRAIT(src, TRAIT_TOWER_OF_BABEL) || spoken_with.could_speak_language(language_path)
```
## Why It's Good For The Game

It having `can_speak_language(language)` doesn't seem to actually be
doing anything, but its presence in the first place makes me feel like
this is unintentional. This fixes that.
## Changelog
🆑
fix: Robotic voicebox actually lets you speak any language again (as
long as you know it).
/🆑

* Fix robotic voicebox tongue using the wrong proc.

---------

Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
2024-02-02 11:42:40 -06:00
SkyratBot
71598c2356 [MIRROR] Dynamic Husk Icons (#26272)
* Dynamic Husk Icons (#81080)

Husk icons are now generated dynamically by greyscaling the limbs and
applying the husk blood overlay
rather than everything using the same husk sprite

Less sprites needed, also good for nonhuman races especially those with
non-humanoid shapes
All that is needed for a husk icon now is a blood overlay instead of an
entire limb set

Human, Lizard, Moth, Monkey husks

PIC IS A BIT OUTDATED, THE BLOOD IN PIC IS DARKER THAN HUSK BLOOD
(fixed) AND IT DOESNT "FIT" TO LIMB SPRITE (fixed)
![Screenshot 2024-01-24
025229](https://github.com/tgstation/tgstation/assets/46101244/12dfc3bc-9983-4dbc-8ace-a7130bb4a4e7)

🆑
refactor: Husk icons are now dynamically generated. See if you can
identify what species it was!
/🆑

* Design datum time cleanup (#81133)

Fast little PR, with the autolathe and design datum time changes, I saw
that we didn't have design datums moved over to using time defines
uniformly, and in a few cases the times were using material quantity
defines (oops!), so I've quickly moved those over to using our correct
time defines as guided by common sense.

Cleans up the code for this section going forward so that when everyone
copypastes a new design datum for the next feature at least we're using
consistent and correct standards.

No player facing changes.

* Hmmm

* uh oh not yet

* Yo, this should do the trick.

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-01-29 23:56:56 +01:00
SkyratBot
0068ddcabe [MIRROR] Fixes bad register signal call in silverscale statue action (#26251)
* Fixes bad register signal call in silverscale statue action (#81102)

## About The Pull Request

This is supposed to be an unregister not a register with no proc,
surprised we don't have a stack trace or something for calling Register
with no proc

* Fixes bad register signal call in silverscale statue action

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-01-25 23:10:36 -05:00
SkyratBot
0109138754 [MIRROR] Fixes runtime when mineral scanning (#26226)
* Fixes runtime when mineral scanning (#81049)

## About The Pull Request
Fixes this

![Screenshot
(384)](https://github.com/tgstation/tgstation/assets/110812394/2ec17f1d-e69b-400a-a8ab-47c205af56ed)

## Changelog
🆑
fix: fixes runtime when mineral scanning, passes right argument for
scanner in golem eyes
/🆑

* Fixes runtime when mineral scanning

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2024-01-25 09:32:36 -05:00
SkyratBot
b8313673d1 [MIRROR] Fix sepsis burns disabling the limb forever until brain surgery (#26219)
* Fix sepsis burns disabling the limb forever until brain surgery (#81055)

## About The Pull Request

- Having a fully sepsis burn wound no longer disables that slot until
brain surgery. Replacing the limb restores use to the slot.
- I thought this was intentional by use of a brain trauma rather than
using `disabling` but I asked ryll and they said it was not intentional.
So.
- Also fixes losing control of a limb saying "human right arm" rather
than "right arm".

## Changelog

🆑 Melbert
fix: Replacing a limb fully claimed by an infested burn wound now
properly grants you control of the limb back
fix: Losing control of a limb now sounds less weird in chat
/🆑

* Fix sepsis burns disabling the limb forever until brain surgery

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-01-25 09:28:20 -05:00
SkyratBot
5543a44882 [MIRROR] ArcMining Pr Beta: Version 1.2 (#26205)
ArcMining Pr Beta: Version 1.2 (#78524)

This one's not like the last one, so much so that I'm not even going to
outsource the PR description to a robot this time!
Basically, **You should read the PR body before assuming that everything
is the same as last time. It's not.**

Click the link below to see a video summary of the main features of this
pull request.
https://youtu.be/Aho2omR0mjY?feature=shared

This pull request serves as a large rework of minerals produced by
mining, and by extension mining itself. I'll try and list each change
and it's associated nuance here.

The biggest addition to the game with ArcMining is **Ore Vents**. Ore
vents spawn as a ruin on the map, placing a randomized ore vent onto map
generation. Ore vents spawn in 3 different sizes, **Small, Medium, and
Large**. These vents will pick from a pool of materials they can
generate, and will hang out across the map. A player can use a mining
scanner to discover an ore vent, granting a small quantity of **mining
points** to begin with. Once scanned, ore vents will show what minerals
that ore vent will generate after they're fully tapped.

Scanning the vent again will trigger the extraction process. A small
drone will fly down, called the NODE drone, and buckle onto the vent.
Your job during wave defense is to protect the drone and to defeat waves
of randomly spawning mobs (dependent on if you're on lavaland or on
icebox). The quantity, duration, and time between waves is scaled to the
size of the vent you're protecting. Starting by scanning and protecting
lower tier vents earlier in the shift is a safer bet than doing a large
vent in the first few minutes. The drone has 500 health, and can take a
good few hits, but leaving it alone will cause it to meet an unfortunate
end quite quickly.

Cooperation can be your best asset, as mining with allies can greatly
help with wave defense, and mineral points are granted to anyone who
helps with defending the ore vent equally (So 500 * size tier,
regardless of how much help you receive). Once complete, the ore vent
will have a mining machine constructed on top of it, and will start to
dredge up **Boulders** from the earth automatically. More on boulders
later.

Ore vents can be located based on your mining scanner, and will provide
an appropriate audio cue based on if the ore vent has been discovered or
not, and once processed will no longer alert you to it's presence.

**Each station comes with a free vent that produces exclusively iron and
glass, free of charge.** This is to help with shifts where the station
may not have shaft miners to produce minerals, and to provide the
station with a baseline amount of minerals where none may exist
otherwise.

Mineral generation has been completely reworked. Previously, Mineral
Generation had a flat 13% spawn rate in-game. Once minerals spawned,
they would also have a chance to propagate their minerals to nearby
tiles, resulting in a rather massive pool of minerals that could spawn
throughout lavaland on the whole.

This tweaks that, by making minerals in walls spawn based on their
proximity to ore vents on maps that use cave generation. Both the
probability, and quantity of ores spawning in walls is scaled based on
distance, with ore vents looking like large caches of ores found in
walls. This makes following ores found in walls and checking their
quantity of minerals spawned a good indicator of how close you are to a
nearby vent in-round.

This means you can collect some points form both discovering ore vents
first, as well as collecting their surrounding ores, turn those in for
mining points, and then trading them in for gear upgrades to more
effectively take on ore vents. As a result of tweaking the balance of
this, the total amount of ores spawned in walls overall has been
decreased. However, by making more of the process time based, we still
result in a mostly balanced finished product.

On station, there are now three new machines. These are the BRM, the
Refinery, and the Smelter.

- The BRM acts as a teleporter. Instead of needing to carry boulders
back to the station, you can activate the BRM, and it will automatically
pick boulders to teleport back to itself. You can use this to teleport
boulders dredged up from lavaland onto the station for processing. **The
BRM will only lock on to boulders that are resting on an ore vent.**
Moving boulders back by hand will mean you'll have to haul it back by
hand.
- The refinery processes the non-metallic materials out of boulders.
This process sends the materials straight to the ORM, and collects
mining points from the ores smelted in the machine. Swiping with an ID
card lets you withdraw those points for your own personal account, but
remember that these points are for your whole team to share from. The
**Mining points obtained from this process is only 75% of the amount an
equivalent amount of ores would provide.**
- The smelter works nearly identically, however the smelter produces
metallic materials out of boulders instead.
- Once a boulder has had all of it's materials extracted, it's broken
down and deleted from the line. Otherwise, the boulder is spat out for
the next machine to process it (either the refinery or smelter).
- Once there's no minerals left in a boulder of any type, the refinery
or smelter will break the boulder down.
- Boulders **do not stack onto tiles with each other**, so they'll block
each other when pulled or when moving on a conveyor belt.

Boulders can also be processed by hand. Using a mining tool on a boulder
with right click will allow you to break down a boulder into it's
composite ores, but limits you to a maximum of 10 ore per boulder, where
the full amount can be extracted using the proper processing machines.
Also, processing by hand does deal small amounts of stamina damage over
time, do breaking a full large boulder can be particularly taxing.

Additional Boulder Processing Machines can be built, with the BRM board
being obtained from the Protolathe, while the Smelter and Refinery
boards being obtainable from the Autolathe instead. A _boulder
processing beacon_ can also be obtained from the mining points vendor as
a reward to assist with boulder processing. Boulder processing beacons
can be used to spawn in a new BRM, refinery, and smelter on the tile the
user is standing on, however **you'll still need to link them to the
ORM**!

All three machines can be upgraded with Stock Parts, allowing for **more
boulders to be processed at a time**. It does not, however, increase the
amount of minerals received from boulders, or points earned.

Mining borgs have been given some minor adjustments to compensate for
the changes to mining. Their mineral scanner, which now has an active
component to gameplay, is now a module as opposed to built into the mob.
This module allows for the same ability to discover and start waves of
monsters to fight.

Mining modules will find that their PKA now has a total of 90% mod
capacity as compared to the 80% they had before, to allow for more
robust defense of ore vents.

In addition, all borgs and AIs can interact with the BRM for boulder
collection.

Mining Mechs have had their utility tweaked as a result of these changes
as well. Mineral scanners to be used on mining mechs now have a larger
radius by comparison to their handheld cousins. Similarly, it now has an
active scanning button, which will actively discovery nearby ore vents.
To begin wave defense, you will need to hop out and scan a second time
however, so that you can properly accept the risks of drawing a horde of
bloodthirsty wildlife towards you and your companions.

Mechs can also manually process boulders, similar to mining tools using
their drill.

Golems, being more gentle and less aggressive than humans, while being
made out of LITERAL ROCKS, have a greater need to secure access to ores
and minerals to eat. As such, they have adapted to be able to do two new
things:

- Golems may now right click ore vents to be able to manually haul a
boulder out of the vent. This costs a hefty amount of stamina, but it
allows for golems to avoid combat during regular gameplay.
- Golems may now left click a boulder with an open hand in order to
manually process a boulder like a pickaxe. While not faster, it is
consistent and prevents golems from starving if they have access to a
vent, but no ores, somehow.

The labor camp, being a camp for rehabilitation and ~~excessive manual
labor~~ has been tweaked. Boulders now replace the random minerals
located on their island, and to acquire their prizes inside, much be
excavated and then broken out of the rock. Now YOU TOO can excavate
minerals and become a true mineral hero by working your way to freedom.

As a result of fewer mining points being available across the map due to
the new ore spawning mechanics, and the shift in how and when ores will
be coming in, almost every progress based mining point cost has been
reduced by around 10-20%. Many numbers are still subject to change at
present, but the idea is that core progress unlocks should be made a bit
more available earlier in the round before players can start to solo or
duo larger or more difficult ore vents, after which they'll be rolling
in ores.

Every once in awhile, an unusual boulder will get hauled up from the
mineral rich depths of lavaland. These **Artifact boulders** can
occasionally produce rare items, but for now they've mostly just been
pulling up **Strange objects** for science. Nanotrasen Natural Sciences
department will reward you extra points to be collected by boulder
processing machines for successfully extracting one. In the future, this
opens up a passive reward space that mining can reward to the station,
like providing cytology DNA samples, ancient seeds, or other artifacts.

- Boulders can be stored in all varieties of ore boxes (ground, mech)
should you choose, however as mentioned it's best to leave them where
they spawn and teleport them to the station for convenience.
- Maps that are not subject to cave generation will find that they are
largely untouched in terms of mineral balance.
- Future or existing ruins can now be tweaked to have a mineral balance
cost, as the ore vent ruin does. This will allow us to spawn in more
interesting ruins for pre-made combat challenges.
- There are unique ore vents that spawn across the map, that will summon
a boss mob relevant to that map. If the boss mob is defeated, that vent
will spawn large boulders pulling from every possible ore type that can
spawn. Not for the faint of heart!
- Similarly, the number of ore vents and mineral budget is now
adjustable in the cave generation procs, so maps may spawn with more or
less ore vents as desired for balance.
- Artifact boulders opens up a LOT of room for possible future content
like archaeology, xenoarch, artisci, and other design spaces!
- Megafauna STILL SPAWN ON THE MAP. They just happen to spawn in
addition to boss ore vents.
- **I'll add more to this as I get asked questions and remember things,
this is a huge PR and I'm confident I've missed at least something**

I outlined a lot of this in #78040, so I'll try and keep this relatively
snappy this time, while noting that I've made some concessions to make
the whole system a lot more playable while not trying to break out
design decisions that are at the end of the day, better for the game and
the overall resource balance in round.

Minerals are a very poorly balanced system, and have been since their
inception many years ago. We heavily rely on mineral balance in round,
and yet we've really only balanced it by introducing so much supply that
there's no equivalent exchange for materials that doesn't just heavily
flood the exchanged material. For example, items printed from materials
that are otherwise considered "rare" on master exist in such quantities
and they'll never practically run out in our allotted 90 minute time
slot design. This PR adjusts how ores spawn to a point where we can
minimize the amount of ores that need to exist on the map for mining to
be able to progress, while still providing enough resources for the
station that it covers the needs of the station adequately.

Miners will need to be more strategic about what resources they've
collected, and be able to make decisions about which vents are worth the
risk of attempting to fight, how to prepare for a wave defense, and when
to head back up for upgrades, while finally giving them at least some
kind of incentive to work together and use different equipment.
Resonators make cleaning up the caves around vent easy, sandbags set up
easy defenses for your vent, mechs can serve as a wider range radar
while mining, all while still providing a new gameplay loop to mining.

By limiting the amount of ores that can enter the round from the
massive, massive amounts that were coming into the round beforehand (see

gameplay to the processing of minerals. I have some plans for that,
however this PR already got bloated really REALLY badly due to scope
creep and the number of intersecting systems that rammed into each other
to make this PR possible. So that'll be next. Plus, as I've mentioned,
we open up places for ore processing to find fossils, relics, and other
things that can implemented down the line.

Overall, I don't expect this PR to save or kill ore balance, but we gain
a LOT more control over it through the use of our mining defines
attached to this PR, and at the end of the day, that's a great place to
start off of.

🆑
add: Added ore vents. Scanning them with mining scanners shows what
minerals they contain. Scan again to fight off a horde of beasts as your
drone assistant excavates the vent, so the ore vent will produce mineral
boulders!
bal: Ores that spawn in walls now spawn based on their proximity to ore
vents, with their chance to spawn and their minerals contained scaling
from low to high.
add: Added the BRM, Refinery, and Smelter. These pieces of equipment are
used to process ore boulders into minerals for the station. Stock Part
upgrades allow more boulders to be processed at one time. They collect
mining points as well, to be redeemed with an ID card swipe.
add: Boulders are teleported to the station via the BRM if left
untouched. Boulders can also be cracked open for a reduced amount of ore
using pickaxes or golems hands.
add: All stations come equipt with a pre-excavated ore vent, which
produces a basic supply of iron and glass only. Scan other vents for
your critical resources!
add: Look there's a shit ton of changes on mining, for more detail check
out the Pull Request: https://github.com/tgstation/tgstation/pull/78524.
sound: New sounds and noises for your high octane factorio-like
gameplay!
image: All new boulder sprites for the new minerals and rocks added to
the mining gameplay loop, as well as mining machines!
image: Overlays appear over vents when scanned to let you know their
contents at a glance when actively scanned with any mining scanners.
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-22 01:33:55 +01:00
SkyratBot
156b3a91ce [MIRROR] Fix arm implant hotkeys no longer working after changing species/limbs (#26200)
* Fix arm implant hotkeys no longer working after changing species/limbs (#81020)

## About The Pull Request

Currently, if your arm gets changed for any reason (through surgery or
by changing species), it breaks the Z hotkey for activating the toolset
implant in said arm until you take the implant out and put it back in.
This fixes that.

Somewhat of a port of
https://github.com/BeeStation/BeeStation-Hornet/pull/9167

## Why It's Good For The Game

This is clearly unintended behavior, which is bad, bugs are bad.

## Testing Evidence.

https://github.com/tgstation/tgstation/assets/65794972/b5e1e690-ef11-4db6-81ab-85571f83d178

## Changelog
🆑
fix: Tool arm implant hotkeys will properly work even after you change
your arm/species now.
/🆑

* Fix arm implant hotkeys no longer working after changing species/limbs

---------

Co-authored-by: Lucy <lucy@absolucy.moe>
2024-01-21 14:59:44 +00:00
SkyratBot
d6fa7e4fb3 [MIRROR] Borgs now use the hug module to substitute for their hands, making some surgeries possible again (#26195)
* Borgs now use the hug module to substitute for their hands, making some surgeries possible again (#81003)

## About The Pull Request

Borgs now use the hug module to substitute for their hands. This allows
them to actually finish some surgeries, like the stomach pump, which
would have them forcing the person to puke indefinetely.

closes: #48941

## Why It's Good For The Game
Hugging -> Hands. It makes sense. Perhaps not entirely intuitive but
also easy to remember once you get into it.

You can actually do AND mend this surgery.

![image](https://github.com/tgstation/tgstation/assets/49160555/b419025f-5daf-44b2-828a-c0a14d430d06)

## Changelog
🆑
fix: Borgs now use the hug module to substitute for hands, allowing them
to finish previously unfinishable surgeries
/🆑

* Borgs now use the hug module to substitute for their hands, making some surgeries possible again

---------

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
2024-01-20 17:47:51 -05:00
SkyratBot
1a3902910c [MIRROR] dismember calls drop_limb with dismembered = TRUE (#26188)
* `dismember` calls `drop_limb` with `dismembered = TRUE` (#81010)

## About The Pull Request

Pass `dismembered = TRUE` when calling `drop_limb` from `dismember`.

At a glance I don't think anything actually checked `dismembered`,
making this do (practically) nothing,
however I was writing some code that actually relied on checking this
only to find it was always passed as `null`.

I also audited some signal usages of dismember / drop limb to make sure
they're correct.

## Changelog

I don't think this will affect anything at current.

* `dismember` calls `drop_limb` with `dismembered = TRUE`

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-01-20 23:39:19 +01:00
Gandalf
3f55068ac7 CI Fix (#26177)
Removes timeout_mod arg from add_mood_effect (#80964)

## About The Pull Request

Partial Revert of https://github.com/tgstation/tgstation/pull/80800

Assuming every num passed in the parameters of `add_mood_effect` is a
`timeout_mod` is incorrect, because there can be mood events that take a
numeric arg which is not meant to be multiplied against the timeout.

This leads to the same issue as multiplying it with strings essentially
(in one case, shown below, this results in a negative duration of a
timer).


![image](https://github.com/tgstation/tgstation/assets/13398309/f8af858f-04ef-4144-9a0b-2fae60b71272)


![Code_ZN176cpMqA](https://github.com/tgstation/tgstation/assets/13398309/a6ec7689-0171-4909-91cb-a17b56454eb6)

Plus having a keyword arg that may or may not actually be what the
keyword arg claims to be is really confusing and bad.

Instead here's what I propose: passing in an instantiated mood datum
itself, which has been modified, and copying the timeout from it before
discarding it.

It is not as clean as I'd prefer either, but at least it's logically
sound and the intent is clear, and it's the best I can think of short of
a major refactor of the entire system for this one small thing which is
only being used by food quality.


![image](https://github.com/tgstation/tgstation/assets/13398309/8560c066-bb0b-4066-af94-372d5ea62679)

## Why It's Good For The Game

Clearer, less smelly code.

## Changelog

🆑
code: removed the timeout_mod arg from add_mood_event, which was only
used for one thing and causes more issues than it's worth
/🆑

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-01-19 14:02:59 +00:00
SkyratBot
0d0c901be2 [MIRROR] Disarm refactor, plus shoving people with shields [MDB IGNORE] (#26144)
* Disarm refactor, plus shoving people with shields

* wew

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-01-19 01:58:37 +00:00
SkyratBot
536e1e48cd [MIRROR] fixes a bunch of moodlets potentially lasting forever (less band-aidy) [MDB IGNORE] (#26124)
* fixes a bunch of moodlets potentially lasting forever (less band-aidy) (#80800)

## About The Pull Request
In a previous PR (https://github.com/tgstation/tgstation/pull/79661), I
noted that a lot of moodlets tended to have their timeouts break because
it was passing their names and whatnot as a parameter, that gets fed
into the timeout modifier parameter, causing the timeout multiplier to
break, because BYOND type-agnosticism means that it can multiply a
number (timeout_mod) by text (a name or some other object), resulting in
0 - which makes a moodlet permanent. This is probably not intended.

This fixes that in two ways:
- Adding a `1` to potentially applicable moodlets (searched for with a
regex of `.add_mood_event(.*, .*,)`) just to make sure the timeout
doesn't get multiplied out weirdly.
- Making the add_mood_event thing CRASH() if the timeout_mod is bad.

If someone else wants to come up with a solution better than this,
please do.

## Why It's Good For The Game
Maybe having your arm permanently fall asleep after getting it
reattached sucks, moodlet-wise. (Being stuck with permanent
positive/negative moodlets is probably not intended.)

## Changelog

🆑
fix: Moodlets with parameters/effects e.g. limb reattachment moodlets
should probably disappear more appropriately.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>

* fixes a bunch of moodlets potentially lasting forever (less band-aidy)

* wew

---------

Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-01-18 16:28:41 +00:00
SkyratBot
ec41354ea1 [MIRROR] Fixes assorted head harddels, removes specific organ vars in head [MDB IGNORE] (#26133)
* Fixes assorted head harddels, removes specific organ vars in head (#80950)

Fixes #80926, fixes #80372

The tongue, eyes, ears and brain vars were also being updated and
cleared elsewhere, runtiming whenever a regular head got dismembered and
then emptied, which would eventually cause a harddel due to improper
clean-up

I've fixed the errant proc and just removed those vars because I don't
like having duplicate references for no reason (they should always
already be in contents)

Not player facing

* Fixes assorted head harddels, removes specific organ vars in head

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2024-01-16 21:54:33 -05:00
SkyratBot
12330c7ca3 [MIRROR] Fixing a runtime with H.A.R.S. [MDB IGNORE] (#26027)
* Fixing a runtime with H.A.R.S. (#80772)

## About The Pull Request
The brain gets moved into the chest with H.A.R.S. now, but the bodypart
insertion and removal procs for it still asume it can only be found in
the head. This should fix it. For the sake of preventing similar issues
in the future, I've also updated the pretty-much-identical versions for
ears, eyes and tongue.

I've checked, and the brain var is only used by the head for visuals and
examine strings.

* Fixing a runtime with H.A.R.S.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-07 02:45:12 -05:00
SkyratBot
d9b8bb50f5 [MIRROR] Fixes morgue trays husking corpses, caps freezing burn damage [MDB IGNORE] (#26022)
* Fixes morgue trays husking corpses, caps freezing burn damage (#80811)

## About The Pull Request

Adds a limit to burn damage that can be caused by freezing temperatures.

## Why It's Good For The Game

Fixes https://github.com/tgstation/tgstation/issues/80302

## Changelog

🆑 LT3
fix: Morgue trays and freezing temperatures will no longer husk bodies
fix: Organs outside bodies will properly receive cold damage
/🆑

* Fixes morgue trays husking corpses, caps freezing burn damage

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2024-01-06 16:09:00 -05:00
SkyratBot
8705e531e1 [MIRROR] Replace natural beheading with cranial fissures (splitting your skull) [MDB IGNORE] (#26020)
* Replace natural beheading with cranial fissures (splitting your skull) (#80703)

## About The Pull Request

Replaces natural beheading (doing a lot of damage to the head) with
cranial fissures, which split your skull in half.

![dreamseeker_2023-12-31T19-38-16](https://github.com/tgstation/tgstation/assets/35135081/f84dc479-6156-45b7-bb23-4e4ec7378f6b)

While you have this wound, your eyes can be pulled out of your head with
bare hands, and slipping will spill your brain out of your head.

Removes beheading objective from traitor.

Zombies can be beheaded all the same.

Any other way of beheading, such as surgery or amputation shears, is
still possible.

Closes #80439

## Why It's Good For The Game

I've enjoyed seeing the results of the test merge to remove natural
beheading. At 947 beheadings in a week, 1 in every 7 deaths resulted in
a beheading. This makes it significantly easier to remove people from
rounds as the brain is generally critical to actually reviving someone.
While round removal is fine, it should be something that is
intentionally performed with enough effort. Mass round removals ought to
require a significant amount of effort. There are plenty of ways to
round remove someone, but it ought not be an incidental choice.

The effects of beheading removal have shown some interesting anecdotal
highlights (nothing here is backed up with stats, so take it with a
grain of salt):
1. As a whole, people did not really replace it with anything. The
biggest alternative has been lighting people on fire, but this has not
been done at a significant enough scale at all to be a noteworthy
problem, and is still fixable with enough effort.
2. Cult and rev rounds have played out far more interestingly. In one
round I was adminning a head of staff who intended to behead every
revolutionary they saw, but because they didn't, the back and forth
continues. I've also had opportunities to revive head revs that I am
skeptical would've been available to me otherwise.

Complete removal of beheading was not chosen as it does not feel right
for a repeated fire axe to the head to do basically nothing. The current
implementation is intended to be something that is just not useful
enough to do on everyone you see, but is still appreciably an effect.

## Changelog
🆑
balance: Instead of too much damage to the head beheading someone, it
will now split their skull in half. While their skull is open, you can
rip out their eyes with your hands. and they will spill their brain out
of their head if they slip.
balance: The Path of Blades ascension will accept either a beheaded
person, or someone with their skull split open.
del: Removed the beheading objectives from traitor.
/🆑

* Replace natural beheading with cranial fissures (splitting your skull)

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2024-01-06 14:30:08 +00:00
SkyratBot
3b0dab8866 [MIRROR] Logging for amputation shears [MDB IGNORE] (#25988)
* Logging for amputation shears (#80732)

## About The Pull Request
Amputation shear amputation is now logged in the game log
## Why It's Good For The Game
Allows admins to easier see who and what was amputated
closes/resolves https://github.com/tgstation/tgstation/issues/80687
## Changelog
🆑
admin: Amputation Shear amputation is now logged
/🆑

* Logging for amputation shears

---------

Co-authored-by: Rex9001 <120136161+Rex9001@users.noreply.github.com>
2024-01-04 19:31:15 +00:00
SkyratBot
ee0c2343ef [MIRROR] Remove eye surgery fluff line [MDB IGNORE] (#25867)
* Remove eye surgery fluff line (#80565)

## About The Pull Request
Removes a side effect in can_start which MUST be pure. This causes the
surgery tgui to spam this message. It's pointless because you can't do
the surgery to begin with if this returns false, so you only ever see
this where you shouldn't.

## Changelog

🆑
fix: Fixed the surgery menu spamming chat messages when on the eyes
section of a player with no eyes.
/🆑

* Remove eye surgery fluff line

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-26 18:26:59 +00:00
SkyratBot
e04066299c [MIRROR] Fix heartbeat continuing for a while on revival [MDB IGNORE] (#25862)
* Fix heartbeat continuing for a while on revival (#80561)

## About The Pull Request

- If you are defibbed (into hard crit), your heartbeat will be
`BEAT_FAST`
- If you are healed fast enough from hard crit, such that you do not
life tick while in soft crit, you skip `BEAT_SLOW`
- If you skip `BEAT_SLOW`, it never stops the heartbeat

This PR fixes this issue by checking `if not in crit, and heartbeat
sound is playing -> stop sound`.

## Changelog

🆑 Melbert
fix: Fixed some occasions in which heartbeat SFX will continue on
revival for longer than expected
/🆑

* Fix heartbeat continuing for a while on revival

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-12-25 21:52:14 -05:00
SkyratBot
67436cd148 [MIRROR] More optimizations for reagent code [MDB IGNORE] (#25830)
* More optimizations for reagent code (#80529)

## About The Pull Request

1. Removed offsetting reagent volumes by the quantization/rounding
constants before comparing values. Not required since the final total
volume is rounded inside the reagent holder anyway.
2. Removed excessive calls to the hottest proc in reagent code i.e.
`update_total()` per reaction step. Speeds up reactions even more.
3. Removed rounding of volumes (like in liver, pyrotechnics, overheated
reactions) where the volume is already rounded inside the holder.
4. Avoid calling `handle_reactions()` if the holder is already reacting
when adding new reagents.

## Changelog
🆑
code: removed excess calls to `update_total()` making reaction code
slightly faster.
code: removed excessive use of chemical constants (quantisation &
rounding constants) in places where they were not needed i.e. plumbing
buffer, reaction chamber, pyrotechnics & the liver.
/🆑

* More optimizations for reagent code

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-12-24 23:20:50 +00:00
SkyratBot
b79167c173 [MIRROR] Organ movement refactor *Un-nullspaces your organs* [MDB IGNORE] (#25530)
* Organ movement refactor *Un-nullspaces your organs*

* Fix conflicts

I checked the conflicts on the two weird conflicts and no previous TG pr touches them i assume its just github being github because those shoulden't be conflicts *shrug

* Fix #1 uhh...this is going to be a long one

* Fix #2 Modular Movement Flags

* Fix #3 It builds now

* Fix #4 Oh god it builds now, I missed some things

* Fix #5 No more Runtimesplosion Now time for Synths

* Update nightmare_organs.dm

* on_mob_insert

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/25664

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/25685

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/25582

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/25686

* bro the fucking brain does not go into the chest.

* seriously? undocumented code causing shit. if it breaks ghouls, so be it.

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 19:06:09 +00:00
nikothedude
0fb7dd449a [NON-MODULAR] Fixes unspillable organs spilling on disembowel (#25754)
adwawd
2023-12-20 19:09:22 -05:00
SkyratBot
37b467c0f8 [MIRROR] Fixes runtime from cyber implants [MDB IGNORE] (#25724)
* Fixes runtime from cyber implants (#80429)

## About The Pull Request

Adds an unregister signal that was missing
## Why It's Good For The Game

Runtimes from changing implant bad.
## Changelog
🆑
fix: Fixes runtime from augments not unregistering a signal.
/🆑

* Fixes runtime from cyber implants

---------

Co-authored-by: Diamond_ <novadiamonddigger@gmail.com>
2023-12-19 07:26:04 -05:00
SkyratBot
0782e2e481 [MIRROR] Refactors reviver code [MDB IGNORE] (#25691)
* Refactors reviver code (#80386)

## About The Pull Request

Cleans up reviver code to overall make it simpler and properly implement
the cooldown that it said it had in the code but never really had.
Additionally, stops the reviver trying to revive someone that isn't in a
revivable state, which fixes
https://github.com/tgstation/tgstation/issues/80371. Wasn't sure how
long to make the delay but I figured just a 5 second delay after the
first heal proc should be fine. About the same as what the original
cooldown was from being paired to the heal proc's second iteration.
## Why It's Good For The Game

Changes variables and checks used by the reviver to make sure it
functions properly with the cooldown that seemed to be intended in the
code. Additionally, prevents the reviver from infinitely defibbing a
non-revivable corpse.
## Changelog
🆑
fix: Reviver no longer attempts to revive impossible to defib mobs.
refactor: Cleaned up unnecessary variables and re-arraigned code to have
it perform altogether in one tick. Additionally added a proper cooldown
to revivers.
/🆑

* Refactors reviver code

---------

Co-authored-by: Diamond_ <novadiamonddigger@gmail.com>
2023-12-17 16:46:06 -05:00