Skip to content

Commit

Permalink
[MIRROR] The death or internal/external organ pathing (ft. fixed fox …
Browse files Browse the repository at this point in the history
…ears and recoloring bodypart overlays with dye sprays) (#87434) (#4634)

* The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)

This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

:cl:
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/:cl:

* Automatic changelog for PR #87434 [ci skip]

* Adds a new INHALE reagent transfer method and applies it to smoking and smoke inhalation. Nitrous oxide (the reagent version) inhalation causes brain damage. (#87306)

Adds the ``INHALE`` transfer method. Smoking and smoke exposure now uses
this method.

Makes a few sensible inhalation effects for current behaviours.

Adds a unit test amongst the rest of the exposure method tests.

Nitrous oxide does brain damage on inhalation based on volume inhaled.

Smoke and smoking being based on ingestion rather than inhaling was
always weird to me. It'd be nice to have a specific method for smoking
instead of a method shared by drinking. Many of our smokables make sense
as indigestibles, obviously, but maybe we'd like a chem you can ONLY
smoke.

~~Also, I walked out of a job interview and up the street to see a guy
throwing his empty nitrous canisters around and yelling at passerbys, so
shout out to that fucking guy with this PR.~~

:cl:
code: Introduces a INHALE method for reagent transfer. Cigarettes and
smoke reactions use this new method.
balance: Nitrous oxide now brain damage if you inhale it. So don't do
that.
/:cl:

---------

* Automatic changelog for PR #87306 [ci skip]

* Refactor tasting code and reagent taste carrying, no longer taste your stomach contents or have non-existing flavours win out (#87329)

Soooooooooooooooooooooooooooooooo tasting code has been jank for a good
damn while, and with this we aim to fix that- let's start from the
beginning.

Earlier when I was making a food item, I noticed that it'd never
actually have the taste I gave it, just tasting indescribable as things
without tastes do.
Weird, cause it definitely has a taste set, and plenty of nutriment
subtype reagents!...
When looking into it, I noticed that we only copy the tastes to
*specifically* the base nutriment and the vitamin subtype:

https://github.com/tgstation/tgstation/blob/57b718ad20c3b6af02dbdbc87f3cae4dd4d7e297/code/datums/components/food/edible.dm#L215-L216
But! Surely the other reagents should have tastes, right?.... No:

https://github.com/tgstation/tgstation/blob/57b718ad20c3b6af02dbdbc87f3cae4dd4d7e297/code/modules/reagents/chemistry/reagents/food_reagents.dm#L119-L120
we were always returning the tastes data, but never actually setting it
except for those two reagents, overriding any and all tastes.
This caused the non-taste of the proteins and fats to override the food
taste applied to the vitamins with their volume.

So, to fix this, we replace these hardcoded ids with a check for
`carry_food_tastes` on the nutriment reagent, such that each can
individually define whether they carry food tastes. This lets oils have
their own tastes, while letting all other nutriments carry the tastes.
We then make `get_taste_description(...)` return the base flavour if no
special flavour is found, and add base flavours to proteins and vitamins
based on what pure proteins/vitamins with no further additives would
roughly taste like.

This fixes our issue!....... Except, we now always taste something "rich
earthy pungent" when we eat. Looking into it, that's the organ tissue
reagent, used in our stomachs:

https://github.com/tgstation/tgstation/blob/57b718ad20c3b6af02dbdbc87f3cae4dd4d7e297/code/modules/reagents/chemistry/reagents/food_reagents.dm#L232-L236
....Because whenever we ingest something, we taste the contents of our
stomach. This was previously less noticeable, as while it *did* count,
it only added a weight for _no flavour_.

To fix this we just, well, make it so you taste what you're eating and
not the container itself.
It's as simple as separating the tasting code from the reagent holder,
and making the tasting that happens on ingest exposure use that logic
instead.
We keep the old logic for the INTJ skillchip and tasting machine, just
re-routed through this, and split up some procs to avoid too much
duplication.

This fixes our issue! Though, there's still some minor issues.
This lets us add organ tissue instead of nutriment to other organs so
they no longer taste indescribable, as it actually works properly now,
but letting organ tissue hold flavours would risk having the stomach
organ tissue permanently leech the flavours of the organ tissue you eat.
So we make a subtype of organ tissue for the stomach, stomach lining,
which cannot hold flavours.
This lets us apply the base organ tissue to all other organs without
risking stomach contamination.

It's jank to taste your stomach contents.
It's jank for organs to taste like nothing.
It's jank for reagents with flavours to never taste like anything.
It's jank for tasteless reagents to block out food flavours.
It's jank for organs to only sometimes contain organ tissues.
yeah.
:cl:
refactor: Refactored tasting code. Please report any jank tasting
behaviours.
fix: You taste what you eat instead of the contents of your own stomach.
fix: Other basic nutriment subtypes also carry food flavours, instead of
outweighing the food flavours with their lack of flavour.
fix: Basic nutriment subtypes have a flavour they default to, in case of
not carrying any food flavours.
fix: Oils taste like oil instead of tasting indescribable.
fix: Clothing eaten by moths actually carries its flavours instead of
tasting indescribable.
fix: Organs use organ tissue instead of nutriment.
fix: You can actually taste organ tissue.
qol: Mineral slurry tastes like minerals instead of tasting
indescribable.
fix: Tasted flavours can actually be "strong" in addition to mild or "a
hint of", as intended.
qol: Flavours are only strong when their percentage of what you're
tasting is more than 4x taste sensitivity instead of 3x, for most
default tongues being 60% and lizards 40% of the drink.
qol: Tasted flavours are sorted by strength, stronger flavours coming
first.
qol: Tasted flavours are grouped into "strong", "mild", and "hint" in
the message, replacing "You can taste a hint of bitterness, alcohol, a
hint of sweetness, and a hint of cola" with "You can taste alcohol and a
hint of bitterness, sweetness, and cola".
/:cl:

---------

* Automatic changelog for PR #87329 [ci skip]

* Herculean/Atlas implants get a few additional BOULDER/Equipment related benefits. Boulders are more robust. Natural Athletics gains. (#87469)

Herculean/Atlas spinal implants allow you to break boulders to process
them manually. Doing so also grants athletics experience.

They also increase the speed at which you throw objects, and also
increase the range further. The Atlas version also allows you to reduce
equipment movespeed penalties. (Fikou wanted me to do this for
specifically modsuits, but I don't see any reason this can't apply to
more than that, modsuits are just generally the slowest equipment you
could wear)

Boulders have 30 throw force, are by default HUGE, but have no throw
range at all and really weak tk throw range. You need a throwing booster
to throw boulders around. (They do extra damage to SPECIAL mobs, like
lavaland bosses, because it's funny to kill a god-like being with a huge
rock while slow as shit)

You naturally get athletics experience by doing some actions. Fireman
carrying, climbing tables/crates, climbing rope and climbing ladders
give you a slow and steady stream of experience. Rope gives a larger
amount if only because the process for doing so is destructive in some
way (you have to get more climbing rope eventually, so there is an
associated cost). Spinal implants now improve climbing speed for
climbing over objects.

I just had this strange compulsion to make the spinal implant make you
good at throwing boulders at lethal speeds. It already has some cool
rock-based special effects around you. Having mastery over rock throwing
just kind of made sense. Additionally, I thought it would be a funny
method for someone to be able to kill a boss via way of thrown boulders.
Or some hapless nuclear operative unprepared for a bunch of assistants
lobbing boulders at them.

Additionally, I also think it letting you break boulders for ore is a
fairly minor but fun addition. Pull boulders out of the vents, smash
them. Good work out. Particularly for miners.

I talked a while ago with I think Jacq about adding some natural methods
for accumulating athletics experience over the course of a round that
doesn't involve the dedicated weight lifting machinery/boxing bag. I
thought any method for doing that should probably be relatively slow and
definitely nonviable for significant athletics gains beyond novice
level. Mooost people will hit novice on a multi-z map if they go up and
down ladders enough. Or climb a lot of tables/crates. The results aren't
going to have much noticeable impact, however, as you only gain
appreciable benefits above novice. Probably just greater visibility of
fitness in a round. (Rather nice for the RD, who gets to show off how
swole they are more regularly).

<details>
  <summary>Spoiler warning</summary>

![CES8b4XWEAAIakb](https://github.com/user-attachments/assets/8baaa012-8048-419f-b936-2dc6621db3c2)

</details>

:cl:
balance: Herculean/Atlas spinal implants make you better at climbing
tables, throw objects much faster and throw them much further. You can
also break boulders with your bare hands.
balance: Atlas implants let you offset the weight of worn/carried
equipment (like boulders).
balance: Boulders have no throw range, but if you can throw them via
throwing range boosters (such as the spinal implant), they deal fairly
large amounts of damage. Especially to powerful mobs like lavlaand
bosses.
balance: You naturally gain a small amount of athletics experience doing
some tasks, such as climbing rope, ladders and tables/crates, fireman
carrying, or smashing open boulders.
/:cl:

* Fixes eye charts so that master isn't failing (#87648)

The eye charts were still using the ``internal`` organ subtype. This
fixes that.

Phone PR baby. We love webedits.

:cl:
fix: Eye charts now use the correct subtype for eye organs.
/:cl:

* Adds eye color overrides, converts cult/weed/silverscale eye effects to use them (#87782)

Eye color effects are now controlled via a new overrides system, which
should prevent conflicts between different sources - such as smoking
weed, becoming a cultist, stopping your weed and getting normal eyes
(and subsequently getting your red eyes back when you get deconverted)

Should ensure that different eye color effects don't collide between
each other. Also need this for a future feature I wanna add.

:cl:
refactor: Eye color effects are now controlled via a new overrides
system, which should prevent conflicts between different sources.
/:cl:

---------

Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #87782 [ci skip]

* Fixes ayylmao's brain examine lines (#87869)

Closes #87861
Merge skew my beloved

:cl:
fix: Fixed ayylmao's brain examine lines
/:cl:

* Automatic changelog for PR #87869 [ci skip]

* modsuit given traits use refs + fixes their deletion not working right + need boot out for ai to move (#87726)

so there is a problem of:
if 2 modsuit modules were to apply the same trait and 1 were removed,
shit would break
so now all instances of mod_trait applied to the modsuit wearer are refs
instead, with mod_trait used for stuff added to items as that isnt
likely to have the same thing
also qdeleted modsuits delete their parts apparently accidentally
removed at some point. the previous time they did it caused qdel loops
but this time it doesnt
makes boots need to be out for an ai to move someone in a modsuit
improves the ui, non-standard cores now have unique colors for the
charging bar, and you can extend/retract things from ui, also adds a
configurable button to config menu so that the tether doesnt repurpose
the pin function made for circuits
redoes modsuit balloon alerts to use simpler language
makes the weapon recall module make you pick up the weapon if its on
your tile as throws dont work on same tile

![image](https://github.com/user-attachments/assets/97a0eb85-8127-4297-b679-3e5488ce73be)

futureproofing (also technically presentproofing, if you wear something
like infiltrator and normal back modsuit and both have ai control they
both will give you a trait)
also ai movement doesnt have any checks currently, i think it makes
sense that it would require your boots to be out so that the ai has
something to move
fix stuff change break boom wack

* Automatic changelog for PR #87726 [ci skip]

* Fixes brains turning invisible after being washed instead of being smooth (#87898)

* Automatic changelog for PR #87898 [ci skip]

* Fix flap emote runtimes (#87789)

Wingless creatures don't cause runtimes when they flap their imaginery
wings

Runtimes bad

:cl:
fix: Fixes a runtime when wingless creature flaps their wings
/:cl:

* Automatic changelog for PR #87789 [ci skip]

* [NO GBP] Syndicate Biodome Fixes (#87792)

Fixed cheesing by monkeyification by changing the gorillas factions to
hostile. Tweaked the loot to be consistent and nerfed slightly (Makarovs
instead of APS)

Also changed one of the observation cells to a cytology room with a
clown glutton

![image](https://github.com/user-attachments/assets/2b3f5ea0-75ea-42f1-98f7-50b7ebd60b04)

![image](https://github.com/user-attachments/assets/9d700be2-7108-4d7a-90f9-7a8f19737879)

It fixes stuff and prevents cheese.

:cl:

fix: Syndicate Biodome fixes

/:cl:

* Automatic changelog for PR #87792 [ci skip]

* vampires are a human subtype & have stomachs/lungs (#87622)

Vampires have stomachs and lungs.
They still don't have hunger.

Vampires are a human subtype.

Vamp bloodtype from "U"nknown to "V"ampire

For some stupid reason vampires lacked stomachs. Vampires drinking wine
is a classic trope that currently results in vomit magically appearing
below you.

Evidence of wine:

![ielbiv4shad81](https://github.com/user-attachments/assets/ef39c522-282d-4763-8802-a6fb180aafb2)

Vampires are a human subtype too like felinids because this resulted in
dumb bugs like no screaming sound.

Vamp bloodtype from "U"nknown to "V"ampire

I mean if we haev these guys on halloween. We probably know their blood
right.

:cl:
fix: vampires are a human subtype & have stomachs/lungs
/:cl:

---------

Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #87622 [ci skip]

* Modsuits no longer horrifically screech when taken off (#88326)

Closes #87979
***FSZZHHHH***

:cl:
sound: Modsuits no longer horrifically screech when taken off
/:cl:

* Automatic changelog for PR #88326 [ci skip]

* Modular updates

---------

Co-authored-by: SyncIt21 <[email protected]>
Co-authored-by: Ghom <[email protected]>

Co-authored-by: MrMelbert <[email protected]>

1

Co-Authored-By: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-Authored-By: necromanceranne <[email protected]>
Co-Authored-By: SyncIt21 <[email protected]>
Co-Authored-By: Ghom <[email protected]>
Co-Authored-By: _0Steven <[email protected]>
Co-Authored-By: MrMelbert <[email protected]>
Co-Authored-By: SmArtKar <[email protected]>
Co-Authored-By: Fikou <[email protected]>
Co-Authored-By: Alexis <[email protected]>
Co-Authored-By: larentoun <[email protected]>
Co-Authored-By: Koi <[email protected]>
Co-Authored-By: carlarctg <[email protected]>
  • Loading branch information
13 people authored and Iajret committed Dec 19, 2024
1 parent d7a4116 commit d052234
Show file tree
Hide file tree
Showing 753 changed files with 4,675 additions and 4,138 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@
pixel_y = 4
},
/obj/item/bodypart/chest,
/obj/item/organ/internal/heart,
/obj/item/organ/heart,
/obj/item/multitool,
/turf/open/floor/iron/freezer,
/area/ruin/powered)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@
/turf/open/misc/ice/icemoon,
/area/icemoon/underground/explored)
"sp" = (
/obj/item/organ/internal/monster_core/regenerative_core/legion{
/obj/item/organ/monster_core/regenerative_core/legion{
time_to_decay = 0;
pixel_x = 11;
pixel_y = 4;
Expand Down Expand Up @@ -273,7 +273,7 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"JP" = (
/obj/item/organ/internal/monster_core/regenerative_core/legion{
/obj/item/organ/monster_core/regenerative_core/legion{
time_to_decay = 0;
pixel_x = -12;
pixel_y = -4;
Expand Down Expand Up @@ -365,7 +365,7 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"VT" = (
/obj/item/organ/internal/monster_core/regenerative_core/legion{
/obj/item/organ/monster_core/regenerative_core/legion{
time_to_decay = 0;
pixel_x = 4;
pixel_y = 3;
Expand Down
Loading

0 comments on commit d052234

Please sign in to comment.