Commit Graph

17304 Commits

Author SHA1 Message Date
L0pz
5ba0361d7d Battery acid pie (#81663)
## About The Pull Request

I added a battery acid pie you make with 2 batteries and one plain pie


![image](https://github.com/tgstation/tgstation/assets/55806451/f7d4ed6f-9d71-46ea-ac62-0035c28612d7)


## Why It's Good For The Game

The game had a very noticeable and substantial lack of battery acid pies
(plus I wanted there to be more dishes for ethereals)

edit: sorry I couldn't figure out how to add labels

## Changelog
🆑 
add: Added the battery acid pie
/🆑
2024-02-26 18:46:50 +01:00
TJatPBnJ
8ddb0fdc0c Power crepes are now finger food (#81599)
## About The Pull Request
Power crepes are now finger food, meaning you can eat them while
walking. I think this makes sense because the power crepe is massive
enough to just take a bite out of while you walk.
## Why It's Good For The Game
Power crepes are a very expensive food item, the should at least be easy
to eat.
## Changelog
🆑
balance: Power crepes are now finger food
/🆑
2024-02-26 18:39:04 +01:00
John Willard
aace5f46f4 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.
/🆑
2024-02-26 18:34:20 +01:00
ArcaneMusic
69138fb204 Logs holochip credits worth zero or less credits and prevents them from spawning. (#81605) 2024-02-26 04:46:26 -07:00
Cheshify
218b823cf8 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.
/🆑
2024-02-24 21:40:13 -08:00
Echriser
4abc8240e3 Fixes feeding through masks using spoons and ladles (#81633) 2024-02-23 15:18:18 -07:00
ArcaneMusic
161b96c99d Fixes mining cyborg ore scanner shutting off when stored. (#81604) 2024-02-23 09:44:57 -07:00
Bloop
4431166cf1 Adds loot blacklist, creates a maintenance spawner with decals blacklisted (#81611) 2024-02-23 09:30:17 -07:00
MrMelbert
f7a9ca8706 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)
/🆑
2024-02-23 00:02:07 +01:00
13spacemen
ed6fced9b0 Footprint Sprites are BASED (on shoes and legs) (#81588)
Footprint sprites no longer have to be the same "shoe" sprite, they are
now based on what shoes you're wearing and what legs you have
They are also renamed, i.e., if they're paws, they're called pawprints
and not footprints
Shoes have priority over legs
I have changed monkey legs to have paw footprints

Code is from https://github.com/DaedalusDock/daedalusdock/pull/813,
except I renamed some defines and vars and tweaked it a bit

A future use for this is, adding human FOOT (not shoe) print sprites, so
people without shoes would make actual FEET print sprites
I didn't do this cuz I can't sprite, but it's possible now
Also didn't do this cuz I'd like to replace the existing footprints with
the more grimy Baystation footprints, they look much better, but that's
for a separate PR

Any lizard superfans could also sprite something for lizards, the
possibilities are endless
2024-02-22 18:04:08 +00:00
John Willard
efdbd2af89 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>
2024-02-21 20:22:56 -07:00
MrMelbert
961482c6bd 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>
2024-02-21 20:19:20 -07:00
Ghom
eab332e07e [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.
/🆑
2024-02-20 19:30:06 +00:00
Ghom
a4cedb2dbe 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.
/🆑
2024-02-19 15:51:32 +01:00
SyncIt21
2b9a65ac88 BBQ ribs can be grilled & adds qdel checks for grills (#81536)
## About The Pull Request
- Fixes #81511. BBQ ribs can be grilled again and takes anywhere between
30 to 40 seconds to get proper grilled ribs or turn into a mouldy mess.
20 seconds would only yield lightly grilled ribs and that's not good.
- Grill checks if the item got deleted to avoid runtimes. Also cook time
is set based on the individual items type & not a constant of 20 seconds

## Changelog
🆑
fix: Grill checks if the item got deleted to avoid runtimes. Also cook
time is set based on the individual items type & not a constant of 20
seconds
fix: BBQ ribs can be grilled on a grill but now takes anywhere between
30 to 40 seconds to get proper smoked ribs and not lightly smoked ribs
or turn into a mouldy mess on a girddle. Delicious.
/🆑

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2024-02-18 08:16:25 +01:00
lessthanthree
909a1a692a 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
/🆑
2024-02-18 02:52:36 +00:00
SyncIt21
df2ce692ee 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>
2024-02-18 03:40:57 +01:00
kawaiinick
0370acbd38 [NO GBP]removes double parent call from my last pr (#81515)
## About The Pull Request

i accidently put two parent calls in #81472

🆑
code: changed some code
/🆑
2024-02-17 21:37:07 +01:00
Ghom
7e8328c0d2 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.
/🆑
2024-02-17 17:17:18 +00:00
John Willard
6892d895c6 Adds a proper skeletal rack subtype (#81484)
## About The Pull Request

This is mapped in a few places and I thought it would be better to have
a subtype of rack to use rather than varediting the icon and state.

## Why It's Good For The Game

The less varedited icons the better imo, it's way easier to ensure icons
aren't fucked up this way and easier to fix too.

## Changelog

No player-facing changes.
2024-02-17 16:42:30 +00:00
John Willard
8d14688256 Fixes some issues with paper planes (#81453)
## About The Pull Request

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.

## Why It's Good For The Game

None of this is player-facing but it's updating some rather old code to
more modern code standards.

## Changelog

Nothing player-facing.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-02-17 17:41:10 +01:00
jimmyl
1cba47ef06 unstashable assembly bombs (#81197)
## About The Pull Request
assembly bombs are bulky
(the like ones you make with a tank and an igniter and some other thing)

## Why It's Good For The Game

these things can (and usually do) gib people, are REALLY easy to
massproduce and you can also fit several in a bag
while still easier to use to gib people than TTVs

at best i think making them bulky should prevent some dude from carrying
like 8 bombs in his backpack and whipping them out and throwing without
any warning because they would have to carry it (or invest in BoH but
thats sci anyway so)

## Changelog
🆑
balance: assemblybombs are bulky
/🆑

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2024-02-16 20:19:26 +00:00
kawaiinick
7391eed603 You can now carry survival and combat knives in your teeth (#81472)
## About The Pull Request

You can now carry combat or survival knife in your mouth, to look like a
pirate or a comando or a moron

![image](https://github.com/tgstation/tgstation/assets/104280915/54ce4243-1e65-489d-99f5-7db8e62f6cee)
It has 20% chance of cutting you when you pull them out, and clumsy
people have 20% chance to accidently swallow the knife and choke when
putting it in a mask slot

## Why It's Good For The Game
Upgrades the coolness of the game


## Changelog
🆑
add: Your mouth now fits combat or survival knives(it's totally safe)
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-02-16 19:22:40 +00:00
13spacemen
25909dc932 remove plasmaman check in survival boxes (#81493)
## About The Pull Request
it's already done in wardrobe_removal() there is no need for this check
## Changelog
🆑
code: removed redundant check for plasmamen in survival box code
/🆑
2024-02-16 19:57:59 +01:00
Sylphet
311da1348e Fixes Cargo Lockbox Iconstates (#81481)
## About The Pull Request

The cargo lockboxes didn't update iconstates when locked. Seems like an
oversight given that their parent object does this and there's unused
sprites for this behaviour in this item, so this enables it to use those
sprites that are already in code.

## Why It's Good For The Game

It's hard to know if someone has taken their items or not because an
unlocked case looks identical to a locked one. Also fixes an oversight
idk.

## Changelog
🆑
fix: cargo lockboxes update iconstates correctly now
/🆑
2024-02-16 16:07:11 +01:00
Ghom
16009a3ccf [MDB Ignore] Converts random bedsheets to spawners + 3 bedsheets I made long time ago. (#81435) 2024-02-16 01:46:29 -07:00
WinterDarkraven
b98edb898e Stun Baton Eyecandy | Glows and Sparks (#81449)
## About The Pull Request
Adds a soft glow and sparks to the stun baton and stun prod. Video
below:

https://github.com/tgstation/tgstation/assets/70779744/468351ef-0574-46b9-8d32-58cf40651f3a
## Why It's Good For The Game

![metro-cop](https://github.com/tgstation/tgstation/assets/70779744/63b53d1f-6489-49b2-8c91-1e6faaa8370e)

Looks cool.
## Changelog
🆑
add: In an attempt to stop the greytide, NanoTrasen has increased
security's baton energy output. This has, through testing, done nothing
but make the device spark more than it used to.
/🆑
2024-02-15 19:53:13 +01:00
John Willard
d604a87b06 Revenants no longer make noise walking into gibs (#81420)
## About The Pull Request

Turns the hardcoded sound that plays when you walk into some gibs into
an Element and adds a check for flying to avoid playing the sound,
fixing Revenants, Holoparasites, and other mobs that fly from making
noise when "walking" into a pool of blood.

## Why It's Good For The Game

I was observing a revenant and heard them making noise from walking over
blood, thought it was kinda f*cked up

## Changelog

🆑
fix: Revenants (and other flying mobs) will not make noise when walking
into pools of gibs,
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-02-13 17:07:16 +01:00
Rhials
f808758707 Mapload anomalies are no longer orbit points-of-interest (#81431)
## About The Pull Request

Mapped-in anomalies no longer register as points-of-interest in the
orbit menu. This is primarily for the hollow anomalies from the anomaly
research ruin. Player-stabilized anomalies, and regular event anomalies,
will still show up here.
## Why It's Good For The Game

These damn things take up over half the misc tab. Less clutter in the
orbit menu.


![image](https://github.com/tgstation/tgstation/assets/28870487/099cda4d-42e2-478d-ac21-fe0ec7a21e60)
## Changelog
🆑 Rhials
qol: Map hazard anomalies are no longer treated as points-of-interest in
the orbit menu.
/🆑
2024-02-12 21:59:42 +01:00
LemonInTheDark
70651816c2 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
/🆑
2024-02-12 20:50:20 +01:00
LemonInTheDark
2adf2d3631 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
2024-02-12 14:56:18 +01:00
NeonNik2245
6eb041c6b6 New masks (#81217)
## About The Pull Request
Adds 3 new masks:
* Kitsune mask
* Facescarf
* Rebellion mask
All masks (and facescarf) are recolorable. And also thanks to Kovac for
the scarf sprites
## Why It's Good For The Game
Cool masks for make character style more unique. All are recolourable.

![2024-01-28_12-20-48](https://github.com/tgstation/tgstation/assets/106491639/49b532f7-ccfe-4556-a54f-a4884a9fda77)

## Changelog
🆑
add: 3 new masks for your characters (thanks to Kovac for the scarf
sprites)
/🆑

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2024-02-12 00:53:40 +01:00
Xander3359
19b2ffd2d3 Contractor loadout adjustment + Price tweak (#81293)
## About The Pull Request
Removes RNG items from the possible pool of items that gets given to
contractors when they buy their kit.
Contract kit:

![image](https://github.com/tgstation/tgstation/assets/66163761/d6009273-6ede-44b4-a2a4-6db4c9030400)
## Why It's Good For The Game

![image](https://github.com/tgstation/tgstation/assets/66163761/ac08bfe9-4186-4e8e-a15b-0077d1e7433f)

![image](https://github.com/tgstation/tgstation/assets/66163761/a1d19780-9a97-407e-af75-842548cd7010)

The idea is that contractors should have the things they need in order
to begin contracting in the first place.
They are given thermals + SyndEye to find targets.
Modsuit/Contractor Suit/Chameleon mask+jumpsuit to conceal/disguise
their identity.
Their Jammer + Baton in order to pull off successful abductions without
getting dogpiled by the entire station.

In their current state, contractors are too weak, when at the end of the
day, the most harm they are doing is temporarily removing a crew member
for like 5 minutes. They should have a bit more power now in order to
have a bit more impact into the round.
## Changelog
🆑
balance: Contractor kit no longer gets RNG items, it's a specific pool
now
/🆑
2024-02-11 15:30:59 +01:00
MrMelbert
2c8207e322 Fixes funky closet type (#81389)
## About The Pull Request

`secure/closet` -> `secure_closet`.

Changes nothing besides making the mapped in closet use the right name. 

## Changelog

🆑 Melbert
fix: Lavaland Beech Bartender's clothing storage is named the right
thing now
/🆑
2024-02-11 14:56:53 +01:00
LemonInTheDark
a15979a3ba Yeets CONSIG_ORGAN_WAG_TAIL (#81400)
## About The Pull Request

It was dumb. LITERALLY just a proc.

So let's replace it with a proc then, as a helper at least. I'll take
this chance to disambiguate tail code to make it a bit less messy, and
hand back usable args in case we want to react to our change in tail
status

## Why It's Good For The Game

Code's less shit (slightly)
2024-02-11 14:56:13 +01:00
SyncIt21
4495ea2e4d Refactors how machines are deconstructed (#81291)
## About The Pull Request
This refactors how machines are deconstructed in the following ways

- You can no longer override `obj/machinery/deconstruct()`. If you want
customized behaviour then override `on_deconstruction()` instead.

This comes with the added benifit of no longer needing to check for the
`NO_DECONSTRUCTION` flag because the machine base proc does that for us
& if it finds that flag it won't proceed to call `on_deconstruction()`
meaning no machine will have a chance to spawn anything which is the
current behaviour.

This is required to make #81290 work for all machines at least so that
machine can send the `COMSIG_OBJ_DECONSTRUCT` signal without subtypes
overriding & forgetting to call the parent proc

- `dump_contents()` only gets called when the machine is deconstructed
not destroyed thus not leaving behind any of its contents inside. Fixes
https://github.com/tgstation/tgstation/pull/81290#issuecomment-1925752583

## Changelog
🆑
fix: machines that should not drop contents when deleted no longer do.
refactor: refactors how machines are deconstructed. report bugs on
github.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-02-11 14:52:19 +01:00
jimmyl
fbe6e2ebba museum away mission (#81208)
## About The Pull Request

adds a new gateway map, the Nanotrasen Museum it is filled with
""""Mannequins"""" and Common Core lore
im not putting the preview here because you really should explore it
yourself but if youre that curious i think the Checks tab in mapdiffbot
would have it
this gateway map contains no combat unless you count falling into chasms
because you did not carry a light
or going into the boarded room with no loot or any incentive with
obvious signs that there is the sole enemy on the map in there
the loot is the lore ok thanks

also makes mines detonate if theyre detonated by a non-mob im pretty
sure this couldnt have been intentional
trams stop chasms
and also the relevant items

<details>
  <summary>on second thought if you want spoilers check this</summary>


![image](https://github.com/tgstation/tgstation/assets/70376633/41ab2db1-55ce-4371-8594-a1d8961c37c3)

</details>

## Why It's Good For The Game

more gateway maps = good

## Changelog
🆑
add: nanotrasen museum gateway map
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-02-11 03:17:55 +01:00
Rhials
94f5221af4 Fixes the energy cake slice's on-eat effect triggering before it is eaten (#81382)
## About The Pull Request

This makes the energy cake deal its damage/effects AFTER being fed,
instead of before.

It also adds combat logging to force-fed energy cakes, just in case.

Also, this adds a balloon alert to the pacifist check. Cool!
## Why It's Good For The Game

Fixes a wacky combat bug, and adds some minor adjustments made along the
way.

Closes #81351.
## Changelog
🆑 Rhials
fix: The Energy Cake slice now does its on-eat effect AFTER being eaten,
instead of before.
/🆑
2024-02-11 00:03:14 +00:00
Higgin
9825f0e392 [FIX] Makes Deathtrap Recycler Movable (#81282)
## About The Pull Request

Fixes #81205 
~~Adds a new flag for letting you move otherwise un-deconstructable
objects and making deconstructable objects immovable with a wrench.~~
~~Adds that flag onto the ORM.~~
makes ~~ORM un-unwrenchable,~~ deathtrap recycler unwrenchable.

## Why It's Good For The Game

seems like an oversight on the recycler that unnecessarily limited
gimmicks, ~~and one of the long-running peeves with something like the
ORM has been how damn easy it is to walk up to it, unwrench it, and walk
into cargo through the windoor mapped for mineral storage access (which
basically everyone has.) This makes it so if you'd otherwise do that,
now you at least need to either deconstruct or destroy the ORM first (or
just take another less obvious way in.) Always seemed like an oversight
but can atomize it if wanted.~~ atomized out, will ask around before
putting back up

## Changelog

🆑
fix: deathtrap recycler can now be moved.
refactor: moved check for NO_DECONSTRUCTION flag to be inside
can_be_unfasten_wrench, allowing us to set specific machines to be
movable but not deconstructable.
/🆑
2024-02-11 00:47:26 +01:00
MrMelbert
06a4d47945 Freedom implant and Biodegrade works on knotted shoes (#81376)
## About The Pull Request

- Freedom Implant will un-knot knotted shoes. 
- Biodegrade will melt knotted shoes. 

## Why It's Good For The Game

Just a niche interaction idea I had. Knotted shoes are, obviously,
obstructing your movement so these two tools that aim to un-obstruct
your movement should do something about it, right?

Also it would be funny to see a Ling melt their own shoes. Biodegrade
prioritizes handcuffs over anything else so it shouldn't be of great
concern.

## Changelog

🆑 Melbert
add: Freedom Implants and Biodegrade can you free you of the shackles of
knotted shoes.
/🆑
2024-02-11 00:36:53 +01:00
Nick
815c7913d7 Adds fire ants as a chem (#81214)
## About The Pull Request
Adds fire ants as a chem. They work pretty much exactly the same as
normal ants, but they deal roughly 2x damage. Also mildly cleans up
whatever ant code I touched
## Why It's Good For The Game
Doesn't really make sense that when you scoop up an anthill of fire
ants, you get a beaker full of normal ants. It's honestly an injustice.
Also, new flavours for the bartender and chef to work with are always
nice.
## Changelog
🆑
add: Fire ants can now be scooped up and used as a chem like normal
space ants
/🆑

---------

Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>
2024-02-11 00:34:48 +01:00
John Willard
fdcd4d3979 Adds a signal to buying items from the uplink (& fixes TC misinfo) (#81372)
## About The Pull Request

Adds a signal when someone buys an item from the uplink and removes
single-letter vars from the ``spawn_item`` proc, and adds/standardizes
add/removing of telecrystals from uplinks (and admin setting how much TC
they have) to ensure the UI always has the right amount of telecrystals
displayed in it.

## Why It's Good For The Game

There are reasons why someone would want to hook up to a traitor's
uplink and listen to items they purchase to do any special effect
on-purchase, so this adds support to do anything in the future with it.
Also tells players how much TC they actually have without forcing them
to close/reopen the UI every time they insert some TC in it by hand.

## Changelog

🆑
fix: Uplinks now update their UI when you add telecrystals in them, so
you don't need to close and reopen it.
/🆑
2024-02-10 18:57:19 +01:00
larentoun
f6f8720594 [Fix] Visually closing fakewalls when in fact they shouldn't be closed (#81353)
## About The Pull Request

Moves update_appearance() proc further after checking if it can be
closed.

It was possible to stand inside an open falsewall, try to close it only
for it to "close" visually and don't change any properties.

## Why It's Good For The Game

Less bugs is good. No more fake-closed falsewalls.

## Changelog

🆑
fix: Now falsewalls visually don't close when they shouldn't.
/🆑
2024-02-08 22:41:50 -07:00
lessthanthree
55ba5842c2 Health analyzer displays blood alcohol content (#81306)
## About The Pull Request

Health analyzer includes a blood alcohol content if the scanned target
is inebriated.

## Why It's Good For The Game

It's useful to know, sometimes their blood is filtered, stomach pumped,
but this effect will still be in action.

## Changelog

🆑 LT3
qol: Health analyzer will now display blood alcohol content
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-02-08 22:40:43 -07:00
John Willard
1389351ef9 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.
/🆑
2024-02-08 14:19:31 +01:00
SyncIt21
e4b23f2b4b General maintenance for Lathes (#81244)
## About The Pull Request
1. **Qol Stuff**
- Screentips & examines for screwdriver, crowbar acts, multiool &
wirecutter Also for Alt click
- Techfabs can now also use the Mouse drag functionality to set drop
target for items
- Lathe printing animation now plays on loop instead of just flicking
once till printing is finished for more visual feedback

2. **Code Improvements**
- Merged `start_making()` with `do_make_item()`. That proc was like only
3 lines long and used only in 1 place so let's just move that code to
`ui_act()`
- Merged `user_print_item_id()` with `ui_act()`. Again was used only in
1 place so let's just move that code in to save some proc overhead
- Sets `processing_flags` for autolathe to `NONE` cause we don't use
`process()`
    - Autodocs vars such as `hacked` , `shocked` etc & procs
- `maxmult` is now computed client side saving backend bandwidth,
`construction_time` is removed from lathes which did not use it
- Removed all usages of lathe taxes and their related vars, removed
engineering lathe no tax from ice moon, replaced with normal engineering
lathe

3. **Fixes**
- Lathe sheet insertion animations are now linked & work again for all
material types inserted via remote silo/local storage,
silver/titanium/plastic all play the same animation(that is
`protolathe_shiny` overlay). Other materials have their own respective
overlays
- Fixes #81243. Calling `update_static_data_for_all_viewers()` is too
expensive for the UI. We should instead use `SStgui.update_uis(src)`
which will report the `busy` status to the UI more immediatly
- Fixes #81236. Some problems with the params passed to the timer
callback. It should now print the correct number of requested items
- Fixes #81192. `design.materials` would runtime for custom material
items as they were list of texts not materials. We have to pass our
manually parsed list of materials for an specific item to ensure they
are set & used correctly. Same fixes apply for techfabs as well


## Changelog
🆑
qol: adds screentips & examines for screwdriver & crowbar acts & alt
click.
qol: techfabs can now use the mouse drop functionality to set drop
target.
qol: lathe printing animation plays on loop while printing rather than
flicking once for more visual feedback
fix: lathe sheet insertion animations are now linked & work again for
all material types inserted via remote silo/local storage
fix: printing custom materials items from autolathe works again.
fix: printing multiple items from lathes will actually print that
correct quantity of items requested.
fix: printing items the 2nd time around from lathes won't cause the UI
to reload each time.
code: autodoc for some vars & procs, merges procs.
refactor: Optimized code for autolathe & techfabs in general. Report
bugs on github
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-02-08 13:34:03 +01:00
oranges
46d6daf524 Fix set_light colour parameters for ethereal disco ball (#81326)
🆑 optimumtact, whomst didn't write this CL entry.
fix: Fixed the colorful lights of the ethereal disco ball.
/🆑
2024-02-08 00:51:50 +01:00
jimmyl
528eaf3c84 toilet bong altclick sanity (#81263)
## About The Pull Request
i still dont know what they meant by sanity checks but this should be it

## Why It's Good For The Game

bug or something bad

## Changelog
🆑
fix: you may no longer altclick unanchored toiletbongs from any range in
any condition to rotate them
/🆑
2024-02-07 05:25:48 +01:00
ArcaneMusic
ed31397cc4 Fixes ore vents spawning without ores on icebox, sets up map specific ore configurations (#81103)
## About The Pull Request

In short, we used a static list previously within the ore_generation
subsystem that held the amount of each ore that we expected a single map
to uniformly need. We held this number constant, since we were spawning
15 vents per map.

**Pros:** This worked flawlessly for Lavaland since 15 vents on a single
Z level makes it pretty densely packed map with a good amount of
map-based ore spawns, and it worked consistently.

**Cons:** 15 vents did not work well on Icebox however, even when split
so that the majority of the ores were spawning on the lower levels,
players did not feel like icebox spawned nearly enough ores and reported
the map spawning empty.

**Result:** As a result, we adjusted the ratio, so that we spawned
vastly more ores on the lower levels, now up to 4 vents on the upper
level, and 21 vents on the lower level. However, as we were still using
the ore distribution list based on lavaland, icebox vents were quickly
running out of ores to distribute between them, resulting in empty vents
-> which produced empty boulders -> which not only don't really let you
process them properly, but also just result in a metric ton of runtimes.

Icebox now has it's own list of ore distributions. These distributions
are now moved to a set of global lists as opposed to being saved on the
subsystem as a static list, which will make going and setting up new ore
distribution lists very very easy. Additionally, we've moved the setting
and getting of those ore_distributions over to the seedRuins proc, so
that we're actually setting the list of ores right before we actually
place them to make sure that the order that it's set is roughly as it's
needed, while still setting the list at the same time the
map-appropriate ruin placements are dropped in.

**Plus some misc cleanup fixes:**
`var/list/ore_vent_sizes` in SSore_generation wasn't being treated as a
similar budget list as `ore_vent_minerals`, since it `pick()`s off it's
own static size list. Which is honestly fine for this five seconds, I
can handle that later while we make sure the rest of the code code is
stable. In the meantime, I've just tweak it so that it's easy to see at
a glance how many of each random vent has spawned into the map.

Tweaked the description to not include anything about chemical
processing, as I'm planning on hitting on that in a part 2 PR that I'll
be picking back up after the freeze.

## Why It's Good For The Game

Cleans up the code a bit, but primarily fixes ores not spawning on
icebox as they should.
Should fix #81058.
Improves description to not mention mechanics that aren't in game.
Also, cleans up a piece of code that currently isn't serving much of a
purpose.

## Changelog

🆑
fix: Icebox should have it's ore distribution and it's ore vents fixed,
so that vents should now produce ore.
spellcheck: Boulder processing machines now don't mention things they
don't do.
/🆑
2024-02-07 05:20:25 +01:00
Justice
f1cab538b1 The CC Commander Headset now can be set to high-volume (#81295)
## About The Pull Request
You got no idea how many times I've had to go to VV and set command=1
because the fucking Interns don't read chat.
With this PR, we no longer have to manually set that crap and can scream
into the Intern's ears in big letters with less steps.
The only outfits that use this type of headset are the CC Commander,
Special Ops Officer, Soviet Admiral, Debug Outfit, and Admin Outfit, so
I think it's cool
## Changelog
🆑
qol: You no longer need to manually set the CC Commander's Headset to
high-volume.
/🆑
2024-02-07 05:11:01 +01:00