Commit Graph

1411 Commits

Author SHA1 Message Date
MrMelbert
09758ba01e renames damge -> damage (#60647) 2021-08-02 18:14:14 -07:00
Ghom
e13af3ab93 surgery_initiator component to element. (#60634) 2021-08-02 18:12:18 -07:00
tralezab
3151800943 fixes incorrectly sorted external organ files (#60618) 2021-08-01 19:01:47 -07:00
Mothblocks
fc711a828e 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
2021-07-26 23:10:16 +12:00
Ghilker
d0e0b81503 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>
2021-07-22 00:23:54 -07:00
coiax
383dcc52bf Rework appendicitis: not event-based, not a disease (#60331)
Adds a new trait that "simulates" a medium-like disease according to health HUDs.
Organs now control their own "status text" for health scanners, for all except the appendix, this is the same as before.
Appendicitis has a low chance of occuring on each life tick of an appendix, it is no longer a disease.
2021-07-20 20:22:54 -03:00
Time-Green
b47d428595 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)
2021-07-19 17:02:20 -03:00
InsaneRed
31c2c4a862 convert some adv tool actions into balloon alerts (#60278)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-07-18 01:47:03 -07:00
coiax
603c7412bc Stop ethereals reviving during Mafia games (#60210) 2021-07-15 17:37:17 -07:00
Ghom
13dedbe143 Fixes lingering moodlet on ethereal stomach removal. (#60130) 2021-07-13 12:32:30 -07:00
Time-Green
edb6829cdf Always draws mothwings (#60142)
closes #60131 (Mothblocks malding about wings not drawing above hardsuits)
2021-07-11 23:18:09 -07:00
coiax
364e2e1f92 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.
2021-07-11 16:02:30 -07:00
Ghom
4ddc659844 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.
2021-07-10 23:04:33 -07:00
Time-Green
5b3ce87c5e Fixes layers being wonky (#60106) 2021-07-10 17:32:43 -07:00
KubeRoot
63045f6e31 Fix augment flash runtime (#60090) 2021-07-09 20:39:53 -07:00
Mothblocks
c57998ce12 Fix moth wings not showing up (#60094) 2021-07-09 20:38:55 -07:00
Time-Green
8a7f258171 The Great Species Dedatumming: External feature organs, part 1 (#59981)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-07-08 08:27:19 -07:00
LemonInTheDark
0654cde093 Fixes a good few improper overlay icon_states, fuck gun code edition (#59580)
* Fixes a good few improper overlay icon_states, fuck gun code edition

* Rewrites comment to be less word salad, changes display_mag to the already existing and unused mag_display
2021-07-06 21:05:37 -07:00
Time-Green
b9dbda85a5 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.
2021-06-30 14:21:08 -03:00
Timberpoes
4549b0be9d 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.
2021-06-29 22:03:58 -03:00
Time-Green
2a1569a7a7 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
2021-06-29 17:21:47 +01:00
Ryll Ryll
baf7efb692 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.
2021-06-28 11:01:58 -03:00
cacogen
d3dd525e08 Cannabis has more believable effects (#59360)
Adds cannabis reagent and replaces space drugs with it in cannabis products
Adds space drugs to rainbow weed, which fits its theme and might satisfy the people who miss the effect
Removes lipolicide from cannabis products in favour of the reagent consuming nutrition directly
Cannabis reagent gives you messages describing symptoms of cannabis intoxication, makes you laugh, makes you hungry, has a chance to couchlock you buckled to a chair and put you to sleep lying down
Cannabis no longer references hallucinating, can't be overdosed and has no addiction
Adds Stoned status effect, which is applied by cannabis reagent
Stoned status effect slows you down, gives you bloodshot eyes, makes you clumsy, boosts your mood and gives you the drugged sound environment
Adds "stoned" icon state for Stoned status effect screen alert (sprite shamelessly stolen from the Smoke spell)
Adds BLOODSHOT_EYES trait, which is applied by Stoned status effect
Adds examine eye descriptions for bloodshot eyes and player-chosen red eyes
Adds cannabis movespeed modifier, which is applied by the Stoned status effect
Adds Stoned mood event, which is applied by Stoned status effect and gives the same mood boost as High but doesn't reference tripping
2021-06-27 21:14:48 -03:00
Time-Green
a915c7167e 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
2021-06-27 12:35:53 -03:00
Mothblocks
23790c6c5e 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.
2021-06-27 15:43:49 +01:00
DragonTrance
279c93a0a7 Adds Defines for Species IDs (#59797)
Simply puts species IDs into defines ("lizard" turns into #define SPECIES_LIZARD "lizard"). This does not affect any gameplay, and is purely for making sure future code doesn't go all fucked up because someone accidentally misspells something

I only changed code that was spelt correctly, so if there actually is a typo somewhere, it isn't changed
2021-06-25 15:30:16 -03:00
Beatrice
1e476296e5 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
2021-06-20 22:01:44 +02:00
Y0SH1M4S73R
63e33bd709 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) (#59636)
I noticed that various nonhuman body features can't be changed using genetics. I corrected this by adding a block to character genomes allowing you to edit features in the DNA console.
2021-06-20 16:20:09 -03:00
Watermelon914
375a20e49b Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.

Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.

(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
2021-06-14 13:03:53 -07:00
TemporalOroboros
daec5002fc Adds Neon Carpet (#59140)
Adds a couple varieties of neon carpet.
Makes decals care about their plane in addition to their layer.
2021-06-13 15:40:53 -03:00
RandomGamer123
a62444b84e 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.
2021-06-13 03:03:26 -03:00
LemonInTheDark
f90e8cf7a3 Fixes a bunch of harddels that are sourced from player action (#59371)
Sourced from #59118 and a cursed project I'll pr later, This pr contains a lot of harddel fixes for stuff that pops up after a player interacts with something. I'm not gonna list them all here because there's something like 60 130, check the commit log if you're curious

Oh and I moved ref tracking screaming to a separate define, and made some optimizations to the thing in general. I think that's it, this pr is a bit of a frankenstine
2021-06-10 21:44:23 -03:00
Thunder12345
bbb68b574a Fixes a typo in tend wounds (burn) surgery (#59561) 2021-06-09 14:08:28 -03:00
Emmett Gaines
43c5dc8bfa 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.
2021-06-04 11:48:05 -03:00
MrMelbert
2a963ab3f0 Cleans up some pointlessly defined initialization procs (#59425) 2021-06-01 23:26:26 -07:00
Gamer025
4952389927 Fix incorrect uses of UnregisterSignal (#59379)
Correctly unregister multiple signal types / removes uneeded proc parameters in calls to UnregisterSignal
2021-05-30 15:58:44 +01:00
Gamer025
03b2a8b20f Fix runtime caused by organs without owner
#59311 added a check to prevent unconscious people from receiving organ damage messages.
However this causes runtimes for organs lying around without an owner:

This checks if owner is not null before trying to get stats (?. can't be used because null <= SOFT_CRIT would be true)
2021-05-30 01:34:14 -07:00
skoglol
28ea1f720b Stops giving you organ damage messages if you arent conscious (#59311) 2021-05-27 04:34:20 -07:00
FlamingLily
5a0d8209cb Muscled Veins and Gastrectomy (#59291) 2021-05-25 19:54:04 +02:00
Kylerace
e13fe75590 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
2021-05-24 15:28:02 -04:00
RandomGamer123
e2ce242221 Grammar fix for blood filter (#59238) 2021-05-23 03:22:07 -07:00
FlamingLily
3958db8d27 Cleans up surgery and organ code. (#59068)
About The Pull Request

Scrubs those filthy single letter variables out of surgery and organ code.
Replaces a few 0s and 1s with FALSE and TRUE where relevant
Normalises and cleans up surgery step lists and surgical implements lists.
Replaces a whole lotta for loops with for x as anything in y lops

This is my first PR (upstream anyway) so I encourage you to treat my code with as much confidence as I treat it, which is to say none, because there's a strong chance I've totally broken everything.

But it compiles!
Why It's Good For The Game

code improvement, follows contributing guidelines.
Changelog

🆑 FlamingLily
code: Cleanup of surgery and organ code
/🆑
2021-05-22 19:49:47 +12:00
FlamingLily
1c8e2fbb12 Mechanical surgery - unscrew shell now correctly checks if the random item you use is sharp or not (#59167) 2021-05-20 03:10:53 -07:00
John Willard
c5af472fde Removes a LIE from the code (#59074) 2021-05-14 16:42:59 -04:00
dragomagol
12d6449437 fixes blood filter message (#58942) 2021-05-08 22:58:09 -07:00
Ryll Ryll
14d513bf4f Tend Wounds and Debride Infection surgeries now estimate how long you have left to finish (#58682) 2021-05-08 05:11:12 -07:00
LemonInTheDark
a924226b50 React optimization + event based processing for tanks, canisters and pipelines (#58418)
* Makes tanks only process when needed, rather then doing it constantly

* Makes portable atmos machines only process when needed, makes adding and removing atmos machinery cheaper, makes the tank processing logic actually work properly

* Makes pipelines only react() when their mix changes, fixes a ton of misuses of update_parents that were causing about 10ms of load for atmos just from reconcile_air()

* Adds in a new reaction framework alongside the old one for profiling related reasons

* whoops

* Cleanup, removes the react profiling code, I've chosen a direction to go here

* Cleans up some code, adds comments describing how to interact with portable atmos machines/tanks and their
mixes, adds a blurb to Atmospherics.md about the topic as a whole, leaves a line of bread for someone to follow
if I get hit by a bus in 2 days (Knock on wood)

* Removes priority from reactions, moves priority groups to the defines file

* whoops

* Converts air_contents to _air_contents, replaces all the out of file things that used it with return_air()

* Replaces the canister air contents uses, converts it back to air_contents, I decided I didn't like the _

* Fixes
2021-04-30 12:29:29 +02:00
itseasytosee
a28bf994b8 Stops ethereal from crystalizing while eaten (#58650)
Checks if an ethereal is in an item or mob before making the crystal. Stops weird cases where one might just appear outside a space dragon or create legions that dropped no corpses. fixes #58643

Look if someone wants to code the process of an ethereal coming back to life in a space dragon's stomach I won't stop you but I will judge you.
2021-04-26 01:19:43 -07:00
tralezab
106d455b35 feedback it isFeedback for mutations deactivating from losing limbs (#58687) 2021-04-26 01:02:27 -07:00
Seth Scherer
24eeeb070b organs (#58530) 2021-04-19 21:16:24 -04:00