Commit Graph

2143 Commits

Author SHA1 Message Date
Ben10Omintrix
032419f30f ice demon basic mobs (#78539)
## About The Pull Request
ice demons are now basic mobs. they still have their behavior where they
can teleport around the player, run away from him and shoot him. they
now also have a new ability they will only use when they are on their
last legs, they will spawn weak and slow afterimage clones of
theirselves to attack the player. damaging these clones will also damage
the original ice demons. ice demons can also now be very easily
countered as they are very afraid of fires. they will run away from you
if they see u holding a lit torch/flare/welding tool and while running
away they will freeze the floors around them to try to slip u to stop u
from chasing them. ice demons now also get a new unique trophy! this
trophy will summon 2 friendly spirits that will help you kill ur target,
but these spirits will dissappear after a very short while.


https://github.com/tgstation/tgstation/assets/138636438/6a48fb15-f447-441a-91c6-48ca120dc22c



## Why It's Good For The Game
## Changelog
🆑
refactor: ice demons have been refactored into basic mbos. please report
any bugs
add: ice demons now have a unique trophy
/🆑
2023-10-08 03:04:35 +01:00
Emmett Gaines
e8d12b29fe Removes all spawn locations of the awakened plush except the bus ruin (#78559)
It's supposed to be a coderbus easter egg, stop putting it elsewhere. I
want it to stay rare enough that it confuses people when it makes it to
the station.

The secure closet had it on the loot table and due to how that's coded
it has to have something replace the slot (or rework the loot spawning
code there) so I put a live bomb in the slot instead.

🆑 ninjanomnom
del: An easter egg plushie that was spawning where it shouldn't has been
brought back home.
add: The secure closet can now spawn live gibtonite, enjoy your free
bomb.
/🆑
2023-09-30 04:31:50 +02:00
Jacquerel
f861532d24 Basic Legion & Hivelord (#78624) 2023-09-27 18:41:07 -04:00
Sealed101
8ac9a118d0 Fulton beacons can be renamed and redeployed (#78535)
## About The Pull Request

Lets players rename a deployed fulton beacon with a pen, changing its
name/decription. Also lets players click said beacon with an empty hand
to undeploy it after a short delay, which leaves a ready-to-use fulton
core kit.

## Why It's Good For The Game

Good QoL to let players move their beacons around. Renaming them also
allows players to shorten the name of the beacon, removing guesswork
like _where the fuck is **fulton beacon (666) (Cargo Bay)**_.

## Changelog

🆑
qol: you can undeploy fulton beacons by clicking them with an empty hand
qol: you can rename fulton beacons with a pen
/🆑
2023-09-27 15:44:30 +01:00
Moose1002
8464ef9727 Fixes Multitool Buffer Clearing and Adds Multitool Linking Balloon Alerts (#78309)
## About The Pull Request
I was working on a feature that required the buffer of a multitool to be
cleared out after linking two devices, when I noticed it wasn't possible
to clear the multitool's buffer. The change to multitools in #77639 made
it impossible to set the buffer of a multitool to null without
destroying the stored object, yet many objects still tried to have the
multitool clear it's buffer after a successful linkage. This creates a
new proc, clear_buffer() dedicated just to clearing the buffer of a
multitool.

Also made all of the multitool linkage messages balloon alerts.

If there's any issues or things I can improve please let me know, I'm a
bit new to BYOND and DM but I'm working on learning so I can make some
more ambitious projects! _(I think I got the signaling right)_
## Why It's Good For The Game
Some objects aren't meant to be saved in the multitool's buffer after
the initial linking, this should fix that.
Also balloon alerts are nice.
## Changelog
🆑
fix: Nanotrasen has finally recalled their faulty multitools and
replaced them with working ones! The multitool's buffer now properly
clears itself.
qol: Moved multitool link messages to balloon alerts
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-09-18 18:18:06 +00:00
Jeremiah
ed947dbdf9 Adds withdrawal multiplier to ORM (#78404)
## About The Pull Request
Pulling an alloy stack from the ORM always counted as 1. No matter the
stack size

## Why It's Good For The Game

Sadly, no more infinite resources
2023-09-17 06:58:25 +00:00
Jacquerel
8f999ad894 Ghosts can eat ghost burgers (#78303)
## About The Pull Request

Every tick while a ghost is orbiting a ghost burger there is a 20%
chance per ghost (capping at 100% at 5 ghosts) that they will take a
bite out of the ghost burger, shrinking it and depleting its reagents
until it is completely consumed.
It leaves some ectoplasm behind which you could use to make another
burger.
Also ghost burgers can no longer decay or pick up floor germs, the
burger moves itself so this would happen reasonably often because it
doesn't stay on tables. Also: it is a ghost.

Also just before I posted this PR I noticed that "booberry muffins" also
exist so there was nothing for it but to componentise this behaviour and
attach it to both food items, so I guess admins can also make anything
with reagents edible to ghosts also.

## Why It's Good For The Game

I think the chef should be able to make food for ghosts. It's not fair
if only living people get to eat.

## Changelog

🆑
add: Ghosts (observers) can eat ghost burgers and booberry muffins.
balance: Ghost burgers will not decay or pick up germs due to the fact
that they moved themselves off a table.
/🆑
2023-09-16 19:42:18 -07:00
Hatterhat
c6ac468b90 second pass over the SC/FISHER code, incl. bitflags and PDAs (#78330)
## About The Pull Request
makes `COMSIG_HIT_BY_SABOTEUR` return a bitflag in order to close #78297
(i am very sorry)
fixes #78298
extends flashlight disabling to modular computers incl. PDAs because
somehow i forgot that they had flashlights.
## Why It's Good For The Game
my code sucks and i should make it suck less, actually

## Changelog
i don't think i get to put a code improvement tag if it's not
playerfacing and it's my own fault
🆑
fix: Flares and candles no longer sound like flashlights when being
turned on.
fix: Getting shot by an SC/FISHER now disables PDA lights for
consistency's sake.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2023-09-15 15:18:50 +02:00
Hatterhat
ac18420676 John Splintercell: a gun that is only good for shooting out lights (#78128)
## About The Pull Request
adds the SC/FISHER lightbreaker self-charging energy pistol, which does
0 damage. As a joke.

![image](https://github.com/tgstation/tgstation/assets/31829017/84603fcd-dbc3-4857-a657-98c4bd34e881)


https://github.com/tgstation/tgstation/assets/31829017/97572baa-7421-4800-a60e-2db03f4adc6d

<details><summary>actual details, in case the video wasn't good
enough:</summary>

unless you shoot at light fixtures,

![image](https://github.com/tgstation/tgstation/assets/31829017/54092fbf-cbf6-4750-b2b8-37d643efba2a)
floodlights,

![image](https://github.com/tgstation/tgstation/assets/31829017/90b19560-fa25-471b-9f6f-3147c33e5c56)
or people with flashlights/seclites (even on helmets or guns) (it still
does 0 damage, it just turns off their lights. not permanently)

![image](https://github.com/tgstation/tgstation/assets/31829017/1a83c6f9-8fff-4035-aeeb-515319a3dd40)
it also works on crusher lights. and cyborg headlights. i don't have a
screenshot for it.
doesn't work on flares though.

also it can shoot past machines and lockers

![image](https://github.com/tgstation/tgstation/assets/31829017/8fb0a213-8e4a-42cc-9daa-eae5faf6ee77)
</details>
(also adds a variable for deciding how loud a dry fire sound is, in case
you want to make your gun's empty sound be less loud.)

## Why It's Good For The Game

Adds a silly little tool for silly little men who either really hate
lightbulbs or want to recreate the experience of being John
Splintercell, the lightbulb-assasinating secret agent from Fork Echelon.

## Changelog

🆑
add: The SC/FISHER disruptor pistol, a very compact, permanently
silenced energy gun, is now stocked in Nanotrasen-accessible black
markets with a price generally somewhere between 400 and 800 credits.
Aspiring users are warned that it's really bad for trying to actually
kill people. Caveat emptor.
add: Guns now have a dry_fire_sound_volume variable, allowing for guns
to be less loud when trying to fire while empty.
fix: Closets and crates now properly count as structures for pass flags
again.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2023-09-12 14:02:10 +02:00
Ghom
2563528d89 GAGS, recolorable and actually glowing glow shoes. (#78071)
## About The Pull Request
I've converted the gags_recolorable component into an element (it has no
var of its own) and the glow shoes icons to greyscale, added emissive
icon states for the shoes, both for its own sprite or when worn, and the
ability to recolor them with a spraycan (tbh a lot of clothing should be
recolorable with a spraycan in general but that's beyond the scope of
this PR)

Oh yeah, if you examine an item with the gags_recolorable element twice,
it now tells you can use a spraycan to recolor it.

## Why It's Good For The Game
They are called glow shoes yet don't glow, and the supposed glowing
stripes only come in a single flavor of blue. Truly the definition of
lame.

Overall, it looks as goofy as ever: I didn't put much effort into the
grayscale icons beyond the necessary:

![proofthatitworks](https://github.com/tgstation/tgstation/assets/42542238/93aa7701-122d-4214-a890-7f69df3cb309)


## Changelog

🆑
image: The glow shoes from the ClothesMate now actually glow and can be
recolored, even with a spraycan.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-09-07 14:11:32 -04:00
san7890
4b8de7b79f Refactors the notransform variable into a trait. (#78146)
## About The Pull Request

Hey there,

There were more than a few times (like in cinematic code) where we might
need to accurately know the source of what's adding this trait (or have
multiple sources for the whole 'we don't want this mob to do shit while
we transform this mob'), so in order to rectify this potential issue,
let's refactor it into a trait.

## Why It's Good For The Game

Some code already declared that there might be issues with this being a
boolean var (with no way of knowing _why_ we don't want this mob to not
transform (or not do anything idk). Let's remove those comments and any
future doubt in those instances with the trait macros. Also, stuff like
`TRAIT_IMMOBILIZED` which does a similar thing in many contexts was
already a trait that was regularly added in conjunction with flipping
the variable, so we're able to flatten all that stuff into
`add_traits()` and `remove_traits()` now. nice

I also cleaned up quite a bit of code as I saw it, let me know if it
should be split out but I guarantee that if I didn't do it- no one will
for the next two years.

## Changelog

🆑
refactor: If you transform into another mob and notice bugs with
interacting with the game world, please create a bug report as this
framework was recently refactored.
/🆑

Probably fucked up somewhere, lmk

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-09-07 16:45:50 +01:00
Nerevar
c962e90ed2 Worn Shirt Resprite (& GAGS Enhancement) (#78014)
## About The Pull Request
Hi! Sheets gave me some new sprites for the worn shirt, the Ian shirt,
and the gamer shirt you can find on MetaStation. These come in three
variants.


![image](https://github.com/tgstation/tgstation/assets/12636964/0111d5a5-5c78-4f59-912b-05184e9e06df)
Clean, worn out, and messy, for varying degrees of 'washedness.'


![image](https://github.com/tgstation/tgstation/assets/12636964/d083bd00-e272-467f-8c95-60f7f0168b64)
As seen here on these mobs.

They are now also GAGS grayscaled, which means 

![image](https://github.com/tgstation/tgstation/assets/12636964/d099a459-a6cd-47d3-b5eb-915b7c5e3501)
they are highly recolorable; and look good to boot.

However, I have also elected to give them a variant for each version; a
'graphics' variant with either Ian, or Phanic the Weasel.

![image](https://github.com/tgstation/tgstation/assets/12636964/6fdb7dd8-9b04-46ab-bfc9-3711685401bd)
The gamer shirt and the Ian shirt retain their unique names and
descriptions, luckily.

Due to the Phanic shirt using an uncolorable third zone, this allows you
to make your very own Phanic OCs, seen here in the full vignette.

![image](https://github.com/tgstation/tgstation/assets/12636964/92d3f8ea-be3d-47d1-9e76-7d98dfa0b629)

## Why It's Good For The Game
Drip drip drip.

## Changelog
🆑 Sheets and Nerev4r
sprite: Complete redo of the worn shirt, Ian shirt, and gamer shirts;
now GAGS-compatible!
/🆑

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
2023-09-06 10:38:29 +12:00
Ben10Omintrix
4aa50ea5c2 minebots basic bots (#78032)
## About The Pull Request
Transforms the minebots into basic robots. You can now command these
minebots to extract minerals for you. To activate automated mining mode,
simply instruct them with the command "mine." They will then proceed to
autonomously mine walls and gather ores. If you wish to make the bot
deposit all the collected ores, use the command "drop." Alternatively,
you can leave it in collection mode, and it will gather all the ores you
mine. Additionally, the bot now responds to several more commands; you
can instruct it to follow you, toggle its lights on or off by saying
"lights." In attack mode, it refrains from mining or collecting ores but
will engage in combat alongside you. If it detects you as deceased or
unconscious, it will alert all miners, request assistance, and relay
your coordinates via the mining communication channel. to power it on u
will need to feed it any type of ore first so it may listen to ur
commands

## Why It's Good For The Game
makes the non sapiant minebots more useful

## Changelog
🆑
refactor: the minebots have been refactored please report any bugs
add: minebots can now mine walls and collect ores automatically and they
will alert everyone if they find u dead
/🆑
2023-09-04 21:37:16 -06:00
Lamb
3c0159b143 replaces surgical and coroner duffels with surgery trays and medical carts, resprites razor (#77975)
## About The Pull Request
replaces all instances of surgical duffels with surgery trays, and all
coroner duffels with morgue surgical trays.
they contain about the same items, with surgical trays/carts also having
bone gel and tape, since their list of holdable items is much more
limited.
the surgery tray is a diagetic storage unit that displays any surgery
tool it's holding in a small, almost world-state esque form on top of
it. it can be carried around by dragging it on to yourself, but it will
slow you down like an unzipped duffel would. it can also be deployed by
activating it, and pulled around, but it will roll noisily in the
process.
currently, all tool tiers are supported - from alien, to advanced, to
cruel, to normal.

![image](https://github.com/tgstation/tgstation/assets/110322848/5b31767e-de27-4352-b2bf-89cde06a7b5c)
here you can see just a few of the possible combinations of tools -
default, default morgue, advanced, and alien. but any combination of
these tools should work together somewhat cleanly, as you can see here:

![image](https://github.com/tgstation/tgstation/assets/110322848/12ae3501-44bc-41a5-b4f4-d01c05cc6038)
also adds a medical razor variant, because otherwise they wouldn't fit
with the look of the other tools on the tray, before and after here:

![image](https://github.com/tgstation/tgstation/assets/110322848/c71af9ed-e9bb-40ff-81b8-0395d8afdf5a)
## Why It's Good For The Game
having constantly visible tool storage like this means you don't have to
worry about the one tool you need from the bag being stolen - if it is,
you can see it before an operation starts, and plan around that! it also
gives a little flexibility to mappers - if they'd like a more mobile
cart for their medbay, or if they'd like the somewhat stationary tray.
it also plain looks cool, and isn't quite as clunky as a duffelbag would
be.
## Changelog
🆑
add: adds medical carts and surgery trays
image: gives the surgery razor a unique sprite
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: JohnFulpWillard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-04 00:58:11 +02:00
Sealed101
2734dbfd37 Fixes implanted legion cores being available for use when dead/unconscious (#78042)
## About The Pull Request

Ever since #70546 implanted legion cores have become available for use
when the user is unconscious/dead, which was not the case before — it
was using an organ action, which checks for `AB_CHECK_CONSCIOUS`

#### cores before #70546

475a4ab7f5/code/modules/mining/equipment/regenerative_core.dm (L23-L34)


07fbdbb4e4/code/datums/actions/items/organ_action.dm (L1-L3)

## Why It's Good For The Game

Prevents this


https://user-images.githubusercontent.com/104979184/264586219-8cab1fef-d2ea-4e1c-af43-158865b42b23.mp4

## Changelog

🆑
fix: fixed implanted legion cores being available for use when
unconscious/dead.
/🆑
2023-09-02 16:04:01 +01:00
Bloop
86f71eb6b7 Fixes a typo (#77946) 2023-08-27 11:23:57 -04:00
Nerevar
0345de3582 New Backpack Type: Messenger Bags! (#77871)
## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/12636964/4a2aa26e-8f5b-4090-b21a-d2c429df1c8d)
From downstream with love! These are mechanically identical to a normal
backpack or satchel, just with more drip.
Also a little bit of :o)

![image](https://github.com/tgstation/tgstation/assets/12636964/6671feda-f11c-4ee3-97b5-ad810b7474f5)
These will exist both in prefs and in drobes/lockers.

![image](https://github.com/tgstation/tgstation/assets/12636964/05478ad1-e7ae-4808-8c97-fdd21fc84474)
Sprites by Zydras.

## Why It's Good For The Game
We love fashion here. We love it so much. And most backpacks are too
in-your-face to fit well with a lot of 'fits.

## Changelog
🆑 Nerev4r & Zydras
image: Adds messenger bags to character setup and drobes/lockers!
/🆑

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-08-23 17:32:35 -06:00
SyncIt21
9aed3b6a8f General code maintenance for Mat container related stuff (#77671)
1. Removes `/obj/machinery/ore_silo/proc/remote_attackby()`. This proc
calls `datum/component/material_container/user_insert()` anyway which
performs all the checks necessary for inserting stuff into the ore silo
and `/obj/machinery/ore_silo/proc/remote_attackby()` was just repeating
its code & checks. So now inserting into the ore silo is directly
handled by the mat container without this proxy proc making the
operation slightly faster
2. Removed silo `attackby` code. Same operations can be done via
`screwdriver_act` & `crowbar_act` procs much cleaner
3. The ore silo now hooks onto signals
`COMSIG_MATCONTAINER_ITEM_CONSUMED` and
`COMSIG_MATCONTAINER_SHEETS_RETRIVED` and logs into silo when they are
triggered. This means when you insert/eject sheets from the silo the
connected machine performing the operation no longer has to do the
logging manually thus the proc `silo_log` has been removed from a lot of
places ,reducing overall code size
4. A lot of stuff that use materials from the ore silo follow this
pattern.

i.e. They first use the materials from the silo and then log it via
`silo_log` proc. This code pattern is repeated in a lot of places so
let's just merge these 2 lines with some extra sanity checks into a
single proc inside `remote_materials` itself. That's what was done and
the number of places where you log manually into the silo has been
removed further reducing code size everywhere.
5. Added auto doc & cleaned up some procs

Since logging is now done by the ore silo directly, we need a way to
pass the machine that is inserting items into the silo to the signal
handlers of the ore silo [via the `context` var]. So other code changes
elsewhere is because of this var
2023-08-21 22:23:01 +00:00
Timberpoes
2d4d23dbf1 Replaces the poster and graffiti objectives with assault and early steal & destroy ones. (#77029)
## About The Pull Request

With the blessings of @Watermelon914 I am removing the two objectives
for placing posters and spraying graffiti.

These old objectives are not dead. Their items have moved to the
Badassery section of the uplink.

A box of 3 demotivational posters can be bought for 1TC with 0 rep.
The spraycan can be bought for 1TC with 0 rep.

In their place comes one new objective and one extended objective.

The new objective is Assault a Crewmember. This objective requires you
to attack the specified target 2-5 times (random on objective
generation). It tallies from any attack that filters through the
`/datum/element/relay_attackers` element and has an "attacker"
associated with it.

Although it asks you not to kill the other player, it doesn't fail if
you kill them.

I have expanded the low-risk theft objectives with items like a mime
mask, lawyer badge and a fake moustache (commonly on cooks).

Finally, I've added a very low level set of steal-and-destroy objectives
aimed at some items that will require a bit of basic breaking and
entering, and the destruction of which may hurt crew morale.

```
/datum/objective_item/steal/traitor/donut_box
/datum/objective_item/steal/traitor/rpd
/datum/objective_item/steal/traitor/space_law
/datum/objective_item/steal/traitor/granted_stamp
/datum/objective_item/steal/traitor/denied_stamp
/datum/objective_item/steal/traitor/lizard_plush
/datum/objective_item/steal/traitor/moth_plush
/datum/objective_item/steal/traitor/insuls
```

This PR also fixes clown shoes missing a proc override to allow them to
actually register as a theft objective.


![image](https://github.com/tgstation/tgstation/assets/24975989/775d46cf-f40a-43e5-9bf1-3aa4a31d436e)

![image](https://github.com/tgstation/tgstation/assets/24975989/66c77815-1f2b-4dfb-99c6-b8f2e0061654)

![image](https://github.com/tgstation/tgstation/assets/24975989/85d3878a-c598-4ec0-9bb1-920380a004c6)
## Why It's Good For The Game

Basically my discussion with Watermelon focused on the idea that the
graffiti and poster objectives weren't really crimes. They baited
antagonists into very passive play early-game.

These new replacements encourage a more antagonistic playstyle. Starting
fights plus B&E are two bread-and-butter play paradigms for antaggery.

Giving a few early game theft + destroy options with a mix of impactful
items (like insuls and RPDs) versus more symbolic or emotive items
(plushies, donut boxes, Cargonia stamps) gets antagonists out and about
in the station, warming themselves up.

And having an objective to assault players (even if you don't kill them)
allows cheeky antags with a penchant for shittery to start fights with
players and start genuinely impacting the shift, involving sec and
drawing players into their antaggery.

Both of these natually ease players into the more substantive theft and
murder objectives.

The existing spray and posters are actually thematically super cool.
Traitors now have even more access to them since they can be bought for
1TC per spraycan/3-pack of posters. This lets antags with TC to spare
run gimmicks around them and adds extra fun to the Badassery section.
## Changelog
🆑
del: Traitor objectives to place posters and graffiti the station have
been removed.
add: The items associated with the poster and graffiti objectives can
now be purchased from the Badassery section of the uplink. The posters
come in a box of 3 for 1TC, and the spraycans are 1TC each.
add: Adds a new Assault traitor objective, requiring you to the attack
the target a few times without needing to kill them. Earn TC and
reputation by starting barroom fights and bait players into escalation
battles for fun and profit.
add: Expands low-risk steal objectives to include the Chef's fake
moustache, Lawyer's badge, and Mime's mask.
add: Adds brand new shift start Steal & Destroy objectives for early
breaking and entering. Smash your way into a sec checkpoint to grab a
Space Law book, engineering to grab some insulated gloves or the psych
office to kidnap their moth plush.
fix: Fixes an issue where the steal clown shoes objective would never be
valid.
/🆑
2023-08-21 13:00:19 +01:00
Fikou
b77c1c85ea MODLink System (+ NWTLMM) (#77639)
## About The Pull Request
A pact made with `@Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

![image](https://github.com/tgstation/tgstation/assets/23585223/eb387738-0839-463a-aed8-4703d139b11a)
The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em

![image](https://github.com/tgstation/tgstation/assets/23585223/5a822f9f-e823-497e-b766-40055f2fc0d6)
![image](https://github.com/tgstation/tgstation/assets/23585223/062983ee-6058-4e78-a3aa-bccda1a3e224)


## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑
2023-08-19 06:24:57 +00:00
Fikou
4c4b0e5a54 the big slappy is now immutably slow (#77655)
## About The Pull Request
the big slappy is now immutably slow, it cant be sped up by xenobio
speed potion (because of how red slime crossbreed works, you can still
avoid it with that bullshit, but at least that requires some effort for
the xenobiologist to specifically create you one)

## Why It's Good For The Game
30 force
30 block chance
double object damage
throws tha guy away
KNOCKS DOWN FOR 2 SECONDS
and then your ass can literally just walk with it for FREE if you visit
xenobio and they gloop out one potion with a slime and water (which if
xenobio is staffed at all they probably will have at the point you made
it)

![image](https://github.com/tgstation/tgstation/assets/23585223/00bba834-2944-4260-b26a-cf9608ee851d)
(also a bit sus that it was added by a xenobio powergamer but thats
beside the point)

## Changelog
🆑
balance: you cant speed up the big slappy with slime potion
/🆑
2023-08-17 03:29:19 +02:00
Andrew
2d34c7433a New Mech UI and equipment refactor (#77221)
![bWJlVIDO53](https://github.com/tgstation/tgstation/assets/3625094/d75030b5-59e9-43f6-96b4-1b7564caceef)

## About The Pull Request

Made a new UI and refactored some mech code in the process.

Fixes #66048
Fixes #77051
Fixes #65958 ??? if it was broken
Fixes #73051 - see details below
Fixes other undocumented things, see changelog.

## Why It's Good For The Game

The UI was too bulky and Mechs were too complex for no reason. 
Now they follow some general rules shared between other SS13 machinery,
and there is less magic happening under the hood.

## Detailed Changes

### New Mech UI, Air Tank and Radio as separate modules

Previous UI for comparison:

<img alt="9SScrXAOjy"
src="https://github.com/tgstation/tgstation/assets/3625094/904e3d07-e7d7-4d3a-a062-93e0e35b4b66">

Previously mechs came with radio pre-installed and air canisters
magically pre-filled with air even when you build one in fab.
Radio and Air Tanks are now both utility modules that are optional to
install. Gas RCS thrusters still require Air Tank module to operate.

This made the Mechs more barebones when built, giving you only the basic
functionality.

<img alt="5SDMlXTJxv"
src="https://github.com/tgstation/tgstation/assets/3625094/b9364230-49ac-416b-aa70-e851fbf2050e">

To compensate this change, all mechs got two extra utility module slots.

All other modules got new UI. And ore box now shows the list of ores
inside.

<img alt="SRX5FjvsHA"
src="https://github.com/tgstation/tgstation/assets/3625094/cbe2e98d-1cd4-4667-8dae-2f9227b4b265">

### Mounted Radio

Works as a normal radio, but with subspace transmission. Available from
the basic mech research node and can be printed in fab.

### Cabin Sealing

To compensate for the lack of air tank by default, mechs with enclosed
cabin (e.g. all except Ripley) got an ability to toggle cabin exposure
to the outside air. Exiting the mech makes cabin air automatically
exposed.

When you seal the cabin, it traps some of the outside air inside the
cabin and you can breathe with this air to perform a short space trips.
But the oxygen will run out quickly and CO2 will build up.

Sealing the cabin in space will make the cabin filled with vacuum, and
it will stay there until you return to air environment and unseal the
cabin, letting the breathable air to enter. There are temperature and
pressure sensors that turn yellow/red when the corresponding warning
thresholds are reached.

You could also use personal internals in combination with cabin sealing
for long space travels, so Air Tank is completely optional now and
mostly needed when you need RCS thruster.

### RCS thrusters

They are now available earlier in tech tree and consume reasonable
amount of air (5 times more than human jetpacks), and they don't work
without Mounted Air Tank, unless it's an Ion thruster variant.

### Mounted Air Tank

Available from the basic mech research node and can be printed in fab.
Built model comes empty, and syndicate mechs come with one full of
oxygen.

<img alt="GrFDrH5Hwe"
src="https://github.com/tgstation/tgstation/assets/3625094/b677b705-bda0-4c8c-96c7-d32bf7bf9f28">

Can be switched to pressurize or not pressurize the cabin. Releases gas
only when the cabin is sealed shut. Starts releasing automatically, but
can be toggled to not release if you want to use it just as a portable
canister.

Cabin pressure can now be configured in the module UI instead of
Maintenance UI.

Can be attached to a pipe network when the mech is parked above a
connection port.

Comes with a pump that works similarly to the portable pump. It lets you
vent the air tank contents outside, or suck air from the room to fill
the air tank. Intended to provide an ability to fill the air tank
without the need to bother with pipes.

Also has gas sensors that display gas mix data of the tank and the cabin
(when sealed).

### Stock part changes

All mechs now require a servo motor and they reduce mech movement power
consumption instead of scanning module.

Scanning modules are optional for mech operation (still required to
build) and the lack of one disables the following UI elements:

- Display of mech integrity (you can still see the alerts or examine the
mech to get rough idea)
- Display of mech status on internal damage (and you can't repair what
you can't diagnose)

The rating of scanning module doesn't have any effect as of now.

Cargo mech comes without it roundstart.

<img alt="2vDtt99oqb"
src="https://github.com/tgstation/tgstation/assets/3625094/147144ca-824e-4501-acf5-6ee104f309e7">

Capacitors now also reduce light power usage and raise the overclocking
temperature thresholds (see below).

### Maintenance

Maintenance UI removed, and its logic migrated to other places.

Access modification now managed inside the mech, and anyone who can
control the mech, can adjust the access in the same way as they can set
DNA key.

To open the maintenance panel you just need a screwdriver. It is instant
when the mech is empty and it has a 5 second delay when there is an
occupant to avoid in-combat hacking and part removal. It will alert the
occupant that someone is trying to tinker with their mech.


![image](https://github.com/tgstation/tgstation/assets/3625094/1abfca3c-8ba9-44b0-913c-c209564b91fd)

Once the panel is open, you can see the part ratings:


![image](https://github.com/tgstation/tgstation/assets/3625094/404f95bb-9f74-4e5b-a975-5ab6f74bdfa9)

With open panel you can hack the mech wires (roboticists can now see
them):

<img alt="mj205G2qDa"
src="https://github.com/tgstation/tgstation/assets/3625094/44cea0d1-44b4-4b50-b1d3-a97c0056bab3">

There are wires for:
- Enabling/Disabling ID and DNA locks
- Toggling mech lights
- Toggling mech circuits malfunction (battery drain, sparks) 
- Toggling mech equipment malfunction (to repair after EMP or cause
EMP-like effect, disarming mech)
- 3 dud wires that do nothing

The hacker may be shocked if the mech power cell allows.

When the panel is open and the user has access to the mech, they can
remove parts with a crowbar:

<img alt="jR40gyTWtJ"
src="https://github.com/tgstation/tgstation/assets/3625094/b573f5b9-b8ea-412e-b3e0-c872e01e0c23">

Hitting the mech with an ID from outside now toggles the ID Lock on/off
if the ID has sufficient access.

### Power consumption and overclocking

Rebalanced mech power consumption. T4 parts were not working in
Syndicate Mechs, as their effect was not calculated until you manipulate
parts manually. Constructed mechs with t1 parts even had their energy
drain reduced with upgrade to t1.

Now all mechs apply their base step power usage correctly don't ignore
the stock parts.

Servo tier now reduces base power consumption by 0% at t1, 50% at t2,
33% at t3 and 25% at t4
Capacitor tier now reduces base power consumption of mele attacks,
phasing and light by the same amounts.

Gygax leg actuators overload replaced with mech overclocking. Any mech
can be overclocked by hacking wires, but only Gygax has a button for
toggling it from the Cabin.

Now there is an overclock coefficient. 1.5 for Gygax and other mechs, 2
for Dark Gygax.

When overclocked, mechs moves N times faster, but consumes N times more
power.


![image](https://github.com/tgstation/tgstation/assets/3625094/01e285fd-6fd6-4558-8277-2ed3abf474d8)

While overclocked, mech heats up every second, regardless of movement,
and starts receiving internal and integrity damage after a certain
temperature threshold. The chance is 0% at the threshold, and 100% at
thresholds * 2. The roll happens every tick. Capacitor upgrades this
threshold, letting you overclock safely for longer periods.


![image](https://github.com/tgstation/tgstation/assets/3625094/80d90cea-0d20-4054-9369-a47deb6f52f2)

When you stop overclock, the temperature goes back down.

### Other changes and fixes

Concealed weapon bay now doesn't show up when you examine the mech, so
it's actually concealed now.

New radio module can properly change its frequency, as it didn't work
for previous radio.

Launcher type weapons were ignoring cooldowns and power usage, so you
could spam explosive banana peals, while they should have a 2 second
cooldown:
<img alt="q5GjUsHwGr"
src="https://github.com/tgstation/tgstation/assets/3625094/d102725d-e9e1-4588-9d6c-b9e38b7a6535">

Now this is fixed and all launcher type weapons properly use power and
have their cooldowns working.
And now they have the kickback effect working (when it pushes you in the
opposite direction in zero gravity on throw).

Thermoregulator now heats/cools considering heat capacity instead of
adding/reducing flat 10 degrees. So you can heat up cabin air quicker if
the pressure is low.

There were some other sloppy mistakes in mech code, like some functions
returning too early, blocking other functionality unintentionally. Fixed
these and made some other minor changes and improvements.

## Changelog

🆑
refactor: Refactored Mech UI
refactor: Refactored mech radio into a utility module, adding extra slot
to all mechs
refactor: Refactored mech air tank into a utility module with an air
pump, adding extra slot to all mechs
refactor: Refactored mech cabin air - there is now a button to seal or
unseal cabin to make it airtight or exchanging gases with the
environment
refactor: Removed mech maintenance UI Access is set in mech UI, and
parts are ejected with a crowbar
add: Mech now has wires and can be hacked
qol: Roboticists now can see MOD suit and mech wires
add: Mechs now require servo motor stock part and it affects movement
power usage instead of scanning module
add: Scanning module absence doesnt block mech movement and hides some
UI data instead. Big Bess starts without one.
qol: Hitting mech with ID card now toggles ID lock on/off if the card
has required access
fix: Fixed concealed weapon bay not being concealed on mech examine
fix: Fixed mech radio not changing frequency
fix: Fixed mech launcher type weapons ignoring specified cooldown
fix: Fixed mech launcher type weapons not using specified power amount
fix: Fixed mech temperature regulator ignoring gas heat capacity
fix: Fixed mech stopping processing other things while not heating
internal air
fix: Fixed mech being able to leave transit tube in transit
fix: Fixed mech internal damage flags working incorrectly
fix: Fixed Gygax leg overloading being useless
fix: Fixed mechs ignoring their stock parts on creation. Syndicate mechs
now stronger against lasers and consume less energy on move. Upgrading
from tier 1 to tier 2 doesn't make mech consume MORE energy than before
the upgrade.
balance: Rebalanced mech energy drain with part upgrades. Base energy
drain reduced by 50%, 33%, 25% with upgrades and applies to movement
(Servo rating), phasing, punching, light (Capacitor rating).
balance: Hydraulic clamp now can force open airlocks
balance: Made mech RCS pack consume reasonable amount of gas
code: Fixed some other minor bugs and made some minor changes in the
mech code
/🆑

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-08-15 18:02:28 +01:00
Comxy
63a56b087a Big Slappy | Giant Weapon DLC [MERGE READY!!!] (#77273)
## About The Pull Request
Big Slappy is a new illegal shovel/wrench which can be obtained through
illegals means. Parts you need to craft it can be found on the black
market uplink for a low price, but if it is not there you can find it on
the imports page on your hacked cargo console for 4400 credits usually.
Big Slappy makes you slow and you will get 10 recoil damage everytime
you hit someone and you will knock down your opponent for two seconds
while throwing people back like a baseball bat. It deals 30 damage and
is the fastest shovel/wrench out there. It can be folded into its wrench
form which will change its typing and makes it look like a wrench. It
also deals more damage in the wrench state, but also deals more recoil
damage and your target will not get knocked down. This weapon will
probably only appear in a few rounds since it has recoil damage, is slow
and costs a lot to obtain. It also has a longer meele attack cooldown.

To craft it you need 4 wrenches, 1 drill, 5 plasteel, 10 rods and 1 big
slappy parts using tools.

![promo](https://github.com/tgstation/tgstation/assets/25363960/4d619283-832c-4ce0-b3b2-e6ddb3dbd988)
## Why It's Good For The Game
Cool new weapon.
## Changelog
🆑
add: Added big slappy
image: Added big slappy parts and big slappy sprites
/🆑
2023-08-14 22:33:34 +02:00
Lamb
36274f2b62 Adds Mining Weather Radios (#76961)
## About The Pull Request
Adds a new item, the mining weather radio, to the mining points vendor,
QM locker, public mining docks, and lavaland.
This item can be used as a radio to communicate over supply channel with
other miners, cargo techs, or the QM. In addition to this, it has a
screen that displays warnings depending on the time left until an ash
storm or snow storm.
there is a separate wallmount version that does not have supply channel
access, but still displays updates on the weather.
you can examine either device to get an accurate readout of the
remaining time till the next storm.

![image](https://github.com/tgstation/tgstation/assets/110322848/d410a62c-72f3-46ed-929b-d73a93cb1cae)
## Why It's Good For The Game
letting miners know when a storm is coming allows them greater
flexibility when interacting with the station, and advance warning if
they are planning to head back to lavaland in the event of an ash storm.
It also strengthens the link between miners and the rest of the cargo
department by emphasizing use of the supply channel, and incentivizes
using it with the radio's built in microphone.
## Changelog
🆑 CoiledLamb, Jacquerel
add: Adds mining weather radio
/🆑
2023-08-13 03:20:25 +02:00
John Willard
2e122f6207 removes dextrous_hud_type and healable var (#77244)
## About The Pull Request

I was working on some basic mob stuff and noticed this is a little
messy, so I made these changes separately.
I removed ``dextrous_hud_type`` because ``hud_type`` exists and can just
be used instead.
I also removed the ``healable`` var, because it was incorrectly used
(with the expectation that basic mobs had it too). Instead it will rely
on the mob being Organic, the check right under it, and I gave mob
biotypes to mobs that were not healable and had no biotype already.
I made a new biotype for slimes because I didn't find any other ones
that fit it (and gave it to slimepeople), but it is not used anywhere
other than to prevent them from healing from sutures, as I didn't want
to just set it to NONE. Thought this may be useful for the future.

## Why It's Good For The Game

``healable`` is checked on simple animals and basic mobs, despite basic
mobs not having this var. I do not want to add this var to basic mobs
either, I think checking for them being organic makes much more sense
and avoids having to make basic mobs less basic.

## Changelog

Nothing player-facing.
2023-08-10 14:03:01 +02:00
Sealed101
07d34fedde Fixes gibtonite explosions producing flames and flashes (#77344) 2023-08-09 12:27:29 -05:00
Rhials
1328e7130a Portals now have a colorful glow (#77298)
## About The Pull Request

Most instances of /obj/effect/portal now faintly glow their respective
color.


![image](https://github.com/tgstation/tgstation/assets/28870487/3044b435-d4e7-4ba5-86f9-ca6f9e4415c1)

This was taken in the dark, the glow isn't as noticeable in the light.

Anomaly/jaunter/mech wormholes do not glow, since they use the
black-and-grey swirly sprite and don't look like they'd emit any kind of
light.

Also autodocs some portal related vars and changes one proc to not use
single char vars.

I also tried adding a soundloop but it sounded kind of crappy so I
decided against it.
## Why It's Good For The Game

Makes the portals a little bit prettier :)
## Changelog
🆑 Rhials
qol: Most of the colored oval-shaped portals faintly glow now. Cool!
/🆑
2023-08-05 10:02:00 -07:00
Jacquerel
ddfdc70d73 Basic Lobstrosity (#77253)
## About The Pull Request

I'm slowly chipping away at mining mobs. These ones also got some new
sprites because the old ones were a bit weird except when facing South.

![image](https://github.com/tgstation/tgstation/assets/7483112/015b8819-bab8-471a-86ae-70b1597ae327)
Arctic Lobstrosities are now hairy to give them a little more visual
distinction from Lavaland ones.

In terms of behaviour, they're now a little faster and can charge you
from further away.
They will _only_ attack players who are incapacitated in some way
(primarily from being hit by their charge, but could be from a Goliath
or something too) and will otherwise keep their distance until they can
charge again. They move slower for a short duration after charging
though, so you have time to slap them a bit.

If a Lobstrosity downs you then it will try to snip off one of your
arms, then retreat in order to eat it.
Obviously nobody likes losing an arm, but this does give you an
opportunity to get away while it is distracted? Funnily enough the way
our health system works means that sometimes losing that arm actually
takes you out of soft crit so you can stumble back to the station for a
replacement (or try to wrestle yours back?)

All of these things are achievable also by a player if you make one
sapient, they will pull arms off mobs they attack which are in crit and
can eat arms if they see them lying around if they want.
I added an element to let you dismember people with your bare hands,
maybe someone evil can use it to add a beheading attack some day.

Here's a video of their new behaviours:
https://www.youtube.com/watch?v=9eKxsH7hD7Q

## Why It's Good For The Game

Gives mobs more character.
Reduces our list of frozen simple mobs.
Replaces some ugly side sprites.
Medbay enrichment?

## Changelog

🆑
refactor: Lobstrosities are now basic mobs and have different AI
behaviour. Please report anything which seems like it shouldn't be
happening.
add: Lobstrosities will now only opportunistically attack things they
have knocked over with their charge, and are otherwise timid.
add: Lobstrosities are hungry for fingers and will steal one of your
arms if they defeat you in combat, although this gives you time to crawl
away.
sprite: New sprites for Lobstrosities.
/🆑
2023-08-01 17:26:32 -06:00
Time-Green
e50a01bf8e Fixes staff of lava working on space tiles (#77161)
This makes no sense

🆑
fix: Staff of laval no longer works on space
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-28 21:04:43 -06:00
Ghom
5d5492e111 Implements usage of the REVERSE_DIR macro throughout the code. (#77122)
## About The Pull Request
Replaces a ton of `turn(dir, 180)` calls with the aforementioned macro.

## Why It's Good For The Game
Afaik, `REVERSE_DIR` was coded to be faster than the classic `turn(dir,
180)` call, being a simple set of binary operations. To sum it up, micro
optimization.

## Changelog

N/A
2023-07-28 15:16:09 +02:00
Jacquerel
e1762455f0 [no gbp] Goliaths make less mess (#77141)
## About The Pull Request

In an earlier PR I made Goliaths dig when they are bored. I still like
this behaviour as an ambient thing for them to do, but the consequence
is that after 30 minutes there were huge piles of sand all over
lavaland.
While convenient for actually having miners bring glass back to the
station, it was an eyesore and too much.

To resolve this I have made two changes:
- Goliaths dig 1/3 as often as they did before.
- Sand (and snow) which are left outside during a storm gets blown away
if it's not inside someone's inventory.

Together these prevent the accumulation of hundreds of piles of sand.

## Why It's Good For The Game

Fixes an unintended consequence of my actions.

## Changelog

🆑
add: Uncollected sand and snow will be blown away by the wind when
storms happen (but don't worry, storms also allow those turfs to be
freshly dug up again).
/🆑
2023-07-27 12:35:32 -06:00
Ghom
57a923130e [NO GBP] Fixes active conveyor belts not moving movables spawned on top of them. (#77104)
There's one instance of the old signal I've missed from #76376, all
because lists treat undefined keys like text strings.
2023-07-26 15:56:42 -05:00
SyncIt21
e92ae5b75b Material container & related stuff ui refactors & clean-up (#76220)
## About The Pull Request

**1. Material container clean-up & refactor**
- Replaced `total_amount` var with `total_amount()` proc, this var can
be easily computed by summing up all material amounts rather than
storing it as a var which is tedious to update & keep track of when
materials are added/removed
- Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`,
and `get_categories()`. These procs are not used anywhere in the
codebase so let's remove them & make some space.
- Callbacks are replaced with signals, the callbacks don't need to be
explicitly garbage collected & having macros & procs marked with
`SIGNAL_HANDLER` makes your intentions more readable & explicit.
- Fixes #76151 
All material adding, removal, checking operations are "Integer"
operations, i.e. the final value is rounded & them made 1 if the final
value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better
name]. No more dealing with decimal value materials
The problem was after the protolathe was upgraded with better parts all
the design costs were multiplied with a decimal `efficiency_coeff`
value, this means even though in the UI the cost was displayed as 60
bluespace crystals its actual cost was `60.0001` something in the
backend causing this check for materials to fail & print the error
message.
- Replaced `GetComponent(/datum/component_material_container)` with just
a simple ref to the material container when adding the component, so we
can save some overhead from calling this proc
- Gave all procs a ton of documentation with documentation having
documentation
- Fixes #76506 RCD and other devices that uses the silo link upgrade now
have the correct material usages
- Fixes #72096. It wasn't just a problem with ancient protolathe but
with all machines that used `datum/component/remote_materials` the
problem was remote materials would add an instance of
`datum/remote/material_container` if it wanted to use local storage but
this component would get added before `datum/component/remote_materials`
could be registered i.e. it comes before remote_materials in the
component list. So when the machine is destroyed it will first destroy
`material_container` & then `remote_materials` therefore destroying the
materials before they could get ejected
- Silo link is established when parent is registered with remote
materials raher than adding an external timer which is faster
- Everything that uses a material container will auto eject their sheets
when destroyed
- Moved this & remote materials into its own folder for better
organization


**2. Material UI Changes**
- Removed the x25 & x50 print buttons from the autolathe, now they just
have x5 & x10 buttons like the protolathe, These buttons were of no use
since you could just type the exact amount you want to print in the
`[Max: <some amount>]` side bar. The code to compute these buttons was
just plain right nasty & some of it unused in the UI.
- The material eject button in the material bar does not gray out when
you can eject exactly one sheet
- All material cost are integer values rounded
- Fixes #76253 Exosuit Fabricator sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Component printer material bar sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Autolathe Material bars now display number of sheets available
- Max printable amount of items are now computed & updated correctly in
the UI. They were displaying wrong values & now get updated when items
are printed, materials are removed
- Silo hold actually works now. When a machine is put on hold it calls
this proc

e929cf39cd/code/datums/components/remote_materials.dm (L78-L87)
Notice how the key is `src` so we should be consistent during checking
if a machine is on hold using the same `src` var. But for some reason we
did dumb shit like this

e929cf39cd/code/datums/components/remote_materials.dm (L150-L153)
What is category? Why do we care for the area the machine is in? None of
it made sense so i removed all that junk and just made it check for
`src` like it should
- Removed redundant `removable` & `sheets` var from the material
container ui_data. These vars are unused in the UI
- If an item does not have the required materials then upon clicking
that item you will not get any error message but instead nothing happens

## Changelog
🆑
fix: items can be printed from autolathe & protolathe when the exact
material amounts are present in them after upgrading
fix: max printable amount now shows the correct value & updates when
items are printed, materials are removed in the autolathe & protolathe
fix: component printer material bar is not greyed out when there are
sufficient materials to eject
fix: rcd and other devices that uses the silo link upgrade now have the
correct material usages
fix: silo hold actually works
fix: machines using local storage to hold materials will eject it's
materials as sheets when deconstructed/destroyed
refactor: Autolathe Material bars now display number of sheets available
refactor: printing an item that does not have enough materials will fail
silently with no error messages
refactor: Drone dispenser will eject sheets upon deconstruction
refactor: all things that store materials will auto ejects its sheets(if
there is sufficient material) when destroyed
refactor: inserting an item into the material container will display the
units consumed as sheets not absolute units
refactor: removed x25 & x50 print buttons from the autolathe
2023-07-24 19:47:14 -04:00
Ben10Omintrix
43737e0b4b made the bee a basic insect (#76971)
## About The Pull Request
the bee now a baisc insect he will now go to find his home and he will
go and pollinated the plants and helped the queen make children by
polliniting the plants and he will. the queen will leve the hive more
rarely than the normal bees so she can stay in the hive to make kids

## Why It's Good For The Game
the bee now is a basic insect so it means he have a better ai

## Changelog
🆑
balance: the bee now can fly over the machines so its easy for him to go
to the hydroponics machine
fix: player bees now will not be stuck inside the hive if he entered it,
they can now leave it
fix: fixed a har deleted when the hive is deleted all the bees still
have a refence to the hive now its fixed
fix: now when a player interacted with the bee hive the bees will now
leave the hive to defend the hive (it was glitched)
refactor: the bees now are a basic insect.
/🆑
2023-07-23 22:22:14 -06:00
LemonInTheDark
41f20bc3ce [MDB IGNORE] Angled Lights & Lighting Prototyping Tool (#74365)
## About The Pull Request

Hello friends, I've been on a bit of a lighting kick recently, and I
decided I clearly do not have enough things to work on as it is.
This pr adds angle support to static lights, and a concepting/debug tool
for playing with lights on a map.

Let's start from first principles yeah?

### Why Angled Lights?

Mappers, since they can't actually see a light's effect in editor, tend
to go off gut.
That gut is based more off what "makes sense" then how things actually
work
This means they'll overplace light sources, and also they tend to treat
lights, particularly light "bars" (the bigger ones) as directional.
So you'll have two lights on either sides of a pillar, lights inside a
room with lights outside pointing out, etc.


![image](https://user-images.githubusercontent.com/58055496/228785032-63b86120-ea4c-4e52-b4e8-40a4b61e5bbc.png)

This has annoying side effects. A lot of our map is overlit, to the
point that knocking out a light does.... pretty much nothing.
I find this sad, and would like to work to prevent it. I think dark and
dim, while it does not suit the normal game, is amazing for vibes, and I
want it to be easier to see that.

Angled lights bring how lights work more in line with how mappers expect
lights work, and avoids bleedover into rooms that shouldn't be bled
into, working towards that goal of mine.

### How Angled Lights?

This is more complex then you'd first think so we'll go step by step


![image](https://user-images.githubusercontent.com/58055496/228786117-d937b408-9bc2-4066-9aee-aae21b047151.png)

Oh before we start, some catchup from the last time I touched lighting
code.
Instead of doing a lighting falloff calculation for each lighting corner
(a block that represents the resolution of our lights) in view we
instead generate cached lightsheets. These precalculate and store all
possible falloffs for x and y distances from a source.

This is very useful for angle work, since it makes it almost totally
free.
 
Atoms get 2 new values. light_angle and light_dir
Light angle is the angle the light uses, and light_dir is a cardinal
direction it displays in

We take these values, and inside sheetbuilding do some optional angle
work. getting the center angle, the angle of a pair of coords, and then
the delta between them.
This is then multiplied against the standard falloff formula, and job
done.

We do need some extra fenangling to make this all work nicely tho.

We currently use a pixel turf var stored on the light source to do
distance calculations.
This is the turf we pretend the light source is on for visuals, most
often used to make wall lights work nice.
The trouble is it's not very granular, and doesn't always have the
effect you might want.

So, instead of generating and storing a pixel turf to do our distance
calculations against, we store x and y offset variables.
We use them to expand our working range and sheet size to ensure things
visually make sense, and then offset any positions by them.

I've added a way for sources to have opinions on their offsets too, and
am using them for wall lights.
This ensures the angle calculations don't make the wall behind a light
fulldark, which would be silly.

### Debug Tool?

In the interest of helping with that core problem, lights being complex
to display, I've added a prototyping tool to the game.
It's locked behind mapping verbs, and works about like this.

Once the verb is activated, it iterates over all the sources in the
world (except turfs because those are kinda silly), outlining and
"freezing" them, preventing any future changes.
Then, it adds 3 buttons to the owners of a light source.

![image](https://user-images.githubusercontent.com/58055496/228776539-4b1d82af-1244-4ed6-8754-7f07e3e47cda.png)
The first button toggles the light on and off, as desired.
The third allows you to move the source around, with a little targeting
icon replacing your mouse
The second tho, that's more interesting.

The second button opens a debug menu for that light

![image](https://user-images.githubusercontent.com/58055496/228777811-ae620588-f08a-4b50-93a0-beea593aea77.png)
There's a lot here, let's go through it.

Bit on the left is a list of templates, which allow you to sample
existing light types (No I have no idea why the background is fullwhite,
need to work on that pre merge)
You can choose one by clicking it, and hitting the upload button.

This replaces your existing lighting values with the template's,
alongside replacing its icon and icon state so it looks right.
There are three types as of now, mostly for categorization. Bar, which
are the larger typically stronger lights, Bulb, which are well, bulbs,
and Misc which could be expanded, but currently just contains floor
lights.

Alongside that you can manually edit the power, range, color and angle
of the focused light.
I also have support for changing the direction of the light source,
since anything that uses directional lighting would also tie light dir
to it.
This isn't *always* done tho, so I should maybe find a way to edit light
dir too.

My hope is this tool will allow for better concepting of a room's
lights, and easier changing of individual object's light values to suit
the right visuals.

### Lemon No Why What

Ok so I applied angle lights to bars and bulbs, which means I am
changing the lighting of pretty much every map in the codebase.
I'm gonna uh, go check my work.

Alongside this I intend to give lighting some depth. So if there's room
to make a space warmer, or highlight light colors from other sources, I
will do that.

(Images as examples)

![image](https://user-images.githubusercontent.com/58055496/228786801-111b6493-c040-4199-ab99-ac1c914d034c.png)

I also want to work on that other goal of mine, making breaking lights
matter. So I'll be doing what I can to ensure you only need to break one
light to make a meaningful change in the scene.

This is semi complicated by one light source not ever actually reaching
fullbright on its own, but we do what we must because we can.


![image](https://user-images.githubusercontent.com/58055496/228786483-b7ad6ecd-874f-4d90-b5ca-6ef78cb70d2b.png)

I'm as I hope you know biased towards darker spaces, I think contrast
has vibes.
In particular I do not think strong lights really suit maintenance. 

Most of what is used there are bulbs, so I'm planning on replacing most
uses with low power bulbs, to keep light impacts to rooms, alongside
reducing the amount of lights placed in the main tunnels


![image](https://user-images.githubusercontent.com/58055496/228786594-c6d7610c-611e-478b-bcba-173ebf4c4b12.png)

**If you take issue with this methodology please do so NOW**, I don't
want to have to do another pass over things.
Oh also I'm saving station maps for last since ruins are less likely to
get touched in mapping march and all.

### Misc + Finishing Thoughts

Light templates support mirroring vars off typepaths using a subtype,
which means all the templates added here do not require updating if the
source type changes somehow. I'd like to expand the template list at
some point, perhaps in future.

I've opened this as a draft to make my intentions to make my changes to
lights known, and to serve as motivation for all the map changes I need
to do.

### Farish Future

I'm unhappy with how we currently configure lights. I would like a
system that more directly matches the idea of drawing falloff curves,
along with allowing for different falloffs for different colors,
alongside extending the idea to angle falloff.
This would make out of engine lighting easier, allow for nicer looking
lights (red to pink, blue to purple, etc), and improve accessibility by
artists.

This is slightly far off, because I have other obligations and it's
kinda complicated, but I'd like to mention it cause it's one of my many
pipedreams.

## Changelog
🆑
add: Added angle lighting, applies it to most wall lights!
add: Adds a lighting prototyping tool, mappers go try it out (it's
locked behind the mapping verb)
/🆑

---------

Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
2023-07-19 04:39:55 +00:00
tattle
dfd4801122 Adds p_They (and friends) for capitalized pronoun helpers (#76910)
## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/66640614/f8afe149-85cf-40d2-a5c1-4c96a3ccdfe4)

Basically replaces p_they(TRUE) with p_They

## Why It's Good For The Game
Fewer ambiguous parameters (what does TRUE mean when passed to p_they?)
More comprehensive helper functions.

## Changelog
🆑 Tattle
spellcheck: Fixed the grammar on a few revenant messages
/🆑

---------

Co-authored-by: tattle <article.disaster@gmail.com>
2023-07-17 22:55:58 -07:00
Zephyr
f71ea26f72 Machine list is now stored in SSmachines | Remove excessive use of global lists for specific machine types (#76822)
## About The Pull Request

Removes all of the duplicate global lists for specific machine types
where the only thing they do is store all machines of that type.
Adds machine tracking to SSmachines in the form of a list for all
machines, and then an associative list for machines by their type.
Previously we have machines in multiple global lists, such as airlocks
being in GLOB.doors, GLOB.airlocks, GLOB.machines.
This makes that not a thing, and also means that iterating through
GLOB.machines looking for a specific type is no longer as expensive.
2023-07-15 16:17:46 -04:00
nikothedude
ccf547c142 Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts (#76669)
## About The Pull Request

New malf AI upgrade

Remote safety overrides: Mid-cost, Mid-supply. Allows the AI to remotely
emag things it can see and can access.
1. Very useful for psychological warfare (Emagging APCs to throw the
crew off their trail)
2. Logically makes sense - why, of all things, can the AI not emag
anything when it's fundumentally integrated with the station's
electronics?
3. Generally speaking can only access things that make sense for it to
access - it cannot emag ethereals, sadly

In order for this to work, emag_act now returns a boolean, designating
if the emag had any effect.
While I was in there, I also added args to every single emag_act I could
find and added far more feedback/converted a lot of things to balloon
alerts to allow the AI to see if its emag had any effect.
## Why It's Good For The Game

It just makes sense that the AI, the most electronically-sensitive
entity in the game, would be able to emag things. Plus, more options
given to malf that aren't strictly MURDER KILL MURDER are always a plus,
especially if they allow for fancier plays.
## Changelog
🆑
add: New malf ability: Remote safety overrides. Allows the AI to
remotely emag things it has access to.
code: emag_act() now returns a boolean designating it's success in
emagging
code: All instances of emag_act() now have the proper arguments
qol: Most usecases of emagging now have some kind of feedback, and
existing feedback has been sanity checked and converted to balloon
alerts.
/🆑
2023-07-15 15:35:14 +01:00
YesterdaysPromise
fb10121022 Icons folder cleaning wave two (#76788)
## About The Pull Request

Further continous organizing and cleaning the Icons folder. There are
still some minior nitpicks left to do, but I reached my daily sanity
expenses limit again, and the faster these get in the less issues for
both me and others later. Also cleans some mess I caused by my blindness
last PR.

## Why It's Good For The Game

Saner spriters = better sprites
2023-07-14 18:36:41 +00:00
BlueMemesauce
468f63f2b8 Remove initial 500 balance on mining point cards to fix infinite mining points exploit (#76769)
## About The Pull Request

Fixes #76768
## Why It's Good For The Game

The idea is you put the amount of points of cards you want on the card
after buying it. This has the added benefit of making it easier to
transfer smaller amounts of points, since you don't need 500 points to
buy the card.

## Changelog
🆑
fix: Removed initial 500 point balance on mining point transfer cards.
Load them up with points instead.
add: Added mining point transfer cards to mining lockers.
del: Removed mining point transfer cards from mining equipment vendor.
/🆑
2023-07-12 18:53:52 -06:00
Jacquerel
16cecf864d Goliath basic mob (#76754)
## About The Pull Request

Converts Goliaths to the basic mob framework and gives them some new
moves because I can't leave things well enough alone.
I am planning on touching all the lavaland fauna and then maybe even the
icebox ones if I haven't got bored. The Golaith is the first because it
is iconic.

https://www.youtube.com/watch?v=JNcKvMwT4-Q
Here's me getting killed by one as a demonstration. Despite my poor
performance I would contend that they aren't a _lot_ more dangerous, but
they are a little more dangerous.

The chief difference here is that they have two new attacks which they
will only use in response to being attacked.
If fired at from range, they will target the attacker with a line of
tentacles (it doesn't track you, so is easily sidestepped).
If attacked in melee, they will surround _themselves_ with tentacles, on
a longer cooldown.

Something else you may notice in this video: I discovered that basic
mobs are actually _too smart_ to be Lavaland fauna.
Typically (unlike their old form) a mob on our new AI system is smart
enough to attack someone _the moment they come into range_ rather than
only checking on predictable ticks, which would make using the Crusher
an essentially unviable prospect.
To counteract this, Goliaths now have a delayed attack component which
gives you a visual warning and short duration to get out of range before
they swing at you. I will probably put this on all mining fauna that get
reworked, it wouldn't be a terrible thing to put on other mobs to be
honest.

Other changes: The goliath stun is now a status effect with _buckles_
you to the tentacle as if grabbed, as well as its previous effects.
While this seems purely worse, any nearby helpers can now help-click on
you to instantly remove the debuff.
Experiencing the effect of a Lobstrosity Rush Gland makes you immune to
being grabbed by tentacles and an implanted one will automatically
trigger and free you if you are hit, and the explosive effect of
Brimdust also causes the tentacle to retract (although you'd need to
take damage for this to happen). Using the tools of the land, you can
make these creatures less threatening.

The ability for a Goliath to chain-apply the ability has now also been
reduced, it won't refresh its duration if you are hit when already
buckled.

When not occupied hounding miners, Goliaths will intermittently dig up
the asteroid sand and eat any worms that this produces.
I also made some new sprites for riding a Goliath because they've been
broken since the Lavaland mob update and also kind of were ugly before
then anyway:

![image](https://github.com/tgstation/tgstation/assets/7483112/90580403-d82f-4c29-b3e1-6c462e01edda)

Other code changes:
- I made an element which only lets an attached object move every x
seconds. This is because Goliaths are far too slow to use the speed
system (the glide just looks bugged as hell) but one thing I am invested
in when converting these is to make sure that they share the same
behaviour when player or AI controlled. This is disabled while you're
riding them because it was interminably slow.
- The Goliath tentacle trail uses a supertype object now shared with the
Meteor Heart which did something kind of similar.

## Why It's Good For The Game

It begins the process of moving one of our larger subsets of NPCs onto
the newer framework for NPC behaviour.
It adds a little bit more life to an iconic but slightly uninteresting
foe which mostly just walked at you slowly.
This PR contains a few components I expect to apply more widely to other
mobs in the future.

## Changelog

🆑
refactor: Goliaths now use the Basic Mob framework, please report any
unusual behaviour.
add: Goliaths learned a couple of new attacks which they will use in
self-defence.
balance: Help-clicking a miner grabbed by Goliath tentacles will
immediately free them, as will the effect of several items you can
scavenge from around Lavaland.
image: New sprites for the Goliath saddle.
/🆑
2023-07-12 18:52:02 -06:00
YesterdaysPromise
a373b4cb08 Icon folder cleaning wave one (#76703)
## About The Pull Request

Due to a mental breakdown caused by unfathomable abomination that is
icons folder, I swore to myself to one day clean it. Today is kind of
that day. Been at it for around 6, you gotta understand I need a rest. I
tracked most changes in descriptions of commits if you are looking for
details.

## Why It's Good For The Game

Saner spriters make better sprites. And also, just helps keep track of
things.

## Changelog

🆑
image: added sprites for different variants of scrolls.
image: modified couple posters with ghost pixels.
/🆑

---------

Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
2023-07-11 10:50:10 -07:00
MrMelbert
8c1e35e1c0 Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests (#76612)
## About The Pull Request

This PR refactors mind language holders into non-existence

As a result, `update_atom_languages` is no longer necessary

Mind-bound languages are transferred via `/mind/proc/transfer_to`

Species changing no longer deletes and re-creates the mob's language
holder, allowing them to keep any languages they have.

Species languages are sourced from `LANGUAGE_SPECIES` now, meaning they
are removed when they change species. If the mob is not a human with a
species datum, these are effectively just atom level languages.

Makes a bunch of unit tests to ensure language transfer over certain
events works as intended

## Why It's Good For The Game

Mobs with minds having two independent language holders results in a
good few bugs, and simply doesn't make sense when we have sources
(`LANGUAGE_MIND`).

Instead of tracking two language holders, we can simply use sources
better and only track one.

This means that the language holder you start with is your language
holder, period. It doesn't get deleted or re-instantiated or whatever.

## Changelog

🆑 Melbert
refactor: Refactored language holders, making species changes not delete
all of your known languages
/🆑
2023-07-10 18:34:57 +00:00
carlarctg
4c99fb2ebb Coroner additions and tweaks (#76534)
## About The Pull Request

Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)

Serrated bone shovels can be used in place of circular saw in most
surgeries.

Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.

Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.

Increased the force, throwforce, and wound bonus of inert ritual knives
and scythes.

Coroner gloves can quickly apply medicine like nitrile gloves.
## Why It's Good For The Game

> Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)

Weird ass bug.

> Serrated bone shovels can be used in place of circular saw in most
surgeries.

It's serrated, it's cool, it's rare, it has a fast toolspeed.

> Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.

Very thematic for the coroner, should probably also be a heirloom item
but whatevs. Weaker so there's still a reason to seek out the OG.

> Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.

Scanning corpses is pretty important during surgery - it tells you how
much blood they have, organ damage, diseases... these things don't
appear in the surgical computer readout, which means the coroner has to
go out of his cave to pick up a boring light blue meatbag wound scanner.
This also incentivizes coroners to do their job by giving them something
cool that only works on dead bodies.

> Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.

These two options in the MortiDrobe are pretty frickin' badass,
especially with how SICK the Coroner looks with them, double especially
in combat.


![image](https://github.com/tgstation/tgstation/assets/53100513/98c6f8a5-3e5a-41a9-8a9c-cb6b82ecc0b8)

However, there's the large issue that as actual weapons they're really,
really weak. Not enough damage, when I use them in combat I both feel
badass but also get a nagging feeling in the back of my mind that I'm
intentionally gimping myself, and with only 10 damage I can *really*
feel it. I find it unfair that these are objectively worse than a
welding tool or even a Butcher's Cleaver when they're a lot more
involved to find, and scarce besides. These arguments apply equally to
the Wizard's ritual knife, and the scythe.

Additionally on the scythe, the crew really needs more good ghetto
weaponry that isn't the boring same ol' of baseball bats, spears,
cleavers... and making scythes useful is a great way to help bridge that
gap. They deal a satisfying amount of damage now, with the clear
downside, of course, being that they're bulky and hard to lug around.

> Coroner gloves can quickly apply medicine like nitrile gloves.

'Fast medicine' doesn't just cover sutures, it also covers medical gel.
Specifically, sterilizer gel. I find it annoying that the Coroner is
encouraged to give up his drip for the boring life-saver nitrile gloves,
because the difference in applying time really does make a difference -
it makes gel applying go from annoying to smooth, which is important
considering the whole purpose of sterilizer gel is to make surgeries go
faster. The Coroner has surgery and thus medical locker access to begin
with, so this isn't a balance problem, (and nitrile gloves are found by
the dozen anyways) especially with how rare the coroner gloves are.
## Changelog
🆑
fix: Serrated bone shovels can be created with any kind of shovel now,
not just a spade (???)
add: Serrated bone shovels can be used in place of circular saw in most
surgeries.
add: Added a duller (still deadly) variant of the serrated bone shovel
as coroner mail.
add: Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.
add: Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.
add: Coroner gloves can quickly apply medicine like nitrile gloves.
/🆑
2023-07-08 00:14:30 +01:00
1393F
fba8beec1d cursed katana shard no longer called "dark spoon shard" (#76605)
## About The Pull Request
https://github.com/tgstation/tgstation/pull/75948 changed the name of
the cursed shard and made the katana version a subtype...without
changing the name or desc of the shard
## Why It's Good For The Game
the dark shard from tendril loot will no longer have a stupid name and
tell you you're not supposed to have it
## Changelog
🆑
fix: The cursed katana shard you can get from tendril loot no longer
falsely tells you you're not supposed to have it
/🆑
2023-07-07 18:29:48 +08:00
Ghom
d4cdd6b63e Replaces lava and chasm's "safeties" and ignoring turf slowdown on catwalks with traits and a new element. (#76376)
## About The Pull Request
This adds a new element for movables that grants turfs they're in
traits, changes lava and the chasm component to check for traits
instead, ditto for turf slowdown. It also implements another trait that
prevents wet floor from slipping people, as well as some other changes
(feel free to opine on them really):
- Tables and conveyor belts now stop turf slowdown, much like catwalks,
as I imagine people walking on them are not really touching the floor.
(I'd include protection against lava too... until they melt, but that'd
mean finding a way to have these objects burn in the first place, and
lava code is still stupid despite a years old refactor I did)
- Tables also stop slippery turfs from slipping (bananas, soaps etc.
still apply). I wish there were a way to make some objects slippery by
coating them in water vapor or splashing water/lube, but that's outside
the scope of this PR.
- Fixed an edge case in which a mob standing on a lava turf would be
left permanently visually on fire if the lava is changed to another kind
of turf.
- Removed unused code from stone tiles.

I'm going to include these traits in that global list for admin-added
traits... tomorrow perhaps. 💤

## Why It's Good For The Game
Replacing some hard-coded mechanics with easier to use traits and an
element, which I also need for the submerge element PR.

## Changelog

🆑
refactor: Replaced hardcoded "safeties" for lava, chasms and ignoring
turf slowdowns on catwalks with traits.
balance: much like catwalks, tables and conveyors also disable turf
slowdowns.
balance: slippery turfs won't slip you when walking on a table.
fix: Fixed an edge case in which a mob standing on a lava turf would be
left visually but permanently on fire if the lava is changed to another
kind of turf.
/🆑
2023-07-07 10:04:33 +01:00
Jacquerel
eac3c9d91c Emergency Relief Capsule (#76457)
## About The Pull Request

Getting back into coding by making some soul PRs.
Adds a new kind of bluespace capsule which replaces the default one when
the "budget pods" station trait runs, and is available from the vendor
for a (marginal) discount.


![image](https://github.com/tgstation/tgstation/assets/7483112/3fdf30e4-56c3-4181-9f8f-d11b6ec7a5e5)

![image](https://github.com/tgstation/tgstation/assets/7483112/a47581aa-ee2b-47c4-bd91-5a71391c2dd9)

The Nanotrasen Emergency Relief Capsule provides a port in the storm for
people with an urgent need, and very little else.

## Why It's Good For The Game

This one is mostly just kind of funny I'll be honest.
I guess it uuuuuuuh provides a kind of pod with no GPS signal if you
really want to go off the grid? But anything I write here is secondary
to the point of "someone suggested it on the forums and I liked it".

## Changelog

🆑
add: Budget cuts can sometimes effect the station's supply of Emergency
Bluespace Shelters.
/🆑
2023-07-02 20:25:48 +02:00
LemonInTheDark
8c2c72b0ed Duiffel Spotfix (#76442)
## About The Pull Request

Gives duffelbags their proper slot count
They inherited this from backpacks, but I sorta just forgot about that

[Creates "levels" of locked objects, uses that to make locked duffels
work](c613c00f62)

[c613c00](c613c00f62)

Turns locked into something that holds defines, this makes life a lot
easier.
Requires a lot of boilerplate because of how many uses of these procs
there are and all the passthrough and shit.

Adds a few outfit subtypes to avoid this class of failure in future.

Renames the args in a few but not all touched procs, one thing at a time

Closes #76407
Closes #76430 Had the lock check in the wrong place
Closes #76441 GOD I HATE TK SO MUCH

Wrote half the pr without glasses so if it's weird gimme some grace
yeah?

## Changelog
🆑
fix: Fixes some fuck with duffelbags, them not holding enough + issues
with spawning gear in them (job shit and all)
/🆑
2023-07-01 15:36:26 +01:00
Vekter
d27203f2f9 Fixes the ORM not correcty granting mining points if adding ore by hand (#76447)
## About The Pull Request
This was an oversight from back when material datums were redone.
Ideally you should still be dumping your ore on the floor so the ORM can
slurp it up, but if for some reason you just want to add it by hand,
this works fine.

## Why It's Good For The Game
Consistency good.

Fixes #76409

## Changelog
🆑 Vekter
fix: Fixed the ORM not granting mining points if you added ore by hand
instead of dumping it on the floor.
/🆑
2023-07-01 15:30:59 +01:00
necromanceranne
2600f23ebb Coroner Update: Pickle-Eating Morbid Weirdo Obsessed with Death and Perfectionism (#76318)
This PR introduces a whole bunch of Coroner and Morbid related content.

Firstly, Morbid is now a mind trait, and specifically, coroners start
with it.

Coroners also have a liver trait that allows them to heal toxins (very
slowly) from eating pickles and drinking pickle juice. They also
can...drink formaldehyde. I guess. Dissections is thirsty work.

Coroners gain a whole set of special tools specifically for use in any
surgeries marked as interests of the Morbid. This is determined by the
``surgery_flag`` called ``SURGERY_MORBID_CURIOSITY``. Currently, these
surgeries are included;

dissections, autospies, revival surgery, plastic surgery, organ/feature
manipulations, amputations

To fit the theme, TRAIT_MORBID also applies the reduction to eye
snatchers.

While using their special tools, and the surgery is a morbid curiosity,
the coroner/anyone who is morbid gains a 30% speed boost! This stacks
with the dissection speed boost. Otherwise, the tools are just regular
tools with a special name (though the scalpel is better at killing
undead, because, you know, you're watching over the dead).

The coroner's special medkit, which is the only one you can get in a
round, can fit their autopsy scanners and tools. Anything that comes
standard with their kit can go back into it.

Anyone who is morbid can safely retrieve the secrets of the elephant
graveyard. The serrated shovel, notably, is a much better tool and
notably better at killing organics, but not inorganics (like the dead).

(Gives roboticists secure morgue access during skeleton crew pop totals)
2023-06-30 12:55:14 +00:00