* Fix rare HFR moderator filter removal failure (#55982)
Looking at gas_mixture.dm, remove_specific appears to be able to
return null if the amount of a gas becomes exactly zero or negative,
somehow.
Adding a null check seems safe, and should prevent this from reoccuring.
The temperature is already assigned in remove_specific.
* Fix rare HFR moderator filter removal failure
Co-authored-by: esainane <esainane+github@gmail.com>
* Ensure gases exist in proto nitrate responses (#55981)
When the type of gas to be created did not already exist, the reaction
caused a runtime and halted processing.
While tritium would still be consumed, no hydrogen would be created,
and no heat modification would occur.
This fixes runtimes of the form:
> [02:02:46] Runtime in reactions.dm,946: cannot read from list
> proc name: react (/datum/gas_reaction/proto_nitrate_tritium_response/react)
* Ensure gases exist in proto nitrate responses
Co-authored-by: esainane <esainane+github@gmail.com>
* minor cytology related tweaks (#55910)
makes the new cytology items compatible with Biobags and Labcoats
* minor cytology related tweaks
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Buffs Void heretic carving knife into a good throw weapon (#55667)
Buffs carving knife into a good throw weapon, 5 damage less than cult dagger. It now has slightly higher embed chance than a combat knife and can become quite a pain to deal with. I believe that its worth it for an item quite far in the research tree.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Buffs Void heretic carving knife into a good throw weapon
Co-authored-by: Sparkezel <53384660+Sparkezel@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Makes the monkey mutation remember your species through transformations (#55844)
* Makes the monkey mutation remember your species through transformations
* Implements suggestions by ghommie
* Makes the monkey mutation remember your species through transformations
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Cats have normal genders (#55772)
This fixes cats from all being male (except for the special cats like runtime and proc)
* Cats have normal genders
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* Adds 25 person pop requirement for Sleeping Carp (#55953)
## About The Pull Request
!!IDED TERRITORY YE HATH ENTERED THY SALT ZONE!!
Adds a 25 person purchasing limit to the Sleeping Carp scroll. This brings it in line with a other murderbone items like deswords.
## Why It's Good For The Game
As of late, I've noticed a trend on lowpop. Some will buy carp and kill the majority of the station, unable to be opposed as there are very few able to. This is unfun and I find it to be unbalanced, given how strong carp is in one-on-one engagements.
* Adds 25 person pop requirement for Sleeping Carp
Co-authored-by: Coffee <CoffeeDragon16@gmail.com>
* Flypeople say "s" as "z" and dont get disgusted by toxic food (#55802)
## About The Pull Request
Flypeople will now say "s" as "z" (They already say "z" as "zzz", but s -/> zzz) and arent disgusted by toxic food anymore.
I'm hoping that by the end of my changes, Flypeople could be considered a unique and viable race, being actually worth something other than "that one unmaintained race we have disabled" (best-case scenario is they become fit to be a proper roundstart race)
## Why It's Good For The Game
Flypeople is the forgotten race of /tg/, this makes them more unique and fits for them.
Not being disgusted by toxic food fits well due to Flypeople being considered disgusting and vile creatures.
* Flypeople say "s" as "z" and dont get disgusted by toxic food
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* DRINKS WOO
* Trailing Newlines
* Comment juggling and TLC
* Fix some comments to be up to module spec, whoops
Co-authored-by: Avunia Takiya <git@takiya.cloud>
* Allows you to tuck the nuclear authentication disk (and plushes) into bed. (#55940)
Adds an element, the tuckable element. Objects with this element can be tucked into bed by hitting a bed with it.
You can now make beds by hitting them with a blanket.
You can now tuck plushes into bed.
You can now tuck the disk into bed, too.
* Allows you to tuck the nuclear authentication disk (and plushes) into bed.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* You can look into the gateway now (#55624)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* You can look into the gateway now
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Merge pull request #55920 from LemonInTheDark/fixes-xeno-hallucination
Fixes the xeno attack hallucination failing to throw the xeno
* Fixes the xeno attack hallucination failing to throw the xeno
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
* Makes telsas move properly, they were ping ponging around due to how miniballs move, I've made the shocked targets list properly fill, and make the shocked targets list retain some entries to preserve momentum (#55712)
* Makes a few changes to tesla movment
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* fix Telekinesis teleporting some items (#55916)
* fix Telekinesis teleporting items
Fixed telekinesis from teleporting the Blackbox, bodybags and all its contents, and brains from MMIs - Nari
* fixes
fixes new bug where opening the bodybag in hand will make it vanish - Nari
made a better method for pulling items out of the recorder and MMI, if activated by hand it puts item into your hands, if activated with telekinesis, it drops it on its tile - Nari
* Update bodybag.dm
changes how it gets the location
* fix Telekinesis teleporting some items
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Fixing yet another item that can be remotely put in hands with TK. (#55505)
I'm adding adjacency checks to paperplane folding and unfolding so the resulting item doesn't get put in hands from afar.
* Fixing yet another item that can be remotely put in hands with TK.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Adds proper lazylist support to vehicles. (#55899)
Adds proper lazylist support to a bunch of vehicle code since some of the code either didn't consider that the occupants list could be null or didn't consider that the occupants list could be an empty list.
As a result the simple animal mecha pilots can board mechs again! (The mobs were checking whether the mech had any occupants. The mechs were checking whether the occupants list was falsey.)
Also fixed mechs putting themselves in their own occupants lists when boarded by a simple animal mecha pilot.
* Fixes simple animal mecha pilots
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Fixes nanite purge runtime on simple mobs (#55902)
- Makes nanites not try to purge reagents from mobs without reagents
* Fixes antitox nanites runtiming on simple mobs
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Merge pull request #55869 from LemonInTheDark/fixes-plasma-alerts
Fixes plasma alerts not showing up
* Fixes plasma alerts not showing up
Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com>
* Merge pull request #55897 from TemporalOroboros/fix-cyborg-cell-runtime
Fixes the cyborg runtime in update_cell
* Fixes the cyborg runtime in update_cell
Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com>
* datum_pipeline.dm code cleanup (#55514)
A bit of code clean up and var name change for clarity, hopefully i got them all right
will add some docs another day
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* datum_pipeline.dm code cleanup
* Update datum_pipeline.dm
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* fixes digis (#55865)
fix_non_native_limbs was called AFTER the on_species_gain proc gives the lizards their legs, and because digitigrade legs are not in their bodypart_overides list it was immediately replaced with normal legs.
* Fixes Digitigrade Lizards
* a
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Mechanical Curtains (#55751)
good for better mapping, I have seen some mappers wish to utilize fancy curtains on their rooms windows (for example, a psychologist office) but wanted to be able to have privacy when with a patient, which curtains can be opened from either side of the window, and shutters just dont fit the theme, this way mappers can add in curtains which are button operated and cant be opened manually, basically, it functions like a shutter, only it looks and acts like curtains (can be destroyed like one, etc... it is literally a curtain subtype)
* Mechanical Curtains
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Refactor plasmaman stomach typepath (#55716)
Skeleton and plasmaman stomachs now share the same code.
Skeletons now heal brute and burn damage from drinking milk, plasmamen
only heal brute damage.
* Refactor plasmaman stomach typepath
Co-authored-by: coiax <yellowbounder@gmail.com>
* Fix hydroponics tray examine messages (#55861)
Some oversights when examine procs were changed to return lists of
strings, rather than using `to_chat()`, meant that the examine for
hydroponics was printing some messages in the wrong order.
In addition, examining the tray when close to it was only printing the
`to_chat()` messages, so it has been changed to `examinate`.
* Fix hydroponics tray examine messages
Co-authored-by: coiax <yellowbounder@gmail.com>
* painful (#55826)
Stop me if you've heard this one before: infectious zombies specifically were immune to being wounded and thus dismembered. I'm not sure how this happened or when, but the definition for apply_damage() on their species was missing an argument for spread_damage and thus I think it tried defaulting to spreading out any damage taken, which is obviously problematic for trying to remove specific bodyparts (IE the head). This fixes that, and here's proof you can dismember these bastards
* Fixes zombies being immune to wounds/dismemberment
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* adds xenomorph holdable flag (#55814)
adds a flag that lets something be held by xenos
adds it to facehuggers
makes the xeno "can i hold this item" check check for flag instead of facehuggers
* adds xenomorph holdable flag
Co-authored-by: Fikou <piotrbryla@onet.pl>
* Fixes food/slime processor being able to be turned on when empty (#55872)
It was trying to check for the machine's contents, but components are now part of the machine's contents too.
* Fixes food/slime processor being able to be turned on when empty
Co-authored-by: prodirus <44090982+prodirus@users.noreply.github.com>
* beep beep honk honk (#55875)
In my riding refactor and the handful of PR's that have come out since, I made some incorrect guesses about how clown cars worked, and as a result caused issues with them. This PR addresses the last issue with them, which was caused by erroneously removing a check to see if someone was actually qualified to drive the clown car (AKA they're a clown in full clown regalia), meaning that anyone in the car could drive it, including the unwilling passengers. That check has been restored, so only clowns can drive again, as intended.
* Fixes non-clowns being able to steer/drive clown cars
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Tweak nanite subdermal ID to include pulled cards (#55883)
Some mobs which are capable of hosting nanites have no hands to hold ID
cards to be scanned, such as unexpectedly sentient Captain Ian. But now,
give them subdermal ID nanites, pull the ID card, and then you have a
full-access simple mob.
Note that this DOES NOT scan the ID cards of pulled mobs, only if you
are pulling an actual ID card. It is not possible to grab the captain to
leech his access.
* Tweak nanite subdermal ID to include pulled cards
Co-authored-by: coiax <yellowbounder@gmail.com>
* Merry Christmas! Mechs receive damage from Xenos using their actual damage, instead of a hardcoded value (15). (#55736)
* Merry Christmas! Mechs receive damage from Xenos using their actual damage, instead of a hardcoded value (15).
Co-authored-by: KathrinBailey <53862927+KathrinBailey@users.noreply.github.com>
* Fixes two bugs with Blob strain rerolling (#55833)
* tested locally and it works
* As suggested
Co-authored-by: Ranged <nickvanderkroon@ gmail.com>
* Fixes two bugs with Blob strain rerolling
Co-authored-by: NotRanged <rangedvdk@gmail.com>
Co-authored-by: Ranged <nickvanderkroon@ gmail.com>
* HFR can now output waste gases again (#55864)
Commit 241e9cf broke HFR. Leaving internal_output as null meant that
execution would hit runtimes during process(), and never reach the end
where changes were applied.
No radiation was emitted, no nuclear particles were generated.
No waste gases could be removed, neither by fusion waste removal nor by
moderator filtering. Fusion would produce nothing.
It could still enter meltdown, though.
This fixes the endless runtimes like the following:
[07:51:05] Runtime in hypertorus.dm,1067: Cannot execute null.total moles().
[07:52:09] Runtime in hypertorus.dm,957: Cannot execute null.assert gases().
[07:52:17] Runtime in hypertorus.dm,983: Cannot execute null.assert gases().
[07:53:21] Runtime in hypertorus.dm,1012: Cannot execute null.assert gases().
* HFR can now output waste gases again
Co-authored-by: esainane <esainane+github@gmail.com>
* Refactor on_mob_death, death implants, implant permission (#55862)
* Refactor on_mob_death and death implants
There is a proc on `/obj/item` called `on_mob_death` called on all
items in the contents of a mob on that mob's death. It is currently used
for explosive implant detonation, and the deactivation of the
Peaceborg's projectile dampener.
Instead of using this old proc, both of them now instad use the
COMSIG_LIVING_DEATH signal, already emitted when their owner dies.
The activation of an explosive implant will now occur after the rest of
the death code has run, since it activates with an async applied
function, since some other implants may still want the mob's body
intact, and you shouldn't use `sleep()` (which it does in the "slow
explosion mode") in signal handlers.
In addition, the "can_be_implanted" proc for /mob/living (and overriden
for silicons, slimes and simple animals) has been folded into the
`/obj/item/implant/proc/can_be_implanted_to` proc. Some future implants
may want to be more permissive than the current permissions, but that
isn't possible when checking both procs.
* Refactor on_mob_death, death implants, implant permission
Co-authored-by: coiax <yellowbounder@gmail.com>