Commit Graph

7581 Commits

Author SHA1 Message Date
CapybaraExtravagante 1b8bd51ec2 Allows datum AI to create new plans while a plan is still executing (#71596)
## About The Pull Request

In some cases, you need to perform behaviors that can occur ontop of
different behaviors. E.g. "I need to continiously spit out foam while
moving to a point". If these behaviors are put separetely, it is
difficult to determine that the behavior for spitting out foam needs to
end. And in the current code, aslong as it has not ended, the plan will
never end. So once the AI reaches the point it would stand still at the
end and spit out foam unendingly.

To work around this I've made it so behaviors can be set to allow
planning while they run if they have the
AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION flag. If all remaining behaviors
on a controller have this flag, a new plan is made. If this plan is the
exact same as the plan that was currently being performed, nothing
happens. But if the plan is different, the current one is ended and the
new plan is executed. This means situations like this are handled
gracefully now. This will be required for basic bots.

## Why It's Good For The Game

More graceful handling of "continous" behaviors! :)

## Changelog

🆑 Capybara Holly
refactor: Allows datum AI to create new plans while a plan is still
executing
/🆑

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-11-29 14:31:53 -08:00
CapybaraExtravagante 8f6528c9ec Allows datum AI to switch to different movement datums (#71595)
## About The Pull Request

Allows basic mobs / datum AI to switch between movement datums. Useful
if you need JPS in some moments, but simple obstacle avoidance in others

This isn't used anywhere yet, but is a building block for basic bots.

## Why It's Good For The Game

Allows us to pick the right tool for the job!

## Changelog

🆑 Capybara Holly
refactor: Datum AI can now switch to different movement datums in their
behavior.
/🆑

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-11-29 14:30:30 -08:00
lessthanthree 07c03375ce Fixes layering of tram rails (#71382)
## About The Pull Request
-Fixes the layering of the tram rail so that it doesn't end up below the
reinforced glass.
-Replaces the last remaining vault platform turfs with proper tram
turfs.
-Removes an un-needed layer define for turf transparency.


![image](https://user-images.githubusercontent.com/83487515/204107725-c422180b-661c-4981-8a0b-edbdb7ced9fe.png)

## Why It's Good For The Game
The tram rail becoming disconnected when it travels over glass, in
reality that'd probably derail it. So let's fix it!
## Changelog
🆑 LT3
fix: Tram platform is now entirely built with tram tiles.
fix: All the parts of the tram are now on a correct layer/plane.
remove: Removed the openspace layer on the transparency plane.
/🆑
2022-11-29 20:52:59 +00:00
Fikou 35b5ac0c4e Psykers (#71566)
## About The Pull Request
Finishes #66471
At burden level nine (or through a deadly genetic breakdown), you now
turn into a psyker.
This splits your skull in half and transforms it into a weird fleshy
mass. You become blind, but your skull is perfectly suited for sending
out psychic waves. You get potent psy abilities.
First one is brainwave echolocation, inspired by Gehennites (but not as
laggy).
Secondly, you get the ability of Psychic Walls, which act similarly to
wizard ones, but last shorter, and cause projectiles to ricochet off
them.
Thirdly, you get a projectile boost ability, this temporarily lets you
fire guns twice as fast and gives them homing to the target you clicked.
Lastly, you get the ability of psychic projection. This terrifies the
victim, fucking their screen up and causing them to rapidfire any gun
they have in their general direction (they'll probably miss you)
With most of the abilities being based around guns, a burden level nine
chaplain now gets a new rite, Transmogrify. This lets them turn their
null rod into a 5-shot 18 damage .77 revolver. The revolver possesses a
weaker version of antimagic (protects against mind and unholy spells,
but not wizard/cult ones). It is reloaded by a prayer action (can also
only be performed by a max burdened person).
General Video: https://streamable.com/w3kkrk
Psychic Projection Video: https://streamable.com/4ibu7o

![image](https://user-images.githubusercontent.com/23585223/204150279-a6cf8e2f-c678-476e-b72c-6088cd8b684b.png)

## Why It's Good For The Game
Rewards the burdened chaplain with some pretty cool stuff for going
through hell like losing half his limbs, cause the current psychics dont
cut it as much as probably necessary, adds echolocation which can be
used for neat stuff in the future (bat organs for DNA infuser for
example).

## Changelog
🆑 Fikou, sprites from Halcyon, some old code from Basilman and
Armhulen.
refactor: Honorbound and Burdened mutations are brain traumas now.
add: Psykers. Become a psyker through the path of the burdened, or a
genetic breakdown.
add: Echolocation Component.
/🆑

Co-authored-by: tralezab <spamqetuo2@gmail.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-11-29 20:13:28 +00:00
tralezab 83f475aa7e Adds the DNA Infuser, a genetics machine you feed corpses to infuse their DNA with yours! What could go wrong?! (#71351)
## About The Pull Request  
Adds the "DNA Infuser" to genetics. One person enters, a corpse is added
to the machine, and you can activate the machine to "infuse" the subject
with the DNA. This converts one random organ from a set into the
mob-related organ.

### Rat mutation 🐀

Rats can be fed in to turn you into a rat-creature-thing!
```diff
+See better in the dark
+Can pretty much eat anything! Toxic foods, gross foods, whatever works!
+Smaller, and can climb tables
?Randomly squeaks occasionally?
-Take twice as much damage
-Vulnerable to flashes
-Gets hungry MUCH quicker.
-Yes, eat anything, but only ENJOY dairy.
```
Having every rat organ at once allows you to ventcrawl nude!

### Carp mutation 🐟 

Carp work for a mutation as well!
```diff
+Strong jaws, that drop teeth over time!
+Space immunity! Breathe in space, unbothered by pressure or cold!
+Smaller, and can climb tables
-Can't block your jaws with a mask
-Can't take the heat, overheats easily
-Can only breathe in environments that have minimal or no oxygen
-Nomadic. If you don't enter a new zlevel for awhile, you'll start feeling anxious.
```
Having every carp organ at once allows you to swim through space!

### Fly mutation 🪰 

Any corpses without organs to turn into turn into fly organs! Fly organs
now have a bonus for collecting them all, transforming you into a fly,
when you pass the threshold. But even without those, fly organs are
technically... organs. They most of the time work like normal ones.

## Todo 🐦 

- [x] Finish the infuser code
- [x] Create a little booklet that shows what kind of shit you can turn
into, hopefully i can autogenerate this based off of organ set subtypes
list
- [x] sprite/slap a color on rat mutant organs
- [x] Maybe make a *few* more organ sets

## Why It's Good For The Game 🐑 

Oops, I forgor to fill this out! My hackmd is here.

https://hackmd.io/@bazelart/ByFkhuUIi

## Changelog 🧬 

🆑 Tralezab code, Azlan + Azarak (Az gaaang) for the organs
add: Added the DNA infuser to genetics! Person goes in, corpse goes in,
and they combine!
add: Try not to turn yourself into a fly, OK?
/🆑

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-11-29 02:05:44 +00:00
texan-down-under 0a8f8849bd Quantum keycards change color depending on the linked pad's location (#71518)
## About The Pull Request
aka: quantum pads with gags

Quantum keycards now light up depending on the linked pads
location/status, and the pads location will be visible on examine.
The card will be white if no pad is linked, the color of the department
the linked pad is in, or dark gray as a fallback.
## Why It's Good For The Game
Quantum keycards are impossible to organize, especially if you have
multiple on you. Differentiating your secret way into CE's office or
space could be vital. This helps to differentiate them and keep you
'safe'.
## Changelog
🆑
qol: quantum keycards light up with the department theyre in (or grey as
a fallback)
qol: quantum keycards are custom renamable w/ pen, to help keep em
organized
/🆑

Co-authored-by: etherware-novice <candy@notarealaddr.com>
Co-authored-by: Candycaneannihalator <candycane@thisisnotarealaddr.com>
2022-11-28 07:23:32 +01:00
Kyle Spier-Swenson b7387ec345 Revert "Unit tests radio, saymode, and language prefix keys" (#71474)
Reverts tgstation/tgstation#71328 (@Zonespace27 )

Departmental shorthand (.h/:h) is a convenience alias that should apply
to all jobs and all race types and all classifications. ITS SUPPOSE TO
FUCKING CONFLICT.

if you are ai and not in a holopad, it should go to binary.

if you are ai and in a holopad, it should go to the holopad.

if you are borg it should go to binary

if you are xeno it should go to alien

Removing it from the AI over a stupid need to made universal broad
reaching rules that can be declared upon the code was stupid.

This entire unittest is needlessly overboard and over generic putting
"rules" that are not backed up by logic on the codebase in a way that
hinders making good UX, not help.

The datumized saymode system not being able to handle this complexity
when the old hardcoded system could is a problem with the datumized
saymode system and not the fucking :h shortcut for holopad.


🆑 Common fucking sense
fix: The changes to Mafia and holopad say prefixes was reverted.
spellcheck: Mafia changeling say prefix has no longer been changed to
.1, and has been returned to .j
spellcheck: AI Holopad say has no longer been changed to .2, and has
been returned to .h
/🆑
2022-11-27 22:17:01 -08:00
Jacquerel c185dffda0 Basic Mob Carp Bonus Part: Wall smashing (#71524)
## About The Pull Request

Atomisation of #71421 
This moves the attack function of "environment smash" flags which allow
simple mobs to attack walls into an element, so that we can put it on
other things later.
For some reason while working on carp I convinced myself that they had
"environment_smash" flags, which they do not, so this actually is not
relevant to carp in any way.

While implementing this I learned that the way wall smashing works is
stupid, because walls don't have health and so resultingly if a mob can
attack walls it deletes them in a single click. If we ever decide to
change this then it should be easier in an element than in three
different `attack_animal` reactions.
This is especially silly with the "wumborian fugu" item which allows any
mob it is used on to instantly delete reinforced walls, and also to
destroy tables if they click them like seven or eight times (because it
does not increase their object damage in any way).

## Why It's Good For The Game

Eventually someone will port a basic mob which does use this behaviour
(most of the mining ones for instance) and then this will be useful.
If we ever rebalance wall smashing to not instantly delete walls then
this will also be useful.
Admins can apply this to a mob to allow it to delete walls if they
wanted to do that for some reason, they probably shouldn't to be honest
at least until after we've done point two unless they trust the player
not to just use it to deconstruct the space station.

## Changelog
🆑
refactor: Moves wall smashing out of simple mob code and into an element
we can reuse for basic mobs later
/🆑
2022-11-27 20:14:07 -08:00
Jacquerel e285b75fc5 Lambs can now be killed with swords (#71500)
Previously hitting a sheep with any item which was not "a razor" or
"some grass" would have no effect whatsoever.
Now hitting a sheep with a sword, axe, toolbox, or implement of your
choice will hurt it.
If you do this a sufficient number of times (more than you might expect)
the sheep will expire.
2022-11-26 04:27:55 -06:00
RaveRadbury efd551f520 Changes Obsession resilience to require a lobotomy (#71462)
## About The Pull Request

Obsessed is changed to require a lobotomy rather than brain surgery.
Also nerfs Mind Restoration so it cannot remove deep-rooted traumas.

## Why It's Good For The Game

Obsessed has been well-known for some time as being surprise ganked by
fairly low-key airborne healing viruses. Players are stripped of their
antag status with no fanfare or consequence.

With this change the cure for obsessed will require a lobotomy, which
will cause additional permanent brain traumas. This provides way more
mechanically-informed RP than losing antag due to a friendly sneeze.

## Changelog

🆑
balance: Obsessed has been bumped up to a Deep-Rooted Brain Trauma
balance: Mind Restoration can't remove deep-rooted traumas, making
Obsessed unremovable by virusses
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
2022-11-26 10:41:16 +01:00
Fikou 6a23bce095 premium internals now increase the slots of your internals box (#71440)
## About The Pull Request
premium internals boxes from the station trait now get 2 more slots and
have a slightly bigger sprite
also lowers the trait's weight a bit, making it equal to most other
traits.

![image](https://user-images.githubusercontent.com/23585223/203337272-ea75ae4b-111e-4adb-8598-c9cba4c4e47b.png)


## Why It's Good For The Game
the main reason im doing this is because this trait messes with anything
people wanna do to survival boxes, cause it takes up 2 slots, so you
have to account for that whenever youre making a subtype that you wanna
fill with more stuff, you cant really do that (currently an issue with
the nukie medical pr)
the other reason is station traits should affect the gameplay a bit more
than "wow i have 2 items i can normally get from an emergency toolbox",
a larger box doesnt change that much but its something.

## Changelog
🆑
balance: premium internals station trait now increases the slots of your
internals box
/🆑
2022-11-25 11:35:50 -08:00
GoblinBackwards 00e2625f77 Fixes being unable to open necropolis gate when behind it (#71497)
## About The Pull Request
Adds a new parameter to the seethrough component for if it should allow
clickthrough when transparent (true by default), and sets it to false on
the necropolis gate.
## Why It's Good For The Game
Fixes #71471 
Ashwalkers can't even leave their own base right now because it's
impossible for them to open the door from inside.
## Changelog
🆑
fix: Fixed being unable to open the necropolis gate when standing behind
it
/🆑
2022-11-25 11:26:12 -08:00
LemonInTheDark 29d766e25f Fixes attempting to offset floating planes (#71490)
## About The Pull Request

This is a dumb idea, and leads to fucked rendering on occasion

## Why It's Good For The Game

Fixes another portion of #70258, a player will no longer have a hidden
antag hud if they move down a z level after getting an antag. We were
trying to offset the floating plane of their image, and it went to shit.
Also fixes a bug with observers not having antag huds for the combo hud
to see. We were only giving them one on mind.on_transfer, rather then on
mind assignment. I hate mindcode
2022-11-25 00:31:05 -08:00
texan-down-under f54891638b Limits when Icebox's snow will alert you (#71485)
## About The Pull Request
Limits when you get alerted to icebox, to when you would need to know it

When youre in a mining area
If you're a miner
and If you can see the snow outside
then it will alert you, otherwise it hides the alert
and ghosts always get alerted
## Why It's Good For The Game
Getting alerted about incoming storms is annoying when you're indoors
for 80-100% of the shift, and just serves to clutter chat. Also, the way
its set up is modular and can be applied to any other weather condition
you'd want
## Changelog
🆑
fix: limits how much you get alerted by icebox storms
/🆑

Co-authored-by: Candycaneannihalator <candycane@thisisnotarealaddr.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: etherware-novice <candy@notarealaddr.com>
2022-11-25 00:30:31 -08:00
theOOZ c18af8e71d Paramedic has mining_station access flag (#71476)
## About The Pull Request

Lets paramedics leave the mining station they have foolishly wandered
into using the one half of mining access they did already have.

## Why It's Good For The Game

Since you can just take their shuttle and dock at their station, walk
into the station- but not **out** of the station.

## Changelog
🆑
balance: Paramedics get to have mining station access
/🆑
2022-11-25 00:29:33 -08:00
LemonInTheDark 24d795b354 Adds a preference that disables intensive rendering on different multiz layers (#71218)
## About The Pull Request

It's kinda hacky, but it is nearly the same as just rendering one z
layer.
We allow people to ENTIRELY REMOVE most plane masters from their screen.
This has the side effect of disabling most visual effects (AO is a big
one) which saves a LOT of gpu.

We rely on planes being essentially layers to ensure things render in
the proper order. (outside of some hackyness required to make parallax
work)

I've kept parallax and lighting enabled, so visuals will still look
better then multiz pre plane cube.
It does also mean that things like FOV don't work, but honestly they
didn't work PRE plane cube, and FOV's implementation makes me mad so I
have a hard time caring.

Reduces gpu usage on my machine on tram from 47% to 32%, just above the
27% I get on meta.

I'm happy with this.

Oh also turns out the parallaxing had almost no cost. Need to remove it
as a side effect of what I'm doing but if I could keep it I would.

There's still room for in between performance options, like disabling
things like AO on lower z layers, but I didn't expect it to make a huge
impact, so I left things as is

Also fixes a bug with paper bins not respecting z layer. It came up in
testing and annoyed me

## Why It's Good For The Game

Ensures we can make multiz maps without running into client performance
issues, allows users to customize performance and visual quality.

## Changelog
🆑
add: Adds a new rendering option to the gameplay preferences. You can
now limit the rendering intensity of multiz levels. This will make
things look a bit worse, but run a LOT better. Try it out if your
machine chokes on icebox or somethin.
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-24 20:31:36 -08:00
SyncIt21 00544e5e91 RPED can now install certain stack components and display more verbose part information (#71102)
**Note :** Rehashed & cleaned up version of PR
[#71064](https://github.com/tgstation/tgstation/pull/71064). That one
contained unrelated commits and was so bad to the point it had be
labeled with DNM. This is the clean version of it.

## About The Pull Request
Rapid part exchange device RPED & Bluespace version of it BRPED can now

A) pick up 4 types of materials
  - glass sheets[max 30]
  - plasteel[max 30]
  - cable coil[max 30]
- Bluespace[ore,refined,artificial,stack] total sum of all these should
not exceed 30
 and install them in an incomplete machine frame

B)display more verbose part information[number of parts for each type
including for stack components]

## Why It's Good For The Game

A)Some machines types such as

- [thermo
machines](https://tgstation13.org/wiki/Machines#Freezer.2FHeater)
- [electrolyzers](https://tgstation13.org/wiki/Machines#Electrolyzer)
- crystallizer=10 cable pieces , 10 glass sheets , 5 plasteel sheets

All require either cable ,glass or plasteel. Usually you have to carry
these components inside your backpack which occupy space there and later
take it out from there and install it manually by hand and then use RPED
or BRPED on the machine frame.

This feature now combines these 2 steps into 1 step thus making
installing machine frames much faster and you also saves space inside
your backpack as these are now carried inside the RPED itself

You need to insert the exact stack type capacity available inside the
RPED for it to work i.e. if you pick up 5 glass sheets then later you
need a stack of exactly 25 glass sheets to complete the stack. This is
easier from a coding perspective so we don't have to deal with
subtracting & updating appearances of the remaining stack on the ground
or the user hand.

B) When using the RPED or BRPED to display machine part information
these are the new formats

Using an RPED on an thermo machine
![Screenshot
(42)](https://user-images.githubusercontent.com/110812394/199978302-bf2e16a8-4f73-4467-be60-4a4fa2ef6468.png)

Using an RPED on the crystallizer
![Screenshot
(43)](https://user-images.githubusercontent.com/110812394/199978628-6fb0bf2b-978c-490d-a2e1-e5d1d72b460d.png)

##Change Log
🆑
add: checks while inserting stack materials into an RPED and their
amounts
code: sorting of RPED part components to sort stack materials by their
ratings
del: old way of displaying parts when clicking on an machine frame with
it
add:new way of displaying part info which displays number of parts
including for stack materials
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-24 20:43:42 +00:00
Jacquerel 91b540e75a Basic Mob Carp Part III: Nuclear Operatives (#71439)
## About The Pull Request

Third atomisation of #71421 
I'll stop there until these three are dealt with, before opening more.

This PR extracts all of the behaviour on Cayenne which let her be a
pseudo-nuclear-operative into a component which can be used by any mob
to give it the capabilities of a nuclear operative.


https://user-images.githubusercontent.com/7483112/203334848-57a6c38d-2e4f-406d-9b49-8106d31b7930.mp4
I recorded this in a way which did not pick up the UI popups so imagine
the strip and numeral entry windows yourself.

Nuclear bomb operators can:
- Strip people.
- Pick up the disk.
- Put down the disk.
- Insert the disk into the bomb.
- Activate the bomb.

## Why It's Good For The Game

Moves code from being specific to one mob to generic to any mob. 
I am not sure we'll make a lot of mobs which attach this on initialise,
but I am sure admins will have fun with it.

## Changelog
🆑
refactor: Cayenne's ability to participate in Nuclear Operations is now
a component which any mob can use.
/🆑
2022-11-23 13:11:24 -08:00
Sol N d7c1f7294a Adds screentips to the customizable food datum (#71444)
## About The Pull Request

Straightforward follow up to doing this to processable.dm, adding
screentips to a basic cooking thing so that there's never confusion
about what is and isn't a valid ingredient for a specific food. Also
changes some to_chat stuff into balloon alerts.

![dreamseeker_agcvu4Yew3](https://user-images.githubusercontent.com/116288367/203356066-c6ccba87-72f4-4af0-99c7-f04dd26b8583.png)

 

![dreamseeker_fJB6K6G3Ze](https://user-images.githubusercontent.com/116288367/203356061-32f24637-159e-4839-8df8-dd9877f677c7.png)

![dreamseeker_2QkSnwZrUu](https://user-images.githubusercontent.com/116288367/203356064-7c81c0d0-0c04-4f56-85f5-cb9f445d1f8c.png)

As part of this, customizable food now calculates the valid ingredients
in its own variable, which means that if anyone wants to change how
valid ingredients work separately from the other parts of how this datum
works.

I'm unsure of the wording for the tip, i think that having it just be
"add" works but it doesn't hurt to start with the possibly unnecessarily
specific "add [item you are holding]"

## Why It's Good For The Game

Adding in screentips as parts of modules like this is good and I like
balloon alerts more than to_chats for really small and fast "you cant do
that!" type stuff.

## Changelog

🆑
qol: added screentips to customizable food
qol: added more balloon alerts to custommizable food
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-23 20:16:16 +00:00
Jacquerel 21c43121f5 Basic Mob Carp Part I: Colourful carp (#71436)
## About The Pull Request


![image](https://user-images.githubusercontent.com/7483112/203319134-e7e1f64b-3eee-4e2d-a364-cb4eebcfd43b.png)

First step of atomising #71421 
This PR adds GAGS configs to megacarp and magicarp.
Magicarp were already just "carp but a specific colour", now instead
they are differentiated by having animated glowing eyes.
Megacarp have a randomly generated colour.

Additionally, inkeeping with the fantasy theme (they're wizard event
mobs) magicarp are colour coded by what spell they cast and gain a name
prefix based on the same, so you can tell what they're going to do to
you before they do it.
_Chaos_ magicarp change colour randomly every time they cast a spell.
Holographic carp don't have a colour config, Lia always uses the old
Magicarp colour, and Cayenne still has a random colour with an increased
chance over regular carp to be silver.


![image](https://user-images.githubusercontent.com/7483112/203319112-2765cc77-f91e-4332-9cb3-fffc99561855.png)

## Why It's Good For The Game

It makes "big carp" share a feature with their smaller cousins in a way
which I think looks nice.
It makes it easier to tell the more dangerous magical carp from the
regular ones (rather than just memorising which colour means they can
cast spells) as well as what specific _way_ they are dangerous.

## Changelog
🆑
qol: You can see what kind of spell a magicarp will cast by hovering
your mouse over it.
imageadd: Megacarp now have a random colour.
imagedel: Magicarp are now colour coded based on their spell, or change
randomly if they're Chaos Magicarp.
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-23 19:09:15 +00:00
Roryl-c 637e92fa8a Fix Flypeople food consumption (#71432)
## About The Pull Request

This PR fixes #70716 by having flypeople ingest vomited reagents into
their stomach instead of directly modifying nutrition. To accomplish
this, flypeople no longer vomit their entire stomach contents every life
tick, which also fixes them vomiting immediately on spawn. Instead they
vomit only after taking bites of food.

Since flypeople aren't currently metabolizing food the same way as other
species there's a huge discrepancy in nutrition gained from food. For
example, a human gets 37 nutrition from a slice of pizza and 270
nutrition from a whole margherita pizza, but a flyperson only gets 10
and 70 respectively, meaning they'd need to eat 4 entire margherita
pizzas and slurp up the vomit to go from total starvation to being
satiated again. With this change flypeople get ~190 nutrition from a
whole margherita pizza.
## Why It's Good For The Game

Makes it easier for flypeople to stay satiated without having to consume
mass amounts of food. Also makes it easier and more predictable to deal
with flyperson interactions with other reagents getting in their stomach
- for example, currently taking a happy pill causes flypeople to vomit
due to the sugar.
## Changelog
🆑
fix: Flypeople gain a comparable amount of nutrients from vomited food
to other species (~70%, up from ~30%)
fix: Flypeople no longer vomit after drinking fluids
fix: Flypeople no longer vomit all contents of their stomach on spawn
code: Stomachs can now react to foods entering them by overriding the
`after_eat` proc
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-23 11:02:43 -08:00
Fikou eb06b4c841 you get access to the next storage ui row 1 item earlier (#71445)
## About The Pull Request
the next ui storage row spawns when your last row is full, rather than
when theres enough items that its needed

![image](https://user-images.githubusercontent.com/23585223/203356246-afab63f8-a302-4f0c-a1ff-cadd45da32bc.png)
not when its full or missing slots though

![image](https://user-images.githubusercontent.com/23585223/203357844-14a4b80e-26dd-4814-98b9-1556e0a95e29.png)

![image](https://user-images.githubusercontent.com/23585223/203357904-54c499e5-8003-4bd2-a757-26bb6bc53e1d.png)


## Why It's Good For The Game
its annoying especially with the doctors special medkit, cause youll be
storing stuff in it and if you take out enough items to where its just 7
left, the row closes and you need to go back to the backpacks storage ui
to put stuff back in

## Changelog
🆑
qol: you get access to the next storage ui row 1 item earlier
/🆑
2022-11-23 11:01:59 -08:00
Jacquerel f47b29a392 Basic Mob Carp Part II: Regenerator (#71437)
## About The Pull Request

<details>
  <summary>Video</summary>
  

https://user-images.githubusercontent.com/7483112/203324325-5bf46e0f-b294-4832-9016-aec275036ca9.mp4

</details>


Adds a "Regenerator" component, applies it to carp, and removes the
previous implementation from megacarp.
The function of this component is that any time you take damage a timer
is reset, when that timer expires you will begin regenerating health and
display an animated border for visual feedback.
This was previously a function of mega carp but was extremely obscure
because there was _no_ feedback, so it would only be visible that it was
happening if you were wearing a medical hud.

Additionally because mega carp will pursue a target until it dies you
probably wouldn't notice it even then, it had to survive a fight in
order to gain any value from this.
This will still be true for all carp until AI changes are pushed, so
until then this isn't going to do very much for NPCs but might be a
small buff to player controlled carp (though those can all retreat to a
carp rift for a similar effect).

This also modifies a few "defence" procs which were either directly
setting HP or neglecting to call signals from a base proc, as they would
bypass triggering the effect. This should make them more reliable for
other things which rely on those signals too.

## Why It's Good For The Game

Gives an iconic creature some more unique behaviour than "moves directly
towards you and bites".
Gives visual feedback to some behaviour which has existed invisibly for
a long time.

## Changelog
🆑
add: All Space Carp will now start regenerating health after 6 seconds
of not taking any damage, until they're back to full health. This
behaviour was previously unique to mega carp.
/🆑
2022-11-23 09:40:59 -08:00
texan-down-under 4fe85d0453 Modifies the moodlet colors slightly (#71181)
## About The Pull Request
Makes the moodlets between neutral and happy_1 use the info span instead
of the gray span
## Why It's Good For The Game
You can actually tell whether your character likes/dislikes the
lower-effect moodlets, and act accordingly.
## Changelog
🆑
qol: slight positive moodlets use a different color to slight negative
ones
/🆑

Co-authored-by: etherware-novice <candy@notarealaddr.com>
2022-11-23 09:39:10 -08:00
GoldenAlpharex fccd833526 Fishing Odds Code Improvements and Rescue Hooks (#71415)
## About The Pull Request
I wanted to try and implement an easier way for people to fish out
corpses from chasms, as I heard many tales of people trying to fish
others out of chasms and it taking over one IRL hour, with some cases
where it would take over two hours. Obviously, that's not really
interesting gameplay, and it doesn't really give people an incentive to
fish, it just turns it into an annoyance that people won't want to do
for fun. Now, we don't want that, do we?

As such, I've created the rescue hook, a special fishing hook that can
only be used in chasms (as that's currently the only place you can find
people into), which will only be able to fish out duds, skeleton
corpses, any mob that's fallen into a chasm and hasn't been rescued yet,
or rarely, a hostile monster lurking below. It has, at the time of
writing this, a weight of 5 (50 without bait, lower with bait) for duds
and a weight of 30 for chasm detritus, which themselves have a 50%
chance to be a random skeleton corpse, or a lobstrosity, and the
remaining 50% chance of fishing out a mob that's fallen into a chasm.
I'm open to tweaking these values if we think it's too easy or too hard,
but it's still a rather expensive item, so I'd consider it quite fine
the way it is myself, as it's still not risk-free.

It's currently only obtainable through buying it from cargo in the
goodies section, at a default price of 600 credits (making it
SIGNIFICANTLY more expensive than the rest of the fishing content, and
making it something that assistants will have to put some elbow grease
into if they want to be able to afford it).

As it stands currently, it can't be used to recover the fallen's
belongings that weren't on their person (i.e., their crusher if they
were holding it in hands), ~*but* I'm down to make that easier to fish
out using, for instance, the magnet hook, while also making it
incompatible with fishing out bodies, which would make it a nice way to
recover those lost items without spending over an hour fishing for them,
if that's something that maintainers would want.~ Maintainers did want
it, and as such...

The Magnetic hook is now the go-to hook to retrieve objects from chasms!
Not only does it inherently do a much better job at fishing out
non-fishes, it also has a lesser chance of retrieving random junk from
chasms, and an even lower chance of fishing out lobstrosities!

I also improved the code for the fishing weights calculation so that the
hooks and the rods can have an effect on the odds of certain types of
rewards more easily, with the option of offloading a more of what's
currently being calculated on `fishing_challenge` over on the rods or
even the hooks themselves.

I finished by fixing a handful of capitalization and punctuation issues
in various fishing items, as that bugged me when I was testing my
changes.

## Why It's Good For The Game
Corpses being recoverable from chasms was a great idea, however making
it so people would have to sink a major portion of their shift for a
chance at recovering a corpse doesn't create a particularly interesting
gameplay loop. However, being able to spend your hard-earned funds in
order to streamline that process without really being able to use that
to cheese other mechanics sounds like a great deal to me.

## Changelog

🆑 GoldenAlpharex
add: Added a Rescue Hook, that will allow the fishing rod it's attached
onto to become a lot more proficient at recovering corpses from chasms,
at the expense of making it unusable for more traditional fishing. It
isn't entirely lobstrosity-proof, however...
balance: The magnetic hook can no longer fish out corpses from chasms,
but will fish out items much more efficiently than any other hooks,
while also being much less attractive to lobstrosities. Some still fall
for it regardless, however.
spellcheck: Fixed the capitalization and punctuation in the description
of multiple fishing accessories.
code: Improved the code for fishing weights, to allow for different
hooks to have some more noticeable results on the weights without having
to add to an already massive proc.
/🆑
2022-11-23 15:30:36 +01:00
ike709 e60f548de1 OpenDream Cleanup Pass - Unused Vars (#71428)
## About The Pull Request

OpenDream (@Altoids1 specifically) discovered that BYOND will not throw
an unused variable warning if its type doesn't exist. So this removes
those from TG.

Co-authored-by: ike709 <ike709@github.com>
2022-11-23 08:26:53 +01:00
MrMelbert aa95daa4e8 Fixes an exploit with stacking igniters. Refactors some assembly flag oddities. Limits assembly holders at 12 assemblies. (#71264)
## About The Pull Request

Soft revert of #71224 , Fixes #71222

Fixes an exploit involving attachment of multiple igniters to one
assembly.
- Multiple igniters or condensers can no longer be attached to the same
assembly holder
- Assembly holders have a limit of 12 assemblies maximum
- I'm not sure if this is too low or limited, I picked it arbitrarily.
Please inform me if it could be upped a smidge.
- This lag exploit was born because of limitless assembly holders, which
is a little silly even with the exploit aside. All that uncapped holders
can bring are exploits or bugs, which I feel confident limited can
prevent. What use is there even for having so many?
- Cleans up / refactors some aspects of assemblies and assembly holders.
- Assemblies had a weird wire type flag that was only ever used by
signallers, but also used wrong by signallers. I did some scanning of
the code and realized that ... a lot of this was just straight up
unused, and not even assigned anywhere.
- Now, there is a flag assembly flag var, which everything is read off
of. Tested it and still seemed to all work fine.

## Why It's Good For The Game

Lag exploits are bad. 

## Changelog

🆑 Melbert
fix: Fixed an exploit involving igniters attached to themselves.
Assembly holders are now limited to 12 assemblies maximum, and you
cannot attach multiple igniters to the same assembly.
refactor: Refactored some assembly jank, namely in how they pulse and
are pulsed.
/🆑
2022-11-22 16:31:51 -08:00
AnturK 7114b45ad6 Fixes surgery clothing checks (#71435)
Fixes #71413

Just a simple flipped return issue.
2022-11-22 16:38:15 +00:00
AnturK 84f69359a0 More horrible 515 proc compatibility. (#71333)
So i left over some basic `/whatever/proc/format` uses in the original
PR this fixes it.

Notable exceptions to the rule:
- Paths in add_verb/remove_verb, we need full path instead of a name
there to access verb metadata so we can't use proc ref macros there.
- regex.Replace, found out that it does not accept call by name. Instead
i added new REGEX_REPLACE_HANDLER so we can at least try to mark these.

There's still leftover global procs that do not use GLOBAL_PROC_REF but
they functionally equivalent so that's for later.

I don't see any reasonable way to grep for this. But if you got any
ideas please share.
2022-11-22 07:55:43 +00:00
Mothblocks fa7688d043 Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED (#71056)
- Makes QDELETED use isnull(x) instead of !x, giving about 0.2 to 0.25s
of speed.
- Make disposal constructs only update icon state rather than go through
expensive overlay code. Unfortunately did not have much effect, but is
something they should've been doing nonetheless.
- Makes RegisterSignal only take signals directly as opposed to
allocating a fresh list of signals. Very few consumers actually used
this and it costs about 0.4s. Also I think this is just a bad API anyway
and that separate procs are important

`\bRegisterSignal\((.*)list\(` replaced with `RegisterSignals($1list(`
2022-11-22 07:40:05 +00:00
Zonespace 021e56f8ff Adds the ability for ERTs to use a custom shuttle (#71348)
## About The Pull Request
ERTs can now have a custom shuttle template defined on their type,
which, should the "use custom shuttle" toggle be enabled while creating
the ERT, will spawn them in deep space on the given shuttle instead of
at Centcom.

Applies the new system to the bounty hunter ERT

## Why It's Good For The Game
Not all ERTs are NT enough to start at Centcom all the time, and it
gives more control over ERTs

## Changelog
🆑
admin: ERTs can now have a custom shuttle that they can spawn on, on a
toggle while creating said ERT.
/🆑
2022-11-21 22:58:08 -08:00
nevimer 19df98e098 More logging for Supermatter activations & cleaning?. (#70498)
## About The Pull Request

This pull request adds logging and flags the start of the supermatter
from environmental starts. It also makes the log generation and started
flag flipping a proc. This means that atmospheric starts are now logged
(co2, o2, trit, etc), and so is touching/running into the SM.

[Dreamseeker
9Gkzvyfwdp-1.webm](https://user-images.githubusercontent.com/77420409/195494711-d9295b23-3ec3-447e-b255-fd14454bab5c.webm)


## Why It's Good For The Game

Just a tad more log clarity when you go to investigate. Allows
accidental/intentional/grief starts to be diagnosed easier.
2022-11-22 05:34:09 +00:00
MrMelbert 7dde8a5e66 Adds 5 new Heretic spells. Rebalances some aspects of Heretics. Refactors some spells as well, and makes it so emote spells require free hands. (#71044)
## About The Pull Request

- Adds 5 new heretic spells!
- For Flesh: Flesh Surgery. This spell is a touch spell that can either
be used to heal your minions or extract organs from mobs.
- For Void: Cone of Cold. This is a simple spell - it shoots out a cone,
of cold, that freezes and damages people caught in it.
- For Ash: Volcano Blast. This spell functions like Tesla Blast, but
instead of electricity, it shoots out of a beam of fire that hurts to
walk over.
- For Blade: Realignment. Think of this like "Fleshmend but for stuns /
stamcrit". It rapidly regenerates stamina damage and reduces stuns,
while making you a pacifist. It can also be cast in rapid succession,
but this will increase the cooldown.
- For Rust: Rust Construction. Point at a rusted tile, and a wall will
be raised where it was instantly. This even damages people and throws
them aside - Or, if on a multi-z map, can lift up.

- Number of influences has increased.
  - 5 at 1 heretic
  - 9 at 2 
  - 12 at 3
  - 14 at 4
  - 15 at 5
  - 16 at 6, and so on

- Heretics are given a 5th sacrifice target, selected randomly. On
average an additional sacrifice is needed for their objectives.

- Being sacrificed grants you a permanent phobia of the supernatural.
Phobia of the supernatural has been expanded to cover heretic items and
mobs.

- The equation for offhand damage of blade heretics was tweaked. Actual
result unchanged, it's just more resilient to future changes now.

- Touch spells were refactored a bit, and overall expanded to be easier
to use

- Charged spells were added, and charged beam spells. Tesla blast uses
this.

- Cone spells were refactored to be easier to setup.

- Jaunting will now hide your runechat when it triggers, to make it less
easy to follow.

- Heretic Ghouls now take less stamina damage based on how low their
health pool is.

- Emote based spells now require hands to be unblocked to be cast, like
mime spells.
- Yes this gets rid of handcuffed invisible walls... Not 100% on this,
but I figured it's good for consistency? Open to discussion

## Why It's Good For The Game

A lotta feedback has passed through about heretic and it's time to
address some of it

- Problem: Not enough cool flash spells. Makes Focus not worth it. 
   - Solution: Adds some more spells to encourage focus use. 

- Problem: Sacrifice targets being too willing or not harmed enough
   - Solution: A permanent trauma. 

- Problem: Not enough ways to power up.
- Solution: Adding more influences around, though I think there should
be more variety in knowledge rituals as well.

- Problem: Ash Passage sucks
   - Solution: Makes it a smidge better to stay hidden with it.

- Problem: Heretic Ghouls get one hit by batons
- Solution: Stamina modifier should put them on par with unmodified
humans.

## Changelog

🆑 Melbert
add: Added five new heretic spells, one for each path. They come after
the Ritual of Knowledge.
add: Cone of Cold, for Void heretics. Shoots out a freezing chill in a
cone which deal damage and freezes.
add: Flesh Surgery for Flesh heretics. A touch spell which can either
heal minions or be used on mobs to extract organs without surgery.
add: Volcano Blast for Ash heretics. A beam spell, like Tesla Blast,
which fires out a beam of fire that bounces between people.
add: Realignment for Blade heretics. Fleshmend, but for stuns and
stamina damage. Makes you a pacifist, but rapidly regenerates stamina.
add: Rust Construction for Rust heretics. Places a wall of rust on the
target rusted flooring. Can even be used to ascend z-levels!
balance: Nerfed the cooldown of Cleave slightly, buffed the cooldown of
Lesser Cleave slightly.
balance: Slightly more influences will spawn on the station per heretic.
balance: Heretics require an additional sacrifice on average for
ascension, but are given a fifth sacrifice target (randomly selected).
balance: Being sacrificed by a heretic now gives you a permanent phobia
of spooky things, including heretic mobs and items.
balance: Heretic ghouls now take reduced stamina damage, depending on
how small their health pool is.
balance: Using Jaunts will conceal your runechat for their duration. 
balance: Spells which require emoting (Mime spells) require your hands
not be blocked to use.
refactor: Touch Spells were improved a bit. Added some new template
spells - Charged spells, and Charged beam spells.
fix: Fixes a runtime from losing heretic.
/🆑
2022-11-21 21:30:46 -08:00
Sol N 85ab2797b1 Refactor of pizza crate code and various other small pizza related code changes (#71202)
## About The Pull Request

The first and biggest thing that is in this pull request is changing the
old pizza crate code from something that is hard to parse and full of
blahblach = C stuff into things that I believe are more in line with
modern standards, which adds the potential for expansion or additions to
pizza crates with more ease if, for example, someone wanted to make a
flatbread crate or something.

I've also changed all of the lizard flatbreads from just /food/pizza/
into being /food/pizza/flatbread so that I could fax them, along with
sliced bread.

Then I went in on pizzabox code adding various screentips and balloon
alerts so that holding stacks of pizza and manipulating them doesnt fill
your chat with stuff and finally to pizza code to add screentips.

![dreamseeker_SF20VOXlNJ](https://user-images.githubusercontent.com/116288367/201151348-379393da-e807-45fd-9643-a2582ecd27a3.png)

![dreamseeker_wtROqx0gEc](https://user-images.githubusercontent.com/116288367/201151349-b84e031f-c94f-4265-962b-9151fa573b1e.png)

![dreamseeker_2dfG6QkV4R](https://user-images.githubusercontent.com/116288367/201155518-aba1ccf2-1fa2-4289-b766-ddae15e8bf1c.png)

EDIT: I've changed the code so that instead of using the tool context
screentips add element, it adds screentips via the processable add
element which means all processable food now has a default screentip of
"process" as a result of this PR

## Why It's Good For The Game

Old pizza crate code was unclear and now is clear so it should be easier
to know what to mess with if someone wants to change them further or add
or expand them.
We all like screentips!
Old pizzaboxes had way too many unnecessary messages getting printed to
chat.
You can fax root flatbread but not flatbread with toppings on them and
while that can make a kind of sense you can fax pizza slices with
toppings on them! Bread slices just also makes sense to add while I'm at
it.

## Changelog

🆑
add: you can fax flatbreads and slices of bread now, changed all
flatbreads into children of pizza/flatbread to allow for this
qol: adds screentips to various pizzabox action (stacking, when you can
take pizzas out, pizza box bomb stuff)
qol: adds a way to add screentips directly into processable food via the
add element processable proc
refactor: pizza crates work the same but more clearly and more variable
/🆑

Co-authored-by: san7890 <the@san7890.com>
2022-11-21 21:26:58 -08:00
Y0SH1M4S73R 533d235e51 Ensures external libraries can't be called by callbacks (#71346)
## About The Pull Request

It is possible to create a callback whose `object` (the datum it tries
to call) is a path to an external library. Needless to say, it's
probably a bad idea to allow admins to call arbitrary external
libraries. Var-edited callbacks won't be able to reach the point where
the library is executed, but only because `WrapAdminProcCall` runtimes
when trying to call `CanProcCall` on a string, but if there is some way
to call a function that creates a non-varedited callback with an
external library as its object, this PR prevents that.

## Why It's Good For The Game

See above.

## Changelog

🆑
admin: Admins are unable to invoke functions from external libraries
using callbacks.
/🆑
2022-11-22 05:14:46 +00:00
necromanceranne 87f5f2ecfa What if meteorslugs were mini cannonballs (#71137)
## About The Pull Request

Meteorslug shells fire effectively mini cannonballs. They're not as
strong, but they tear through everything they shoot, including walls and
airlocks. They're not as lethal as the real deal or go nearly as far
(range of 7, not even a screens length), but they are still pretty
destructive. They don't fling people, but they could potentially barrel
over several people, which I think is a good trade-off.

Meteorslugs need gunpowder (for a bigger shot) and rum (yarr) to
construct.

## Why It's Good For The Game

Only through sleep deprivation do I get such diabolical ideas.

Also, the original functionality wasn't very interesting except for
like, maybe a few niche silly things, but the real value was using them
to get into places. This version still definitely does that. But it's
_cooler_.

(The object displacement was pretty jank and I think this accomplishes a
very similar effect without actively harming why people would look to
use meteorslugs)

## Changelog
🆑
balance: Meteorslugs are now miniature cannonballs. They also need more
gunpowder and rum to be constructed.
/🆑
2022-11-21 21:03:26 -08:00
Andrew 590847bdf7 Biogenerator tweaks, leather makes more belts and clothing (#71175)
## About The Pull Request

### Revamped the biogenerator UI:


https://user-images.githubusercontent.com/3625094/200973283-b703f21b-c747-493e-98d9-043eef86d410.mp4

### Changed biogenerator icon to use layers and see the biomass level:


https://user-images.githubusercontent.com/3625094/201396065-caeaa412-6676-46f6-875e-efa2dca34985.mp4

### Biogenerator rebalance:

- Now you don't need the beaker to print solid products.
- Biogenerator now accepts all food, not just plants.
- Biogenerator now treats all nutriment subtypes as nutriments, so
vitamins and proteins also turn into biomass.
- Biomass now has the same units as other reagents (you get 5 biomass
from 5 nutrient with tier 1 parts).
- Doubled the cost of all items and reagents. (biomass generation
reduced by 10 and prices - by 5)
- Chemicals output amounts are now in units and you can select how much
you want to output exactly. It will not let you specify more than the
size of container or above 50 units with one button click.
- Reduced the amount of stored items and introduced a limit to the
biomass, both tied to the matter bin tier.

### Recipes changes:

Made biogenerator more dumb by moving the clothing out from the
biogenerator designs, and extending leather recipes instead.

The biogenerator is a grinder/recycler style machine so it doesn't make
sense that it outputs clothing.
Also you need to make leather to craft the toolbelt, while you can't do
the same to craft job-specific belts.
Now you can print leather in biogenerator and craft the leather clothing
by using the leather in-hand.
And the rice hat is now crafted from bamboo, instead of biogenerator.

Also added paper to the biogenerator recipes as it makes stuff from
cellulose and barely anyone knows that you can craft paper from 1 log
and 50 water. And paper is needed in large quantities to craft some
items, like paper frames.

And it doesn't output a pack of rolling paper. It's dumb now. It prints
the rolling paper sheets instead.

## Why It's Good For The Game

Biogenerator had terrible UX and backend logic. I didn't improve much on
BE though, but now it should be less frustrating to use.

Also I hate how biogenerator is superior to all other means of obtaining
its products. It doesn't make sense to grow and grind wheat, for
instance, when you can just throw shit into biogenerator and get the
flour fast. And the costs are ridiculous - you can get a couple of
bottles of fertilizers just from one medium potato.

It honestly begs for more nerfing, at least to make the nutriment -
chemicals exchange rate 1:1.

The reason for the biomass cap is because people use it as a sink for
veggies and generate infinite biomass. Maybe the limit will make them
care more about the part upgrade and offload some of the veggies to the
fridge for the Cook.

Also it was weird that biogenerator could tailor some things, while
others have to be crafted in-hand. Now you can print leather and craft
all types of belts and leather clothing.

## Changelog
🆑
refactor: biogenerator UI revamped
qol: biogenerator no longer requires beaker for materials, monkey cubes
and nori
balance: biogenerator accepts all food, not just plants
balance: biogenerator treats all nutriment subtypes as nutriments
(vitamins, protein, etc.)
balance: biogenerator product prices doubled
balance: biogenerator biomass storage is limited depending on the level
of matter bins
balance: cowboy boots recipe moved from crafting to leather recipes
balance: leather clothing & belt recipes moved from biogenerator to
leather recipes
balance: rice hat recipe moved from biogenerator to bamboo recipes
balance: biogenerator now outputs rolling paper sheets instead of a pack
add: biogenerator can now print paper
imageadd: biogenerator icons now use overlays, have emissive layer and
indicate the biomass volume
/🆑
2022-11-21 20:57:13 -08:00
ShizCalev 9dab26371c Throws a bunch of parenthesis around to ensure dear Aunt Sally is always properly excused. (#71281)
Similar vein to #37116

This is supposed to be standard, yet here we are.

SHOULDN'T change anything, but there's likely something out there that's
bound to behave different because of it.


These were done manually, regex to find things that MIGHT need to be
corrected;
`^#define.+\+((?!\)).)*$`
`^#define.+-((?!\)).)*$`
`^#define.+\*((?!\)).)*$`
`^#define.+\/((?!\)).)*$` (yeah that's a lot of stuff.)
`^#define.+%((?!\)).)*$`
`^#define.+SECONDS((?!\)).)*$`
`^#define.+MINUTES((?!\)).)*$`
2022-11-21 20:53:06 -08:00
Zonespace dccbf7e5a6 Unit tests radio, saymode, and language prefix keys (#71328)
## About The Pull Request
This PR unit tests radio/saymode prefixes together, and language
prefixes on their own, for any possible overlaps and duplicates

Moved mafia saymode key to :1 and holopad key to :2, we're running out
of radio keys and i'm too afraid to move to 2-letter

## Why It's Good For The Game
1. Unit tests are good
2. https://github.com/tgstation/tgstation/pull/71326 this is bad

🆑 
spellcheck: Mafia changeling say prefix is now :1, and holopad say is
now :2
/🆑

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2022-11-21 20:44:55 -08:00
Zephyr fbc63a5660 Inserting a wielded item into a container/other will no longer cause it to ghost at your feet (#71370)
## About The Pull Request

see title
## Why It's Good For The Game

resolves https://github.com/tgstation/tgstation/issues/71322
## Changelog
🆑
fix: two handed items will no longer leave a ghost at your feet when
inserted into something
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-22 03:13:36 +00:00
MrMelbert ce71f2dc69 Replaces some bad trait sources and updates two trait names (#71375)
## About The Pull Request

Traits should never use a hard reference as their trait source, if you
want to use a "reference" to a datum use `REF()` instead, or it will
cause hard deletes

Also renamed some traits which didn't use the "standard" scheme, because
I saw it while regexing

## Why It's Good For The Game

- Prevents some hard deletes
- Uses a less confusing naming scheme

## Changelog

Not necessary
2022-11-21 18:47:52 -08:00
Dani Glore 8f712417c2 Sign Language Hotfix (#71389)
## About The Pull Request
This is a hot-fix for PR #71265

In PR #71265 there was a minor oversight, which caused a bug. The bug
occurred when the Mute and Signer traits were added out-of-order, and
the mob would be totally unable to talk. The bug was introduced
accidentally when a late-change was added to the PR to have the
component add an Action. The Action was responsible for toggling-on sign
language if the mob was mute, but in this case was doing so before the
neccesary signals were registered.

This PR fixes the bug by moving the Action's Grant call to after
necessary signals.

## Why It's Good For The Game
Due to my oversight and some last-minute changes from maintainers, some
people who spawn with Mute and Signer will be totally unable to
communicate. This PR fixes the bug, which I noticed affects downstreams
more than TG for some reason.

## Changelog
🆑 A.C.M.O.
fix: Fixed a bug that caused the Signer quirk to stop working as
expected when used with the Mute quirk.
/🆑
2022-11-21 11:53:26 +01:00
san7890 cb20ec99f9 [MDB Ignore] Unit Tests for Invalid Space Turfs (Area Bullshit Edition) (#70967)
## About The Pull Request

So, there's some bullshit with the map loader(?) sometimes where it'll
let space turfs spawn in spots where we REALLY don't want space turfs.
Or, it could also just be a mapper screwing up. Anyways, we might miss
these, so let's set up a broad Unit Test that checks and verifies that
these round-ruining snagglers do _not_ exist.

In order to help me to do this, I standardized and fixed the
nomenclature such that `/area/ruin/space` is default for any map file in
`_maps/RandomRuins/SpaceRuins`, as well as it's subtypes. I also touched
up how we handle shuttle areas in these scenarios. This got a lot of
Unit Test noise filtered out, and is crucial for its functioning. It
should also be how we did it from the start anyways. I added in an
UpdatePaths for any compatible change, but it was completely
non-workable for some of the area type updates.

I also fixed any organic bugs that didn't require an areas type update.
Cool.

Placing space turfs on IceBox:

![image](https://user-images.githubusercontent.com/34697715/199177940-21c64964-1808-41b0-9a92-bf5b82eee2fa.png)

Organically found issues:

![image](https://user-images.githubusercontent.com/34697715/199177972-b27a89de-0e1a-41e5-8fa4-3bee1763b9da.png)

I also added a `planetary` variable to `/datum/map_config` because I
didn't like the hack I was using to see if we had a planetary map, and
I'd rather it just be an explicit variable in the map's JSON.

## Why It's Good For The Game

The less times we get Space Turfs showing up on IceBoxStation, the
better. It also standardizes areas a bit more, which I like (we were
using some incorrect ones in the wrong spots, so those were touched up
in this PR as well). Like, if it's a space ruin, we don't need to use
the lengthy `/area/ruin/unpowered/no_grav` when `/area/ruin/space` does
the same thing.
## Changelog
Nothing in here should concern a player (unless I broke something)

Expect a few commits as I spam unit tests a few times and play
whack-a-mole with bugs.
2022-11-21 07:59:54 +00:00
Rhials fccca69135 Fixes absent spread_text instances (#71386)
## About The Pull Request

spread_text dictates the readout next to "type" on a health analyzer's
output. It was absent from some special diseases (and also the common
cold), leading to the field being blank on the analyzer results.
## Why It's Good For The Game

Closes #71379.
## Changelog
🆑
spellcheck: Adds spread text to some diseases that lacked it.
/🆑
2022-11-20 23:37:46 -08:00
disappointedButNotSuprised f45e58cf0e Coffee Shop DLC - done right this time edition (#70991)
## About The Pull Request

this is a re-attempt at PR #70725 that was practically ready but was
ruined in the course of my hardships with git. Mistakes were made.

In this re-edition I also addressed a few suggestions from the comments
of the original pr. There is a shaker added in the meta station cafe and
the pill bottle is moved out of sight to the fridge (I still left it
cause it contained antidepressants for the especially overworked NT
employees). Additionally, the naming of `/cup/glass/coffee` has been
handled differently this time to minimize the need of changing the code
in multiple places.

Please refer to the original PR for all details concerning the content,
below I add just a rough line-out for the sake of coherency.


![image](https://user-images.githubusercontent.com/57324037/199326210-216e5687-c205-4252-aae3-d55232c1c352.png)

The content of the pr extends to:
- a new coffee bean driven coffeemaker
- syrup bottles
- a coffee condiment display box
- almost complete make-over of the meta station cafe
- adding the new coffeemaker in a few break rooms on delta and tram (2
machines per station)

## Why It's Good For The Game

Please refer to #70725

## Changelog
🆑
add: After a massive success of the Modello 3 series, Piccionaia Home
Appliances rolls out a completely new coffeemaker model and renovates
the meta station cafe for free in a promotional campaign!
add: Syrup bottles, condiment displays, and more, to make the spess
coffee experience even better
/🆑

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-11-20 23:23:15 -08:00
John Willard 3b0794eca9 Surgery code improvements (#71182)
## About The Pull Request

* Changes a lot of things about surgeries to hopefully bring it up to
more modern code standards.
* Removes a ton of single-letter vars used in checking surgeries on
people.
* Makes use of continue/break in for() loops.
* Properly documents the vars on surgeries
* Turns 'ignore clothes', 'self operating', 'lying required', 'require
limb' and 'require real limb' from vars into surgery flags
* Removes a lot re-defines of target_mobtype being set to human, as
that's the base anyways.
* Also tries to organize the vars on each surgery a bit.
* Makes the surgery initiator hopefully a little bit more sane
* Removes the surgery's can_cancel and stomach pump's
accumulated_experience vars, as they were entirely unused.

## Why It's Good For The Game

I looked at surgery code and couldn't stand it, this is hopefully
helping bring it to something we can stand.
This however doesn't touch the individual surgery steps.

## Changelog

im exhausted i don't know if this has in-game effects
2022-11-20 23:22:46 -08:00
John Willard 3d4473d141 Makes ruin blacklist file actually set from JSON (#71387)
## About The Pull Request

Json was never checked for the blacklist file, meaning icebox didn't
have any blacklisted ruins.

Now:

![image](https://user-images.githubusercontent.com/53777086/202890015-6d5df1ef-c03e-4392-857a-3ff317ffc2d3.png)

## Why It's Good For The Game

I broke icebox's blacklist by fixing lavalands, hopefully now both will
work.

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

## Changelog

🆑
fix: Icebox's blacklisted ruins works again.
/🆑
2022-11-20 23:14:35 -08:00
Dani Glore be1edab621 Sign Language Refactor & Bugfixes (#71265)
## About The Pull Request
This PR contains an intermediate refactor and a bug-fix for sign
language, which was originally from the Tongue Tied quirk/tongue. With
helpful advice from @MrMelbert and @LemonInTheDark, I have successfully
decoupled sign language from the tongue and ported it into a highly
modular DCS component, and then added an Action for toggling it. Big
thanks to @Wallemations, the original creator of Tongue Tied, for
creating the new Action sprite and helping me to complete this project!

The new sign language component is added to all new Carbon mobs, and
incrementally overrides several critical functions, variables, and
argument lists relevant to a mob's speech; the component primarily
listens for the addition/removal of trait `TRAIT_SIGN_LANG` in order to
function.

Additionally, fixed a bug in the original implementation of sign
language that caused its say verbs such as "emphatically signs" to stop
working. The bug was caused by an unsafe early removal of exclamation
points from the input string, causing a conflict with the `say_mod` proc
which requires such punctuation points to be present.

Here's a granular list of changes:
- Added a ubiquitous signal to extend the behavior of
`/atom/movable/proc/say_quote`.
- Added a ubiquitous signal to extend the behavior of
`/atom/movable/proc/lang_treat`.
- Fixed a bug in the original implementation of sign language that
caused its `verb_yell` to stop working.
- Refactored sign language into a Carbon-only DCS component.
- Refactored the Tongue Tied tongue to use `TRAIT_SIGN_LANG` and
`TRAIT_MUTE`.
- Removed the Tongue Tied quirk, in favor of two separate quirks.
- Added the Signer quirk for sign language, good, costs 4 points.
- Added the Mute quirk, negative, gives 4 points.
- Added a rare sign language Action granter book to maint and space
loot, "Galactic Standard Sign Language".

## Why It's Good For The Game
This PR tactfully re-implements Tongue Tied, re-introducing it as two
new quirks: For sign language itself, I added the Signer quirk, which is
a good quirk which allows you to use sign language for 4 quirk points. I
also added the Mute quirk, which grants 4 quirk points in exchange for
your audible voice. There is also a marked improvement in the code
health as a result of my changes.

Here's a preview of the sign language Action. If you're also mute, it
becomes invisible to reduce clutter:

![image](https://cdn.discordapp.com/attachments/326831214667235328/1041669853741858816/GIF_11-13-2022.gif)

In regard to how useful sign language is, it can be used as:
1. A way to communicate across a vacuum without a radio.
2. An easy way to communicate with deaf people.
3. An easy way to communicate as a Mute person.

## Changelog

🆑 A.C.M.O.
del: Removed the Tongue Tied quirk. The tongue can still be found and
used in-game.
refactor: Refactored Tongue Tied's tongue to use the Sign Language and
Mute traits.
add: Added Sign Language innate action. Granted by book or quirk.
add: Added the Galactic Common Sign Language book as rare maint and
space loot.
add: Added the Signer quirk, which teaches you sign language in exchange
for 4 quirk points.
add: Added the Mute quirk, which grants you 4 quirk points in exchange
for your voice.
fix: Fixed sign language say_yell verb, which allows you to emphatically
sign.
/🆑

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2022-11-20 06:22:10 +00:00
oranges 74e43bc556 Improve the naming of the element argument hash index selector (#71319)
So confusing name
2022-11-19 17:04:28 -08:00
1bw0kopy b041995532 Fix being unable to block embeds (#71334)
## About The Pull Request

Fixes #62386
Fixes #71309

## Changelog

🆑
fix: Fix being unable to block embeds
/🆑
2022-11-19 14:38:53 -08:00