Examine death bodies should now display the correct text
Changed the logic so that the message tells you if the players is:
- Still in his body (`[t_He] [t_is] limp and unresponsive; there are no signs of life...`) or
- A ghost that could enter the body again (`[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed, but the link is not yet fully broken...`) or
- No ghost, that can reenter the body and no key (`[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has lost the will to live...`)
Also refactored the code a bit:
- Moved the death examine message generation to a proc so that you can work with returns
- Removed pushed_do_not_resuscitate since its not needed this way
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.
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)
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>
The emote CSS class was no longer in use, it has been unitalicized and made into the actual emote class, back into local.
A CSS class for info has been created which has no special CSS.
The who verb has been put into info. (infoplain CSS class)
PDA message receiving has been put into info (PDA message sending was already in info). (infoplain CSS class)
Supply radio has been properly placed into radio.
Service radio has been properly placed into radio.
Binary talk has been placed into radio.
A CSS class for minor announcements has been created.
Minor announcements (shuttle purchases, head of staff office announcements, silicon announcements, etc) have been placed into radio (major announcements are already in radio). (minorannounce CSS class)
## 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.
## 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.
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.
The civilian bounty console now offers a choice of 3 different bounties when getting a new civilian bounty choice.
The first two of these options will be different bounty types from within your jobs pool, while the third will always be a generic bounty (AKA from the pool that assistants and various misc. jobs choose from).
This gives the player a bit more choice than they had before in regards to doing a task related to their job within the existing bounty system until we add a more concrete method for some of the more poorly aligned bounty pools to be brought in-line with existing gameplay.
Also it offers a way to make economy impact more interactive with the round.
Co-authored-by: fuck <minecraftor5088@gmail.com>
* HARK! THERE ARE SOME MAIDENS THAT NEED SAVING!
* claymores, chairs
* mapmerge, price increase, no losing the flag, no teleporting in, other small stuff
* oldworld language, medieval mutation, reviews
* see desc for full changelog
huge improvements to how medieval speech feels, CTF now fully lit, json beautified, bugs squashed and more NOTELEPORT exploits also quashed. (I NEED TO UNDO THIS FOR ATOMIZATION)
* removes my fixes? also bugfixes and CTF separation
* dumb json mistake, starting work on reality simulators
* BOWS ARE BROOOOOOOOOOOOOOOOOKEN
* br
* getting closer to working
* well, mostly everything now.
* finally ready
* removes languages stuff as it is buggy and does not work, fixes more bugs, fixes more bugs, fixes more bugs
* conflict fix
* linting
* more lint
* bow buff, speech fix, TON of ctf fixes
* oh fuck year
* NO MORE INSTA DELETING CREW
* whoops
* review handled
* pooosh
* conflict fix
* 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
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.
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>
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)
Skeleton and plasmaman stomachs now share the same code.
Skeletons now heal brute and burn damage from drinking milk, plasmamen
only heal brute damage.
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`.
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
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
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.
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.
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.
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().
* 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.