Commit Graph

8345 Commits

Author SHA1 Message Date
distributivgesetz
0cd4e027fc Restore photophobia, remove flash sensitivity on quirk removal (#77220)
## About The Pull Request
For some reason the `remove()` proc in code got eaten, meaning the quirk
registered and immediately deregistered itself
Also the eyes never returned to their original state, so that's fixed
now too

## Why It's Good For The Game

This makes photophobia work.
## Changelog
🆑
fix: Photophobia should work now.
fix: Eyes should return to their normal flash sensitivity when the quirk
is removed.
/🆑
2023-07-31 13:51:42 +02:00
Jacquerel
eff69893a5 [no gbp] Hoods will unequip on hoodie removal. (#77167)
## About The Pull Request

Fixes #77010
Adds a missing event registration to "toggled items", as I apparently
didn't consider all means that equipment can be removed from your person
(I was mostly testing unequipping it from _myself_).

## Why It's Good For The Game

If someone snatches your jacket they should get the hood too.

## Changelog

🆑
fix: Losing your hooded suit (whether to theft, or because you were
turned into an ape) will also cause you to lose the hood.
/🆑
2023-07-31 13:43:51 +02:00
zeroisthebiggay
f495e5f4de renames Minor Breakage to Minor Skin Breakage (#77224)
## About The Pull Request

This is a salt PR. `I ded` to bloodloss because in my head I read `Minor
Breakage` as a broken bone and didn't notice i was bleeding.
## Why It's Good For The Game

I don't know if anyone else has this problem. This just sounds more
readable because in hindsight I've tried to do shit like bonesetter
minor breakages because I thought they were a broken bone.
## Changelog
🆑
spellcheck: Minor Breakage > Minor Skin Breakage for readability.
/🆑
2023-07-31 13:26:06 +02:00
Fikou
6f78cb4399 fixes station trait unit test and gives coroner a cybernetic revolution implant (#77235)
## About The Pull Request
what the title says, the implant is a bone tongue

## Why It's Good For The Game
bone tongue kinda fits as a unique implant. we should have more implants
though cause we kinda ran outta them

## Changelog
🆑
fix: coroner has an implant during cybernetic revolution
/🆑
2023-07-31 13:22:45 +02:00
GoldenAlpharex
3af26df8ca Fixes bloody soles making jumpsuits that cover your feet bloody when you're wearing shoes (#77077)
## About The Pull Request
Title says it all.

It basically made it so wearing something like a kilt would result in
the kilt getting all bloody as soon as you walked over blood, even when
you were wearing shoes, unless you wore something else that obscured
shoes.

I debated with myself a lot over the implementation for this, I was
thinking of adding some way to obscure feet in particular, but it's
honestly so niche that it could only have caused more issues elsewhere
if I tried to fix this issue that way.
2023-07-30 14:52:33 -05:00
Bloop
c5af7909b9 Fixes a bug with pAI leashing (#77198)
## About The Pull Request

If a path can't be found to move back to, the pAI can get stuck in the
`performing_path_move` state permanently--which lets them bypass all
movement checks, essentially making them unleashed. This makes sure that
this does not happen.

## Why It's Good For The Game

Fixes a bug

## Changelog

🆑
fix: fixed a bug that would cause pAIs to be able to break their leash
/🆑
2023-07-30 16:47:28 +01:00
MrMelbert
c92d338dad Refactors chameleon actions, Adds chameleon outfit saving, Adds chameleon scanner (#77140)
## About The Pull Request

- Refactors chameleon actions a good bit, reducing a lot of the
boilerplate copied around chameleon items.
- I noticed that the EMP comsig completely disregarded any EMP
protection the mob might have. I split the comsig into
`COMSIG_ATOM_PRE_EMP_ACT` and `COMSIG_ATOM_EMP_ACT` - the former now
used to aggregate protection flags and the latter to actually do EMP
stuff.
- As a result of above, this fixes a few oversights in which things
using `COMSIG_ATOM_EMP_ACT` disregarded EMP protection.

- Adds Chameleon Outfit saving. 
- RMB clicking the "Select Chameleon Outfit" will now save your current
chameleon setup as a custom outfit. They become selectable as any other
outfit afterwards.
- Because it might be *too* easy to bamboozle people / might make people
think you're a ling, I added a slight "animation" to swapping whole
chameleon outfits. It's less than a second long.

- Adds the Chameleon Scanner.
- The chameleon scanner is, surprise, a chameleon item that can disguise
as small gadgets or items (toys, cameras, analyzers, etc).
- On LMB, the chameleon scanner will copy the outfit of the target to a
custom outfit slot, allowing you to mimic them entirely without going
through all the menus.
- RMB does the same, but instantly equips the disguise you select in
addition to saving it to a slot.

## Why It's Good For The Game

Right now traitor stealth is very capable but cumbersome, which makes it
much less appealing than just running and gunning.

One big problem with it is that the chameleon kit is rather time
consuming to use. You have to sort through hundreds of items for each of
your chameleon items to find exactly the one you need.

These items seek to amend that time gate, allowing for much quicker
swapping between disguises or picking up the disguise of someone you
kill to replace them like a pseudo-changeling.

## Changelog

🆑 Melbert
refactor: Refactored chameleon actions a fair bit
add: Adds outfit saving to chameleon clothes. RMB the "chameleon outfit"
action to save your current chameleon setup for quick swapping.
add: Swapping between chameleon outfits now has a slight "animation"
associated, to distinguish traitors from lings slightly.
add: Adds a new chameleon item, the "Chameleon Scanner". Use it on other
crewmembers to stealthily save their current outfit as a custom outfit
to use later. And of course, it's chameleon too.
fix: Ethereals, the DNA lock mod, GPSs, and storage items now respect
EMP protection
/🆑
2023-07-29 15:39:06 -06:00
Jacquerel
5bbe28e050 New Wizard achievement (#77191)
## About The Pull Request

Adds an achievement for completing the Grand Ritual
Also, adds blackbox logging for the Grand Ritual feature so we can see
how much people are actually doing it

Also, while testing I noticed that Summon Guns/Magic were fucked, so I
fixed them.

## Why It's Good For The Game

Nice to have some stats.
Nice to get a juice reward for doing your wizard chores.
2023-07-29 13:20:57 -05:00
SyncIt21
920551d603 [NO GBP]Mat container Final clean-up & patches (#77092)
## About The Pull Request
1. Fixes #77177 
Some things were not connecting to the ore silo round start because the
silo was not initialized yet so it went to local storage. Now it
connects with the ore silo again
3. Removed some unused code in remote materials
4. Protolathe uses `eject_sheets()` defined in remote materials and not
it's own version because that's redundant
5. Don't put the item back in the players hand when inserting it in the
material container cause we haven't even removed it yet
6. `fast_split()` is now even faster & robust and is a global proc
7. Some code cleanup for RHD silo link

## Changelog
🆑
fix: some things not connecting to the ore silo round start
/🆑
2023-07-29 15:36:46 +02:00
Time-Green
8f053721a6 Starlight colors with parallax, small parallax code clean-up (#77020)
The space gas parallax now colors starlight in the color of the gas: 


![image](https://github.com/tgstation/tgstation/assets/7501474/18b5554f-6357-473e-8f43-64aad1517be0)

<details>
  <summary>Others</summary>
  

![image](https://github.com/tgstation/tgstation/assets/7501474/1599795f-f76d-479d-a1c3-aa19390ad403)

![image](https://github.com/tgstation/tgstation/assets/7501474/fb992df0-ee85-4afc-a546-f28e739ea923)

![image](https://github.com/tgstation/tgstation/assets/7501474/ed64a01c-c104-4177-bf63-b82288251aa9)

</details>

I also cleaned up parallax random code a bit, making it easier to add
new parallaxes and add minor effects to them

The radioactive nebula parallax thing has also been moved to SSparallax
to make it easier and a bit more sane to change

🆑
add: Starlight will color with space gas parallax
code: Cleans up random parallax code / radioactive nebula parallax code
/🆑

## Why it's good for the game

We can change the starlight color now (mostly thanks to @LemonInTheDark
making light code easier to work with), so I thought it'd be fun to
actually do! If people hate it, I'll turn it off and we can just call
this a code clean-up PR
2023-07-29 13:21:33 +01:00
Time-Green
61abab479b Planetary station traits: Forever Storm and Forested (#76957)
Adds two new station traits for Icebox:
**Forever Storm**
The storm on icebox never stops and is more intense. You can wear a coat
and drink coffee and be fine

 **Forested**
Icebox top exterior has a different terrain generator, including way
more grass and trees. AND DEER. Natural chasms are replaced with plasma
rivers

<details>
  <summary>Outside</summary>
  

![image](https://github.com/tgstation/tgstation/assets/7501474/8f5cf57f-9323-473f-9c9b-33192a8777f2)

![image](https://github.com/tgstation/tgstation/assets/7501474/9114fcc5-89b0-46e8-9912-67ad9edf96b8)

![image](https://github.com/tgstation/tgstation/assets/7501474/a5d2cf03-a9a6-4ecf-bbcf-11c39fcacc7d)
(the emissives on the trees have been fixed)
  
</details>

## Why It's Good For The Game

There are no icebox specific station traits, so I added them! The
exterior is very static, samey and could honestly be a lot more
interesting. Having the outside area be varied is something that
freshens up icebox a little! (3x3 icebox is inevitable...)

Forever Storm: I think storms are pretty spooky and cool, and having a
permanent storm can change the ambience a bit and make everyone feel
more isolated. Exploration is not recommended, but you can totally still
go outside at increased risk. Pretty rare and can only happen on icebox

Forested: Forests are dope. It's pretty common for a station trait, but
factoring in that this only happens on icebox, I think it's fair

I've also had to split apart turf and object generation so stuff doesn't
spawn above rivers/chasms anymore. I tested it and I didn't seem to have
broken anything, so that's pretty cool

closes #75154

🆑
add: Adds a Forested planetary station trait! Icebox exterior is now a
forest!
add: Adds a Forever Storm planetary station trait! Sometimes, the storm
never stops. Stay inside or get some coffee and warm clothes
fix: fixes stuff spawning in rivers and above chasms
fix: emissive blockers on random flora not updating
code: Splits terrain generation and terrain population in SSmapping
/🆑
2023-07-29 07:59:34 +00:00
Jacquerel
c2693ef65e Piggyback rides no longer permanently remove your density (#77168)
## About The Pull Request

Fixes #77041
Getting onto someone's back would give you "TRAIT_UNDENSE" to stop you
from colliding with things your mount could cross.
Getting off someone's back would remove "TRAIT_UNDENSE" from the person
being ridden.
They didn't have the trait, so removing it from them wasn't very useful.

## Why It's Good For The Game

This is silly

## Changelog

🆑
fix: Dismounting from a piggyback no longer allows you to phase through
other players.
/🆑
2023-07-28 21:02:01 -06:00
Ghom
6c80695bde Puts a cap to the amount of stickers that can be sticked to an atom. (#77160)
## About The Pull Request
The lack of a limit to the amount of stickers that can be attached on an
atom can lead overlays-related issues, as shown in #76987, likely by
going past the maximum number of overlays an atom can safely have.

The cap will be of 12 stickers per atom, an honest amount if you ask me.

Oh yeah, I've also taken the opportunity to improve the code a smidge I
guess.

## Why It's Good For The Game
This will fix #76987.

## Changelog

🆑
fix: Put a cap to the amount of stickers that can be sticked to an atom
(12) to prevent icon-related issues.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-07-28 19:48:45 -06:00
Ben10Omintrix
cc64ed0ca4 convert the bear to a basic mobster (#77143)
## About The Pull Request
the bear now a basic and he have a new behaviers. the bear now can go to
climbed the trees! he will looked for a tree to climbing and if he
founded a tree he will go climb him. also the bear now love honey he
will look for a bee hives to stole the honey from it so botanists must
be care. the bear will drag the honey behind him so u must chased him to
get the honey back again

## Why It's Good For The Game
the bear is a basic now so he and have more behavier for more depth
mechanis

## Changelog
🆑
refactor: the bear is a basic now. please report any bugs
add: the bear will climb trees and search honey
/🆑
2023-07-28 19:34:39 -06:00
Ghom
f56e284981 Adds a negative station trait: Vending products shortage. (#77125)
## About The Pull Request
Adds in a mean station trait that randomly lowers the availability of
all vending products from vending machines on the station.

## Why It's Good For The Game
Kicking aside the simple concept of "The more the merrier (until it's a
feature creep)" for a moment, vending (re)supplies are scarcely needed
on a generic round basis. The addition of this new trait could lead to
situations where more vending supplies are wanted/ordered once in a
while.

Beside, this is a pretty evil negative trait notwithstanding its
simplicity, unlike many other relatively innocuous ones.

## Changelog

🆑
add: Added a 'Vending products shortage' station trait, that randomly
lowers the availability of all vending products from vending machines on
the station, with a 1/20 chance of the vending machine itself being
tilted.
/🆑
2023-07-28 15:57:21 +00:00
Mothblocks
8e9c533370 Add leash component to pAIs that keeps them within range instead of directly teleporting them back, increases default range to max range (#77030)
## About The Pull Request

Tries to keep pAIs in range of their owner by moving them closer when
the owner moves, rather than jarringly teleporting every time the owner
gets out of range. Does this by calculating the closest path a nearby
tile and forcefully moving you there. Still a bit janky at times but is
better than teleporting directly onto the owner 100% of the time I feel.
Also prevents you from moving out of range, rather than forcefully
teleporting you back.

Increases the default pAI range to the maximum (9 tiles)

## Why It's Good For The Game

New leashing makes being a leashed pAI significantly less jarring and
obvious. Ideally we would also have a visible max range too.

Default pAI range was pretty small in my testing and I think it's not
unreasonable to think a lot of people won't bother changing it. That
they are leashed at all is the important part.

## Changelog

🆑
qol: pAIs now try to stay within range of their owner, and teleport back
only when necessary
qol: Default max pAI range has been changed to the maximum range you can
choose (9 tiles)
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-28 16:49:54 +01:00
Time-Green
ec9434ea6b Adds cliffs to icebox (#77062)
## About The Pull Request

Adds cliffs to the game! They're tiles usable for mapping to make
mountainy area's and cliffs! I don't have any sprites for them yet, so
just imagine it's a cliff really hard


![image](https://github.com/tgstation/tgstation/assets/7501474/ab0f31b6-93d7-4964-8b9c-4fb3c774647a)

THESE DO NOT REPLACE MULTI-Z AND NEVER WILL! They're just a neat way to
add more depth to the game. You can’t really add 10 different z’s for
one mountain, so this can be used to help map area’s with depth without
overusing z-levels

They've been mapped into the top part of the icebox outside. There's not
a good way to do sides of cliffs yet (will need some thinking), so
they're mapped in such a fashion where it doesn't matter much. Later,
this area above icebox can be expanded with properly done side-cliffs,
something like in stardew-valley would work for our grid-system:


![image](https://github.com/tgstation/tgstation/assets/7501474/007964cc-49d5-489c-9a43-2140f29239ce)

Longer demonstration: https://www.youtube.com/watch?v=Eig4jXNZZRQ

Eventually, I'll redo mapgen and add 3x3 icebox (definitely not coping)

## Why It's Good For The Game

The incredible flatness of icebox drives me insane. While multi-z is
great at giving it more depth, the actual terrain itself is still
completely flat. Adding cliffs let's us add 'soft-mountains', which does
wonders for making an area feel more alive

(And I absolutely adore snowy mountains)

## Changelog
🆑
add: Adds cliffs to the north of icebox. Try not to fall of of them!
/🆑
<details>
  <summary>Additional images (now outdated)</summary>


https://github.com/tgstation/tgstation/assets/7501474/572dc749-596c-4cab-9693-43c2270aca96
 

![image](https://github.com/tgstation/tgstation/assets/7501474/e12236d1-fda8-406a-858b-84a9fe5b4dc7)

![image](https://github.com/tgstation/tgstation/assets/7501474/264ae9d8-2f84-4133-8eb3-29e8df6c976e)

![image](https://github.com/tgstation/tgstation/assets/7501474/15a7f378-b595-4d7b-b948-d405916cb431)

![image](https://github.com/tgstation/tgstation/assets/7501474/b058a184-9fd5-4fa9-b0de-9f687bdf4e43)
  
</details>

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-28 14:13:43 +00: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
Ghom
6f862d107f Adds a unit test to stop elements from using identical lists for their arguments. (#76322)
## About The Pull Request
Ok, so a few days ago I made an issue report about multiple instances of
identical elements being generated because of uncached lists.
ninjanomnom (the mind being the element datums) cleared it up and said
an implementation of GetIdFromArguments() that also checks the list
contents wouldn't be worth the performance cost, while adding that a
unit test should be written to check that it doesn't happen at least
during init, which should catch a good chunk of cases.

Also, i'm stopping RemoveElement() from initializing new elements
whenever a cached element is not found. Ideally, there should be a focus
only unit test for that too, but that's something we should tackle on a
different PR.

Some of the code comments may be a tad inaccurate, as much as I'd like
to blame drowsiness for it. Regardless, the unit test takes less than
0.2 seconds to complete on my potato so it's fairly lite.

## Why It's Good For The Game
This will close #76279.

## Changelog
No player-facing change to be logged.
2023-07-27 16:04:16 -07:00
Ghom
d9c8bd9bae [READY] Fishing and aquarium expansion. (#76531)
Listing the changes, off the top of my head:
- Resprited fishing rods, hooks, and the worm bait!
- Added a new, telescopic fishing rod, that can be bought as a goodie.
The master rod is also telescopic now.
- Added a couple hooks. One that lets you move the bait up and down,
otherwise keeping it in place, and another that stops the fish from
escaping, but slowly kills it. The former from the bepis fishing tech
node, the latter frm the black market.
- Added a fishing skill and relative legendary reward: A fishing hat,
like the one that recites "women fear me, fish fear me"
- You can now stop fishing by activating the fishing rod in your hand,
and stops it from stealing all clicks on other things if it isn't in
your active hand.
- Reworked fishing traits into fish traits, which can apply to fish
after it has been caught.
- Expanded the fish breeding system. Traits may be passed down to
offsprings, and offsprings may evolve (mutate?) into different kind of
fishes if conditions when conditions are met.
- Added half a dozen new fishes, each with its own traits: lubefish,
sludgefish (and its purple variant), slimefish, unmarine bonemass and
unmarine mastodon. Also, holodeck fish, as a joke.
- New traits: lubed skin, parthenogenesis, toxic (new reagent), toxin
immunity, predator, necrophage, no mating, crossbreeder, aggressive and
revival. Converted Emulsijack's ability and Donkfish's yuckiness into
traits as well.
- Added a fish analyzer that you can scan aquariums and fishes with.
- Fish can now be blended if you really want to. The number of reagents
from blending, w_class, and the number of fillets you get from cutting
fish now scale with size and weight.
- fish feed is no longer infinite (but it should still be plenty).
- Implemented temperature requirements for aquarium fish.
- You can now buy (dead) fish from the black market for dirt cheap.
- Last but now least, toilets are now valid fishing spots.
2023-07-27 22:50:36 +02:00
Bloop
16ee828253 Fixes a type mismatch error with phobias (#77120)
## About The Pull Request

Closes https://github.com/tgstation/tgstation/issues/77113
Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/22686

Fixes the recently introduced type mismatch seen above.

span_phobia() needs a string arg not a datum. This is why you test your
code folks.

## Why It's Good For The Game

<details><summary>Works</summary>


![dreamseeker_kV93wU6eT8](https://github.com/tgstation/tgstation/assets/13398309/570704ca-66e3-4612-9855-791a1e27bc77)

</details>

## Changelog

🆑
fix: fixes a type mismatch error with some of the phobia chat messages
/🆑
2023-07-27 13:03:58 -06:00
jimmyl
9f41863524 fixes SM crystals dusting themselves after falling (#77128)
## About The Pull Request

get_z_move_affected always returns src which is something that wasnt
exactly accounted in this case

## Why It's Good For The Game

fixes #76811

## Changelog
🆑
fix: shoving a crystal down a hole no longer makes it dust itself
/🆑
2023-07-27 12:55:16 -06:00
Sealed101
cc57581b73 Dog wit the butter (feat. a bunch of dog-related code improvements) (#77039)
## About The Pull Request
Adds a `dog_fashion` for the stick of butter.(screenshot is outdated as
Lisa won't have butter no more)
![butter
dawgs](https://github.com/tgstation/tgstation/assets/75863639/a22e702c-98a8-4283-abd9-28d4a9fb3bd0)

Also cleans up dog.dm because it was SHIT and FUCK and MY FUCKING GOD
TWO INITIALIZE()s TWO TIMES IN A SINGLE FILE WHAT IN THE GODDAMN

Most noticeably, Lisa properly won't wear any hats, and puppies properly
can't wear head/back items (by just removing those item slots from the
strip/equip menu. if some admeme wants to fumble around they may still
equip shit there. but otherwise for a normal player those slots are
inaccessible).
Basic mobs now also send signals when they run
`appear_dead`/`appear_alive` procs, which corgis hook into to update
their dead fashion overlays.
The side-effect of getting that to work is that dogs (and any basic mob
that uses `play_dead` ai behavior) are so good at feigning death, that
they fool medical HUDs and other related things. They're just that good.
There's a bunch of other things involved and I was mostly just being
angry at the state of the file so I'll check back when I gather all
things changed.


![strippy](https://github.com/tgstation/tgstation/assets/75863639/ec4d17a2-d4df-401c-bd1f-7c4ee1b95671)


## Why It's Good For The Game


https://github.com/tgstation/tgstation/assets/75863639/b34589cb-94d6-4b80-bf0f-1814c08da100



## Changelog
🆑
add: dog with a butter on 'em
add: dead dog with da butter on 'em (dogs feigning death are so good at
it, they appear dead to medical HUDs and other things)
add: Nars-Ian now can revive from the dead if he consumes a pet
fix: fixes dog fashion items with no speech modifiers set making dressed
up corgis unable to perform their speech or emote behaviors
fix: fixes old Ian losing his mobility ride when shaved with a razor
fix: fixes pets not dropping their collar when gibbed
fix: butter don't go on Lisa and corgi puppies (Lisa won't wear hats and
corgi puppies can't wear hats and back slot items)
/🆑
2023-07-27 12:54:07 -06:00
nikothedude
f44adfde1e Refactors vendor tipping and adds 2 new malf modules: Remote vendor tipping, and the ability to roll around and crush anything in your path. (#76635)
## About The Pull Request

Title.

Vendor tipping code is now on /atom/movable, and any movable can fall
over like a vendor does. Things like crits have been moved to
type-specific availability tables, their effects are now held in their
own proc, are now random per crushed item, have probability weights,
etc.

In the process of making this PR I also had to fix another issue, where
a bunch of take_damage() overrides had incorrect args, so that explains
the take_damage changes I made.

Tipping now also attacks any atoms on the target, given they use
integrity.

Adds 2 new malf modules.

1. REMOTE VENDOR TIPPING: A mid-cost and mid-supply module allows malf
AIs to remotely tip a vendor in any of the 8 directions. After 0.5
seconds of delay and a visual indicator (along with other warnings), the
vendor falls over.
1.1. In the process of making this I had to expand a arrow sprite to
have orthogonal directions, which is why you may see the testing dmi
being changed.
2. CORE ROLLING: A mid-cost but low-supply ability that allows the AI to
roll around and crush anything it falls on, including mobs. This has a
5% chance to have a critical hit so it isnt THAT terrible - plus it's
guaranteed to never stunlock. It's real utility lies in the fact the AI
now has limited movement without borgs. Also, the psychological factor.

As a bonus, vendor tipping now uses animate and transforms instead of
replacing matrices.
## Why It's Good For The Game

1. Generifying vendor tipping code is just good, period. It's a very
wacky and silly little piece of code that really doesn't need to be
isolated to vendors exclusively. ANY big and heavy object can fall over
and do a ton of damage.
1.1. Also, adding weights to critical hits is really good, because it
lets things like the headgib finally be a lot less terrifying, as
they're a lot less likely to happen.

2. Remote vendor tipping is a bit of a goofy ability that isn't really
THAT practical but has a chance of catching someone unaware and doing
some serious damage to that person alone.
2.1. Atop of this, vendor tipping isn't that loud of an action as say,
blowing things up, or doing a plasma flood. Even overrides aren't this
silent or a non-giveaway. A vendor falling on someone, though, is a
mundane thing that happens a lot. This is a decent way to assassinate
people before going loud (or at least, damage people) that isn't offered
yet.

4.
3.1. For real though, AIs rolling around is just fucking hilarious. The
ability to move isn't offered right now (which isn't that much of a bad
things), but with sufficiently limited charges (or limits to how many
times you can buy the ability), this can be a funny little t hing that
lets the AI potentially hide somewhere on the sat (or just relatively
close to the sat, such as engineering [it can't go through the
teleporter with this but it can go through transit tubes]) without the
need for borgs.
3.2. Also, it lets the AI sacrifically execute people by blowing up
their brains.
2023-07-27 18:41:10 +00: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
Time-Green
f0aa4899dd [NO-GBP] Warns viro of radioactive resonance absence (#77119)
There was no in-game way for the viro to know the radioactive resonance
sympton couldn't be rolled (during rad nebula)

Now it sends a fax to the virologist, or if there's no fax it sends a
supplypod straight at the virologist with a fax machine and then sends
the fax

🆑
qol: The virologist is warned when radioactive resonance cannot be
obtained
/🆑
2023-07-27 12:30:13 -06:00
Alexis
6fc996353f Photophobia quirk (#77032)
## About The Pull Request
We already have nyctophobia, so why not have its inverse? 

Adds the photophobia quirk which causes you to get a negative moodlet
while in light and increases flash sensitivity (makes regular eyes as
sensitive to flashes as moth eyes and makes moth eyes as sensitive to
flashes as maint-adapted chaplain eyes)
Sunglasses, welding masks, and things of that nature will negate the
negative moodlet

Thanks to _distrilul, Eton, and Hardly for helping me with this agony.
## Why It's Good For The Game
It's good for quirk variety and adds to roleplay potential.
## Changelog
🆑
add: Photophobia as a negative quirk.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-27 18:09:57 +01:00
Inari-Whitebear
0abb462981 Fix adrenal crisis being incurable (Fixes #77086) (#77117)
## About The Pull Request

Fixes #77086 

Adrenal Crisis lacks the CURABLE flag, meaning it will never be cured,
even if the cure is present.
I opted to remove the `var/disease_flags` from it, since it has
`CAN_CARRY|CAN_RESIST`, if I add `CURABLE` to that it's the same flags
as the base `/datum/disease` datum has, and I think it's cleaner to not
list them again if they don't change from the base.

Not sure if it was ever curable? Seemed to have these flags since it was
added. And the `has_cure` proc seemed to check for that flag even back
then.
## Why It's Good For The Game

Disease that's supposed to be curable is now curable.

## Changelog
🆑
fix: Determination can now actually overcome your adrenal glands, making
adrenal crisis a curable condition!
/🆑
2023-07-27 07:37:29 -05:00
san7890
3d7c9a0dae Bumps rust-g to 3.0.0 (#76663)
## About The Pull Request

You can read more about what's introduced in the last four versions
here:

https://github.com/tgstation/rust-g/releases

The immediate effects for us are as follows:
Closes #76549
Closes #76514
Closes #76502
Closes #76490
Closes #76398
Closes #76798
Closes #76921
Closes #76934
Closes #76950

the updates to install rust_g.sh were to cut down on the copypasta code
and prevent desyncs.

🆑
code: The currently operating rust-g version on a live server is posted
to places like the runtime.log, in the same place where the revision
information and any applicable test merges already were.
/🆑
2023-07-27 00:53:54 -04:00
Ghom
d9677e39be Converting crabs to basic mobs (#77109)
## About The Pull Request
Exactly what it reads on the tin. As a bonus, they will flee from
attacking targets, hunt tiny critters (crabs are now small-sized) and
actually move sideways (it's an element that covers both client and
basic movement)


## Why It's Good For The Game
Another simple to basic mob refactor.

## Changelog

🆑
refactor: Crabs refactored into basic mobs. They now hunt tiny critters
and flee from attackers.
fix: Fixed crabs not crab-walking.
/🆑
2023-07-26 17:52:18 -06:00
carlarctg
1e27ce031b Syndicate Duffelbag Rerework (#77060)
## About The Pull Request

Syndicate duffelbags can fit 2 extra bulky items, down from three.

Reduced syndicate duffelbag's unzipped slowdown from '1' to '0.3', and
set its zipping-up sped to 0.5, same as unzipping.

Added the following items to the Syndicate Duffelbag bulky exception
list: Greentext, mech removal tool, gibtonite, skub, golem shells, mech
ammo. Roughly sorted the list by item category.

Fixed the syndie surgery duffelbag having more items than it can hold by
removing the redundant surgical drill (Upgraded cauteries can turn into
one anyways)

Any storage item with a can_hold description can be examined twice to
see what it can hold now.

## Why It's Good For The Game

> Syndicate duffelbags can fit 2 extra bulky items, down from three.

> Reduced syndicate duffelbag's unzipped slowdown from '1' to '0.3', and
set its zipping-up sped to 0.5, same as unzipping.

For most intents and purposes, it seems the syndicate duffelbag has gone
from 'bland upgrade to backpack', to 'useless'. This is especially made
apparent because it isn't exactly shown to the player that these
duffelbags can carry bulky items (I didn't even know about it until I
was making this PR!)

The extra bulky item hold concept is great, but I have my issues with
the item as-is that I seek to fix with this PR. There are TONS of issues
with being unable to access your bag quickly, which is twice as relevant
when your bag is an incredibly conspicious traitor item. Sure, you can
have it in your hand, but then why even have it in the first place?

That's why I want to reduce the slowdown significantly. '1' slowdowns
are thrown around the whole game like they're reasonable (galoshes,
water back-tanks, biosuits) - they aren't. '1' slowdown is CRIPPLING. It
makes you frustratingly slow and effectively destroys any combat
maneuvering you can do. This is very relevant for a traitorious item.

The zip speed helps one use the duffelbag as a storage item dynamically,
letting the item be an actual trade-off rather than mostly a downside.
Gives you a reason to use it rather than just buying a smuggler satchel
for more storage.

Of course these are some hefty buffs, so I lowered the bulky storage to
make up for it. I can bring it back up to 3 if wanted.

> Added the following items to the Syndicate Duffelbag bulky exception
list: Greentext, mech removal tool, gibtonite, skub, golem shells, mech
ammo. Roughly sorted the list by item category.

Some traitorious items that felt like they should be allowed in.
Honestly, I think this shouldn't even be an exception hold except for
blacklisting clearly bonkers things like backpacks, but whatevs.

> Any storage item with a can_hold description can be examined twice to
see what it can hold now.

Generalization is awesome. Hardcoding is cringe!

## Changelog

🆑
balance: Syndicate duffelbags can fit 2 extra bulky items, down from
three.
balance: Reduced syndicate duffelbag's unzipped slowdown from '1' to
'0.3', and set its zipping-up sped to 0.5, same as unzipping.
add: Added the following items to the Syndicate Duffelbag bulky
exception list: Greentext, mech removal tool, gibtonite, skub, golem
shells, mech ammo. Roughly sorted the list by item category.
fix: Fixed the syndie surgery duffelbag having more items than it can
hold by removing the redundant surgical drill (Upgraded cauteries can
turn into one anyways)
qol: Any storage item with a can_hold description can be examined twice
to see what it can hold now.
fix: The parent crayon's name is 'crayon' to prevent any weirdness with
things that show the parent type's name.
/🆑
2023-07-26 17:43:22 +01:00
distributivgesetz
9bd54af761 Phobia warnings have the same glowy text now as they would in say messages (#77066)
## About The Pull Request

Title.
## Why It's Good For The Game

Fixes #48028
## Changelog
🆑
spellcheck: Phobia warnings have the same glowy text now as they would
in messages.
/🆑
2023-07-25 11:06:42 -07:00
Time-Green
12f5ece7ad [NO-GBP] Optimizes rad nebula (#77014)
Switches rad nebula to only directly irradiate carbons and use radiated component
2023-07-25 15:55:10 +02: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
John Willard
2d7251f446 Climbing on crates no longer stun you (#77049)
## About The Pull Request

Removes the stun from climbing on crates by fixing the climbable
Element.
This has been a bug for years and I just noticed it now lol.

## Why It's Good For The Game

Climbing on crates now work as God intended.

## Changelog

🆑
fix: Crates no longer stun you when you climb onto them.
/🆑
2023-07-24 16:23:00 -06:00
Sealed101
50b565580d Prevents possessed blade spirits and similar entities from being created in a destroyed parent item (#76978)
## About The Pull Request
Activating any item with a `spirit_holder` component to poll for a new
spirit, then destroying the item before the poll process is completed
would create the spirit in nullspace, which would then dump them to the
error room. These spirits are in GODMODE by default, but are usually
contained within an item. See the issue?

This PR makes the spirit creation process check for whether the parent
item was deleted or not before actually creating the spirit. If the
summoning item was destroyed, the would-be spirit will get a message
about it so they can brag about it in deadchat

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

## Changelog

🆑
fix: fixed possessed sword spirits summoned during destruction of the
sword spawning in the error room. those fellas are in godmode, and y'all
don't need an immortal spirit haunting your station, m'kay?
/🆑
2023-07-23 22:35:32 -06: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
thebleh
99d5ae2d13 Fix APC related issues (#77005)
## About The Pull Request
Fixes a bunch of stuff broken by #76822, including APC control console,
malf blackout ability, shunted malf pinpointing, Admin APC recharge and
others.
## Why It's Good For The Game
Yes.
## Changelog
:cl:Thebleh
fix: Fixed several APC related issues.
/🆑
2023-07-22 17:16:22 +02:00
Ghom
c1122a0ae9 Adds an element to water turfs that makes things... look like they're actually immersed in water. (#76208)
## About The Pull Request
This PR adds an element, for now added to water turfs, that gives
passing movables an overlay to make them look immersed in that turf.

You can definitely see in the code what sort of stupid stuff I've had to
do to work around some of the flaws with the inbuilt features. Why?
Because I needed a (vis_contents) overlay that:
- can cover the entire width of the movable it's added to, whether it
has a 32 px icon, 64, 96 etc, plus some to be safe.
- doesn't look misplaced around movables with an icon larger than 32 px.
- can be animated, so it doesn't rotate or scale (or rather, do so but
in the opposite direction) with living mobs when resized, spinning or
lying down or standing up, despite the KEEP_TOGETHER appearance flag,
which ignores whether the overlay has the RESET_TRANSFORM flag.
- looks inset in the movable and doesn't spill into other movables of
the same plane (that's what happened with normal inset overlays without
the KEEP_TOGETHER flag)
- doesn't render above other movables covering the owner of the overlay.

If someone comes with a better and tested solution, go and tell I guess.
How visuals are handled by this engine still eludes me at times, but I
doubt planes would be a better solution to this.

The rest of the PR includes checks to make sure the overlay isn't added
to movables with planes lower/higher than
FLOOR_PLANE/ABOVE_ALL_MOB_PLANE, that are flying or being thrown, as
well as certain types such as effects.

## Why It's Good For The Game
Adding some literal immersion to the game, since movables and mobs look
like they're treading on water like Jesus right now. You can see a
couple screenshots by scrolling down a little.

## Changelog

🆑
image: walking on water will now immerse you in it... visually, at
least.
/🆑
2023-07-21 22:00:09 +02:00
Time-Green
42543ac141 NEW STATION TRAIT: Radioactive Nebula (#76825)
## About The Pull Request

Adds a new station trait: Radioactive Nebula!

The station is located inside a radioactive nebula. Space background and
lighting is different shades of green. Objects in space will also glow
green. (This is kinda lying, since the glowing stuff isn't radioactive,
you just get an element that slowly irradiates you, though people and
certain objects that get the 'IRRADIATED' status may still double-whammy
you)

Do not go into space without rad-protected gear, or you will get very
sick very fast. RAD-protection MODsuit modules spawn in robotics and are
also immediately researched.

The nebula does protect against external threats, like pirates, ninja's
and nukies. They can still get to the station pretty well, but they
can't stay in space for extended periods of time

To make it more livable, public rad protection gear will spawn in
lockers around the station. Everyone will also spawn with potassium
iodide pills in their emergency box. Dynamics threat is also reduced by
30, so there's a proclivity towards more lower threat rounds when the
radioactive nebula is present. Radioactive resonance virus cannot be
generated though, since it kinda obliterates any and all challenge and
threat


![image](https://github.com/tgstation/tgstation/assets/7501474/8eedcb85-1bb8-4e87-a794-d6781fee680d)

**Shielding**


![image](https://github.com/tgstation/tgstation/assets/7501474/ae1b25d7-6fbd-4a86-8c95-5947b1122632)

In order to protect the station from radiation, nebula shielding units
need to be constructed. Five spawn ready-to-built in engineering, and
more can be bought pretty cheap from cargo. (Normal radstorms are
disabled)

The gravity generator has 20 minutes of innate shielding, where every
nebula shielding unit adds another 20 minutes. 5 are needed to
completely block all radiation even when the gravity gen is down, but
constructing more is recommended in-case of sabotage/destructions/power
outtages.

Active nebula shielding will passively generate tritium. You can either
vent/ignore this, or use it for something. I'm not an atmos tech but I'm
sure you can do something with it

_What happens when no shielding units are constructed/they all fail?_
The station will suffer a 5 minute long radiation storm, with only
shuttles being excempt. The storm is nerfed strongly, and you can tank
the 5 minutes, but you'll be pretty sick. After the 5 minutes are over,
central command will send an emergency shielding unit which will block
the radiation for 10 minutes and warn the station to set up nebula
shielding.


## Why It's Good For The Game
The station being inside a radioactive nebula shakes up a pretty major
aspect of the game (that being the 'space' in space station 13). Hallway
decals are colored green, display screens will display radiation
markings, carps blend with the nebula, etc. Putting the station inside a
radioactive nebula shakes up the rules of the game and what people can
expect. Suddenly, you can no longer just go outside without taking meds
or getting proper radiation protection, encouraging people to stay cozy
and inside.


![image](https://github.com/tgstation/tgstation/assets/7501474/40112936-8514-47f7-b3e0-b1c782b6a0a6)

Inside, the crew gets the goal to set-up radiation shielding to defend
themselves against the nebula, rewarding a creative engineering
department with passive resource income and protecting the station
against massive radiation storms. I think it's nice to give engineering
something to set up. Even if they don't care, they can just plop it down
somewhere in a closed room and be done with it.

The radiation storm is pretty aggressive, but very survivable if you use
your potassium iodide pills, the extra radiation suits or whatever
chemistry has whipped up.

Most importantly, it gives the entire station a common enemy: the
nebula. Everyone is encouraged to prepare against the mechanics.
Chemistry can make meds, viro can make protective virusses, robotics
gets encouraged to make radprotected MODsuits, engineering gets to
set-up radiation shielding, assistants can look at space or whatever
assistants do.


<details>
  <summary>Cool images</summary>


![image](https://github.com/tgstation/tgstation/assets/7501474/387f2d75-8ba6-425b-8f0f-9423cf7aab19)


![image](https://github.com/tgstation/tgstation/assets/7501474/eb65de97-13ce-4ce9-8902-4144994d217f)


![image](https://github.com/tgstation/tgstation/assets/7501474/60b915a5-8549-4a3b-afe6-f0e823207883)


![image](https://github.com/tgstation/tgstation/assets/7501474/239ae614-8d26-4b77-936f-1d2baa38d32c)

  
</details>

## Changelog

🆑
add: Adds a new rare radioactive nebula station trait! Get ready and
PREPARE, before it gets in...
tweak: Nearstation space area lighting may look slightly different
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-21 16:51:15 +01:00
Jacquerel
0d769e0ffa Removes two redundant components (#76866)
## About The Pull Request

We're starting to get to have enough components that people don't
realise that what they want already exists but doesn't have the name
they expect 🙃

I recently added `track_hierarchical_movement` which is similar enough
to `connect_containers` that it shouldn't independently exist, even if I
like sending a new signal more than the ugly setup pattern for
`connect_loc`.

`trait_loc` is actually older than `give_turf_traits` but
`give_turf_traits` covers more edge cases than `turf_loc` so seems like
the better one to maintain.
HOWEVER `give_turf_traits` held a list of references to atoms in it,
which isn't great in an element. I couldn't think of a way to completely
eliminate the list, but it isn't a list of references any more so it
shouldn't cause any hard deletions.

## Why It's Good For The Game

Having two components which do the same thing but marginally differently
is confusing and going to cause us trouble down the line.

## Changelog

Not player facing
2023-07-21 14:51:56 +02:00
Tim
e3d68c0236 Robotic organ and disease improvements (#76766)
## About The Pull Request

In the code description for the `ORGAN_ROBOTIC` flag, it says that
robotic organs are not supposed to decay or regenerate health. I went
and fixed this and added some more "robotic" behavior.

New changes for robotic organs:
- No longer heal damage passively
- No longer gain health from revival
- No longer heal in the smart organ fridge
- No longer heal from pluoxium
- Robotic ears no longer heal from ear healing items (earmuffs, etc.)
- Robotic eyes are immune to changeling blind stings
- Robotic eyes no longer heal from occuline

New changes for diseases:
- Some diseases now require an organ to work. A robotic organ will give
immunity to the disease symptom unless the disease has "Inorganic
Biology".
- The transmission methods for diseases require organs to work but
robotic organs are immune. (except inorganic biology) Airborne disease
transmission require lungs. Ingested (drunk or eaten) disease
transmission requires a stomach. Blood (inject or patch) disease
transmission requires a heart.
- Organs removed from a mob that is afflicted with a disease will be
infectious while handling or transplanting it. (again, robotic organs
are immune unless inorganic biology is present) Certain admin spawned or
special diseases are exempt from this transmission method.
- A stomach is required for nebula nausea, gastritium, carpellosis,
metabolic boost, vomit, weight loss, death sandwich poisoning,
- Lungs are required for choking, asphyxiation, cough, cold9, oxygen
restoration, sneezing, flu, cold, spanish flu, tuberculosis
- A liver is required for tissue hydration, plasma fixation, parasitic
infection
- Ears are required for deafness, sensory restoration
- A heart is required for toxolysis, heart failure
- Eyes are required for sensory restoration, hyphema
- A tongue is required for voice change, parrot possession, pierrot
throat
- Wizarditis no longer requires a head (wtf?) to function

## Why It's Good For The Game

Robotic organs should behave as intended. Not naturally healing (like
organic organs) was supposed to be their downside to counteract their
their ability to not decay upon death.

## Changelog

🆑
fix: Fix robotic organs to not gain health passively, from revival,
smart organ fridge, pluxium, occuline, and earmuffs.
add: Some diseases now require the appropriate internal organ to work. A
robotic organ will give immunity to the disease symptom unless the
disease has "Inorganic Biology".
add: Disease transmission methods now require an internal organ to be
successful. Robotic organs give immunity. (except inorganic biology)
Airborne disease transmission require lungs. Ingested (drunk or eaten)
disease transmission requires a stomach. Blood (inject or patch) disease
transmission requires a heart.
add: Organs removed from a mob that is afflicted with a disease will be
infectious while handling or transplanting it. (again, robotic organs
are immune unless inorganic biology is present) Certain admin spawned or
special diseases are exempt from this transmission method.
add: A stomach is required for nebula nausea, gastritium, carpellosis,
metabolic boost, vomit, weight loss, death sandwich poisoning
add: Lungs are required for choking, asphyxiation, cough, cold9, oxygen
restoration, sneezing, flu, cold, spanish flu, tuberculosis
add: A liver is required for tissue hydration, plasma fixation,
parasitic infection
add: Ears are required for deafness, sensory restoration
add: A heart is required for toxolysis, heart failure
add: Eyes are required for sensory restoration, hyphema
add: A tongue is required for voice change, pierrot throat
bal: Remove head requirement for wizarditis disease
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-07-21 11:55:29 +01:00
scriptis
f46c2ff75c add pony (#76955) 2023-07-21 04:08:06 -04:00
itseasytosee
88f259980b The Leaning Update (and Density Refractor) (#76704)
## About The Pull Request
WHAT HAS CHANGED MECHANICALLY
You can now lean up against walls.


https://github.com/tgstation/tgstation/assets/55666666/bf81b7b5-6cab-4fc3-9887-075351511505

To lean against a wall, simply face opposite to it and drag your sprite
onto it.
Doing so makes you non-dense, just like if you were laying down. This
means people can walk through you, but you are still susceptible to
melee and ranged attacks. Leaning up against a wall also mitigates your
FOV loss by 30 degrees, as you can have a better look at your
surrounding when you put more of your surroundings infront of you.
Because it seemed thematic to lean up against the wall while smoking and
then flick a cigarette away, cigarettes will now say they where
"flicked" instead of thrown when you toss them, I also took the time to
add a bit of variation into the throw text.

A few bugs where you could become non dense and then run straight
through people has been patched.

NOT PLAYER FACING
So basically I've implemented a system that keeps effects that manage a
mob's density consistent with eachother.
An example of some of the situations that could occur
Effect A would render a spaceman undense and turn the player dense again
once it was concluded
Effect B would render a spaceman undense and then after a timer revert
the spaceman to whatever state the spaceman was in before effect B
started.
Thus if you enabled effect A and then Effect B, setting your previous
state of denseness to undense, and then concluded effect A, when Effect
B would finish it would put you back into the state of density you were
in when you started. This would render the spaceman permanently undense.

To solve this, the system has been updated so that all instances of
density adjustment to mobs are handled by traits from unique sources
(with the exception undensity gained by laying down due to its
prevalence.) All effects that handle density will no longer step on each
others toes and can now be rain simultaneously without fear.
## Why It's Good For The Game
Leaning is cool. Bugs are bad.
## Changelog
🆑 itseasytosee
add: You can now lean against walls! Simply turn your back to the wall
and clickdrag yourself onto it.
fix: There should no longer be any instances of spacemen being able to
run straight through eachother as if they weren't even there.
spellcheck: Added more variance to item throwing text.
refactor: Mob density has been refactored
/🆑
2023-07-21 07:58:05 +02:00
Blockaboo
5c0ffa31a8 Tin man no longer causes you to drop all of your regular organs when you spawn in (#76908)
## About The Pull Request

People using the tin man trait will no longer spawn with all their
biological organs on the floor.

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

## Why It's Good For The Game

Bugs are bad.

## Changelog
🆑
fix: Tin man no longer causes you to drop all of your organs.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-07-20 13:01:23 +00:00
Nerevar
92795be8ac Makes Spacers Taller (#76909)
## About The Pull Request
_Oye kowmang! Xídawang ting mi did owta we da beltalowda code fo tenye
us tubik. Milowda gonya leva xox! Du ferí da Belte!_

Or in other words, this Pull Request makes it so that people with the
Spacer-Born quirk are now a lot taller.

![image](https://github.com/tgstation/tgstation/assets/12636964/6f18ab86-461b-44f6-9b06-88a5aeb7908a)
About this tall, to be precise.

![image](https://github.com/tgstation/tgstation/assets/12636964/54ee324a-6018-4046-9394-c1d6f2514b96)
It's accurate to the show, I swear.

## Why It's Good For The Game
This makes spacers more visually identifiable and unique stand-outs
among normal humans, ensuring that you're always well-aware of who is
and isn't a spacer; which allows both finer group roleplay, and for
out-group discrimination against the mf skinnies. The Belt will not be
freed.

## Changelog
🆑
add: Due to increased exposure to low-gravity due to constant generator
failures, Spacer-Born have been showing up with increasingly tall
statures.
/🆑

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
2023-07-19 23:09:08 +12:00
John Willard
4645793882 Fixes a handful of cult issues w/ mind transfer (#76931)
## About The Pull Request

Makes cult spells spawn in the mind, which is required for spells to
transfer between bodies
Moves bloodsense and the trait to heal from pylons from ``on_gain()``
(the proc that is called once when the antag is given) to
``apply_innate_effects`` (the proc that is called one time per body),
basically this means bloodsense and pylon healing follows the cultist
instead of remaining solely on their original body.
Adds a check to cult master vote, because it runtimes when transferring
body.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/76746
Fixes part of https://github.com/tgstation/tgstation/issues/76671

## Changelog

🆑
fix: Cult spells, bloodsense, and pylon healing now follow cultists
through mind transfer (such as body swapping)
/🆑
2023-07-19 10:33:43 +02:00
Bloop
1a0a8e6e9a Attempts to fix an issue with gravity generators triggering CI failures (#76764)
## About The Pull Request

#76730 continuation, but I think I have found the actual source of the
bug. EDIT: Just kidding, that turned out to not be it either.

The issue:

During init, when the gravity generator is being set up and creating its
proximity field, a turf can get the `COMSIG_ATOM_HAS_GRAVITY` signal
registered to it multiple times. It seems like it shouldn't be possible
for this to happen due to the `HAS_TRAIT(TRAIT_FORCED_GRAVITY)` check,
but it can.

I've only seen this happen during CI and have not been able to reproduce
it during runtime, but it comes up often enough to be a nuisance when
testing PRs.

As seen below, causing CI failures. The problem turf is directly below
the `gravity_generator/main` object.


![firefox_D4BgPpRbW6](https://github.com/tgstation/tgstation/assets/13398309/d41355de-d05b-4f9d-8305-524408c93022)

I spent too much time trying to figure out the cause of this duped
signal when it really does not matter if this signal gets overridden
here, since it's always going to be from the same proximity field.
Suppressing the warning will stop the CI failures without any ill
effects in this case.

So let's just do that.

## Why It's Good For The Game

Less CI failures for something trivial.

## Changelog

🆑
fix: fixes gravity generators causing CI failures from overriding a
signal
/🆑
2023-07-19 10:10:49 +02:00
Lufferly
2eb0c65743 balloon alerts for storage failures (#76779)
## About The Pull Request

Adds some balloon alerts for when you fail to put something in storage
items (when there is not enough room, item is too big, etc.)
Also adds some balloon alerts for when you fail with a duffelbag (if
it's zipped it will say "closed!", and failure alerts if you move when
zipping/unzipping)

## Why It's Good For The Game

Balloon alerts are immediately obvious and leave no residue, which is
good for failing to put something into a bag, as you probably don't
really care to look back on it in the future, and want to immediately
know why you cant put it in. I chose not to add balloon alerts for
putting things in storage successfully for a couple reasons. For balloon
alerts, they would be too long, but they hold fairly useful information
so I don't want to cut down the messages. Also just having something
like "placed" looked really bad in my opinion. I also can see what you
or others put in their bag theoretically being useful to look back on. I
think the compromise of storage failures and successes being held in
different places (balloon alerts vs in chat) is fine, but if others
disagree I can change it or just close this.

## Changelog

🆑 Seven
qol: Added some balloon alerts for failing to place items in storage
containers
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-07-19 10:09:17 +02:00
Jacquerel
14aef72a4a No roundstart playable MULEs / Trampling requires hacking (#76837)
## About The Pull Request

Prevailing feedback has been:
- The player base cannot be trusted to control MULEbots.
- It should be clearer what bots can and can't do.

The former is easy to fix.
The latter is sort of a matter for policy but I'm going to investigate
giving bots a rudimentary laws system. Plus that sounds much more
controversial than this so I am going to atomise this outside of that
PR.

MULEbots can still be set to allow sentience by cargo technicians, but
don't start that way.

ADDITIONALLY this PR just changes it so that MULEbots do not crush
people unless:
- They have been emagged.
- Their safety wire has been cut.
Either means works, so it's not too hard to access for nefarious
purposes, but hard to do to yourself.
Otherwise they just slow down for a few seconds instead.

Also fixed an unrelated name bug while I was there.

Closes #76926

## Why It's Good For The Game

Players would take them, not deliver any cargo, and repeatedly ask
people to lie down in front of them.
Plus Tram has 5 of the things which is frankly too many to be wandering
around the bar.

## Changelog

🆑
balance: You can't possess a MULE as soon as the round starts, someone
will have to give you permission.
balance: MULEbots no longer crush prone characters unless they have been
hacked (or emagged).
fix: Bots can put numbers in their names, what with being robots.
admin: Adds attack logging when certain wires are cut (for instance:
MULEbot safeties)
/🆑
2023-07-19 10:01:58 +02:00