* Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Del The World: Unit testing for hard deletes
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Drugs of the 26th century. Three new hella rad drugs, one less lame drug and more!
* Update traits.dm
* Update maint_loot_trash.dm
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* swap bodypart species checking to bitmap, fix surgery for monkey body… (#60280)
* swap bodypart species checking to bitmap, fix surgery for monkey bodyparts on monkeys
* fix part_origin so it is used correctly
* remove tabs, change DEFAULT_BODY to NULL_BODY
* add requested documentation
Co-authored-by: whitecas18 <whitecas18@ students.ecu.edu>
* swap bodypart species checking to bitmap, fix surgery for monkey body…
Co-authored-by: ArchPigeon <bookmaster3@gmail.com>
Co-authored-by: whitecas18 <whitecas18@ students.ecu.edu>
* Brain-computer interfaces, circuits in your brain (#60338)
BCIs are a new shell that can be implanted in your brain through surgery or through a BCI Manipulation Chamber, which provide the ability to easily implant and remove BCIs. They are the same size as compact remotes and generally share the same limitations.
Also adds CIRCUIT_FLAG_HIDDEN, to hide components from the UI. I didn't end up needing this, but Watermelon said he had ideas for it, so eh.
Why It's Good For The Game
BCIs provide an interesting, stealthy input method for circuits. They are seen as a healthier alternative to nanites, and improve on them in several ways:
Circuits have limited manipulation of the world, and intentionally do not perform the ability to provide passive healing, revives, etc.
Circuits have a significantly better UI and UX than nanites.
Circuits regularly get content expansions, which means that as a side-effect, there'll often be new things to play with for BCIs.
Other point to make:
BCI implanters have no cloud, and instead require the BCI to be put inside the machine. This means it requires the attention of the scientist (or even just a box with them inside). With
Adds the ability to save/load circuits for admins. Adds the ability to duplicate modules in a round. #60222, which lets you reprint a circuit you made that round, this means you can print out lots of BCIs, rather than going through the tedium of constantly remaking it.
BCI implanters are not roundstart, but rather in the advanced shells node. This is essentially the same as nanites, except for the difference of nanites starting with all the machinery, but none of the powers.
Changelog
cl
add: Added brain-computer interface circuit shells.
/cl
* Brain-computer interfaces, circuits in your brain
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Gas Masks Properly filter now (#58529)
This PR allows gas masks to properly filter toxic gases by using one-time-use filters that can be made in any lathe from roundstart. All gas masks start with filters in at roundstart.
These filters will have different filtering abilities that differenciate what gas they'll be able to filter the most. The highest ones will be plasma gas, co2 and n2o.
Currently there is only one filter available, it will filter plasma, co2 and n2o at higher amount, while nitryl, stimulum, freon, hypernob and bz will be at a mid range and the more complex/dangerous gases healium, zauker, proto nitrate, tritium, halon will have easier time passing even at trace amounts
More filters with different filtering levels soon(tm)
Warning, the masks will filter traces amount of gases, but will also help slowdown the damage you'll get by breathing the gas by reducing the amounts of moles taken (example plasma intoxication will be slower)
Gas masks now properly filter gases when a filter is used (they will work normally otherwise)
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Gas Masks Properly filter now
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Fixes cutting open heads dropping hidden organs (#60267)
Yes it's a dumb fix, but organ code is dumb. I want to rework how organs are stored eventually when I get to it which is when I'll clean this up. (I also want to rework external organs again to just be datums attached to organs but hush)
* Fixes cutting open heads dropping hidden organs
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Change ashwalkers to have custom lungs (#59413)
* Changes ashwalkers to have custom lungs
Ashwalkers now have lungs that are specially adapted to Lavaland
environments. However, that specialisation comes at a cost at sometimes
not being able to operate in normal human air conditions.
- Ashwalker lungs take a gas sample of the default lavaland atmosphere
on initialisation in order to customise themselves
- Currently, excess O2/N2 has no functional drawback, so no maximum
value is set on the lungs. If Lavaland rolls a higher N2/O2 mole count
than human air, they will still struggle however.
* Change ashwalkers to have custom lungs
Co-authored-by: coiax <yellowbounder@gmail.com>
* Fixes attach_limb() not calling update_disabled() (#60128)
* Fixes attach_limb() not calling update_disabled()
* Ok, that's new. But at the core, the framework's the same.
* Fixes attach_limb() not calling update_disabled()
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code)
* Mirror
* genetically-editable mutant bodyparts and colors - skyrat edition
Co-authored-by: Funce <funce.973@gmail.com>
* mostly [modular] adds a language for xeno hybrids via culture
* ok special culture
* I FORGOT THE DEFINE
* Update tgstation.dme
Co-authored-by: louiseedwardstuart <bonniefluff>
* Massively buffs debriding surgery (#59865)
Yesterday, I got lasered in the arm twice. A good three minutes later I lose all controle off my arm and have an assistant debride my arm. On a surgical table with sterilizine, this took 2 minutes and 30 seconds.
All wounds can be fixed quite easily, but the infection wound type has always been an absolute nightmare. This was the only time I recorded it, but this has happened so many times and it feels like the average lies around 4~ minutes for this surgery to complete.
It still depends on how badly infected your burn wound is, but it shouldn't take longer than 30 seconds now.
* Massively buffs debriding surgery
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Fix to_chat error with empty surgery step strings (#59876)
/datum/surgery_step/incise/success() has no vague_message arg in a certain edge case when calling display_results. This eventually leads to an empty string being sent to /mob/proc/show_message() - Unsure if this is intended or not, but I've added an equivalent string based on the other usages of display_results instead of sending an empty string.
* Fix to_chat error with empty surgery step strings
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Remove unnecessary species breath code (#59864)
Human code override breathe(), called the species datum which checked if the human had NO_BREATH. I just made it check for NOBREATH directly, since it is apparently a human only trait.
If someone wants to implement special breathing checks/behaviour, make custom lungs
* removes unnecessary species breath code
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Slightly buffs knife wounds, slightly nerfs scalpel wounds (#59848)
Recently it came to my attention that knives are actually really bad at causing slashing wounds, while the scalpel is probably a little too good at causing them, even through armor. So, here's what this PR does:
Knives in general are more effective at causing slash wounds, especially if the target has no armor/clothing on that limb. The butcher's cleaver in particular is now equally as effective as a circular saw.
Scalpels are a bit less effective at causing slash wounds against armor/clothing, though they're still extremely good at cutting, especially against exposed flesh.
With these stats, knives will be more effective against unarmored targets, and can actually be counted on to draw blood when needed.
* Slightly buffs knife wounds, slightly nerfs scalpel wounds
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Refactors species stomach code, makes ethereal charge inherent to their stomach (#59801)
A stomach would literally just ask the species datum how to be hungry and made a bunch of exceptions for ethereals. I mostly just moved code around so that hunger is handled by a persons stomach, thus shrinking the species.dm bloat.
This also makes it so ethereal's charge mechanic is unique to their stomache, instead of this really weird inbetween where just nothing happens and you kinda starve to death. You can stick an ethereal stomach in a human and this will replace their hunger mechanic with the charge mechanic and lets them absorb power from APCs and everything. You can also give ethereals a normal stomach and they'll use the normal hunger mechanics
* Refactors species stomach code, makes ethereal charge inherent to their stomach
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Fix missing SIGNAL_HANDLER (#59826)
Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.
* Fix missing SIGNAL_HANDLER
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Digitigrade Paralysis BugFix (#59697)
* Fixing Digitigrade Legs, Adding Sanity Checks
- A limb's attach_limb proc now uses the set_owner() proc instead of setting the owner manually, fixing problems where limbs that were meant to be paralyzed were not
- Added a sanity check to set_usable_legs to ensure the value isn't set lower than 0
* Adds A Stack Trace to Set_Usable_Legs
- set_usable_legs now calls stack_trace() whenever it is provided with a negative value
* Digitigrade Paralysis BugFix
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* Adds Neon Carpet (#59140)
Adds a couple varieties of neon carpet.
Makes decals care about their plane in addition to their layer.
* 0
* A
* a
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Blindness-related bug fix and code improvements (#59616)
TRAIT_BLIND caused by the hypnochair or by being unconscious (eg. sleeping) will no longer prevent you from being flashed.
Moves all raw text strings used in become_blind and cure_blind calls (as well as nanites in general with ADD_TRAIT) into defines.
Code changes not in changelog due to not being even the slightest bit of player facing.
* Blindness-related bug fixes and code improvements
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
* Makes obj_integrity only updated through procs (#59474)
Having things updating integrity directly is just going to cause more problems down the line as more elements and components depend on being notified of integrity changes. It's an easy mistake to make so making it private should deal with the problem.
get_integrity() might be useful in the future but is mainly a side effect of making obj_integrity private as that also disallows reads.
* Makes obj_integrity private and only updated through procs
* Mirror!
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Cleans up some pointlessly defined initialization procs (#59425)
* Cleans up some pointlessly defined initialization procs
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Stops giving you organ damage messages if you arent conscious (#59311)
* Stops giving you organ damage messages if you arent conscious
Co-authored-by: skoglol <33292112+kriskog@users.noreply.github.com>
* use SIGNAL_HANDLER REEEEEE (#59242)
makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
* USE SIGNAL_HANDLER REEEEEE
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* it begins
* all
* pain
* i forgot i personally slogged through the entire goddamn surgery code to clean out those single letter variables
* i need to stop rushing
* Update readme.md