* Fixes an issue with multiz visholders duplicating (#73835)
## About The Pull Request
I think the inherent issue here has to do with turf refs or something,
but the big problem was I assumed if there was only once source, then
the turf must be new. This was an invalid assumption, since we can add
sources more then once, and | is used
Because of this, each time a shuttle moved, we'd add an extra source for
no reason, and stack extra vis holders. This lead to really bad
clientside lag on some out of repo maps, which is how this issue came to
my attention.
Instead checking if the sources list exists or not solves the problem
pretty handily, so let's do that.
## Why It's Good For The Game
Closes#73834, prevents a potential future OOM
* Fixes an issue with multiz visholders duplicating
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes some invisible inhands from the transforming component (#73807)
## About The Pull Request
The original issue caused by #70037
Esword issue caused by #73716
Originally the transforming component did not override the inhand icon
state of the the item on its own (instead putting the onus on the item
itself if they wanted unique behavior). It was changed to always update
inhand icon state, most of which don't have one
I don't really like this fix, it should be explicit "I want inhand to
change" and not default, but this will work for now
Also the PR that fixed the Jaws issue didn't actually set the var they
created
Fixes#73805Fixes#73711 (Actually)
## Why It's Good For The Game
Invisible sword bad
## Changelog
🆑 Melbert
fix: Fixed a eswords, some tools, and some other misc. items from being
invisible while extended / active
fix: Teleshields and other misc items not extending in hand when active
fix: Switchblades click on extend again
fix: Pendrivers click on extend
/🆑
* Fixes some invisible inhands from the transforming component
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes Luminescence actions (#73802)
## About The Pull Request
- Add Component was supposed to use a named arg, quick fix
- While testing the fix I noticed it doesn't properly remove the
appearance when the item is lost, cuts the overlay on failures
## Why It's Good For The Game
Mothblox said this broke things (it was making a weakref of a callback
on accident)
## Changelog
🆑 Melbert
fix: Luminsecent slime actions correctly update their appearance when
integrating or ejecting slime cores
/🆑
* Fixes Luminescence actions
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Refactor egg to chick logic into component (#73537)
Refactored how eggs growing into chicks is implemented, and
how the number of chickens and chicks are tracked. It's now possible for
admins to make anything into an egg.
- Instead of the "fertility" of an egg being whether or not it's
processing (along with the ugliness of adding a variable to a item
defined in another file), fertile eggs are now implemented via
components.
- The number of chickens in the world, and the number of chicks hatched
from egg throwing are now global variables, rather than static variables
on the class.
I've tried very hard to keep these changes completely feature freeze
compatible, any variation in the old behaviour is non-intended (at this
point).
* Refactor egg to chick logic into component
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
* Sourced Component Backend (#73571)
## About The Pull Request
Adds a backend for sourced components. which was requested by @ Fikou
Also cleans up a little bit of the AddComponent logic
## Why It's Good For The Game
Backend for fancy stuff and having a component from multiple sources
---------
Signed-off-by: GitHub <noreply@ github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Sourced Component Backend
---------
Signed-off-by: GitHub <noreply@ github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Optimizes INVOKE_ASYNC by making it a macro and avoiding a proc call (#73264)
## About The Pull Request
This is quite literally the same behavior but faster, and also catches
improper arguments better than the old macro/proc approach.
Credit to Lohikar for writing the macro.
Port of https://github.com/DaedalusDock/daedalusdock/pull/196
Also, `world.ImmediateInvokeAsync()` never set a return value, so
expecting one was never valid behavior.
At MSO's request, the documentation of `spawn(-1)`:
As per the reference, calling `spawn()` with a negative value will
execute the spawned code until a blocking action (such as `sleep()`) is
encountered. Then, it will step outside of the spawned code, and
continue the proc. This is the same behavior as calling a `waitfor =
FALSE` proc. Specifically, under the hood, `spawn(-1)` creates a copy of
the callstack like `sleep()`, incase the spawned code is blocked and
needs to be rescheduled.
As an added bonus, `spawn(-1)` silences SHOULD_NOT_SLEEP errors, whereas
`waitfor = FALSE` does not.
## Why It's Good For The Game
ITS FREE FUCKING CPU TIME
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@ gmail.com>
* Optimizes INVOKE_ASYNC by making it a macro and avoiding a proc call
---------
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@ gmail.com>
* Vote System: Approval Voting (#73749)
## About The Pull Request
Approval Voting is a system in which voters can select as many maps as
they want, instead of selecting only one. Final tallies show how many
votes each map received, and the winner is the map with the most
support.
## Changes since https://github.com/tgstation/tgstation/pull/73413
- Custom votes can now be started using either system
- Icon during AV votes indicating your selections
- Map population filter counts active players and participating ghosts
https://user-images.githubusercontent.com/83487515/222580901-61506cc3-dc42-4435-9775-1e6291a3f734.mp4
## Why It's Good For The Game
First-past-the-post (our current voting system) has flaws such as
creating a bunch of wasted votes, in that a large number of selections
ultimately have no impact and for example, a map can win a 3 way race
11/10/10, even though 2/3 of the votes were not for that map. This leads
to people having to vote strategically, and perhaps not what their true
choice is.
Approval Voting solves this by instead allowing the player to select all
the maps they would like to play, so they can vote for their true
preferred choice, as well as alternates.
For example, a player that wants Metastation, is okay with Icebox, and
doesn't want Delta may feel pressured to vote Icebox if it's in a 2 way
race with Delta.
AV lets them vote for Meta, and Icebox or as many others as they want as
their alternates and creates a more fair outcome of a map vote.
Map population filter removing AFK/lobby screen dwellers gives a better
number of active players so as to not trip the map filter's population
cap earlier than it should.
tl;dr: Less of this

## Changelog
🆑 LT3
rscadd: Added new multi-vote system
balance: Map votes are now calculated using multi-vote instead of the
old single-vote system
admin: Admins can now use either multi-vote or single-vote for custom
votes
code: Map choice filtering uses active player count, not all connected
clients
/🆑
* Vote System: Approval Voting
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* this code is so fucking funny it makes me want to merge w/o looking
* safety component stuff
* safeties should be finished
* I loooove safety component
* I swear that's all for gun safety
* manufacturer component
* cant forget this
* this is so awful
* 1100 line long gun file
* ok it actually compiles now
* that should not be an addition of any sort
* these defines should not be used anymore
* why?? the fuck??? are there var edited fire modes on black mesa?????
* how did that even happen
* maybe ci will shut up now
* oh man so many guns are lacking autofire now
* probably fixes safety toggling
* that should reference the gun not the component
* that should probably return
* makes it replicate current behavior, defaults safeties to being ON
* and that is all i have to say about that
* its automagically
* Makes the food trash element detach on trash making (#73748)
This PR makes the trash maker element detach on trash creation. Most of
the times, the food is deleted soon after this element is activated.
However, there has been one exception: when you place it in a custom,
sliceable item, it will generate the trash, and then store the item in a
list. When you slice the custom item, the saved item will be added to
every slice, producing a trash for each. And this is how you get seven
banana peels out of one banana, or seven revolvers out of one gatfruit
using nothing but a humble knife and a plain pizza bread.
By detaching the trash creation element, we will prevent this behaviour,
and further future proof this element, in case someone adds another
behaviour that creates trash without destroying the food.
This PR also makes the element unregister all signals it has registered
on.
* Makes the food trash element detach on trash making
---------
Co-authored-by: Profakos <profakos@gmail.com>
* Fixes wrong inhand icon state for jaws of life (#73716)
## About The Pull Request
Fixes#73711
## Why It's Good For The Game
## Changelog
🆑
fix: fixed missing inhand icon state for jaws of life
/🆑
* Fixes wrong inhand icon state for jaws of life
---------
Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
* Frozen tanks now release the gasses inside them when shattered (#73475)
## About The Pull Request
Instead of simply being qdel'ed, shattered items have their deconstruct
proc called (with flags set to prevent items from being dropped in the
process). This means that if an object has code that should run before
it's destroyed in order to maintain in-game consistency, that will be
called instead of ignored.
As a result:
- Internals tanks release gasses inside of them (what I wanted to fix)
- Frozen containers only destroy themselves, not everything inside of
them (unintended side effect -- I think it's good but others might
disagree)
- Grenades detonate (unintended side effect -- can be disabled by
changing the disassembled flag to true instead of false)
- Gas crystals release their contents (because theyre grenades)
- Hot Ice does NOT release anything, since it's a datum and not an
object
Also, fixes a potential bug where holodeck canisters wouldn't be
destroyed when their deconstruct was called, making them (possibly?)
indestructible. I doubt this would ever have shown up, but... it's fixed
now!
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/71121, adds
potential support for similar future cases.
Fixes an issue where holodeck canisters (should those ever exist) would
be indestructible.
## Changelog
🆑
fix: frozen gas tanks now release their contents upon shattering
fix: holodeck gas tanks can now be deconstructed
/🆑
* Frozen tanks now release the gasses inside them when shattered
---------
Co-authored-by: skylord-a52 <skylord-a52@users.noreply.github.com>
Buff scythes, goats, and plantbgone vs PLANT biotypes (#72889)
This buffs scythes, goats, and plantbgone vs PLANT biotypes:
- Scythes now deal x1.5 damage to venus flytraps (3 hits to kill)
- Scythes now target the flower bud vines
- Goats now target flower bud vines and deal 15 damage to PLANT biotypes
- Goats have a eating sound whenever they bite PLANT biotypes
- Plantbgone now does 2 dmg per unit to PLANT biotypes (10 dmg per
spray)
- Plantbgone now has a 75% chance to remove weeds and deals large damage
to flower buds
- Weed control crates now come with a pair of leather gloves
- Golems are immune to thorn effects
- Any kind of thick glove material will prevent thorn effects when
attacking
- Flower buds will now take x4 damage from fire and sharp weapons
(unless they have fire trait)
- Regular scythes are now a sharp object
Also this fixes a few runtimes with spacevines and nulls. The bane
element now accepts `mob_biotypes` bitflags as an argument.
Before my changes:
- Plant-b-gone was doing 0.4 dmg per unit to PLANT biotypes (2 dmg per
spray)
- Scythes took 5 hits to kill venus flytraps
- Goats only affected podpeople
- Flower bud vines were being ignored by weed killing code
- Plantbgone only had a 50% chance to remove weeds (and this was very
inconsistent due to RNG)
- Botanical gloves and thick gloves didn't protect from thorns
- Golems were getting pierced by thorns despite having pierce immunity
- Flower buds were not taking the x4 damage like they should have been
- Regular scythes were not a sharp object, but other scythes
(chaplain's, megafauna loot) were sharp
This makes the weed killer crate more effective since people were
complaining about it being worthless vs vines and flower buds. These
changes give people more options to respond to threats vs plants.
🆑
add: Add a pair of leather gloves to weed control crate
balance: Mobs with the PLANT biotypes (venus flytraps, pod people,
killer tomatoes) are now much weaker vs scythes, goats, and plantbgone.
balance: Plantbgone is now more effective at destroying weeds.
balance: Regular scythes are now a sharp object
fix: Fixed scythes, goats, and plantbgone not affecting flower bud
vines.
fix: Thick and botanical gloves not protecting from thorns
fix: Golems not having pierce immunity from thorns
fix: Runtime where vines tried to spread into null turf
fix: Runtime where null vines that were destroyed were trying to spread
to nearby turfs
soundadd: Add eat food sound when goats eat plants
code: Improved goat targeting code
code: The bane element now accepts `mob_biotypes` bitflags as an
argument.
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Refactors the Nuclear Authentication Disk's Lone Op Behavior Into a Component, + Examine Message (#73453)
## About The Pull Request
### Refactor
Turns all the behavior for the nuke disk raising lone op probability
when unsecured into a new component, the "Keep Me Secure" component. As
an example (and really, I made it to test that the component was
actually working), there is a new admin plush called the "whiny plushie"
that will change icon depending on whether it is secure or not. Useful!
### Examine
I also added an examine message. Will explain below
## Why It's Good For The Game
The examine message was really what this entire pr's purpose was really
for.
>
[Capsandi](https://tgstation13.org/phpBB/memberlist.php?mode=viewprofile&u=7767)
wrote:
[↑](https://tgstation13.org/phpBB/viewtopic.php?p=665827#p665827)Wed Feb
15, 2023 2:42 pm
Someone needs to pr some sort of indicator as to whether the disk is
'secure' or not so players who don't know about the niche lone op
mechanic won't make the same intuitive assumption (though swat has been
trolled for putting it in the safe before).
I agree with this for the same reasons I did #73016 so I'll restate the
point with it here: A piece of banning a captain recently was that they
didn't secure the disk, but there is no indication in game that the disk
has special condiitons that trigger lone op, just that it should be kept
safe (which yeah, nuke ops want it). I'd rather remove the ambiguity of
a captain knowing this mechanic or not for the sake of the game, a
single examine for it is harmless
I'm considering this administration, not a feature. If maints want me to
take it out and have this be refactor only, that's fine with me
## Changelog
🆑
refactor: Refactors how nuclear activation disk works. Shouldn't notice
a whole lot but if you do, it might be because of this.
admin: Disk now has an examine message for whether it's secure or not,
to make it less ambiguous for players.
/🆑
* Refactors the Nuclear Authentication Disk's Lone Op Behavior Into a Component, + Examine Message
---------
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Dangerous Research - The Alternate Sciences Research Center Space Ruin! (#73544)
* Dangerous Research - The Alternate Sciences Research Center Space Ruin!
* removes the modular one
---------
Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
* Fixes taking items from storage in hyperspace (#73428)
Taking items from storages actually puts it on the floor and then in
your hands, which isnt really caught by movement signals. So deletes the
hyperspace component on item pickup
closes#72727🆑
fix: fixes taking items from inventories glitching out in hyperspace
/🆑
* Fixes taking items from storage in hyperspace
---------
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Return to Tiny: Reworks heights to use filters, allows spacemen to have varying heights (#72344)
Re-pr of #66644 with some changes to get it working

- [x] ~~Huds get cut off~~ Resolved
- [x] ~~Very tall helmets get cut off~~ Resolved
- [x] Hair gets cut off
- [x] ~~Needs optimization before releasing to the world as a pref~~ jk
lol
Look at that fella so cute
🆑 Melbert, That REALLY Good Soda Flavor, FatFat, AndreyGusev
add: Spacemen can now have varying height. (Admin only for now)
add: Dwarfs are now slightly shorter, but look way better.
/🆑
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
* fix conflict
* clarity
* update rouny
* update screenshots
* Revert "update screenshots"
This reverts commit a5427a5238e574869fe364568b7f043bbd287c79.
* Fixes the dwarf screenshot.
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Medical/Security records now use the max/min age.
* merge conflict
* Refactors crew records (#72725)
I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.
- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)
<details>
<summary>previews</summary>
Editable fields & security console

Medical records

Look and feel of the more current version

</details>
TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler.
Manifest_inject is made readable.
Probably bug fixes
🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* I've got something that now actually works
Just got to incorporate the records into what players can actually see.
* Turns out that client has already been transferred after all
* Adds the past records in the TGUI records (they're kinda ugly but it works, so y'know)
* Whoops
* Hate you too sometimes Prettier
* Fixes ghost roles using LITERAL records, which caused problems
* Fixes the leaks caused by ghost roles not getting their name right because of the stupid freaking special() proc
* I hate list operations man they're so stupid
* Fixes the stars on the crew manifest!
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: KathrinBailey <53862927+KathrinBailey@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Missed
* Disease Outbreak retries on event setup failure [NO GBP] (#73599)
## About The Pull Request
- When Disease Outbreak starts, instead of failing on the first attempt
picks a new target if the chosen target is no longer valid for
infection.
- Corrects transmission of disease, assigning a stat. Positive viruses
with a resistance higher than transmissibility provide immunity from the
disease outbreak.
- Improved logging and admin information
## Why It's Good For The Game
- Along with https://github.com/tgstation/tgstation/pull/73596 this
makes the event reliably fire instead of giving up if the first
selection has changed during setup. (Death, new immunity, infected with
different virus, whatever.)
- Disease transmits as expected to unprotected. Positive viruses provide
immunity from infection based on their resistance stat.
## Changelog
🆑 LT3
fix: Disease Outbreak doesn't give up so easily when trying to start the
event
balance: Disease Outbreak will not spawn on positive virus mobs, but can
be transmitted if resistance is low
fix: Disease Outbreak creates an entry in the virus log like it should
admin: Admins can see Disease Outbreak virus stats when the event starts
/🆑
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* [NO GBP] Corrects the description of the transmission 4 threshold effect of the Narcolepsy symptom (#73638)
## About The Pull Request
The current description implies that it spreads the virus in a cone like
a sneeze, when it in fact spreads the virus in a radius like a cough.
This PR corrects that.
## Why It's Good For The Game
whoopsie doodle
## Changelog
🆑 ATHATH
spellcheck: Corrects the description of the transmission 4 threshold
effect of the Narcolepsy symptom to more accurately reflect what the
effect does.
/🆑
* [NO GBP] Corrects the description of the transmission 4 threshold effect of the Narcolepsy symptom
---------
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Fixes being able to "Drive" ridden vehicles without the key/in space. (#73611)
## About The Pull Request
Fixes: #73610
I've elevated the code that prevents you from grabbing the thing your
riding from the creature subtype to the main riding component. I cannot
think of any ridden vehicles that you should be able to grab while
riding so I don't think there is any issue in making this change,
although please advise me if this is not true.
## Why It's Good For The Game
Using a wheelchair for space traversal seems like a bug.
## Changelog
🆑
fix: You can no longer drive ridable vehicles without keys or in space.
/🆑
* Fixes being able to "Drive" ridden vehicles without the key/in space.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Fixes split personality ghosting its owner if cured in a wrong moment (#73579)
* Fixes split personality ghosting its owner if cured in a wrong moment
---------
Co-authored-by: Kubisopplay <38842052+Kubisopplay@users.noreply.github.com>
* [no gbp] Allows clothes to be eaten (#73565)
## About The Pull Request
Fixes#73546
In #73481 I made the foolish assertion that it's never correct for
someone to eat something which isn't physically nearby.
I had of course forgotten that while Moths _think_ they can eat clothes,
what they are actually eating is the abstract concept of clothes if they
were edible, functionally nothing, which exists nowhere.
By moving the check to only run when you are trying to eat a turf
(conveniently, no clothing is also a turf... yet) I allow them to return
to their delusion.
Alternate fixes and why I didn't do them:
- Always allow people to eat food which is in nullspace. This feels
pretty gross.
- Put the abstract clothes food physically inside the clothes. I assume
this wasn't done because there's some scenarios where you would be able
to remove abstract clothes food from the clothes, so that's not
desirable.
- Move the food into the actual clothes object just before taking a bite
and then put it back in nullspace again. This is silly.
- Try to make moth clothes food work in a way which doesn't involve
creating an imaginary food item in the void. I don't want to do this.
## Why It's Good For The Game
It's funny to eat clothes I guess.
## Changelog
🆑
fix: Moths can eat clothes again.
/🆑
* [no gbp] Allows clothes to be eaten
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* [no gbp] Fixes the dog fetch command (#73516)
## About The Pull Request
I broke this in a so-called "refactor" by forgetting to pass an
argument. It works again now.
## Why It's Good For The Game
It's a fun thing for dogs to do.
## Changelog
🆑
fix: Pet dogs will once again fetch items for you
/🆑
* [no gbp] Fixes the dog fetch command
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Makes Shake() proc work (#73480)
## About The Pull Request
Fixes#72321Fixes#70388
The shake proc didn't work and hasn't for ages.
I remember it having worked at some point, but it was quite a long time
ago.
I cannot guarantee that the end result here is the same as it was, the
reason here being that I have no idea how this proc ever worked in the
first place. My limited understanding of the `animate` proc implies that
the previous implementation as written would never have acted as you
would expect it to, but clearly at some time in the past it did work. A
mystery.
As a result of the previous, possibly because the proc never _did_ work
as expected and just did something which looked vaguely correct most of
the time, both the default values and the values people were passing
into this proc were completely ridiculous.
Why would anyone ever want to pixel shift an object with a range of _15_
pixels in all directions? That's half a full tile! And why would you
want it to do this for 25 seconds?
So I also changed the values being passed in, because you really want
pretty small numbers passed into here most of the time.
Here's a video of everything that vibrates:
https://www.youtube.com/watch?v=Q0hoqmaXkKA
The exception is the v8 engine. I left this alone because it seems to
try and start shaking while in your hands, which doesn't work, and I
don't know how to fix that. This has potentially _also_ never worked.
## Why It's Good For The Game
Now you can see intended visual indicators for:
- Lobstrosities charging.
- Beepsky being EMPed.
- The Savannah Ivanov preparing to jump.
- The DNA infuser putting someone through the spin cycle.
- The mystery box admin item I had no previous idea even existed (fun
animations on this one).
- Anything else which wants to use this proc to create vibrating objects
in the future.
## Changelog
🆑
fix: Lobstrosities and Tarantulas will once more vibrate to let you know
they're about to charge at you.
fix: The Savannah Ivanov will once more vibrate to let you know it's
about to jump into the air.
fix: The DNA infuser will now vibrate to let people know that it's busy
blending someone with a dead animal.
/🆑
* Makes Shake() proc work
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* You can't eat a turf unless you are standing next to it (#73481)
## About The Pull Request
Fixes#73115, don't you love telepathy?
Just adds a range check to the general "can I eat this now?" proc. I
couldn't think of any situation where you should be able to eat
something which isn't next to you.
I tested it and you can still feed people and eat food from your
inventory.
## Why It's Good For The Game
It's funny to be able to eat pizza floor with your brain but not
intended.
## Changelog
🆑
fix: You can no longer eat pizza floor tiles with your brain.
/🆑
* You can't eat a turf unless you are standing next to it
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>