Commit Graph

68625 Commits

Author SHA1 Message Date
SkyratBot
b89fea4d5e [MIRROR] Constructs now reuse the victim's mind instead of just moving their client (#26652)
* Constructs now reuse the victim's mind instead of just moving their client (#81665)

## About The Pull Request

This makes it so when someone becomes a construct, their _mind_ is
transferred, rather than just their ckey.

## Why It's Good For The Game

It's the same soul after all. Plus, this prevents clogging up the
roundend report.

## Testing Evidence

![2024-02-24 (1708802154) ~
dreamseeker](https://github.com/tgstation/tgstation/assets/65794972/5a33c1eb-55d4-4386-99ea-0c16f5efec3c)
![2024-02-24 (1708802162) ~
dreamseeker](https://github.com/tgstation/tgstation/assets/65794972/10429beb-4d54-4fb2-884b-42569802e0ee)
![2024-02-24 (1708802171) ~
dreamseeker](https://github.com/tgstation/tgstation/assets/65794972/967d99ac-d460-46a9-b7c9-f0c7c6c187d3)

## Changelog
🆑
qol: Constructs now reuse the victim's mind instead of just moving their
client
/🆑

* Constructs now reuse the victim's mind instead of just moving their client

---------

Co-authored-by: Lucy <lucy@absolucy.moe>
2024-02-26 21:31:04 +01:00
SkyratBot
7af3875e94 [MIRROR] [NO GBP] RCD converts miscellaneous turf to plating (#26653)
* [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>
2024-02-26 21:30:54 +01:00
SkyratBot
33b521cfaa [MIRROR] Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese (#26654)
* 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>
2024-02-26 21:30:40 +01:00
SkyratBot
3f2463e24e [MIRROR] [NO GBP] fixes item blood overlays "leaking" onto other objects (#26639)
* [NO GBP] fixes item blood overlays "leaking" onto other objects (#81662)

Looks like KEEP_TOGETHER is necessary after all

before
![Screenshot 2024-02-24
144648](https://github.com/tgstation/tgstation/assets/46101244/e973b372-8391-4678-bc26-28b9d32f05af)

after
![Screenshot 2024-02-24
144001](https://github.com/tgstation/tgstation/assets/46101244/b6c25fcd-9c7f-4f3a-8b8f-69d98b81d424)

## Changelog
🆑
fix: Blood overlays on items no longer leak onto other objects
/🆑

* [NO GBP] fixes item blood overlays "leaking" onto other objects

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
2024-02-26 21:28:24 +01:00
SkyratBot
5375020258 [MIRROR] fix mob ai using attacks while inside pokeballs (#26638)
* 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>
2024-02-26 21:28:15 +01:00
SkyratBot
9345b4076a [MIRROR] Logs holochip credits worth zero or less credits and prevents them from spawning. (#26636)
* 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>
2024-02-26 21:27:58 +01:00
SkyratBot
f3764d6b5a [MIRROR] Fixes random CI error (#26634)
* 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.

![monkeybusiness](https://github.com/tgstation/tgstation/assets/53777086/e4daea46-7eb3-4092-b452-82a85ac33c9c)

## Changelog

Nothing player facing.

* Fixes random CI error

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-26 21:27:38 +01:00
SkyratBot
6e26be94d3 [MIRROR] Alternate job titles (chef, department security) actually imprint this title onto your PDA (#26611)
* 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>
2024-02-26 21:14:20 +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
33faee17d1 [MIRROR] Fix runtime when food processor handles items without reagents (#26632)
* 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>

![image](https://github.com/tgstation/tgstation/assets/42909981/29f636f3-6509-4cf9-9093-9fcd0ea5de4f)

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

![image](https://github.com/tgstation/tgstation/assets/42909981/bd853870-64e9-4b47-aead-38e6955b7dab)

</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>
2024-02-25 17:05:55 -05:00
SkyratBot
8db0689f67 [MIRROR] fixes a two for one deal in the outfit sanity test (less runtimes) (#26631)
* fixes a two for one deal in the outfit sanity test (less runtimes) (#81645)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/70376633/ac833396-b6ee-4cbc-8226-b15e90cc3db1)
this is dumb

## Why It's Good For The Game

i think that was a bug

![image](https://github.com/tgstation/tgstation/assets/70376633/40081a6f-54e9-42ee-92be-e3349fc389ae)

## Changelog

* fixes a two for one deal in the outfit sanity test (less runtimes)

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2024-02-25 17:05:14 -05:00
SkyratBot
d6dc0192a0 [MIRROR] updates bb convert objective text (#26630)
* 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>
2024-02-25 17:04:53 -05:00
SkyratBot
a6544e4eaf [MIRROR] Fixed Typo in Mech Construction Steps (#26628)
* 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>
2024-02-25 17:04:06 -05:00
SkyratBot
3f4cdfcde0 [MIRROR] buff corporate modsuit (#26626)
* 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>
2024-02-25 17:03:10 -05:00
SkyratBot
450f542524 [MIRROR] Meatwheat Made Consistent (#26625)
* Meatwheat Made Consistent (#81639)

## About The Pull Request
Removes the GRAIN foodtype from meatwheat, it's just meat.
## Why It's Good For The Game
In the current iteration of meatwheat, it flip-flops between foodtypes
while you're preparing it.

First it's meat and wheat
![Screenshot 2024-02-22
212818](https://github.com/tgstation/tgstation/assets/73589390/3a4da0ef-9550-4551-8ec7-6057b93f4d8e)
then it's wheat
![Screenshot 2024-02-22
212854](https://github.com/tgstation/tgstation/assets/73589390/7bd07c16-503b-4ab3-8df8-6d99951c0429)
then it's meat!
![Screenshot 2024-02-22
212909](https://github.com/tgstation/tgstation/assets/73589390/0a570619-7ad4-4041-b887-8019b78a2e91)

This should JUST be meat, it's meatwheat not wheatwheat, and the
reagents don't hint towards it being wheat.
## Changelog
🆑
fix: meatwheat is now firmly made out of meat, instead of sometimes
being wheat and sometimes being meat and sometimes being both.
/🆑

* Meatwheat Made Consistent

---------

Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
2024-02-25 17:02:37 -05:00
SkyratBot
3f72a128dd [MIRROR] Fix some attack effects not playing / Fix apply_damage returning innacurate values (#26619)
* Fix some attack effects not playing / Fix `apply_damage` returning innacurate values

* Update code/modules/mob/living/damage_procs.dm

* Update code/modules/mob/living/damage_procs.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2024-02-25 17:00:34 -05:00
SkyratBot
f5fe7761f8 [MIRROR] Fixes feeding through masks using spoons and ladles (#26617)
* Fixes feeding through masks using spoons and ladles (#81633)

* Fixes feeding through masks using spoons and ladles

---------

Co-authored-by: Echriser <EthanSC2001@outlook.com>
2024-02-25 16:59:52 -05:00
SkyratBot
f05ef9688d [MIRROR] Fixes mining cyborg ore scanner shutting off when stored. (#26615)
* Fixes mining cyborg ore scanner shutting off when stored. (#81604)

* Fixes mining cyborg ore scanner shutting off when stored.

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2024-02-25 16:59:24 -05:00
SkyratBot
0fea9b1770 [MIRROR] Fixes larva examine text (#26614)
* Fixes larva examine text (#81630)

* Fixes larva examine text

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-23 21:11:17 -05:00
SkyratBot
8ea436b829 [MIRROR] Adds loot blacklist, creates a maintenance spawner with decals blacklisted (#26613)
* Adds loot blacklist, creates a maintenance spawner with decals blacklisted (#81611)

* Adds loot blacklist, creates a maintenance spawner with decals blacklisted

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-02-23 21:10:30 -05:00
SkyratBot
6aef9d5203 [MIRROR] [MDB Ignore] Converts random bedsheets to spawners + 3 bedsheets I made long time ago. (#26518)
* [MDB Ignore] Converts random bedsheets to spawners + 3 bedsheets I made long time ago. (#81435)

* Aaand modular

* wuh

* idk how I missed these

* geez

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-23 06:15:59 +01:00
SkyratBot
001a8ca439 [MIRROR] Item Blood Overlay Optimization (#26608)
* 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>
2024-02-23 05:33:20 +01:00
SkyratBot
a169fcc1d9 [MIRROR] Fixes Summon Simian spell killing you as a monkey (#26610)
* 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>
2024-02-23 05:33:04 +01:00
SkyratBot
d4bef31427 [MIRROR] Removes TRAIT_NOBREATH restriction from CPR, except from self-resp virus (#26612)
* Removes TRAIT_NOBREATH restriction from CPR, except from self-resp virus (#81522)

* Removes TRAIT_NOBREATH restriction from CPR, except from self-resp virus

---------

Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
2024-02-23 05:32:33 +01:00
SkyratBot
4dfa62aa3b [MIRROR] Fixes arcade cabinets being un-hittable (#26609)
* 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>
2024-02-23 05:29:40 +01:00
Pinta
3a039e6331 [MODULAR] Refactors Soulcatcher Souls into a Component (#24717)
* 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>
2024-02-23 05:28:27 +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
e1cddca7da [MIRROR] Make Chefs show up as service on the crew monitor (#26602)
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>
2024-02-22 18:16:40 +01:00
SkyratBot
5237f528b4 [MIRROR] Fixes CI runtime/race condition with forensics (#26606)
* 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.

![image](https://github.com/tgstation/tgstation/assets/13398309/a58be18a-21e4-40b2-92e0-1a961108c939)

## 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>
2024-02-22 16:57:08 +01: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
1523ba2828 [MIRROR] Removes some easily accessible sources of Mythril (#26600)
* 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

![image](https://github.com/tgstation/tgstation/assets/51863163/e5d3b569-4d29-4cd5-bb1e-36f94cbbea84)

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>
2024-02-22 16:55:07 +01:00
SkyratBot
677afadade [MIRROR] General maintenance for all things boulder related. (#26557)
* 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>
2024-02-22 16:54:52 +01:00
SkyratBot
6d30d35d81 [MIRROR] Removes a double space from health analyzer (#26601)
* 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>
2024-02-22 10:36:54 -05:00
SkyratBot
8f5d050bab [MIRROR] Comprehensive frame refactor to fix being unable to thwack frames with brute force to break them (#26596)
* Comprehensive frame refactor to fix being unable to thwack frames with brute force to break them (#81477)

* There we go?

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-21 20:37:28 -05: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
74661326ce [MIRROR] Fixes some issues with paper planes (#26543)
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>
2024-02-21 23:48:39 +01:00
SkyratBot
1e37ae9c01 [MIRROR] Adds an 'auto-reel' line reel to the fishing tech node. Minor gameplay changes to fishing. (#26580)
* 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>
2024-02-21 23:46:47 +01:00
SkyratBot
9d6dbe3a8f [MIRROR] Air alarms display location/trigger information (#26578)
* 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.

![image](https://github.com/tgstation/tgstation/assets/83487515/2b8bb334-e641-451b-9d6d-97e650e74032)

## 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>
2024-02-21 23:46:37 +01:00
SkyratBot
a7e75d5a43 [MIRROR] Reaction & holder tweaks (#26579)
* 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>
2024-02-21 23:46:25 +01:00
SkyratBot
5f75f23458 [MIRROR] Monster cores work while resting (#26577)
* 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>
2024-02-21 23:40:59 +01:00
SkyratBot
8bd232e966 [MIRROR] Joker wont automatically reactivate itself (#26576)
* 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>
2024-02-21 23:35:04 +01:00
SkyratBot
36f9690981 [MIRROR] [no gbp] Removes unused proc from deathmatch, deathmatch has 8 seconds delay as to not give lighting a stroke (#26573)
* [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

![image](https://github.com/tgstation/tgstation/assets/70376633/8a275232-e186-4685-ab28-94c077532870)

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>
2024-02-21 20:37:19 +01:00
SkyratBot
9d53f7ae52 [MIRROR] Adds tram throwing mobs through glass windows (#26559)
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>
2024-02-21 20:31:43 +01:00
SkyratBot
607cbb5922 [MIRROR] Adds a missing servo into the MK1 Ripley crate ordered from cargo (#26595)
* 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>
2024-02-21 19:56:00 +01:00
SkyratBot
6df629d4a1 [MIRROR] [NO GBP] fixing issues with cutouts and potted plants (#26585)
* [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>
2024-02-21 19:55:43 +01:00
SkyratBot
a231b05dc2 [MIRROR] [no gbp] marks deathmatch areas as NOTELEPORT, and abductor and event proof (#26584)
* [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>
2024-02-21 19:55:23 +01:00
SkyratBot
88101d05b3 [MIRROR] [no gbp] deathmatch does not preserve mind (but you can still return to your body) (#26583)
* [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>
2024-02-21 19:55:07 +01:00
SkyratBot
846a3566cc [MIRROR] Paintings update: Curators get a cut on patronage + zoom in/out buttons on UI (#26581)
* 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>
2024-02-21 19:52:28 +01:00
SkyratBot
66a75b191f [MIRROR] North Star QOL Updates (#26586)
* 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>
2024-02-21 19:48:45 +01:00
SkyratBot
e97f722092 [MIRROR] Fix organs being replaced when not needed (#26588)
* 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>
2024-02-21 19:47:44 +01:00