From d0522349341a2a713986c33db889112cbbafb779 Mon Sep 17 00:00:00 2001 From: FlufflesTheDog Date: Sun, 15 Dec 2024 05:15:14 -0700 Subject: [PATCH] [MIRROR] The death or internal/external organ pathing (ft. fixed fox 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).
Spoiler warning ![CES8b4XWEAAIakb](https://github.com/user-attachments/assets/8baaa012-8048-419f-b936-2dc6621db3c2)
: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 <42542238+Ghommie@users.noreply.github.com> * 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 <42542238+Ghommie@users.noreply.github.com> * 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 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> 1 Co-Authored-By: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-Authored-By: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Co-Authored-By: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> Co-Authored-By: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-Authored-By: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-Authored-By: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-Authored-By: Fikou <23585223+Fikou@users.noreply.github.com> Co-Authored-By: Alexis Co-Authored-By: larentoun <31931237+larentoun@users.noreply.github.com> Co-Authored-By: Koi <168238458+GremlinSeeker@users.noreply.github.com> Co-Authored-By: carlarctg <53100513+carlarctg@users.noreply.github.com> --- .../icemoon_underground_abandoned_village.dmm | 2 +- .../icemoon_underground_mining_site.dmm | 6 +- .../icemoon_underground_syndidome.dmm | 241 ++++++++++-------- .../lavaland_surface_elephant_graveyard.dmm | 16 +- .../RandomRuins/SpaceRuins/caravanambush.dmm | 6 +- .../SpaceRuins/dangerous_research.dmm | 16 +- .../RandomRuins/SpaceRuins/garbagetruck1.dmm | 6 +- .../RandomRuins/SpaceRuins/garbagetruck2.dmm | 18 +- .../RandomRuins/SpaceRuins/garbagetruck3.dmm | 2 +- .../SpaceRuins/hauntedtradingpost.dmm | 2 +- _maps/RandomRuins/SpaceRuins/medieval1.dmm | 6 +- .../SpaceRuins/mrow_thats_right.dmm | 28 +- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 2 +- _maps/RandomRuins/SpaceRuins/the_outlet.dmm | 14 +- _maps/RandomZLevels/caves.dmm | 6 +- _maps/RandomZLevels/mothership_astrum.dmm | 44 ++-- _maps/deathmatch/sunrise.dmm | 2 +- .../map_files/Basketball/lusty_xenomorphs.dmm | 4 +- _maps/map_files/Birdshot/birdshot.dmm | 62 ++--- .../map_files/IceBoxStation/IceBoxStation.dmm | 4 +- _maps/map_files/MetaStation/MetaStation.dmm | 76 +++--- _maps/map_files/NSVBlueshift/Blueshift.dmm | 50 ++-- _maps/map_files/Ouroboros/Ouroboros.dmm | 4 +- .../SerenityStation/SerenityStation.dmm | 2 +- _maps/map_files/VoidRaptor/VoidRaptor.dmm | 12 +- _maps/map_files/debug/runtimestation.dmm | 6 +- .../barcargoupper_cave_2.dmm | 2 +- _maps/map_files/wawastation/wawastation.dmm | 12 +- _maps/shuttles/emergency_birdshot.dmm | 4 +- _maps/shuttles/emergency_zeta.dmm | 4 +- _maps/shuttles/ruin_cyborg_mothership.dmm | 2 +- _maps/shuttles/whiteship_kilo.dmm | 2 +- _maps/templates/lazy_templates/ninja_den.dmm | 4 +- _maps/virtual_domains/abductor_ship.dmm | 6 +- code/__DEFINES/colors.dm | 6 + code/__DEFINES/dcs/signals/signals_mod.dm | 6 +- code/__DEFINES/dcs/signals/signals_object.dm | 4 +- code/__DEFINES/inventory.dm | 2 +- code/__DEFINES/is_helpers.dm | 6 +- code/__DEFINES/reagents.dm | 4 +- code/__DEFINES/research/anomalies.dm | 40 +-- code/__DEFINES/surgery.dm | 4 +- code/__DEFINES/traits/declarations.dm | 2 +- code/__DEFINES/traits/sources.dm | 2 +- code/__DEFINES/~nova_defines/signals.dm | 2 +- code/__HELPERS/honkerblast.dm | 6 +- code/__HELPERS/mobs.dm | 2 +- code/_globalvars/lists/quirks.dm | 4 +- code/_globalvars/phobias.dm | 16 +- code/_globalvars/traits/_traits.dm | 4 +- code/_globalvars/traits/admin_tooling.dm | 4 +- code/_onclick/hud/alert.dm | 2 +- code/_onclick/hud/human.dm | 2 +- .../dynamic/dynamic_rulesets_midround.dm | 2 +- code/datums/actions/items/toggles.dm | 2 +- code/datums/ai/monkey/monkey_controller.dm | 4 +- .../mutant_bodypart_overlay.dm | 16 +- code/datums/brain_damage/brain_trauma.dm | 2 +- code/datums/brain_damage/split_personality.dm | 2 +- .../components/crafting/entertainment.dm | 2 +- code/datums/components/crafting/equipment.dm | 2 +- .../components/crafting/melee_weapon.dm | 10 +- code/datums/components/crafting/robot.dm | 2 +- code/datums/components/crafting/tailoring.dm | 6 +- code/datums/components/cult_ritual_item.dm | 2 +- code/datums/components/food/edible.dm | 16 +- code/datums/components/ghostrole_on_revive.dm | 12 +- code/datums/components/heart_eater.dm | 8 +- code/datums/components/ling_decoy_brain.dm | 8 +- code/datums/components/manual_blinking.dm | 10 +- code/datums/components/manual_breathing.dm | 10 +- code/datums/components/manual_heart.dm | 10 +- code/datums/components/phylactery.dm | 4 +- code/datums/components/riding/riding_mob.dm | 2 +- code/datums/components/sign_language.dm | 10 +- code/datums/components/squeak.dm | 2 +- code/datums/components/supermatter_crystal.dm | 2 +- code/datums/components/tackle.dm | 12 +- code/datums/components/vision_hurting.dm | 2 +- .../diseases/advance/symptoms/deafness.dm | 2 +- .../diseases/advance/symptoms/sensory.dm | 4 +- .../diseases/advance/symptoms/vision.dm | 2 +- code/datums/diseases/chronic_illness.dm | 2 +- code/datums/diseases/gastrolisis.dm | 16 +- code/datums/diseases/parasitic_infection.dm | 2 +- code/datums/dna.dm | 2 +- code/datums/elements/climbable.dm | 12 + code/datums/elements/corrupted_organ.dm | 4 +- code/datums/elements/cult_eyes.dm | 17 +- code/datums/elements/earhealing.dm | 2 +- code/datums/elements/eyestab.dm | 2 +- code/datums/elements/frozen.dm | 12 +- code/datums/elements/kneejerk.dm | 2 +- code/datums/instability_meltdown.dm | 5 +- code/datums/martial/boxing.dm | 2 +- code/datums/mutations/body.dm | 6 +- code/datums/mutations/tongue_spike.dm | 2 +- code/datums/quirks/negative_quirks/addict.dm | 12 +- .../quirks/negative_quirks/photophobia.dm | 8 +- .../negative_quirks/prosthetic_organ.dm | 8 +- .../quirks/negative_quirks/scarred_eye.dm | 4 +- code/datums/quirks/negative_quirks/tin_man.dm | 8 +- .../quirks/neutral_quirks/deviant_tastes.dm | 4 +- code/datums/quirks/neutral_quirks/gamer.dm | 4 +- .../quirks/neutral_quirks/heretochromatic.dm | 5 +- .../quirks/neutral_quirks/pineapple_hater.dm | 4 +- .../quirks/neutral_quirks/pineapple_liker.dm | 4 +- .../quirks/positive_quirks/chip_connector.dm | 2 +- code/datums/quirks/positive_quirks/chipped.dm | 4 +- .../datums/quirks/positive_quirks/friendly.dm | 4 +- code/datums/saymode.dm | 2 +- code/datums/station_traits/positive_traits.dm | 96 +++---- code/datums/status_effects/debuffs/drunk.dm | 2 +- code/datums/status_effects/drug_effects.dm | 12 +- code/datums/status_effects/neutral.dm | 2 +- code/datums/wounds/cranial_fissure.dm | 8 +- code/datums/wounds/pierce.dm | 4 +- code/game/gamemodes/objective.dm | 2 +- .../machinery/dna_infuser/dna_infusion.dm | 2 +- .../infuser_tier_one_entries.dm | 46 ++-- .../infuser_tier_two_entries.dm | 6 +- .../infuser_tier_zero_entries.dm | 36 +-- .../dna_infuser/organ_sets/carp_organs.dm | 36 +-- .../dna_infuser/organ_sets/fish_organs.dm | 66 ++--- .../dna_infuser/organ_sets/fly_organs.dm | 42 +-- .../dna_infuser/organ_sets/fox_organs.dm | 4 +- .../dna_infuser/organ_sets/goliath_organs.dm | 20 +- .../dna_infuser/organ_sets/gondola_organs.dm | 30 +-- .../dna_infuser/organ_sets/rat_organs.dm | 32 +-- .../dna_infuser/organ_sets/roach_organs.dm | 38 +-- code/game/machinery/dna_scanner.dm | 2 +- code/game/machinery/medical_kiosk.dm | 2 +- code/game/machinery/recycler.dm | 2 +- .../fluid_spread/effects_smoke.dm | 2 +- .../effects/spawners/random/medical.dm | 62 ++--- code/game/objects/items/airlock_painter.dm | 2 +- code/game/objects/items/body_egg.dm | 22 +- code/game/objects/items/choice_beacon.dm | 12 +- code/game/objects/items/cigarettes.dm | 8 +- code/game/objects/items/climbingrope.dm | 3 +- code/game/objects/items/defib.dm | 6 +- code/game/objects/items/devices/flashlight.dm | 6 +- .../items/devices/scanners/health_analyzer.dm | 4 +- code/game/objects/items/drug_items.dm | 2 + code/game/objects/items/dualsaber.dm | 2 +- code/game/objects/items/dyespray.dm | 75 +++++- code/game/objects/items/food/donuts.dm | 2 +- code/game/objects/items/food/misc.dm | 2 +- code/game/objects/items/hand_items.dm | 2 +- code/game/objects/items/melee/baton.dm | 2 +- code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/robot/robot_parts.dm | 2 +- code/game/objects/items/storage/belt.dm | 4 +- code/game/objects/structures/aliens.dm | 4 +- .../structures/beds_chairs/alien_nest.dm | 6 +- .../objects/structures/gym/punching_bag.dm | 2 +- .../objects/structures/gym/weight_machine.dm | 2 +- .../structures/icemoon/cave_entrance.dm | 2 +- code/game/objects/structures/ladders.dm | 9 +- .../objects/structures/lavaland/gulag_vent.dm | 2 +- .../objects/structures/petrified_statue.dm | 2 +- .../objects/structures/signs/sign_eyechart.dm | 2 +- code/game/objects/structures/tables_racks.dm | 2 +- code/game/turfs/turf.dm | 2 +- code/modules/admin/verbs/adminfun.dm | 4 +- code/modules/admin/verbs/secrets.dm | 4 +- code/modules/admin/verbs/selectequipment.dm | 2 +- code/modules/antagonists/abductor/abductor.dm | 2 +- .../abductor/equipment/abduction_surgery.dm | 6 +- .../abductor/equipment/gear/abductor_items.dm | 4 +- .../antagonists/abductor/equipment/gland.dm | 26 +- .../abductor/equipment/glands/access.dm | 4 +- .../abductor/equipment/glands/blood.dm | 4 +- .../abductor/equipment/glands/chem.dm | 6 +- .../abductor/equipment/glands/egg.dm | 4 +- .../abductor/equipment/glands/electric.dm | 10 +- .../abductor/equipment/glands/heal.dm | 62 ++--- .../abductor/equipment/glands/mindshock.dm | 8 +- .../abductor/equipment/glands/plasma.dm | 6 +- .../abductor/equipment/glands/quantum.dm | 10 +- .../abductor/equipment/glands/slime.dm | 8 +- .../abductor/equipment/glands/spider.dm | 4 +- .../abductor/equipment/glands/transform.dm | 4 +- .../abductor/equipment/glands/trauma.dm | 4 +- .../abductor/equipment/glands/ventcrawl.dm | 4 +- .../abductor/equipment/glands/viral.dm | 6 +- .../abductor/equipment/orderable_gear.dm | 2 +- .../abductor/machinery/dispenser.dm | 4 +- .../abductor/machinery/experiment.dm | 4 +- .../antagonists/changeling/changeling.dm | 2 +- .../antagonists/changeling/headslug_eggs.dm | 10 +- .../changeling/powers/augmented_eyesight.dm | 10 +- .../changeling/powers/darkness_adaptation.dm | 8 +- .../antagonists/changeling/powers/headcrab.dm | 2 +- .../antagonists/changeling/powers/mmi_talk.dm | 2 +- .../changeling/powers/mutations.dm | 2 +- .../antagonists/changeling/powers/panacea.dm | 8 +- .../antagonists/changeling/powers/shriek.dm | 2 +- .../changeling/powers/tiny_prick.dm | 2 +- code/modules/antagonists/clown_ops/clownop.dm | 4 +- code/modules/antagonists/cult/runes.dm | 2 +- .../antagonists/fugitive/fugitive_outfits.dm | 2 +- .../antagonists/heretic/heretic_knowledge.dm | 18 +- .../heretic/items/corrupted_organs.dm | 58 ++--- .../heretic/items/eldritch_painting.dm | 16 +- .../antagonists/heretic/knowledge/ash_lore.dm | 2 +- .../heretic/knowledge/flesh_lore.dm | 8 +- .../heretic/knowledge/moon_lore.dm | 2 +- .../sacrifice_knowledge/sacrifice_curse.dm | 6 +- .../sacrifice_knowledge.dm | 18 +- .../heretic/knowledge/side_ash_moon.dm | 2 +- .../heretic/knowledge/side_cosmos_ash.dm | 2 +- .../heretic/knowledge/side_lock_moon.dm | 6 +- .../heretic/knowledge/side_rust_cosmos.dm | 2 +- .../heretic/knowledge/side_void_blade.dm | 2 +- .../heretic/knowledge/starting_lore.dm | 10 +- .../heretic/knowledge/void_lore.dm | 2 +- .../antagonists/heretic/magic/moon_smile.dm | 2 +- .../antagonists/nightmare/nightmare_organs.dm | 22 +- .../nightmare/nightmare_species.dm | 4 +- code/modules/antagonists/obsessed/obsessed.dm | 2 +- .../antagonists/revolution/revolution.dm | 4 +- code/modules/antagonists/spy/spy_bounty.dm | 8 +- .../traitor/objectives/eyesnatching.dm | 10 +- .../voidwalker/voidwalker_organs.dm | 12 +- .../voidwalker/voidwalker_species.dm | 4 +- .../voidwalker/voidwalker_void_eater.dm | 2 +- .../antagonists/wizard/equipment/artefact.dm | 2 +- code/modules/assembly/flash.dm | 4 +- code/modules/awaymissions/pamphlet.dm | 2 +- .../bitrunning/server/obj_generation.dm | 2 +- code/modules/cargo/bounties/medical.dm | 61 ++--- code/modules/cargo/bounties/special.dm | 12 +- code/modules/cargo/exports/lavaland.dm | 6 +- code/modules/cargo/exports/organs.dm | 20 +- code/modules/cargo/packs/medical.dm | 2 +- code/modules/client/preferences/species.dm | 2 +- .../preferences/species_features/basic.dm | 4 +- .../preferences/species_features/felinid.dm | 4 +- .../preferences/species_features/lizard.dm | 4 +- .../preferences/species_features/monkey.dm | 2 +- .../species_features/mushperson.dm | 2 +- code/modules/clothing/glasses/_glasses.dm | 4 +- code/modules/clothing/gloves/special.dm | 2 +- code/modules/clothing/head/jobs.dm | 6 +- code/modules/clothing/head/tinfoilhat.dm | 2 +- code/modules/clothing/neck/_neck.dm | 8 +- code/modules/deathmatch/deathmatch_lobby.dm | 2 +- code/modules/events/brain_trauma.dm | 2 +- code/modules/events/creep_awakening.dm | 2 +- code/modules/events/holiday/halloween.dm | 2 +- .../experisci/experiment/experiments.dm | 2 +- code/modules/experisci/handheld_scanner.dm | 2 +- .../exploration_events/trader.dm | 2 +- .../food_and_drinks/recipes/soup_mixtures.dm | 2 +- .../recipes/tablecraft/recipes_bread.dm | 8 +- .../recipes/tablecraft/recipes_burger.dm | 8 +- .../recipes/tablecraft/recipes_cake.dm | 6 +- .../recipes/tablecraft/recipes_drink.dm | 4 +- .../recipes/tablecraft/recipes_lizard.dm | 20 +- .../recipes/tablecraft/recipes_meat.dm | 2 +- .../recipes/tablecraft/recipes_mexican.dm | 2 +- .../recipes/tablecraft/recipes_misc.dm | 4 +- .../recipes/tablecraft/recipes_pastry.dm | 2 +- code/modules/hydroponics/grown/banana.dm | 2 +- code/modules/jobs/job_types/_job.dm | 2 +- .../job_types/assistant/gimmick_assistants.dm | 2 +- .../job_types/chaplain/chaplain_nullrod.dm | 2 +- .../chaplain/chaplain_vorpal_scythe.dm | 6 +- .../jobs/job_types/station_trait/human_ai.dm | 2 +- .../library/skill_learning/skill_station.dm | 6 +- .../library/skill_learning/skillchip.dm | 10 +- code/modules/lost_crew/damages/decay.dm | 2 +- code/modules/lost_crew/lost_crew_manager.dm | 6 +- .../ruins/lavalandruin_code/syndicate_base.dm | 14 +- .../mapfluff/ruins/spaceruin_code/meateor.dm | 42 +-- code/modules/meteors/meteor_types.dm | 8 +- .../mining/boulder_processing/boulder.dm | 7 +- .../equipment/monster_organs/brimdust_sac.dm | 10 +- .../equipment/monster_organs/monster_organ.dm | 36 +-- .../monster_organs/regenerative_core.dm | 14 +- .../equipment/monster_organs/rush_gland.dm | 12 +- .../mining/lavaland/necropolis_chests.dm | 6 +- code/modules/mining/lavaland/tendril_loot.dm | 14 +- code/modules/mob/dead/observer/observer.dm | 4 +- .../mob/living/basic/bots/honkbots/honkbot.dm | 2 +- .../basic/farm_animals/gorilla/gorilla.dm | 13 + .../basic/heretic/maid_in_the_mirror.dm | 2 +- .../mob/living/basic/heretic/raw_prophet.dm | 2 +- .../basic/lavaland/brimdemon/brimdemon.dm | 2 +- .../basic/lavaland/hivelord/hivelord.dm | 2 +- .../living/basic/lavaland/legion/legion.dm | 6 +- .../basic/lavaland/legion/legion_tumour.dm | 24 +- .../basic/lavaland/lobstrosity/lobstrosity.dm | 4 +- code/modules/mob/living/basic/pets/cat/cat.dm | 8 +- .../mob/living/basic/pets/cat/keeki.dm | 6 +- .../mob/living/basic/pets/dog/dog_subtypes.dm | 4 +- .../mob/living/basic/pets/penguin/penguin.dm | 2 +- .../living/basic/space_fauna/bear/_bear.dm | 4 +- .../living/basic/space_fauna/cat_surgeon.dm | 2 +- .../basic/space_fauna/changeling/headslug.dm | 2 +- .../basic/space_fauna/demon/demon_items.dm | 12 +- .../basic/space_fauna/demon/demon_subtypes.dm | 2 +- .../basic/space_fauna/eyeball/_eyeball.dm | 4 +- .../eyeball/eyeball_ai_behavior.dm | 4 +- .../space_fauna/eyeball/eyeball_ai_subtree.dm | 2 +- code/modules/mob/living/brain/MMI.dm | 18 +- code/modules/mob/living/brain/brain.dm | 14 +- .../mob/living/brain/brain_cybernetic.dm | 8 +- code/modules/mob/living/brain/brain_item.dm | 101 ++++---- code/modules/mob/living/brain/death.dm | 2 +- code/modules/mob/living/brain/life.dm | 4 +- code/modules/mob/living/brain/skillchip.dm | 20 +- .../mob/living/carbon/alien/adult/adult.dm | 4 +- .../living/carbon/alien/adult/alien_powers.dm | 6 +- .../living/carbon/alien/adult/caste/drone.dm | 8 +- .../living/carbon/alien/adult/caste/hunter.dm | 2 +- .../carbon/alien/adult/caste/praetorian.dm | 10 +- .../carbon/alien/adult/caste/sentinel.dm | 6 +- .../mob/living/carbon/alien/adult/death.dm | 2 +- .../mob/living/carbon/alien/adult/queen.dm | 10 +- code/modules/mob/living/carbon/alien/alien.dm | 18 +- .../mob/living/carbon/alien/alien_defense.dm | 2 +- .../mob/living/carbon/alien/alien_say.dm | 2 +- .../mob/living/carbon/alien/larva/larva.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- .../modules/mob/living/carbon/alien/organs.dm | 68 ++--- .../carbon/alien/special/alien_embryo.dm | 22 +- .../living/carbon/alien/special/facehugger.dm | 10 +- code/modules/mob/living/carbon/carbon.dm | 30 ++- .../mob/living/carbon/carbon_context.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 18 +- code/modules/mob/living/carbon/carbon_say.dm | 2 +- code/modules/mob/living/carbon/death.dm | 6 +- code/modules/mob/living/carbon/examine.dm | 8 +- .../mob/living/carbon/human/_species.dm | 32 +-- code/modules/mob/living/carbon/human/death.dm | 4 +- code/modules/mob/living/carbon/human/emote.dm | 12 +- code/modules/mob/living/carbon/human/human.dm | 62 ++++- .../mob/living/carbon/human/human_defense.dm | 4 +- .../mob/living/carbon/human/human_defines.dm | 5 +- .../mob/living/carbon/human/human_helpers.dm | 2 +- .../mob/living/carbon/human/human_say.dm | 2 +- .../mob/living/carbon/human/human_suicide.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 2 +- .../carbon/human/species_types/abductors.dm | 4 +- .../carbon/human/species_types/android.dm | 8 +- .../carbon/human/species_types/dullahan.dm | 28 +- .../carbon/human/species_types/ethereal.dm | 12 +- .../carbon/human/species_types/felinid.dm | 44 ++-- .../carbon/human/species_types/flypeople.dm | 16 +- .../carbon/human/species_types/golems.dm | 14 +- .../carbon/human/species_types/jellypeople.dm | 10 +- .../human/species_types/lizardpeople.dm | 30 +-- .../carbon/human/species_types/monkeys.dm | 18 +- .../carbon/human/species_types/mothmen.dm | 6 +- .../carbon/human/species_types/mushpeople.dm | 15 +- .../carbon/human/species_types/plasmamen.dm | 8 +- .../carbon/human/species_types/podpeople.dm | 4 +- .../human/species_types/shadowpeople.dm | 10 +- .../carbon/human/species_types/skeletons.dm | 6 +- .../carbon/human/species_types/snail.dm | 4 +- .../carbon/human/species_types/vampire.dm | 48 ++-- .../carbon/human/species_types/zombies.dm | 9 +- code/modules/mob/living/carbon/life.dm | 26 +- code/modules/mob/living/carbon/skillchip.dm | 8 +- .../modules/mob/living/carbon/status_procs.dm | 12 +- code/modules/mob/living/damage_procs.dm | 4 +- code/modules/mob/living/emote.dm | 35 +-- code/modules/mob/living/living.dm | 6 +- code/modules/mob/living/living_defense.dm | 6 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 2 +- .../hostile/megafauna/bubblegum.dm | 2 +- .../hostile/mining_mobs/elites/elite.dm | 4 +- code/modules/mob/living/taste.dm | 77 ++++-- .../mob_spawn/corpses/mining_corpses.dm | 2 +- .../mob_spawn/ghost_roles/golem_roles.dm | 2 +- code/modules/mod/mod_activation.dm | 71 +++--- code/modules/mod/mod_ai.dm | 29 ++- code/modules/mod/mod_construction.dm | 15 +- code/modules/mod/mod_control.dm | 77 +++--- code/modules/mod/mod_core.dm | 97 +++++-- code/modules/mod/mod_link.dm | 6 +- code/modules/mod/mod_paint.dm | 4 +- code/modules/mod/mod_ui.dm | 32 ++- code/modules/mod/modules/_module.dm | 4 +- code/modules/mod/modules/module_pathfinder.dm | 8 +- code/modules/mod/modules/modules_antag.dm | 61 +++-- .../mod/modules/modules_engineering.dm | 18 +- code/modules/mod/modules/modules_general.dm | 18 +- code/modules/mod/modules/modules_maint.dm | 8 +- code/modules/mod/modules/modules_medical.dm | 8 +- code/modules/mod/modules/modules_ninja.dm | 12 +- code/modules/mod/modules/modules_science.dm | 8 +- code/modules/mod/modules/modules_security.dm | 18 +- code/modules/mod/modules/modules_service.dm | 6 +- code/modules/mod/modules/modules_supply.dm | 14 +- code/modules/mod/modules/modules_timeline.dm | 4 +- code/modules/mod/modules/modules_visor.dm | 4 +- code/modules/paperwork/paperplane.dm | 4 +- code/modules/power/apc/apc_attack.dm | 8 +- code/modules/power/lighting/light.dm | 6 +- code/modules/power/power_store.dm | 6 +- .../cascade_delam_objects.dm | 2 +- .../supermatter/supermatter_hit_procs.dm | 2 +- code/modules/power/tesla/energy_ball.dm | 2 +- code/modules/projectiles/guns/ballistic.dm | 2 +- .../reagents/chemistry/holder/holder.dm | 4 +- .../reagents/chemistry/holder/mob_life.dm | 4 +- .../reagents/chemistry/holder/properties.dm | 33 +-- .../reagents/cat2_medicine_reagents.dm | 4 +- .../reagents/drinks/alcohol_reagents.dm | 24 +- .../reagents/drinks/drink_reagents.dm | 10 +- .../chemistry/reagents/drug_reagents.dm | 4 +- .../chemistry/reagents/food_reagents.dm | 29 ++- .../chemistry/reagents/impure_reagents.dm | 2 +- .../impure_medicine_reagents.dm | 40 +-- .../impure_reagents/impure_toxin_reagents.dm | 4 +- .../chemistry/reagents/medicine_reagents.dm | 36 +-- .../chemistry/reagents/other_reagents.dm | 27 +- .../chemistry/reagents/toxin_reagents.dm | 16 +- .../chemistry/reagents/unique/eigenstasium.dm | 2 +- code/modules/reagents/chemistry/recipes.dm | 4 +- code/modules/reagents/chemistry/taste.dm | 77 ++++++ code/modules/reagents/reagent_containers.dm | 2 +- .../reagents/reagent_containers/cups/_cup.dm | 8 +- .../reagent_containers/cups/glassbottle.dm | 2 +- .../reagents/withdrawal/generic_addictions.dm | 10 +- .../religion/burdened/burdened_trauma.dm | 4 +- code/modules/religion/burdened/psyker.dm | 14 +- code/modules/religion/religion_sects.dm | 2 +- code/modules/religion/rites.dm | 32 +-- .../research/designs/limbgrower_designs.dm | 42 +-- .../research/designs/medical_designs.dm | 86 +++---- .../spells/spell_types/self/lichdom.dm | 2 +- .../spell_types/self/splattercasting_spell.dm | 2 +- code/modules/station_goals/vault_mutation.dm | 12 +- .../advanced/bioware/cortex_folding.dm | 2 +- .../advanced/bioware/cortex_imprint.dm | 2 +- code/modules/surgery/advanced/brainwashing.dm | 2 +- code/modules/surgery/advanced/lobotomy.dm | 4 +- .../surgery/advanced/necrotic_revival.dm | 4 +- code/modules/surgery/advanced/pacification.dm | 2 +- .../surgery/advanced/wingreconstruction.dm | 12 +- code/modules/surgery/bodyparts/head.dm | 12 +- .../surgery/bodyparts/head_hair_and_lips.dm | 4 +- code/modules/surgery/bodyparts/parts.dm | 4 +- .../surgery/bodyparts/robot_bodyparts.dm | 2 +- .../species_parts/lizard_bodyparts.dm | 2 +- .../bodyparts/species_parts/misc_bodyparts.dm | 6 +- .../bodyparts/species_parts/moth_bodyparts.dm | 2 +- code/modules/surgery/coronary_bypass.dm | 4 +- code/modules/surgery/ear_surgery.dm | 4 +- code/modules/surgery/eye_surgery.dm | 4 +- code/modules/surgery/gastrectomy.dm | 6 +- code/modules/surgery/hepatectomy.dm | 6 +- code/modules/surgery/lobectomy.dm | 6 +- code/modules/surgery/organ_manipulation.dm | 4 +- code/modules/surgery/organs/_organ.dm | 12 +- code/modules/surgery/organs/autosurgeon.dm | 20 +- .../surgery/organs/external/_visual_organs.dm | 38 ++- .../modules/surgery/organs/external/spines.dm | 18 +- code/modules/surgery/organs/external/tails.dm | 41 +-- .../organs/external/wings/functional_wings.dm | 48 ++-- .../organs/external/wings/moth_wings.dm | 24 +- .../surgery/organs/external/wings/wings.dm | 8 +- .../organs/internal/_internal_organ.dm | 20 +- .../organs/internal/appendix/_appendix.dm | 22 +- .../internal/appendix/appendix_golem.dm | 12 +- .../organs/internal/cyberimp/augments_arms.dm | 88 +++---- .../internal/cyberimp/augments_chest.dm | 92 ++++--- .../organs/internal/cyberimp/augments_eyes.dm | 18 +- .../internal/cyberimp/augments_internal.dm | 66 ++--- .../surgery/organs/internal/ears/_ears.dm | 49 ++-- .../surgery/organs/internal/eyes/_eyes.dm | 185 ++++++-------- .../surgery/organs/internal/heart/_heart.dm | 58 ++--- .../organs/internal/heart/heart_anomalock.dm | 32 +-- .../organs/internal/heart/heart_ethereal.dm | 30 +-- .../surgery/organs/internal/liver/_liver.dm | 44 ++-- .../organs/internal/liver/liver_golem.dm | 6 +- .../organs/internal/liver/liver_plasmaman.dm | 4 +- .../organs/internal/liver/liver_skeleton.dm | 4 +- .../surgery/organs/internal/lungs/_lungs.dm | 116 ++++----- .../organs/internal/stomach/_stomach.dm | 38 +-- .../internal/stomach/stomach_ethereal.dm | 24 +- .../organs/internal/stomach/stomach_golem.dm | 12 +- .../surgery/organs/internal/tongue/_tongue.dm | 108 ++++---- .../internal/vocal_cords/_vocal_cords.dm | 24 +- code/modules/surgery/revival.dm | 2 +- code/modules/surgery/sleeper_protocol.dm | 2 +- code/modules/surgery/stomachpump.dm | 2 +- code/modules/surgery/tools.dm | 2 +- code/modules/unit_tests/blindness.dm | 2 +- code/modules/unit_tests/fish_unit_tests.dm | 2 +- code/modules/unit_tests/full_heal.dm | 6 +- code/modules/unit_tests/ling_decap.dm | 10 +- code/modules/unit_tests/liver.dm | 4 +- code/modules/unit_tests/lungs.dm | 22 +- code/modules/unit_tests/metabolizing.dm | 2 +- code/modules/unit_tests/organs.dm | 26 +- code/modules/unit_tests/reagent_mob_expose.dm | 7 + .../screenshot_high_luminosity_eyes.dm | 4 +- ...umanoids__datum_species_human_vampire.png} | Bin .../unit_tests/species_change_organs.dm | 6 +- code/modules/unit_tests/stomach.dm | 2 +- code/modules/unit_tests/tail_wag.dm | 2 +- code/modules/unit_tests/unit_test.dm | 9 +- .../mecha/equipment/weapons/weapons.dm | 2 +- code/modules/vending/wardrobes.dm | 2 +- .../components/action/equpiment_action.dm | 2 +- .../wiremod/components/atom/remotecam.dm | 8 +- .../components/bci/hud/counter_overlay.dm | 6 +- .../components/bci/hud/object_overlay.dm | 6 +- .../components/bci/hud/target_intercept.dm | 6 +- .../components/bci/install_detector.dm | 6 +- .../components/bci/reagent_injector.dm | 6 +- .../components/bci/thought_listener.dm | 6 +- code/modules/wiremod/components/bci/vox.dm | 6 +- .../wiremod/shell/brain_computer_interface.dm | 26 +- code/modules/wiremod/shell/shell_items.dm | 2 +- code/modules/zombie/items.dm | 2 +- code/modules/zombie/organs.dm | 26 +- html/changelogs/AutoChangeLog-pr-87306.yml | 5 + html/changelogs/AutoChangeLog-pr-87329.yml | 16 ++ html/changelogs/AutoChangeLog-pr-87434.yml | 7 + html/changelogs/AutoChangeLog-pr-87622.yml | 4 + html/changelogs/AutoChangeLog-pr-87726.yml | 10 + html/changelogs/AutoChangeLog-pr-87782.yml | 4 + html/changelogs/AutoChangeLog-pr-87789.yml | 4 + html/changelogs/AutoChangeLog-pr-87792.yml | 4 + html/changelogs/AutoChangeLog-pr-87869.yml | 4 + html/changelogs/AutoChangeLog-pr-87898.yml | 4 + html/changelogs/AutoChangeLog-pr-88326.yml | 4 + .../code/datums/components/damage_tracker.dm | 16 +- .../quirks/negative_quirks/photophobia.dm | 2 +- .../datums/quirks/neutral_quirks/lungs.dm | 10 +- .../quirks/positive_quirks/night_vision.dm | 2 +- .../master_files/code/datums/traits/good.dm | 4 +- .../code/datums/traits/neutral.dm | 12 +- .../code/modules/client/preferences/brain.dm | 4 +- .../client/preferences/middleware/food.dm | 2 +- .../client/preferences/mutant_parts.dm | 2 +- .../modules/client/preferences_savefile.dm | 46 +++- .../code/modules/jobs/prisoner.dm | 2 +- .../equipment/monster_organs/monster_organ.dm | 2 +- .../mob/dead/new_player/preferences_setup.dm | 4 +- .../code/modules/mob/living/carbon/death.dm | 2 +- .../living/carbon/human/species_type/snail.dm | 4 +- .../mob/living/carbon/human_helpers.dm | 2 +- .../research/designs/limbgrower_designs.dm | 6 +- .../research/designs/medical_designs.dm | 4 +- .../surgery/organs/external/antennae.dm | 6 +- .../organs/external/wings/functional_wings.dm | 2 +- .../surgery/organs/external/wings/wings.dm | 2 +- .../organs/internal/appendix/_appendix.dm | 2 +- .../internal/cyberimp/augments_internal.dm | 2 +- .../code/modules/surgery/organs/tongue.dm | 2 +- .../ashwalkers/code/buildings/ash_tendril.dm | 4 +- .../ashwalkers/code/effects/ash_rituals.dm | 38 +-- .../ashwalkers/code/species/Ashwalkers.dm | 2 +- .../mothership_astrum/spawners.dm | 6 +- .../modules/better_vox/code/vox_species.dm | 6 +- .../modules/bodyparts/code/moth_bodyparts.dm | 2 +- modular_nova/modules/cargo/code/goodies.dm | 4 +- .../code/armament_datums/deforest_medical.dm | 8 +- .../objects/deforest/filled_organ_boxes.dm | 12 +- .../cortical_borer/code/cortical_borer.dm | 14 +- .../code/cortical_borer_abilities.dm | 23 +- .../evolution_things/empowered_egg.dm | 12 +- .../modules/cryosleep/code/cryopod.dm | 2 +- .../datums/components/crafting/recipes.dm | 8 +- .../modules/customization/datums/dna.dm | 7 +- .../modules/client/augment/implants.dm | 52 ++-- .../modules/client/augment/organs.dm | 62 ++--- .../mob/dead/new_player/sprite_accessories.dm | 6 +- .../new_player/sprite_accessories/ears.dm | 4 +- .../new_player/sprite_accessories/fluff.dm | 2 +- .../new_player/sprite_accessories/frills.dm | 2 +- .../new_player/sprite_accessories/genitals.dm | 14 +- .../sprite_accessories/head_accessory.dm | 2 +- .../new_player/sprite_accessories/horns.dm | 2 +- .../dead/new_player/sprite_accessories/ipc.dm | 4 +- .../sprite_accessories/moth_antennae.dm | 2 +- .../sprite_accessories/neck_accessory.dm | 2 +- .../sprite_accessories/skrell_hair.dm | 2 +- .../new_player/sprite_accessories/snout.dm | 26 +- .../new_player/sprite_accessories/spines.dm | 2 +- .../new_player/sprite_accessories/synthliz.dm | 4 +- .../new_player/sprite_accessories/tails.dm | 14 +- .../sprite_accessories/taur_types.dm | 20 +- .../dead/new_player/sprite_accessories/vox.dm | 2 +- .../new_player/sprite_accessories/wings.dm | 4 +- .../new_player/sprite_accessories/xeno.dm | 4 +- .../mod_accessory_handler.dm | 9 +- .../modules/mob/living/carbon/human/human.dm | 2 +- .../mob/living/carbon/human/species.dm | 8 +- .../mob/living/carbon/human/species/akula.dm | 34 +-- .../living/carbon/human/species/aquatic.dm | 4 +- .../mob/living/carbon/human/species/dwarf.dm | 2 +- .../mob/living/carbon/human/species/ghoul.dm | 2 +- .../species/hemophage/_organ_corruption.dm | 4 +- .../species/hemophage/atrophied_lungs.dm | 2 +- .../species/hemophage/corrupted_liver.dm | 4 +- .../species/hemophage/corrupted_stomach.dm | 8 +- .../species/hemophage/corrupted_tongue.dm | 8 +- .../species/hemophage/hemophage_actions.dm | 2 +- .../species/hemophage/hemophage_organs.dm | 16 +- .../species/hemophage/hemophage_species.dm | 8 +- .../hemophage/hemophage_status_effects.dm | 6 +- .../species/hemophage/hemophage_tumor.dm | 20 +- .../species/hemophage/tumor_corruption.dm | 8 +- .../mob/living/carbon/human/species/insect.dm | 2 +- .../mob/living/carbon/human/species/mammal.dm | 4 +- .../carbon/human/species/roundstartslime.dm | 72 +++--- .../mob/living/carbon/human/species/skrell.dm | 28 +- .../living/carbon/human/species/tajaran.dm | 4 +- .../mob/living/carbon/human/species/unathi.dm | 4 +- .../mob/living/carbon/human/species/vox.dm | 6 +- .../living/carbon/human/species/vulpkanin.dm | 4 +- .../mob/living/carbon/human/species/xeno.dm | 26 +- .../chemistry/reagents/alcohol_reagents.dm | 2 +- .../modules/surgery/organs/cap.dm | 4 +- .../modules/surgery/organs/ears.dm | 6 +- .../modules/surgery/organs/eyes.dm | 6 +- .../modules/surgery/organs/fluff.dm | 2 +- .../modules/surgery/organs/frills.dm | 2 +- .../modules/surgery/organs/genitals.dm | 96 +++---- .../modules/surgery/organs/head_accessory.dm | 2 +- .../modules/surgery/organs/horns.dm | 2 +- .../modules/surgery/organs/moth_antennae.dm | 2 +- .../modules/surgery/organs/moth_markings.dm | 2 +- .../modules/surgery/organs/neck_accessory.dm | 2 +- .../modules/surgery/organs/nif.dm | 4 +- .../modules/surgery/organs/organ.dm | 12 +- .../modules/surgery/organs/pod.dm | 2 +- .../modules/surgery/organs/skrell_hair.dm | 2 +- .../modules/surgery/organs/synth_antenna.dm | 2 +- .../modules/surgery/organs/synth_screen.dm | 2 +- .../modules/surgery/organs/tails.dm | 14 +- .../modules/surgery/organs/taur_body.dm | 35 +-- .../modules/surgery/organs/vox.dm | 8 +- .../modules/surgery/organs/wings.dm | 28 +- .../modules/surgery/organs/xenodorsal.dm | 3 +- .../modules/surgery/organs/xenohead.dm | 3 +- .../modules/taur_mechanics/code/human.dm | 4 +- .../taur_mechanics/code/saddle_component.dm | 11 +- .../code/taur_clothing_offset.dm | 4 +- modular_nova/modules/customization/readme.md | 8 +- .../echolocation_quirk/code/echolocation.dm | 4 +- .../modules/emote_panel/code/emote_panel.dm | 2 +- .../code/additionalemotes/turf_emote.dm | 4 +- .../modules/exp_corps/code/clothing.dm | 4 +- .../faction/code/mapping/mapping_helpers.dm | 10 +- .../icemoon_additions/code/icecat_recipes.dm | 6 +- .../modules/implants/code/augments_arms.dm | 46 ++-- .../modules/implants/code/augments_chest.dm | 4 +- .../modules/implants/code/augments_eyes.dm | 10 +- .../modules/implants/code/augments_head.dm | 22 +- .../implants/code/augments_internal.dm | 10 +- .../modules/implants/code/medical_designs.dm | 32 +-- .../code/interaction_datum.dm | 4 +- .../modular_implants/code/misc_devices.dm | 4 +- .../modular_implants/code/nif_actions.dm | 2 +- .../modular_implants/code/nif_implants.dm | 12 +- .../modular_implants/code/nif_persistence.dm | 6 +- .../modules/modular_implants/code/nifs.dm | 54 ++-- .../modular_implants/code/nifs_tgui.dm | 14 +- .../modular_implants/code/nifsoft_catalog.dm | 6 +- .../modules/modular_implants/code/nifsofts.dm | 16 +- .../modular_implants/code/nifsofts/huds.dm | 2 +- .../code/nifsofts/money_sense.dm | 2 +- .../modular_implants/code/nifsofts/scryer.dm | 2 +- .../code/nifsofts/shapeshifter.dm | 2 +- .../code/soulcatcher/handheld_soulcatcher.dm | 2 +- .../code/soulcatcher/soulcatcher_component.dm | 2 +- .../lewd_items/code/lewd_arousal/arousal.dm | 4 +- .../lewd_items/code/lewd_arousal/climax.dm | 8 +- .../lewd_arousal/status_effects/aroused.dm | 2 +- .../lewd_arousal/status_effects/climax.dm | 8 +- .../status_effects/fluid_generation.dm | 6 +- .../lewd_chemistry/reagents/_aphrodisiac.dm | 46 ++-- .../code/lewd_chemistry/reagents/camphor.dm | 6 +- .../code/lewd_chemistry/reagents/crocin.dm | 2 +- .../lewd_chemistry/reagents/incubus_draft.dm | 38 +-- .../lewd_chemistry/reagents/succubus_milk.dm | 2 +- .../code/lewd_clothing/latex_catsuit.dm | 2 +- .../lewd_items/code/lewd_clothing/strapon.dm | 18 +- .../lewd_items/code/lewd_helpers/human.dm | 12 +- .../lewd_items/code/lewd_helpers/organs.dm | 2 +- .../code/lewd_items/_masturbation_item.dm | 4 +- .../lewd_items/code/lewd_items/clamps.dm | 4 +- .../lewd_items/code/lewd_items/dildo.dm | 22 +- .../lewd_items/code/lewd_items/feather.dm | 2 +- .../lewd_items/code/lewd_items/fleshlight.dm | 2 +- .../code/lewd_items/kinky_shocker.dm | 6 +- .../lewd_items/code/lewd_items/magic_wand.dm | 6 +- .../code/lewd_items/torture_candle.dm | 6 +- .../lewd_items/code/lewd_items/vibrator.dm | 6 +- .../lewd_items/code/lewd_items/vibroring.dm | 2 +- .../code/lewd_machinery/milking_machine.dm | 24 +- .../code/lewd_machinery/washing_machine.dm | 4 +- .../lewd_items/code/lewd_organs/_genital.dm | 8 +- .../lewd_items/code/lewd_organs/breasts.dm | 4 +- .../lewd_items/code/lewd_organs/testicles.dm | 4 +- .../lewd_items/code/lewd_organs/vagina.dm | 4 +- .../code/modular_persistence.dm | 18 +- .../modules/modular_vending/code/wardrobes.dm | 2 +- .../moretraitoritems/code/autosurgeon.dm | 38 +-- .../modules/mutants/code/mutant_species.dm | 4 +- .../modules/night_vision/night_vision.dm | 2 +- modular_nova/modules/organs/code/ears.dm | 8 +- modular_nova/modules/organs/code/heart.dm | 12 +- modular_nova/modules/organs/code/liver.dm | 2 +- modular_nova/modules/organs/code/lungs.dm | 10 +- modular_nova/modules/organs/code/stomach.dm | 16 +- modular_nova/modules/organs/code/tongue.dm | 50 ++-- .../modules/oversized/code/oversized_quirk.dm | 4 +- .../modules/primitive_catgirls/code/organs.dm | 8 +- .../primitive_catgirls/code/spawner.dm | 2 +- .../primitive_catgirls/code/species.dm | 6 +- .../modules/resleeving/code/rsd_interface.dm | 4 +- .../code/loadout_implants.dm | 36 +-- .../code/loadout_subtypes.dm | 44 ++-- .../modules/synths/code/bodyparts/brain.dm | 12 +- .../modules/synths/code/bodyparts/ears.dm | 6 +- .../modules/synths/code/bodyparts/eyes.dm | 6 +- .../modules/synths/code/bodyparts/heart.dm | 6 +- .../code/bodyparts/internal_computer/brain.dm | 12 +- .../internal_computer/internal_computer.dm | 12 +- .../modules/synths/code/bodyparts/limbs.dm | 2 +- .../modules/synths/code/bodyparts/liver.dm | 6 +- .../modules/synths/code/bodyparts/lungs.dm | 6 +- .../synths/code/bodyparts/power_cord.dm | 4 +- .../code/bodyparts/silicon_alt_brains.dm | 8 +- .../modules/synths/code/bodyparts/stomach.dm | 12 +- .../modules/synths/code/bodyparts/tongue.dm | 8 +- modular_nova/modules/synths/code/defib.dm | 4 +- .../modules/synths/code/species/synthetic.dm | 30 +-- .../code/surgery/robot_brain_surgery.dm | 2 +- .../code/surgery/robot_heart_surgery.dm | 4 +- .../code/surgery/robot_liver_surgery.dm | 4 +- .../synths/code/surgery/robot_lung_surgery.dm | 4 +- .../code/surgery/robot_stomach_surgery.dm | 4 +- .../modules/taur_mechanics/code/constrict.dm | 4 +- .../taur_mechanics/code/preferences.dm | 2 +- .../taur_mechanics/code/serpentine_taur.dm | 10 +- modular_nova/modules/teshari/code/_teshari.dm | 6 +- .../research/xenoarch/xenoarch_reward.dm | 4 +- .../modules/xenoarchartifacts/obj/exosuit.dm | 2 +- tgstation.dme | 1 + tgui/packages/tgui/interfaces/MODsuit.tsx | 86 ++++--- .../87434_internal_external_organ_death.txt | 2 + 753 files changed, 4675 insertions(+), 4138 deletions(-) create mode 100644 code/modules/reagents/chemistry/taste.dm rename code/modules/unit_tests/screenshots/{screenshot_humanoids__datum_species_vampire.png => screenshot_humanoids__datum_species_human_vampire.png} (100%) create mode 100644 html/changelogs/AutoChangeLog-pr-87306.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87329.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87434.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87622.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87726.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87782.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87789.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87792.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87869.yml create mode 100644 html/changelogs/AutoChangeLog-pr-87898.yml create mode 100644 html/changelogs/AutoChangeLog-pr-88326.yml create mode 100644 tools/UpdatePaths/Scripts/87434_internal_external_organ_death.txt diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm index 97b4e3d53c9..6ef2066b191 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm @@ -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) diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm index d4862ce03ee..0ea4048d127 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm @@ -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; @@ -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; @@ -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; diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm index a3c10d3b508..228c55292fb 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm @@ -90,6 +90,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) +"bp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "bu" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/wood, @@ -216,9 +223,15 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 }, -/obj/machinery/smartfridge/organ, -/obj/item/organ/internal/alien/resinspinner, -/obj/item/organ/internal/eyes/night_vision, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/clothing/gloves/latex/coroner{ + pixel_x = -1; + pixel_y = 8 + }, +/obj/item/clothing/mask/surgical{ + pixel_x = 6; + pixel_y = 10 + }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "cE" = ( @@ -498,9 +511,10 @@ /obj/effect/decal/cleanable/blood/gibs/down, /turf/open/floor/iron/cafeteria, /area/ruin/syndibiodome) -"gX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/warm/directional/west, +"gZ" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable/layer1, +/obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "ha" = ( @@ -509,10 +523,10 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/noteleport) "he" = ( -/mob/living/basic/gorilla/genetics, /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, +/mob/living/basic/gorilla/hostile, /turf/open/floor/wood, /area/ruin/syndibiodome) "hf" = ( @@ -527,8 +541,8 @@ /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "hm" = ( -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt/dust, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark/small, /area/ruin/syndibiodome) "hr" = ( @@ -639,14 +653,12 @@ }, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) -"iq" = ( -/obj/structure/flora/rock/pile/style_random, -/mob/living/carbon/human/species/monkey/angry, -/turf/open/floor/grass, -/area/ruin/syndibiodome) "ir" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/dim/directional/east, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "iG" = ( @@ -723,16 +735,6 @@ }, /obj/effect/decal/cleanable/blood/drip, /obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/surgery_tray/full, -/obj/item/clothing/gloves/latex/coroner{ - pixel_x = -1; - pixel_y = 8 - }, -/obj/item/clothing/mask/surgical{ - pixel_x = 6; - pixel_y = 10 - }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "jd" = ( @@ -771,9 +773,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) -"jQ" = ( -/turf/closed/indestructible/syndicate/nodiagonal, -/area/icemoon/surface/outdoors/noteleport) "jR" = ( /obj/effect/decal/cleanable/blood/trails{ dir = 4 @@ -1025,9 +1024,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) -"mK" = ( -/turf/open/misc/asteroid/snow/icemoon, -/area/ruin/syndibiodome) "mV" = ( /obj/effect/turf_decal/siding/wideplating/dark, /obj/effect/decal/cleanable/dirt/dust, @@ -1040,6 +1036,9 @@ "mW" = ( /obj/effect/spawner/random/trash, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "mZ" = ( @@ -1113,6 +1112,13 @@ /obj/effect/turf_decal/trimline/dark_red/line, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) +"on" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "oq" = ( /obj/effect/decal/cleanable/blood/trails{ dir = 10 @@ -1147,7 +1153,7 @@ /obj/machinery/light/warm/directional/west, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/mob/living/basic/gorilla/genetics, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "oH" = ( @@ -1346,7 +1352,6 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, -/mob/living/carbon/human/species/monkey/angry, /obj/machinery/light/warm/directional/north, /obj/machinery/digital_clock/directional/north, /obj/effect/decal/cleanable/dirt, @@ -1354,8 +1359,8 @@ /area/ruin/syndibiodome) "rQ" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt/dust, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "rX" = ( @@ -1434,7 +1439,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_machine, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) "td" = ( @@ -1701,12 +1705,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) +"vH" = ( +/obj/effect/spawner/random/trash, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "vJ" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/basic/gorilla/genetics, /obj/effect/turf_decal/trimline/purple/corner, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) "vK" = ( @@ -1959,7 +1971,6 @@ /obj/effect/turf_decal/trimline/dark/line{ dir = 1 }, -/mob/living/carbon/human/species/monkey/angry, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, @@ -2100,7 +2111,6 @@ /turf/open/floor/grass, /area/ruin/syndibiodome) "yU" = ( -/mob/living/carbon/human/species/monkey/angry, /obj/effect/turf_decal/weather/dirt{ dir = 9 }, @@ -2235,6 +2245,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) +"Az" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "AA" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 @@ -2262,9 +2279,9 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/item/storage/belt/security/webbing, /obj/item/storage/toolbox/syndicate, -/obj/item/gun/ballistic/automatic/pistol, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, +/obj/item/gun/ballistic/automatic/pistol/contraband, +/obj/item/ammo_box/magazine/m9mm, +/obj/item/ammo_box/magazine/m9mm, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "Ba" = ( @@ -2496,7 +2513,6 @@ /turf/open/floor/iron/white/small, /area/ruin/syndibiodome) "EE" = ( -/mob/living/carbon/human/species/monkey/angry, /obj/effect/decal/cleanable/blood/trails{ dir = 1 }, @@ -2727,7 +2743,6 @@ "Hs" = ( /obj/structure/flora/bush/flowers_br/style_3, /obj/structure/flora/bush/flowers_yw/style_3, -/mob/living/carbon/human/species/monkey/angry, /obj/effect/gibspawner/human/bodypartless, /obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, /turf/open/floor/grass, @@ -2810,6 +2825,14 @@ }, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) +"Iq" = ( +/obj/machinery/light/small/dim/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "IF" = ( /obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, /obj/effect/turf_decal/siding/wideplating/dark/end{ @@ -2947,6 +2970,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) +"Kl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "Kn" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 2 @@ -3087,6 +3117,9 @@ "LA" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/dim/directional/west, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "LB" = ( @@ -3192,6 +3225,8 @@ /turf/open/floor/iron/cafeteria, /area/ruin/syndibiodome) "Mr" = ( +/obj/machinery/light/warm/directional/west, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "Mt" = ( @@ -3266,7 +3301,6 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, -/mob/living/carbon/human/species/monkey/angry, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/dark/line, /obj/effect/decal/cleanable/dirt/dust, @@ -3348,7 +3382,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 6 }, -/mob/living/basic/gorilla/genetics, +/mob/living/basic/gorilla/hostile, /turf/open/floor/grass, /area/ruin/syndibiodome) "NN" = ( @@ -3364,7 +3398,6 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 6 }, -/obj/effect/gibspawner/generic, /obj/machinery/digital_clock/directional/east, /obj/effect/decal/cleanable/dirt, /turf/open/floor/mineral/plastitanium/red, @@ -3379,11 +3412,8 @@ /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "Os" = ( -/obj/structure/bodycontainer/morgue/beeper_off{ - dir = 8 - }, /obj/effect/turf_decal/trimline/tram/filled, -/turf/open/floor/pod/dark, +/turf/closed/indestructible/syndicate/nodiagonal, /area/ruin/syndibiodome) "Oy" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, @@ -3392,13 +3422,6 @@ }, /turf/open/floor/plating, /area/ruin/syndibiodome) -"OD" = ( -/mob/living/carbon/human/species/monkey/angry, -/obj/effect/turf_decal/weather/dirt{ - dir = 6 - }, -/turf/open/floor/grass, -/area/ruin/syndibiodome) "OH" = ( /obj/effect/decal/cleanable/blood/trails{ dir = 8 @@ -3428,8 +3451,8 @@ /obj/machinery/light/warm/directional/east, /obj/item/storage/belt/security/webbing, /obj/item/gun/ballistic/automatic/pistol/contraband, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, +/obj/item/ammo_box/magazine/m9mm, +/obj/item/ammo_box/magazine/m9mm, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "OM" = ( @@ -3446,6 +3469,9 @@ "ON" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/dim/directional/south, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "OO" = ( @@ -3640,7 +3666,6 @@ /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "RK" = ( -/mob/living/carbon/human/species/monkey/angry, /obj/structure/chair/office/tactical{ dir = 4 }, @@ -3659,8 +3684,9 @@ /area/icemoon/surface/outdoors/noteleport) "RX" = ( /obj/effect/turf_decal/siding/wideplating/dark, -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt, +/obj/effect/gibspawner/generic, +/mob/living/basic/gorilla/hostile, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "Se" = ( @@ -3823,6 +3849,10 @@ dir = 1 }, /area/ruin/syndibiodome) +"To" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/turf/open/floor/iron/dark, +/area/ruin/syndibiodome) "Tu" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/effect/turf_decal/siding/wideplating/dark{ @@ -3897,6 +3927,7 @@ /obj/item/stack/sheet/mineral/uranium/five, /obj/item/stack/sheet/mineral/uranium/five, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/warm/directional/east, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "TL" = ( @@ -3971,12 +4002,12 @@ /turf/open/floor/iron/dark/small, /area/ruin/syndibiodome) "Ux" = ( -/mob/living/basic/gorilla/genetics, /obj/effect/gibspawner/human/bodypartless, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/blue/corner{ dir = 4 }, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "Uz" = ( @@ -4223,8 +4254,8 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) "XG" = ( @@ -4362,13 +4393,13 @@ /area/ruin/syndibiodome) "YZ" = ( /obj/effect/turf_decal/siding/wideplating/dark, -/mob/living/basic/gorilla/genetics, /obj/structure/fluff/fake_vent, /obj/effect/decal/cleanable/blood/trails{ dir = 1 }, /obj/effect/decal/cleanable/dirt, /obj/effect/gibspawner/human/bodypartless, +/mob/living/basic/gorilla/hostile, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "Zd" = ( @@ -4690,7 +4721,7 @@ oq Mc zM zM -mK +ys ys ys tL @@ -4727,8 +4758,8 @@ ck ys ys zM -Ut -vx +Kl +on xi kw wL @@ -4820,8 +4851,8 @@ jS ys ys zM -Ut -Ut +Kl +Kl zM Sr zM @@ -4867,7 +4898,7 @@ pg pg zM zM -Ut +Kl zM zM Ab @@ -4914,7 +4945,7 @@ zd ys zM Db -Ut +Kl zM kK MB @@ -4961,7 +4992,7 @@ pg pg zM ic -Ut +Kl zM rK YZ @@ -5008,7 +5039,7 @@ uD ys zM wY -Ut +Kl zM cB ja @@ -5102,10 +5133,10 @@ AI ys ys zM -Ut -Ut -zM -zM +Kl +Kl +Iq +Ro zM zM zM @@ -5151,8 +5182,8 @@ Hi zM zM Ut -LA -Ro +Kl +Ut zM qN qU @@ -5198,10 +5229,10 @@ ys ys zM zM -Ut -Ut -Ut -vx +Kl +Kl +Kl +gZ je kt XC @@ -5582,7 +5613,7 @@ Fl qN IU vu -iq +MH YD Fp xz @@ -5664,13 +5695,13 @@ ys ck zM zM -mW -Ut +vH +bp ir -Ut -Ut -Ut -vx +bp +bp +bp +Az kw Eq CV @@ -5711,7 +5742,7 @@ ys ys zM MP -Ut +bp zM zM Ut @@ -5758,7 +5789,7 @@ ys ys zM qa -Ut +bp zM zM dS @@ -5805,7 +5836,7 @@ ys zM zM Sv -Ut +bp zM wx RH @@ -5852,7 +5883,7 @@ zM zM rZ Ut -Ut +bp zM Ra RX @@ -5899,7 +5930,7 @@ zM zM zM zM -Ut +bp zM Pw Oi @@ -5993,12 +6024,12 @@ Uc qp sR zM -Ut -Ut +bp +bp LA -mW -Ut -vx +vH +bp +Az Nt uW Vv @@ -6049,7 +6080,7 @@ qN pY XC XC -qN +To Ut zM Vj @@ -6060,7 +6091,7 @@ XE Mt WB iX -OD +cN zM ys uD @@ -6188,8 +6219,8 @@ zM zM zM zM -Vv zM +To zM LU qN @@ -6235,8 +6266,8 @@ zM ek Dc zM -zM -zM +Mr +Ut Mr Ut qN @@ -6283,7 +6314,7 @@ MM bu zM Kz -gX +Ut Ut Ut zM @@ -6428,7 +6459,7 @@ zM zM zM ys -jQ +zM zM zM zM diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm index 6156174aaba..bd900021094 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm @@ -235,7 +235,7 @@ "oL" = ( /obj/structure/bonfire/prelit, /obj/effect/decal/cleanable/ash, -/obj/item/organ/external/tail/lizard, +/obj/item/organ/tail/lizard, /obj/effect/decal/cleanable/blood/old, /obj/structure/stone_tile/slab/cracked, /turf/open/misc/asteroid/basalt/wasteland, @@ -313,7 +313,7 @@ /area/ruin/unpowered/elephant_graveyard) "wp" = ( /obj/item/knife/combat/bone, -/obj/item/organ/internal/tongue, +/obj/item/organ/tongue, /obj/effect/decal/cleanable/blood/old, /turf/open/misc/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) @@ -386,8 +386,8 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface) "Di" = ( -/obj/item/organ/internal/lungs, -/obj/item/organ/internal/liver, +/obj/item/organ/lungs, +/obj/item/organ/liver, /obj/effect/decal/cleanable/blood/old, /turf/open/misc/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) @@ -406,7 +406,7 @@ /turf/open/misc/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) "Eh" = ( -/obj/item/organ/internal/brain, +/obj/item/organ/brain, /turf/open/misc/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) "EI" = ( @@ -468,9 +468,9 @@ /turf/open/floor/mineral/titanium/white, /area/ruin/powered/graveyard_shuttle) "Kj" = ( -/obj/item/organ/internal/heart, -/obj/item/organ/internal/eyes, -/obj/item/organ/internal/ears, +/obj/item/organ/heart, +/obj/item/organ/eyes, +/obj/item/organ/ears, /obj/effect/decal/cleanable/blood/gibs/old, /turf/open/misc/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 66e681981c7..5e8cb710e89 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -524,9 +524,9 @@ "tL" = ( /obj/effect/turf_decal/bot_white, /obj/structure/closet/crate/secure/engineering, -/obj/item/organ/internal/cyberimp/arm/toolset, -/obj/item/organ/internal/cyberimp/eyes/hud/medical, -/obj/item/organ/internal/cyberimp/brain/anti_stun, +/obj/item/organ/cyberimp/arm/toolset, +/obj/item/organ/cyberimp/eyes/hud/medical, +/obj/item/organ/cyberimp/brain/anti_stun, /turf/open/floor/iron/dark/airless, /area/shuttle/ruin/caravan/freighter3) "tO" = ( diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm index 025a2b62e0a..52a288e64e6 100644 --- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm @@ -341,7 +341,7 @@ /obj/effect/decal/cleanable/blood/footprints{ dir = 8 }, -/obj/item/organ/internal/liver, +/obj/item/organ/liver, /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) @@ -543,7 +543,7 @@ dir = 4 }, /obj/effect/decal/cleanable/blood/bubblegum, -/obj/item/organ/internal/appendix, +/obj/item/organ/appendix, /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/mapping_helpers/burnt_floor, @@ -903,7 +903,7 @@ /area/ruin/space/has_grav/dangerous_research/dorms) "mG" = ( /obj/structure/table, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /obj/effect/decal/cleanable/blood/bubblegum, /obj/effect/spawner/random/medical/surgery_tool_advanced, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -1056,7 +1056,7 @@ dir = 1 }, /obj/effect/decal/cleanable/blood/footprints, -/obj/item/organ/internal/lungs, +/obj/item/organ/lungs, /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, @@ -1193,7 +1193,7 @@ dir = 8 }, /obj/effect/decal/cleanable/blood/gibs, -/obj/item/organ/internal/brain, +/obj/item/organ/brain, /obj/item/skillchip/research_director, /obj/effect/turf_decal/tile/neutral/half{ dir = 4 @@ -1279,7 +1279,7 @@ /obj/effect/decal/cleanable/blood/footprints{ dir = 8 }, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) @@ -3692,8 +3692,8 @@ /area/ruin/space/has_grav/dangerous_research/lab) "Wt" = ( /obj/structure/table/optable, -/obj/item/organ/internal/eyes, -/obj/item/organ/internal/liver, +/obj/item/organ/eyes, +/obj/item/organ/liver, /obj/effect/decal/cleanable/blood/bubblegum, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm index f3a4b1f7528..05da4138d0f 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm @@ -876,10 +876,10 @@ /obj/item/petri_dish, /obj/item/petri_dish, /obj/item/petri_dish, -/obj/item/organ/internal/tongue/rat, +/obj/item/organ/tongue/rat, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/glass, -/obj/item/organ/internal/stomach/rat, +/obj/item/organ/stomach/rat, /obj/item/fish/ratfish, /obj/structure/closet/crate/freezer, /obj/effect/spawner/random/medical/surgery_tool, @@ -1227,7 +1227,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/item/food/deadmouse, /mob/living/basic/mouse/rat, -/obj/item/organ/internal/heart/rat, +/obj/item/organ/heart/rat, /turf/open/floor/plating/dumpsterair, /area/ruin/space/has_grav/garbagetruck/foodwaste) diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm index c697cd5fa00..f1c41c3bf17 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm @@ -1,11 +1,11 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "bb" = ( -/obj/item/organ/external/wings/moth, +/obj/item/organ/wings/moth, /obj/structure/closet/crate/trashcart, /obj/item/bodypart/arm/left/skeleton, /obj/item/bodypart/arm/right/skeleton, /obj/item/evidencebag, -/obj/item/organ/internal/heart/cybernetic/tier2, +/obj/item/organ/heart/cybernetic/tier2, /obj/structure/broken_flooring/pile, /obj/item/stack/sheet/animalhide/human/five, /turf/open/floor/plating, @@ -183,7 +183,7 @@ /obj/item/trash/syndi_cakes, /obj/item/trash/syndi_cakes, /obj/item/poster/random_contraband, -/obj/item/organ/internal/tongue/zombie, +/obj/item/organ/tongue/zombie, /obj/structure/closet/crate/trashcart, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) @@ -298,8 +298,8 @@ /obj/item/stack/medical/gauze, /obj/item/stack/sticky_tape/surgical, /obj/structure/broken_flooring/corner, -/obj/item/organ/internal/cyberimp/arm/surgery, -/obj/item/organ/internal/cyberimp/eyes/hud/medical, +/obj/item/organ/cyberimp/arm/surgery, +/obj/item/organ/cyberimp/eyes/hud/medical, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) "zu" = ( @@ -417,7 +417,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) "Gp" = ( -/obj/item/organ/internal/eyes/robotic/basic, +/obj/item/organ/eyes/robotic/basic, /obj/item/kitchen/spoon, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) @@ -437,9 +437,9 @@ "IM" = ( /obj/effect/decal/cleanable/robot_debris, /obj/structure/closet/crate/freezer, -/obj/item/organ/internal/liver/roach, -/obj/item/organ/internal/stomach, -/obj/item/organ/internal/tongue/robot, +/obj/item/organ/liver/roach, +/obj/item/organ/stomach, +/obj/item/organ/tongue/robot, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) "IS" = ( diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm index cdb5b4e2cec..1bc775220c2 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm @@ -662,7 +662,7 @@ /obj/structure/mecha_wreckage/ripley, /obj/effect/decal/cleanable/fuel_pool, /obj/effect/decal/cleanable/molten_object, -/obj/item/organ/internal/tongue/robot, +/obj/item/organ/tongue/robot, /turf/open/floor/plating/dumpsterair, /area/ruin/space/has_grav/garbagetruck/squat) "HN" = ( diff --git a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm index 6954a5f57a2..06451e02e8c 100644 --- a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm +++ b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm @@ -5471,7 +5471,7 @@ /obj/structure/table/wood, /obj/item/toy/figure/wizard/special{ pixel_y = 9; - pixel_x = -4; + pixel_x = -4 }, /obj/item/toy/figure/warden{ name = "\improper Knight action figure"; diff --git a/_maps/RandomRuins/SpaceRuins/medieval1.dmm b/_maps/RandomRuins/SpaceRuins/medieval1.dmm index e4df5166993..74ca6aad858 100644 --- a/_maps/RandomRuins/SpaceRuins/medieval1.dmm +++ b/_maps/RandomRuins/SpaceRuins/medieval1.dmm @@ -74,7 +74,7 @@ "qr" = ( /obj/structure/table/wood, /obj/item/plate, -/obj/item/organ/internal/liver, +/obj/item/organ/liver, /turf/open/floor/wood/parquet, /area/ruin/space) "rm" = ( @@ -88,7 +88,7 @@ /turf/open/floor/stone, /area/ruin/space) "sR" = ( -/obj/item/organ/internal/eyes, +/obj/item/organ/eyes, /turf/open/floor/stone, /area/ruin/space) "tj" = ( @@ -238,7 +238,7 @@ "Ug" = ( /obj/effect/decal/cleanable/blood/tracks, /obj/effect/decal/cleanable/blood/gibs/up, -/obj/item/organ/internal/lungs{ +/obj/item/organ/lungs{ pixel_x = 6; pixel_y = -7 }, diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm index 6c08525d8f2..729e9ddf044 100644 --- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm +++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm @@ -312,7 +312,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/powered/cat_man) "be" = ( -/obj/item/organ/external/tail/cat, +/obj/item/organ/tail/cat, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/white/corner, /area/ruin/space/has_grav/powered/cat_man) @@ -396,7 +396,7 @@ "bt" = ( /obj/structure/table/optable, /obj/effect/mob_spawn/corpse/human/damaged, -/obj/item/organ/internal/ears/cat, +/obj/item/organ/ears/cat, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/white, /area/ruin/space/has_grav/powered/cat_man) @@ -737,12 +737,12 @@ /obj/structure/closet/crate/freezer{ name = "cat ears" }, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/ears/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/ears/cat, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/powered/cat_man) "cv" = ( @@ -791,12 +791,12 @@ /obj/structure/closet/crate/freezer{ name = "cat tails" }, -/obj/item/organ/external/tail/cat, -/obj/item/organ/external/tail/cat, -/obj/item/organ/external/tail/cat, -/obj/item/organ/external/tail/cat, -/obj/item/organ/external/tail/cat, -/obj/item/organ/external/tail/cat, +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/powered/cat_man) "jc" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 0c3c231b5f2..1f1ad0f6c4a 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -521,7 +521,7 @@ pixel_x = 17; pixel_y = 12 }, -/obj/item/organ/internal/cyberimp/arm/toolset{ +/obj/item/organ/cyberimp/arm/toolset{ pixel_y = 2; pixel_x = 6 }, diff --git a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm index f31929b70a4..719088322f2 100644 --- a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm +++ b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm @@ -251,14 +251,14 @@ /area/ruin/space/has_grav/the_outlet/researchrooms) "gU" = ( /obj/structure/closet/secure_closet/freezer/empty, -/obj/item/organ/internal/tongue/lizard, +/obj/item/organ/tongue/lizard, /obj/item/food/meat/slab/human/mutant/lizard, -/obj/item/organ/external/tail/lizard, -/obj/item/organ/internal/heart, -/obj/item/organ/internal/brain, -/obj/item/organ/internal/liver, -/obj/item/organ/internal/lungs, -/obj/item/organ/internal/stomach, +/obj/item/organ/tail/lizard, +/obj/item/organ/heart, +/obj/item/organ/brain, +/obj/item/organ/liver, +/obj/item/organ/lungs, +/obj/item/organ/stomach, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/the_outlet/researchrooms) "gX" = ( diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index a21d64d505b..ea63bf1b7fe 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -56,7 +56,7 @@ }, /obj/item/veilrender/honkrender, /obj/item/clothing/mask/gas/clown_hat, -/obj/item/organ/internal/heart/demon, +/obj/item/organ/heart/demon, /turf/open/floor/engine/cult{ initial_gas_mix = "n2=23;o2=14;TEMP=2.7" }, @@ -1252,7 +1252,7 @@ "ki" = ( /obj/structure/closet/crate/preopen, /obj/item/paper/fluff/awaymissions/caves/shipment_receipt, -/obj/item/organ/internal/eyes/robotic/thermals, +/obj/item/organ/eyes/robotic/thermals, /obj/item/gun/energy/laser/captain/scattershot, /obj/item/slimepotion/fireproof, /turf/open/misc/asteroid/basalt{ @@ -1977,7 +1977,7 @@ }, /area/awaymission/caves/bmp_asteroid/level_three) "YG" = ( -/obj/item/organ/internal/brain/alien, +/obj/item/organ/brain/alien, /turf/open/misc/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14;TEMP=2.7" }, diff --git a/_maps/RandomZLevels/mothership_astrum.dmm b/_maps/RandomZLevels/mothership_astrum.dmm index 272d6977c59..dd275f086bf 100644 --- a/_maps/RandomZLevels/mothership_astrum.dmm +++ b/_maps/RandomZLevels/mothership_astrum.dmm @@ -87,7 +87,7 @@ /obj/structure/window/spawner/directional/north, /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, -/obj/item/organ/internal/cyberimp/arm/medibeam, +/obj/item/organ/cyberimp/arm/medibeam, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "bl" = ( @@ -179,7 +179,7 @@ /area/awaymission/mothership_astrum/deck4) "dd" = ( /obj/effect/decal/cleanable/blood, -/obj/item/organ/internal/eyes/robotic, +/obj/item/organ/eyes/robotic, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "dh" = ( @@ -289,7 +289,7 @@ /area/awaymission/mothership_astrum/halls) "fa" = ( /obj/structure/closet/abductor, -/obj/item/organ/internal/cyberimp/eyes/hud/medical, +/obj/item/organ/cyberimp/eyes/hud/medical, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "fb" = ( @@ -424,7 +424,7 @@ /area/awaymission/mothership_astrum/deck4) "hy" = ( /obj/structure/table/abductor, -/obj/item/organ/internal/cyberimp/brain/anti_stun, +/obj/item/organ/cyberimp/brain/anti_stun, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "hz" = ( @@ -740,7 +740,7 @@ /area/awaymission/mothership_astrum/deck2) "nB" = ( /obj/structure/closet/abductor, -/obj/item/organ/internal/cyberimp/eyes/hud/security, +/obj/item/organ/cyberimp/eyes/hud/security, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "nE" = ( @@ -842,7 +842,7 @@ /area/awaymission/mothership_astrum/deck3) "oA" = ( /obj/structure/table/abductor, -/obj/item/organ/internal/cyberimp/arm/janitor, +/obj/item/organ/cyberimp/arm/janitor, /turf/open/floor/plating/abductor, /area/awaymission/mothership_astrum/halls) "oF" = ( @@ -1042,7 +1042,7 @@ /area/awaymission/mothership_astrum/halls) "sg" = ( /obj/effect/decal/cleanable/blood, -/obj/item/organ/internal/eyes/robotic/shield, +/obj/item/organ/eyes/robotic/shield, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "sk" = ( @@ -1477,7 +1477,7 @@ /obj/structure/window/spawner/directional/north, /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, -/obj/item/organ/internal/cyberimp/chest/scanner, +/obj/item/organ/cyberimp/chest/scanner, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "yB" = ( @@ -1630,7 +1630,7 @@ /area/awaymission/mothership_astrum/halls) "Bl" = ( /obj/structure/table/abductor, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /turf/open/floor/plating/abductor, /area/awaymission/mothership_astrum/halls) "Bn" = ( @@ -1665,7 +1665,7 @@ /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, /obj/structure/table/abductor, -/obj/item/organ/internal/cyberimp/arm/hacker, +/obj/item/organ/cyberimp/arm/hacker, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "BE" = ( @@ -2037,7 +2037,7 @@ /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, /obj/structure/table/abductor, -/obj/item/organ/internal/cyberimp/mouth/breathing_tube, +/obj/item/organ/cyberimp/mouth/breathing_tube, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "FV" = ( @@ -2292,7 +2292,7 @@ /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "Iv" = ( -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "IA" = ( @@ -2325,7 +2325,7 @@ /obj/structure/window/spawner/directional/north, /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, -/obj/item/organ/internal/cyberimp/brain/anti_drop, +/obj/item/organ/cyberimp/brain/anti_drop, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "IT" = ( @@ -2368,7 +2368,7 @@ /area/awaymission/mothership_astrum/halls) "JB" = ( /obj/structure/alien/weeds, -/obj/item/organ/internal/eyes/night_vision/cyber, +/obj/item/organ/eyes/night_vision/cyber, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/deck4) "JO" = ( @@ -2634,7 +2634,7 @@ /area/awaymission/mothership_astrum/deck2) "Nd" = ( /obj/effect/decal/cleanable/blood, -/obj/item/organ/internal/appendix/fly, +/obj/item/organ/appendix/fly, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "Ne" = ( @@ -2666,7 +2666,7 @@ /area/awaymission/mothership_astrum/halls) "Ns" = ( /obj/structure/table/abductor, -/obj/item/organ/internal/cyberimp/arm/armblade, +/obj/item/organ/cyberimp/arm/armblade, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "Nw" = ( @@ -2731,7 +2731,7 @@ /area/awaymission/mothership_astrum/halls) "Oa" = ( /obj/structure/table/abductor, -/obj/item/organ/internal/cyberimp/arm/toolset, +/obj/item/organ/cyberimp/arm/toolset, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "Om" = ( @@ -2771,7 +2771,7 @@ /area/awaymission/mothership_astrum/deck1) "Os" = ( /obj/structure/table/abductor, -/obj/item/organ/internal/cyberimp/brain/anti_drop, +/obj/item/organ/cyberimp/brain/anti_drop, /turf/open/floor/plating/abductor2, /area/awaymission/mothership_astrum/halls) "Ow" = ( @@ -2890,7 +2890,7 @@ /obj/effect/turf_decal/sand, /obj/structure/table/wood, /obj/item/storage/medkit/brute, -/obj/item/organ/internal/cyberimp/brain/anti_stun, +/obj/item/organ/cyberimp/brain/anti_stun, /turf/open/misc/beach/sand, /area/awaymission/mothership_astrum/deck5) "PP" = ( @@ -2906,7 +2906,7 @@ /turf/open/misc/ironsand, /area/awaymission/mothership_astrum/deck1) "PR" = ( -/obj/item/organ/internal/eyes/snail, +/obj/item/organ/eyes/snail, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "PV" = ( @@ -3120,7 +3120,7 @@ "SA" = ( /obj/structure/table/abductor, /obj/structure/window/reinforced/spawner/directional/west, -/obj/item/organ/internal/cyberimp/chest/scanner, +/obj/item/organ/cyberimp/chest/scanner, /turf/open/floor/mineral/abductor, /area/awaymission/mothership_astrum/halls) "SF" = ( @@ -3544,7 +3544,7 @@ "XE" = ( /obj/structure/table/wood, /obj/item/flashlight/flare/candle/infinite, -/obj/item/organ/internal/cyberimp/chest/reviver, +/obj/item/organ/cyberimp/chest/reviver, /turf/open/floor/plastic, /area/awaymission/mothership_astrum/deck2) "XH" = ( diff --git a/_maps/deathmatch/sunrise.dmm b/_maps/deathmatch/sunrise.dmm index b4de46385cd..d58aac39aec 100644 --- a/_maps/deathmatch/sunrise.dmm +++ b/_maps/deathmatch/sunrise.dmm @@ -721,7 +721,7 @@ /area/deathmatch) "Uk" = ( /obj/structure/closet/crate/coffin, -/obj/item/organ/internal/cyberimp/arm/shard/katana, +/obj/item/organ/cyberimp/arm/shard/katana, /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, /obj/structure/window/spawner/directional/south, diff --git a/_maps/map_files/Basketball/lusty_xenomorphs.dmm b/_maps/map_files/Basketball/lusty_xenomorphs.dmm index 534376d3f56..f3550c0c15f 100644 --- a/_maps/map_files/Basketball/lusty_xenomorphs.dmm +++ b/_maps/map_files/Basketball/lusty_xenomorphs.dmm @@ -135,7 +135,7 @@ /turf/open/floor/engine, /area/centcom/basketball) "kT" = ( -/obj/item/organ/internal/body_egg/alien_embryo, +/obj/item/organ/body_egg/alien_embryo, /turf/open/floor/engine, /area/centcom/basketball) "lh" = ( @@ -327,7 +327,7 @@ /area/centcom/basketball) "Bd" = ( /obj/structure/alien/weeds, -/obj/item/organ/internal/body_egg/alien_embryo, +/obj/item/organ/body_egg/alien_embryo, /turf/open/floor/iron/white, /area/centcom/basketball) "Cv" = ( diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index ef4ae3a2ae5..747e04d408c 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -2478,12 +2478,6 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"aVK" = ( -/obj/structure/rack, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "aVT" = ( /obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior, /obj/effect/mapping_helpers/airlock/locked, @@ -2633,6 +2627,10 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/misc/sandy_dirt, /area/station/service/lawoffice) +"aZg" = ( +/obj/machinery/drone_dispenser, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "aZh" = ( /obj/machinery/modular_computer/preset/curator{ dir = 8 @@ -9500,24 +9498,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"dzi" = ( -/obj/structure/table/wood, -/obj/item/book/granter/action/spell/smoke/lesser{ - name = "mysterious old book of cloud-chasing" - }, -/obj/item/reagent_containers/cup/glass/bottle/holywater{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/nullrod{ - pixel_x = 4 - }, -/obj/item/organ/internal/heart, -/obj/item/soulstone/anybody/chaplain, -/obj/machinery/light/small/red/dim/directional/south, -/obj/item/radio/intercom/chapel/directional/east, -/turf/open/floor/iron/terracotta/diagonal, -/area/station/service/chapel/office) "dzE" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -26384,10 +26364,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"jar" = ( -/obj/machinery/drone_dispenser, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "jat" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ dir = 4 @@ -45498,6 +45474,24 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"pEQ" = ( +/obj/structure/table/wood, +/obj/item/book/granter/action/spell/smoke/lesser{ + name = "mysterious old book of cloud-chasing" + }, +/obj/item/reagent_containers/cup/glass/bottle/holywater{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/nullrod{ + pixel_x = 4 + }, +/obj/item/organ/heart, +/obj/item/soulstone/anybody/chaplain, +/obj/machinery/light/small/red/dim/directional/south, +/obj/item/radio/intercom/chapel/directional/east, +/turf/open/floor/iron/terracotta/diagonal, +/area/station/service/chapel/office) "pET" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 8 @@ -70367,6 +70361,12 @@ }, /turf/open/floor/iron/checker, /area/station/security/breakroom) +"xtv" = ( +/obj/structure/rack, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "xtD" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -85969,7 +85969,7 @@ jte diI yea vmt -dzi +pEQ fEC wxR fEC @@ -112964,7 +112964,7 @@ tjj tjj blb ssz -jar +aZg qRO ssz vLv @@ -113221,7 +113221,7 @@ tjj blb blb ssz -aVK +xtv sPO ssz aSy diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index e6134de2453..5a4a74216c4 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -52616,7 +52616,7 @@ /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) "pgN" = ( -/obj/item/organ/external/tail/monkey, +/obj/item/organ/tail/monkey, /obj/effect/decal/cleanable/blood/splatter, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) @@ -56829,7 +56829,7 @@ pixel_y = 4 }, /obj/item/bodypart/chest, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "qrj" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 88f7f830867..d056026b5ff 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -15680,14 +15680,6 @@ /obj/structure/cable, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) -"fEV" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Cargo" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/supply) "fEW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28021,22 +28013,6 @@ /obj/item/kirbyplants/potty, /turf/open/floor/wood/large, /area/station/commons/lounge) -"jTy" = ( -/obj/structure/table/wood, -/obj/item/book/granter/action/spell/smoke/lesser{ - name = "mysterious old book of cloud-chasing" - }, -/obj/item/reagent_containers/cup/glass/bottle/holywater{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/nullrod{ - pixel_x = 4 - }, -/obj/item/organ/internal/heart, -/obj/item/soulstone/anybody/chaplain, -/turf/open/floor/cult, -/area/station/service/chapel/office) "jTH" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/pdapainter/security, @@ -38066,6 +38042,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison/work) +"nyu" = ( +/obj/effect/turf_decal/tile/brown/fourcorners, +/obj/machinery/door/airlock/security/glass{ + name = "Security Post - Cargo" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) "nyy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59521,6 +59505,22 @@ "uXd" = ( /turf/closed/wall/r_wall, /area/station/engineering/main) +"uXh" = ( +/obj/structure/table/wood, +/obj/item/book/granter/action/spell/smoke/lesser{ + name = "mysterious old book of cloud-chasing" + }, +/obj/item/reagent_containers/cup/glass/bottle/holywater{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/nullrod{ + pixel_x = 4 + }, +/obj/item/organ/heart, +/obj/item/soulstone/anybody/chaplain, +/turf/open/floor/cult, +/area/station/service/chapel/office) "uXt" = ( /obj/docking_port/stationary/syndicate/northwest{ dir = 8 @@ -63488,17 +63488,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/evidence) -"wme" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Cargo" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/supply) "wmf" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -66216,6 +66205,17 @@ }, /turf/open/floor/iron, /area/station/commons/locker) +"xma" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Post - Cargo" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/fourcorners, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) "xmb" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ dir = 4 @@ -89982,7 +89982,7 @@ hxd rtG oor oor -wme +xma oor xbu oor @@ -90501,7 +90501,7 @@ kDb imT gPw qNL -fEV +nyu pVK xOw uCR @@ -91337,7 +91337,7 @@ tSw tAH waD tSw -jTy +uXh vQg oCb gCA diff --git a/_maps/map_files/NSVBlueshift/Blueshift.dmm b/_maps/map_files/NSVBlueshift/Blueshift.dmm index 81c8edf1f82..c32169e95b8 100644 --- a/_maps/map_files/NSVBlueshift/Blueshift.dmm +++ b/_maps/map_files/NSVBlueshift/Blueshift.dmm @@ -3182,7 +3182,7 @@ /area/station/service/hydroponics/garden) "aGN" = ( /obj/effect/decal/cleanable/blood/old, -/obj/item/organ/internal/eyes, +/obj/item/organ/eyes, /obj/item/pen{ pixel_x = 5; pixel_y = 8 @@ -11792,7 +11792,7 @@ /obj/structure/table/wood/fancy, /obj/item/book/granter/action/spell/smoke/lesser, /obj/item/nullrod, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/soulstone/anybody/chaplain, /obj/machinery/light/small/directional/north, @@ -19939,7 +19939,7 @@ /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva/upper) "dPO" = ( -/obj/item/organ/external/tail/monkey, +/obj/item/organ/tail/monkey, /turf/open/floor/cult, /area/station/maintenance/department/science/xenobiology) "dPP" = ( @@ -37079,7 +37079,7 @@ /turf/closed/wall, /area/space/nearstation) "hfi" = ( -/obj/item/organ/internal/eyes, +/obj/item/organ/eyes, /turf/open/floor/material/meat, /area/station/maintenance/department/science/xenobiology) "hfl" = ( @@ -40973,16 +40973,16 @@ /area/station/common/wrestling/arena) "hSi" = ( /obj/structure/table, -/obj/item/organ/external/tail/cat{ +/obj/item/organ/tail/cat{ pixel_x = -5; pixel_y = 4 }, -/obj/item/organ/external/tail/fluffy{ +/obj/item/organ/tail/fluffy{ pixel_x = -3; pixel_y = 2 }, -/obj/item/organ/external/tail/lizard, -/obj/item/organ/internal/ears/cat, +/obj/item/organ/tail/lizard, +/obj/item/organ/ears/cat, /obj/effect/decal/cleanable/dirt{ icon_state = "dirt-flat-1" }, @@ -42233,9 +42233,9 @@ }, /obj/effect/turf_decal/bot, /obj/item/bodypart/arm/left, -/obj/item/organ/internal/eyes, +/obj/item/organ/eyes, /obj/effect/decal/cleanable/blood/old, -/obj/item/organ/external/tail/lizard, +/obj/item/organ/tail/lizard, /turf/open/floor/iron/dark, /area/station/maintenance/department/security/prison_upper) "ieW" = ( @@ -48303,7 +48303,7 @@ }, /area/station/hallway/primary/upper) "jpm" = ( -/obj/item/organ/internal/liver, +/obj/item/organ/liver, /turf/open/floor/material/meat, /area/station/maintenance/department/science/xenobiology) "jpn" = ( @@ -49102,7 +49102,7 @@ "jxj" = ( /mob/living/basic/mushroom, /obj/effect/decal/cleanable/blood/gibs, -/obj/item/organ/internal/eyes, +/obj/item/organ/eyes, /turf/open/floor/plating, /area/station/maintenance/department/science/ordnance_maint) "jxk" = ( @@ -61911,8 +61911,8 @@ /area/station/medical/patients_rooms) "lSU" = ( /obj/structure/table, -/obj/item/organ/internal/stomach/cybernetic, -/obj/item/organ/internal/eyes/robotic/flashlight, +/obj/item/organ/stomach/cybernetic, +/obj/item/organ/eyes/robotic/flashlight, /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) @@ -73753,7 +73753,7 @@ "oif" = ( /obj/structure/table/optable, /obj/effect/decal/cleanable/blood/old, -/obj/item/organ/internal/brain, +/obj/item/organ/brain, /turf/open/floor/iron/white, /area/station/maintenance/abandon_surgery) "oih" = ( @@ -84868,9 +84868,9 @@ /obj/structure/closet/crate/freezer{ name = "organ storage" }, -/obj/item/organ/external/tail/cat, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/heart, +/obj/item/organ/tail/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/heart, /obj/effect/decal/cleanable/dirt{ icon_state = "dirt-flat-1" }, @@ -87462,7 +87462,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/upper) "qNf" = ( -/obj/item/organ/internal/tongue, +/obj/item/organ/tongue, /turf/open/floor/material/meat, /area/station/maintenance/department/science/xenobiology) "qNi" = ( @@ -99607,7 +99607,7 @@ /turf/open/floor/plating, /area/station/maintenance/department/engineering/atmos_aux_port) "tda" = ( -/obj/item/organ/internal/stomach, +/obj/item/organ/stomach, /turf/open/floor/material/meat, /area/station/maintenance/department/science/xenobiology) "tdb" = ( @@ -115383,7 +115383,7 @@ /turf/open/floor/plating, /area/station/maintenance/department/medical) "wbt" = ( -/obj/item/organ/internal/eyes, +/obj/item/organ/eyes, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, /area/station/maintenance/rus_surgery) @@ -120913,7 +120913,7 @@ /obj/structure/closet/crate/freezer{ name = "limb storage" }, -/obj/item/organ/internal/liver, +/obj/item/organ/liver, /obj/item/bodypart/leg/left/digitigrade, /turf/open/floor/plating, /area/station/maintenance/rus_surgery) @@ -122761,9 +122761,9 @@ /obj/structure/closet/crate/freezer{ name = "organ storage" }, -/obj/item/organ/internal/heart, -/obj/item/organ/internal/eyes/fly, -/obj/item/organ/internal/liver, +/obj/item/organ/heart, +/obj/item/organ/eyes/fly, +/obj/item/organ/liver, /obj/effect/decal/cleanable/dirt{ icon_state = "dirt-flat-1" }, diff --git a/_maps/map_files/Ouroboros/Ouroboros.dmm b/_maps/map_files/Ouroboros/Ouroboros.dmm index 23ffdf81fd2..880a2bfa7db 100644 --- a/_maps/map_files/Ouroboros/Ouroboros.dmm +++ b/_maps/map_files/Ouroboros/Ouroboros.dmm @@ -24942,8 +24942,8 @@ /obj/effect/spawner/random/medical/memeorgans, /obj/effect/spawner/random/medical/memeorgans, /obj/effect/spawner/random/medical/organs, -/obj/item/organ/external/tail/cat, -/obj/item/organ/external/tail/cat{ +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat{ pixel_x = 6 }, /obj/machinery/power/apc/auto_name/directional/south, diff --git a/_maps/map_files/SerenityStation/SerenityStation.dmm b/_maps/map_files/SerenityStation/SerenityStation.dmm index 59aafac5889..0a11fddcd9d 100644 --- a/_maps/map_files/SerenityStation/SerenityStation.dmm +++ b/_maps/map_files/SerenityStation/SerenityStation.dmm @@ -27158,7 +27158,7 @@ /obj/structure/table/wood/fancy, /obj/item/nullrod, /obj/item/book/granter/action/spell/smoke/lesser, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /turf/open/floor/iron/dark/side{ dir = 4 }, diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm index 0c3eccafc47..55435a6b39b 100644 --- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm +++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm @@ -37899,11 +37899,11 @@ /obj/structure/closet/crate/freezer{ name = "organ storage" }, -/obj/item/organ/external/tail/cat, -/obj/item/organ/external/tail/cat, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/ears/cat, -/obj/item/organ/internal/heart, +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/heart, /obj/structure/sign/poster/contraband/random/directional/east, /obj/machinery/vending/wallmed/directional/north, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -40114,7 +40114,7 @@ "lqF" = ( /obj/structure/table/wood/fancy, /obj/item/nullrod, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/machinery/light/small/directional/north, /turf/open/floor/pod/dark, diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index d1b9a7ec350..a2457647837 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -2626,13 +2626,13 @@ /area/station/hallway/primary/central) "XN" = ( /obj/structure/table, -/obj/item/organ/internal/cyberimp/bci{ +/obj/item/organ/cyberimp/bci{ pixel_y = 5 }, -/obj/item/organ/internal/cyberimp/bci{ +/obj/item/organ/cyberimp/bci{ pixel_y = 5 }, -/obj/item/organ/internal/cyberimp/bci{ +/obj/item/organ/cyberimp/bci{ pixel_y = 5 }, /turf/open/floor/iron/dark, diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm index 0e8deac0a59..893f1208686 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm @@ -102,7 +102,7 @@ /area/station/asteroid) "N" = ( /obj/item/instrument/trombone, -/obj/item/organ/internal/tongue/bone, +/obj/item/organ/tongue/bone, /turf/open/misc/asteroid/dug, /area/station/asteroid) "O" = ( diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index bbeaa4bd07c..66345284283 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -15446,7 +15446,7 @@ /obj/item/nullrod{ pixel_x = 4 }, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /obj/item/soulstone/anybody/chaplain, /turf/open/floor/cult, /area/station/service/chapel/office) @@ -66282,11 +66282,11 @@ /area/station/hallway/secondary/exit/departure_lounge) "xrt" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/organ/external/horns, -/obj/item/organ/external/antennae, -/obj/item/organ/external/frills, -/obj/item/organ/external/spines, -/obj/item/organ/external/tail/lizard/fake, +/obj/item/organ/horns, +/obj/item/organ/antennae, +/obj/item/organ/frills, +/obj/item/organ/spines, +/obj/item/organ/tail/lizard/fake, /obj/structure/closet/crate/freezer, /turf/open/floor/plating, /area/station/maintenance/department/science) diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm index bbcad398257..cdf903f0345 100644 --- a/_maps/shuttles/emergency_birdshot.dmm +++ b/_maps/shuttles/emergency_birdshot.dmm @@ -904,14 +904,14 @@ /obj/structure/closet/crate/freezer, /obj/item/bodypart/arm/left/moth, /obj/item/bodypart/arm/left/moth, -/obj/item/organ/external/tail/lizard, +/obj/item/organ/tail/lizard, /obj/item/bodypart/leg/right/digitigrade, /obj/item/bodypart/leg/right/digitigrade, /obj/item/bodypart/leg/left/fly, /obj/item/bodypart/leg/left/fly, /obj/item/bodypart/arm/right, /obj/item/bodypart/arm/right, -/obj/item/organ/external/tail/cat, +/obj/item/organ/tail/cat, /obj/effect/turf_decal/stripes/white/end{ dir = 1 }, diff --git a/_maps/shuttles/emergency_zeta.dmm b/_maps/shuttles/emergency_zeta.dmm index 720a906a767..ba22cc26301 100644 --- a/_maps/shuttles/emergency_zeta.dmm +++ b/_maps/shuttles/emergency_zeta.dmm @@ -198,10 +198,10 @@ /area/shuttle/escape/brig) "IM" = ( /obj/structure/table/abductor, -/obj/item/organ/internal/heart/gland/access{ +/obj/item/organ/heart/gland/access{ pixel_x = 10 }, -/obj/item/organ/internal/heart/gland/egg, +/obj/item/organ/heart/gland/egg, /turf/open/floor/plating/abductor, /area/shuttle/escape) "JK" = ( diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin_cyborg_mothership.dmm index 4e0fff656e8..7864564eab1 100644 --- a/_maps/shuttles/ruin_cyborg_mothership.dmm +++ b/_maps/shuttles/ruin_cyborg_mothership.dmm @@ -480,7 +480,7 @@ /turf/open/floor/circuit/airless, /area/shuttle/ruin/cyborg_mothership) "yQ" = ( -/obj/item/organ/internal/brain, +/obj/item/organ/brain, /obj/structure/cable, /turf/open/floor/circuit/airless, /area/shuttle/ruin/cyborg_mothership) diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm index 0192f6aa118..b895743cab0 100644 --- a/_maps/shuttles/whiteship_kilo.dmm +++ b/_maps/shuttles/whiteship_kilo.dmm @@ -100,7 +100,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/item/organ/internal/stomach, +/obj/item/organ/stomach, /obj/item/trash/syndi_cakes, /obj/effect/turf_decal/tile/bar{ dir = 1 diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm index 4a791a320d2..5d5acde1c35 100644 --- a/_maps/templates/lazy_templates/ninja_den.dmm +++ b/_maps/templates/lazy_templates/ninja_den.dmm @@ -1696,8 +1696,8 @@ /obj/item/reagent_containers/medigel/synthflesh, /obj/item/reagent_containers/medigel/synthflesh, /obj/item/reagent_containers/medigel/synthflesh, -/obj/item/organ/internal/heart/cybernetic/tier2, -/obj/item/organ/internal/heart/cybernetic/tier2, +/obj/item/organ/heart/cybernetic/tier2, +/obj/item/organ/heart/cybernetic/tier2, /obj/item/defibrillator, /turf/open/floor/iron/sepia, /area/centcom/central_command_areas/holding) diff --git a/_maps/virtual_domains/abductor_ship.dmm b/_maps/virtual_domains/abductor_ship.dmm index b182c50ed66..b74435a9ab1 100644 --- a/_maps/virtual_domains/abductor_ship.dmm +++ b/_maps/virtual_domains/abductor_ship.dmm @@ -63,7 +63,7 @@ /area/virtual_domain) "kl" = ( /obj/structure/table_frame/abductor, -/obj/item/organ/internal/lungs{ +/obj/item/organ/lungs{ pixel_x = 8; pixel_y = 7 }, @@ -247,7 +247,7 @@ /turf/open/floor/plating/abductor, /area/virtual_domain) "JC" = ( -/obj/item/organ/external/tail/cat, +/obj/item/organ/tail/cat, /turf/open/floor/plating/abductor, /area/virtual_domain) "JR" = ( @@ -298,7 +298,7 @@ /turf/open/floor/plating/abductor, /area/virtual_domain) "PB" = ( -/obj/item/organ/external/antennae, +/obj/item/organ/antennae, /turf/open/floor/plating/abductor, /area/virtual_domain) "Qp" = ( diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index f68641b2984..d1fff3b20ed 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -452,3 +452,9 @@ GLOBAL_LIST_INIT(heretic_path_to_color, list( #define CM_COLOR_SAT_MAX 0.7 #define CM_COLOR_LUM_MIN 0.65 #define CM_COLOR_LUM_MAX 0.75 + +// Lowest priority +#define EYE_COLOR_ORGAN_PRIORITY 1 +#define EYE_COLOR_SPECIES_PRIORITY 10 +#define EYE_COLOR_WEED_PRIORITY 20 +#define EYE_COLOR_CULT_PRIORITY 30 diff --git a/code/__DEFINES/dcs/signals/signals_mod.dm b/code/__DEFINES/dcs/signals/signals_mod.dm index 09b29c93784..58fd8ca689e 100644 --- a/code/__DEFINES/dcs/signals/signals_mod.dm +++ b/code/__DEFINES/dcs/signals/signals_mod.dm @@ -5,10 +5,12 @@ #define COMSIG_MOD_DEPLOYED "mod_deployed" /// Called when a MOD user retracts one or more of its parts. #define COMSIG_MOD_RETRACTED "mod_retracted" -/// Called when a MOD deploys a part. +/// Called when a MOD deploys a part. (mob/user, datum/mod_part/part) #define COMSIG_MOD_PART_DEPLOYED "mod_part_deployed" -/// Called when a MOD retracts a part. +/// Called when a MOD retracts a part. (mob/user, datum/mod_part/part) #define COMSIG_MOD_PART_RETRACTED "mod_part_retracted" +/// Called when a MOD seals/unseals a part. (datum/mod_part/part) +#define COMSIG_MOD_PART_SEALED "mod_part_sealed" /// Called when a MOD is finished toggling itself. #define COMSIG_MOD_TOGGLED "mod_toggled" /// Called when a MOD activation is called from toggle_activate(mob/user) diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index 53ac323b61c..2b6c1b32206 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -358,10 +358,10 @@ //called in /obj/item/tank/jetpack/proc/turn_off() : () #define COMSIG_JETPACK_DEACTIVATED "jetpack_deactivated" -//called in /obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle() : () +//called in /obj/item/organ/cyberimp/chest/thrusters/proc/toggle() : () #define COMSIG_THRUSTER_ACTIVATED "jetmodule_activated" #define THRUSTER_ACTIVATION_FAILED (1<<0) -//called in /obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle() : () +//called in /obj/item/organ/cyberimp/chest/thrusters/proc/toggle() : () #define COMSIG_THRUSTER_DEACTIVATED "jetmodule_deactivated" // /obj/item/camera signals diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 79b0546283d..baf0ef93195 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -297,7 +297,7 @@ GLOBAL_LIST_INIT(mining_suit_allowed, list( /obj/item/kinetic_crusher, /obj/item/knife, /obj/item/mining_scanner, - /obj/item/organ/internal/monster_core, + /obj/item/organ/monster_core, /obj/item/storage/bag/ore, /obj/item/pickaxe, /obj/item/resonator, diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index b6aa66a5b1e..26baf699409 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -115,7 +115,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define ismoth(A) (is_species(A, /datum/species/moth)) #define isfelinid(A) (is_species(A, /datum/species/human/felinid)) #define isethereal(A) (is_species(A, /datum/species/ethereal)) -#define isvampire(A) (is_species(A,/datum/species/vampire)) +#define isvampire(A) (is_species(A,/datum/species/human/vampire)) #define isdullahan(A) (is_species(A, /datum/species/dullahan)) #define ismonkey(A) (is_species(A, /datum/species/monkey)) #define isandroid(A) (is_species(A, /datum/species/android)) @@ -257,10 +257,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define isorgan(A) (istype(A, /obj/item/organ)) -#define isinternalorgan(A) (istype(A, /obj/item/organ/internal)) - -#define isexternalorgan(A) (istype(A, /obj/item/organ/external)) - #define isclothing(A) (istype(A, /obj/item/clothing)) #define ispickedupmob(A) (istype(A, /obj/item/clothing/head/mob_holder)) // Checks if clothing item is actually a held mob diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 08e18af74d1..bf0271ca5a9 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -25,7 +25,7 @@ // Reagent exposure methods. /// Used for splashing. #define TOUCH (1<<0) -/// Used for ingesting the reagents. Food, drinks, inhaling smoke. +/// Used for ingesting the reagents. Food and drinks. #define INGEST (1<<1) /// Used by foams, sprays, and blob attacks. #define VAPOR (1<<2) @@ -35,6 +35,8 @@ #define INJECT (1<<4) /// Exclusive to just plumbing. if set we use the round robin technique else we use proportional #define LINEAR (1<<5) +/// Used by smoke or inhaling from a source. Smoke and cigarettes. +#define INHALE (1<<6) /// When returned by on_mob_life(), on_mob_dead(), overdose_start() or overdose_processed(), will cause the mob to updatehealth() afterwards #define UPDATE_MOB_HEALTH 1 diff --git a/code/__DEFINES/research/anomalies.dm b/code/__DEFINES/research/anomalies.dm index 49769e8132e..c6060298fe2 100644 --- a/code/__DEFINES/research/anomalies.dm +++ b/code/__DEFINES/research/anomalies.dm @@ -26,26 +26,26 @@ GLOBAL_LIST_INIT(bioscrambler_parts_blacklist, typecacheof(list( /// Blacklist of organs which should not appear when bioscrambled. /// Either will look terrible outside of intended host, give you magical powers, are irreversible, or kill you GLOBAL_LIST_INIT(bioscrambler_organs_blacklist, typecacheof(list ( - /obj/item/organ/external/pod_hair, - /obj/item/organ/external/spines, - /obj/item/organ/external/wings, - /obj/item/organ/external/wings/functional, - /obj/item/organ/internal/alien, - /obj/item/organ/internal/brain, - /obj/item/organ/internal/body_egg, - /obj/item/organ/internal/cyberimp, - /obj/item/organ/internal/ears/dullahan, - /obj/item/organ/internal/eyes/dullahan, - /obj/item/organ/internal/heart/cursed, - /obj/item/organ/internal/heart/demon, - /obj/item/organ/internal/lungs, - /obj/item/organ/internal/monster_core, - /obj/item/organ/internal/tongue/dullahan, - /obj/item/organ/internal/vocal_cords/colossus, - /obj/item/organ/internal/zombie_infection, - /obj/item/organ/internal/empowered_borer_egg, // NOVA EDIT ADDITION - /obj/item/organ/internal/eyes/robotic, // NOVA EDIT ADDITION - /obj/item/organ/internal/eyes/night_vision/cyber, // NOVA EDIT ADDITION + /obj/item/organ/pod_hair, + /obj/item/organ/spines, + /obj/item/organ/wings, + /obj/item/organ/wings/functional, + /obj/item/organ/alien, + /obj/item/organ/brain, + /obj/item/organ/body_egg, + /obj/item/organ/cyberimp, + /obj/item/organ/ears/dullahan, + /obj/item/organ/eyes/dullahan, + /obj/item/organ/heart/cursed, + /obj/item/organ/heart/demon, + /obj/item/organ/lungs, + /obj/item/organ/monster_core, + /obj/item/organ/tongue/dullahan, + /obj/item/organ/vocal_cords/colossus, + /obj/item/organ/zombie_infection, + /obj/item/organ/empowered_borer_egg, // NOVA EDIT ADDITION + /obj/item/organ/eyes/robotic, // NOVA EDIT ADDITION + /obj/item/organ/eyes/night_vision/cyber, // NOVA EDIT ADDITION ))) /// List of body parts we can apply to people diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm index 9f0cdf853d1..0bdb104d039 100644 --- a/code/__DEFINES/surgery.dm +++ b/code/__DEFINES/surgery.dm @@ -30,9 +30,11 @@ #define ORGAN_PROMINENT (1<<11) /// An organ that is ostensibly dangerous when inside a body #define ORGAN_HAZARDOUS (1<<12) +/// This is an external organ, not an inner one. Used in several checks. +#define ORGAN_EXTERNAL (1<<13) // NOVA EDIT ADDITION START - Customization /// Synthetic organ granted by a species (for use for organ replacements between species) -#define ORGAN_SYNTHETIC_FROM_SPECIES (1<<13) +#define ORGAN_SYNTHETIC_FROM_SPECIES (1<<14) // NOVA EDIT ADDITION END /// Scarring on the right eye diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index a5b89445425..01c13a05c2d 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -619,7 +619,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // example. Through years of training/abuse, their livers have taken // a liking to those substances. Steal a sec officer's liver, eat donuts good. -// These traits are applied to /obj/item/organ/internal/liver +// These traits are applied to /obj/item/organ/liver #define TRAIT_LAW_ENFORCEMENT_METABOLISM "law_enforcement_metabolism" #define TRAIT_CULINARY_METABOLISM "culinary_metabolism" #define TRAIT_COMEDY_METABOLISM "comedy_metabolism" diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index 0045cfd111f..3552bea70cc 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -273,7 +273,7 @@ /** * Trait granted by [/mob/living/carbon/Initialize] and -* granted/removed by [/obj/item/organ/internal/tongue] +* granted/removed by [/obj/item/organ/tongue] * Used for ensuring that carbons without tongues cannot taste anything * so it is added in Initialize, and then removed when a tongue is inserted * and readded when a tongue is removed. diff --git a/code/__DEFINES/~nova_defines/signals.dm b/code/__DEFINES/~nova_defines/signals.dm index b417f8c0a31..39b2e7013b2 100644 --- a/code/__DEFINES/~nova_defines/signals.dm +++ b/code/__DEFINES/~nova_defines/signals.dm @@ -58,7 +58,7 @@ //when someone pulls back their fishing rod #define COMSIG_FINISH_FISHING "finish_fishing" -/// From /obj/item/organ/internal/stomach/after_eat(atom/edible) +/// From /obj/item/organ/stomach/after_eat(atom/edible) #define COMSIG_STOMACH_AFTER_EAT "stomach_after_eat" /// For when a Hemophage's pulsating tumor gets added to their body. diff --git a/code/__HELPERS/honkerblast.dm b/code/__HELPERS/honkerblast.dm index f49a5ca4aca..4f1f6b71dd3 100644 --- a/code/__HELPERS/honkerblast.dm +++ b/code/__HELPERS/honkerblast.dm @@ -23,7 +23,7 @@ victim.Stun(100) victim.adjust_stutter(30 SECONDS) victim.set_jitter_if_lower(1000 SECONDS) - var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS) ears?.adjustEarDamage(10, 15) to_chat(victim, "HONK") var/obj/item/clothing/shoes/victim_shoes = victim.get_item_by_slot(ITEM_SLOT_FEET) @@ -35,13 +35,13 @@ victim.Paralyze(20) victim.Stun(50) victim.set_jitter_if_lower(500 SECONDS) - var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS) ears?.adjustEarDamage(7, 10) to_chat(victim, "HONK") for(var/mob/living/carbon/victim in lightly_honked) victim.Knockdown(20) victim.set_jitter_if_lower(200 SECONDS) - var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS) ears?.adjustEarDamage(4, 5) to_chat(victim, "HONK") diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index f29ba81366c..47286c26c57 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -772,7 +772,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list( mob_occupant = occupant else if(isorgan(occupant)) - var/obj/item/organ/internal/brain/brain = occupant + var/obj/item/organ/brain/brain = occupant mob_occupant = brain.brainmob return mob_occupant diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm index aca1f97e624..5fd8f6dfa89 100644 --- a/code/_globalvars/lists/quirks.dm +++ b/code/_globalvars/lists/quirks.dm @@ -27,8 +27,8 @@ GLOBAL_LIST_INIT(part_choice_transhuman, list( "Right Arm" = /obj/item/bodypart/arm/right/robot, "Left Leg" = /obj/item/bodypart/leg/left/robot, "Right Leg" = /obj/item/bodypart/leg/right/robot, - "Robotic Voice Box" = /obj/item/organ/internal/tongue/robot, - "Flashlights for Eyes" = /obj/item/organ/internal/eyes/robotic/flashlight, + "Robotic Voice Box" = /obj/item/organ/tongue/robot, + "Flashlights for Eyes" = /obj/item/organ/eyes/robotic/flashlight, )) ///Hemiplegic Quirk diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index 6248eccd7e1..d6677a213a4 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -125,8 +125,8 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/gun/energy/alien, /obj/item/hemostat/alien, /obj/item/melee/baton/abductor, - /obj/item/organ/internal/body_egg/alien_embryo, - /obj/item/organ/internal/heart/gland, + /obj/item/organ/body_egg/alien_embryo, + /obj/item/organ/heart/gland, /obj/item/radio/headset/abductor, /obj/item/retractor/alien, /obj/item/scalpel/alien, @@ -255,10 +255,10 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/grenade/spawnergrenade/spesscarp, /obj/item/knife/carp, /obj/item/nullrod/carp, - /obj/item/organ/internal/lungs/carp, - /obj/item/organ/internal/tongue/carp, - /obj/item/organ/internal/brain/carp, - /obj/item/organ/internal/heart/carp, + /obj/item/organ/lungs/carp, + /obj/item/organ/tongue/carp, + /obj/item/organ/brain/carp, + /obj/item/organ/heart/carp, /obj/item/storage/fancy/cigarettes/cigpack_carp, /obj/item/stack/sheet/animalhide/carp, /obj/item/toy/plush/carpplushie, @@ -434,7 +434,7 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/clothing/head/costume/lizard, /obj/item/clothing/shoes/cowboy/lizard, /obj/item/food/kebab/tail, - /obj/item/organ/external/tail/lizard, + /obj/item/organ/tail/lizard, /obj/item/reagent_containers/cup/glass/bottle/lizardwine, /obj/item/toy/plush/lizard_plushie, )), @@ -476,7 +476,7 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/effect/decal/remains/human, /obj/item/clothing/suit/armor/bone, /obj/item/food/meat/slab/human/mutant/skeleton, - /obj/item/organ/internal/tongue/bone, + /obj/item/organ/tongue/bone, /obj/item/stack/sheet/bone, )), "snakes" = typecacheof(list( diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 6c1ff83cde2..7da9ea16a45 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -680,7 +680,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_LIVING_HEART" = TRAIT_LIVING_HEART, "TRAIT_USED_ORGAN" = TRAIT_USED_ORGAN, ), - /obj/item/organ/internal/liver = list( + /obj/item/organ/liver = list( "TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST, "TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM, "TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM, @@ -693,7 +693,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM, "TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM, ), - /obj/item/organ/internal/lungs = list( + /obj/item/organ/lungs = list( "TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING, ), /obj/machinery/modular_computer = list( diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 1058b1d0b40..b5488683779 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -380,7 +380,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_ROD_LAVA_USABLE" = TRAIT_ROD_LAVA_USABLE, "TRAIT_ROD_REMOVE_FISHING_DUD" = TRAIT_ROD_REMOVE_FISHING_DUD, ), - /obj/item/organ/internal/liver = list( + /obj/item/organ/liver = list( "TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST, "TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM, "TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM, @@ -392,7 +392,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM, "TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM, ), - /obj/item/organ/internal/lungs = list( + /obj/item/organ/lungs = list( "TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING, ), // NOVA EDIT ADDITION START - NOVA TRAITS diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 1b3f950edd6..5eaff57b609 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -129,7 +129,7 @@ //Gas alerts // Gas alerts are continuously thrown/cleared by: -// * /obj/item/organ/internal/lungs/proc/check_breath() +// * /obj/item/organ/lungs/proc/check_breath() // * /mob/living/carbon/check_breath() // * /mob/living/carbon/human/check_breath() // * /datum/element/atmos_requirements/proc/on_non_stasis_life() diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 4269727e3ea..bf460c97fea 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -333,7 +333,7 @@ var/obj/item/bodypart/head/head = human_mob.get_bodypart(BODY_ZONE_HEAD) if(isnull(head)) blocked_slots |= ITEM_SLOT_HEAD|ITEM_SLOT_EARS|ITEM_SLOT_EYES|ITEM_SLOT_MASK - var/obj/item/organ/internal/eyes/eyes = human_mob.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = human_mob.get_organ_slot(ORGAN_SLOT_EYES) if(eyes?.no_glasses) blocked_slots |= ITEM_SLOT_EYES if(human_mob.bodyshape & BODYSHAPE_DIGITIGRADE) diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm index 4641e4f0e50..da9eba3fde7 100644 --- a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm +++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm @@ -863,7 +863,7 @@ candidates = living_players for(var/mob/living/carbon/human/candidate in candidates) if( \ - !candidate.get_organ_by_type(/obj/item/organ/internal/brain) \ + !candidate.get_organ_by_type(/obj/item/organ/brain) \ || candidate.mind.has_antag_datum(/datum/antagonist/obsessed) \ || candidate.stat == DEAD \ || !(ROLE_OBSESSED in candidate.client?.prefs?.be_special) \ diff --git a/code/datums/actions/items/toggles.dm b/code/datums/actions/items/toggles.dm index f450b96fc2a..efd9725691a 100644 --- a/code/datums/actions/items/toggles.dm +++ b/code/datums/actions/items/toggles.dm @@ -90,7 +90,7 @@ . = ..() if(!.) return - var/obj/item/organ/internal/cyberimp/eyes/hud/hud_implant = target + var/obj/item/organ/cyberimp/eyes/hud/hud_implant = target hud_implant.toggle_hud(owner) /datum/action/item_action/wheelys diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm index 9d459f3160c..0074d206983 100644 --- a/code/datums/ai/monkey/monkey_controller.dm +++ b/code/datums/ai/monkey/monkey_controller.dm @@ -123,8 +123,8 @@ have ways of interacting with a specific mob and control it. /datum/ai_controller/monkey/proc/set_trip_mode(mode = TRUE) var/mob/living/carbon/regressed_monkey = pawn var/brain = regressed_monkey.get_organ_slot(ORGAN_SLOT_BRAIN) - if(istype(brain, /obj/item/organ/internal/brain/primate)) // In case we are a monkey AI in a human brain by who was previously controlled by a client but it now not by some marvel - var/obj/item/organ/internal/brain/primate/monkeybrain = brain + if(istype(brain, /obj/item/organ/brain/primate)) // In case we are a monkey AI in a human brain by who was previously controlled by a client but it now not by some marvel + var/obj/item/organ/brain/primate/monkeybrain = brain monkeybrain.tripping = mode ///re-used behavior pattern by monkeys for finding a weapon diff --git a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm index df7123e6f19..e6d6ae24f31 100644 --- a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm @@ -8,6 +8,11 @@ ///The color this organ draws with. Updated by bodypart/inherit_color() var/draw_color + ///Override of the color of the organ, from dye sprays + var/dye_color + ///Can this bodypart overlay be dyed? + var/dyable = FALSE + ///Where does this organ inherit its color from? var/color_source = ORGAN_COLOR_INHERIT ///Take on the dna/preference from whoever we're gonna be inserted in @@ -93,7 +98,7 @@ return appearance /datum/bodypart_overlay/mutant/color_image(image/overlay, layer, obj/item/bodypart/limb) - overlay.color = sprite_datum.color_src ? draw_color : null + overlay.color = sprite_datum.color_src ? (dye_color || draw_color) : null /datum/bodypart_overlay/mutant/added_to_limb(obj/item/bodypart/limb) inherit_color(limb) @@ -113,7 +118,7 @@ . = list() . += "[get_base_icon_state()]" . += "[feature_key]" - . += "[draw_color]" + . += "[dye_color || draw_color]" return . ///Return a dumb glob list for this specific feature (called from parse_sprite) @@ -173,3 +178,10 @@ else CRASH("External organ [type] had fetch_sprite_datum called with a null accessory name!") +///From dye sprays. Set the dye_color (draw_color override) of this organ to a new value. +/datum/bodypart_overlay/mutant/proc/set_dye_color(new_color, obj/item/organ/organ) + dye_color = new_color + if(organ.owner) + organ.owner.update_body_parts() + else + organ.bodypart_owner?.update_icon_dropped() diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm index 8f0f8cfb048..422ad075ea0 100644 --- a/code/datums/brain_damage/brain_trauma.dm +++ b/code/datums/brain_damage/brain_trauma.dm @@ -8,7 +8,7 @@ var/desc = "A trauma caused by brain damage, which causes issues to the patient." var/scan_desc = "generic brain trauma" //description when detected by a health scanner var/mob/living/carbon/owner //the poor bastard - var/obj/item/organ/internal/brain/brain //the poor bastard's brain + var/obj/item/organ/brain/brain //the poor bastard's brain var/gain_text = span_notice("You feel traumatized.") var/lose_text = span_notice("You no longer feel traumatized.") var/can_gain = TRUE diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index 198b6746317..195d33c4b4b 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -191,7 +191,7 @@ var/codeword var/objective -/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/internal/brain/B, _permanent, _codeword, _objective) +/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/brain/B, _permanent, _codeword, _objective) ..() if(_codeword) codeword = _codeword diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm index f1aa865e0cb..0602624dbb8 100644 --- a/code/datums/components/crafting/entertainment.dm +++ b/code/datums/components/crafting/entertainment.dm @@ -22,7 +22,7 @@ result = /obj/item/toy/plush/moth reqs = list( /obj/item/stack/sheet/animalhide/mothroach = 1, - /obj/item/organ/internal/heart = 1, + /obj/item/organ/heart = 1, /obj/item/stack/sheet/cloth = 3, ) category = CAT_ENTERTAINMENT diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm index d6d3c178e9b..205d30da456 100644 --- a/code/datums/components/crafting/equipment.dm +++ b/code/datums/components/crafting/equipment.dm @@ -156,7 +156,7 @@ /datum/crafting_recipe/flashlight_eyes name = "Flashlight Eyes" - result = /obj/item/organ/internal/eyes/robotic/flashlight + result = /obj/item/organ/eyes/robotic/flashlight time = 10 reqs = list( /obj/item/flashlight = 2, diff --git a/code/datums/components/crafting/melee_weapon.dm b/code/datums/components/crafting/melee_weapon.dm index b8771257cfa..a8805c56577 100644 --- a/code/datums/components/crafting/melee_weapon.dm +++ b/code/datums/components/crafting/melee_weapon.dm @@ -37,10 +37,10 @@ name = "Tail Club" result = /obj/item/tailclub reqs = list( - /obj/item/organ/external/tail/lizard = 1, + /obj/item/organ/tail/lizard = 1, /obj/item/stack/sheet/iron = 1, ) - blacklist = list(/obj/item/organ/external/tail/lizard/fake) + blacklist = list(/obj/item/organ/tail/lizard/fake) time = 4 SECONDS category = CAT_WEAPON_MELEE @@ -63,10 +63,10 @@ name = "Liz O' Nine Tails" result = /obj/item/melee/chainofcommand/tailwhip reqs = list( - /obj/item/organ/external/tail/lizard = 1, + /obj/item/organ/tail/lizard = 1, /obj/item/stack/cable_coil = 1, ) - blacklist = list(/obj/item/organ/external/tail/lizard/fake) + blacklist = list(/obj/item/organ/tail/lizard/fake) time = 4 SECONDS category = CAT_WEAPON_MELEE @@ -74,7 +74,7 @@ name = "Cat O' Nine Tails" result = /obj/item/melee/chainofcommand/tailwhip/kitty reqs = list( - /obj/item/organ/external/tail/cat = 1, + /obj/item/organ/tail/cat = 1, /obj/item/stack/cable_coil = 1, ) time = 4 SECONDS diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm index 09c8455a77b..21abedb8b47 100644 --- a/code/datums/components/crafting/robot.dm +++ b/code/datums/components/crafting/robot.dm @@ -184,7 +184,7 @@ /obj/item/stack/cable_coil = 5, /obj/item/stack/rods = 2, /obj/item/stack/sheet/glass = 1, - /obj/item/organ/internal/heart/ethereal = 1, + /obj/item/organ/heart/ethereal = 1, ) category = CAT_ROBOT diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/tailoring.dm index 2196a88325a..45c021aca6c 100644 --- a/code/datums/components/crafting/tailoring.dm +++ b/code/datums/components/crafting/tailoring.dm @@ -253,7 +253,7 @@ name = "Lizard Cloche Hat" result = /obj/item/clothing/head/costume/lizard time = 1 SECONDS - reqs = list(/obj/item/organ/external/tail/lizard = 1) + reqs = list(/obj/item/organ/tail/lizard = 1) category = CAT_CLOTHING /datum/crafting_recipe/lizardhat_alternate @@ -268,8 +268,8 @@ result = /obj/item/clothing/head/costume/kitty/genuine time = 1 SECONDS reqs = list( - /obj/item/organ/external/tail/cat = 1, - /obj/item/organ/internal/ears/cat = 1, + /obj/item/organ/tail/cat = 1, + /obj/item/organ/ears/cat = 1, ) category = CAT_CLOTHING diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm index 554e3d611ba..053782f6ed6 100644 --- a/code/datums/components/cult_ritual_item.dm +++ b/code/datums/components/cult_ritual_item.dm @@ -162,7 +162,7 @@ // For carbonss we also want to clear out the stomach of any holywater if(iscarbon(target)) var/mob/living/carbon/carbon_target = target - var/obj/item/organ/internal/stomach/belly = carbon_target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = carbon_target.get_organ_slot(ORGAN_SLOT_STOMACH) if(belly) holy_to_unholy += belly.reagents.get_reagent_amount(/datum/reagent/water/holywater) belly.reagents.del_reagent(/datum/reagent/water/holywater) diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index cfd04fc3ac2..62e446f5a28 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -212,10 +212,12 @@ Behavior that's still missing from this component that original food items had t for(var/rid in reagents) var/amount = reagents[rid] - if(length(tastes) && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin)) - owner.reagents.add_reagent(rid, amount, tastes.Copy(), added_purity = reagent_purity) - else - owner.reagents.add_reagent(rid, amount, added_purity = reagent_purity) + if(length(tastes) && ispath(rid, /datum/reagent/consumable/nutriment)) + var/datum/reagent/consumable/nutriment/nid = rid + if(initial(nid.carry_food_tastes)) + owner.reagents.add_reagent(rid, amount, tastes.Copy(), added_purity = reagent_purity) + continue + owner.reagents.add_reagent(rid, amount, added_purity = reagent_purity) /datum/component/edible/proc/examine(datum/source, mob/user, list/examine_list) SIGNAL_HANDLER @@ -282,7 +284,7 @@ Behavior that's still missing from this component that original food items had t examine_list += span_notice("It could use a little more Sodium Chloride...") if (isliving(user)) var/mob/living/living_user = user - living_user.taste(owner.reagents) + living_user.taste_container(owner.reagents) /datum/component/edible/proc/UseFromHand(obj/item/source, mob/living/M, mob/living/user) SIGNAL_HANDLER @@ -499,7 +501,7 @@ Behavior that's still missing from this component that original food items had t //Invoke the eater's stomach's after_eat callback if valid if(iscarbon(eater)) var/mob/living/carbon/carbon_eater = eater - var/obj/item/organ/internal/stomach/stomach = carbon_eater.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/stomach = carbon_eater.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) stomach.after_eat(owner) @@ -686,7 +688,7 @@ Behavior that's still missing from this component that original food items had t bitecount++ . = COMPONENT_CANCEL_ATTACK_CHAIN - doggy.taste(food.reagents) // why should carbons get all the fun? + doggy.taste_container(food.reagents) // why should carbons get all the fun? if(bitecount >= 5) var/satisfaction_text = pick("burps from enjoyment.", "yaps for more!", "woofs twice.", "looks at the area where \the [food] was.") doggy.manual_emote(satisfaction_text) diff --git a/code/datums/components/ghostrole_on_revive.dm b/code/datums/components/ghostrole_on_revive.dm index cc09d99643b..d9638b2d46a 100644 --- a/code/datums/components/ghostrole_on_revive.dm +++ b/code/datums/components/ghostrole_on_revive.dm @@ -17,10 +17,10 @@ prepare_mob(parent) return - if(!istype(parent, /obj/item/organ/internal/brain)) + if(!istype(parent, /obj/item/organ/brain)) return COMPONENT_INCOMPATIBLE - var/obj/item/organ/internal/brain/brein = parent + var/obj/item/organ/brain/brein = parent if(brein.owner) prepare_mob(brein.owner) else @@ -34,7 +34,7 @@ if(iscarbon(liver)) var/mob/living/carbon/carbon = liver - var/obj/item/organ/brain = carbon.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain = carbon.get_organ_by_type(/obj/item/organ/brain) if(brain) RegisterSignal(brain, COMSIG_ORGAN_REMOVED, PROC_REF(on_remove)) @@ -57,7 +57,7 @@ RegisterSignal(brein, COMSIG_ORGAN_IMPLANTED, PROC_REF(prepare_mob_from_brain)) UnregisterSignal(brein, COMSIG_ORGAN_REMOVED) -/datum/component/ghostrole_on_revive/proc/prepare_mob_from_brain(obj/item/organ/internal/brain/brein, mob/living/owner) +/datum/component/ghostrole_on_revive/proc/prepare_mob_from_brain(obj/item/organ/brain/brein, mob/living/owner) SIGNAL_HANDLER UnregisterSignal(brein, COMSIG_ORGAN_IMPLANTED) @@ -111,8 +111,8 @@ var/mob/living/living if(isliving(parent)) living = parent - else if(istype(parent, /obj/item/organ/internal/brain)) - var/obj/item/organ/internal/brain/brain = parent + else if(istype(parent, /obj/item/organ/brain)) + var/obj/item/organ/brain/brain = parent living = brain.owner living?.med_hud_set_status() diff --git a/code/datums/components/heart_eater.dm b/code/datums/components/heart_eater.dm index 722c4b1636d..122716b3be5 100644 --- a/code/datums/components/heart_eater.dm +++ b/code/datums/components/heart_eater.dm @@ -44,7 +44,7 @@ /datum/component/heart_eater/proc/prepare_species(mob/living/carbon/human/eater) if(eater.get_liked_foodtypes() & GORE) return - var/obj/item/organ/internal/tongue/eater_tongue = eater.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/eater_tongue = eater.get_organ_slot(ORGAN_SLOT_TONGUE) if(!eater_tongue) return eater_tongue.disliked_foodtypes &= ~GORE @@ -62,10 +62,10 @@ if(get_area(eater) == GLOB.areas_by_type[/area/centcom/wizard_station]) return - if(!istype(what_we_ate, /obj/item/organ/internal/heart)) + if(!istype(what_we_ate, /obj/item/organ/heart)) return - var/obj/item/organ/internal/heart/we_ate_heart = what_we_ate - var/obj/item/organ/internal/heart/previous_heart = last_heart_we_ate?.resolve() + var/obj/item/organ/heart/we_ate_heart = what_we_ate + var/obj/item/organ/heart/previous_heart = last_heart_we_ate?.resolve() if(we_ate_heart == previous_heart) return if (!HAS_TRAIT(we_ate_heart, TRAIT_USED_ORGAN)) diff --git a/code/datums/components/ling_decoy_brain.dm b/code/datums/components/ling_decoy_brain.dm index 917e8f2fbbd..d6368aeee0e 100644 --- a/code/datums/components/ling_decoy_brain.dm +++ b/code/datums/components/ling_decoy_brain.dm @@ -6,7 +6,7 @@ VAR_FINAL/datum/action/changeling/mmi_talk/talk_action /datum/component/ling_decoy_brain/Initialize(datum/antagonist/changeling/ling) - if(!istype(parent, /obj/item/organ/internal/brain)) + if(!istype(parent, /obj/item/organ/brain)) return COMPONENT_INCOMPATIBLE if(isnull(ling)) stack_trace("[type] instantiated without a changeling to link to.") @@ -22,13 +22,13 @@ return ..() /datum/component/ling_decoy_brain/RegisterWithParent() - var/obj/item/organ/internal/brain/ling_brain = parent + var/obj/item/organ/brain/ling_brain = parent ling_brain.organ_flags &= ~ORGAN_VITAL ling_brain.decoy_override = TRUE RegisterSignal(ling_brain, COMSIG_ATOM_ENTERING, PROC_REF(entered_mmi)) /datum/component/ling_decoy_brain/UnregisterFromParent() - var/obj/item/organ/internal/brain/ling_brain = parent + var/obj/item/organ/brain/ling_brain = parent ling_brain.organ_flags |= ORGAN_VITAL ling_brain.decoy_override = FALSE UnregisterSignal(ling_brain, COMSIG_ATOM_ENTERING, PROC_REF(entered_mmi)) @@ -38,7 +38,7 @@ * * Unfortunately this is hooked on Entering rather than its own dedicated MMI signal becuase MMI code is a fuck */ -/datum/component/ling_decoy_brain/proc/entered_mmi(obj/item/organ/internal/brain/source, atom/entering, atom/old_loc, ...) +/datum/component/ling_decoy_brain/proc/entered_mmi(obj/item/organ/brain/source, atom/entering, atom/old_loc, ...) SIGNAL_HANDLER var/mob/living/the_real_ling = parent_ling.owner.current diff --git a/code/datums/components/manual_blinking.dm b/code/datums/components/manual_blinking.dm index 67229a8b85f..f7d7d65e5d1 100644 --- a/code/datums/components/manual_blinking.dm +++ b/code/datums/components/manual_blinking.dm @@ -1,7 +1,7 @@ /datum/component/manual_blinking dupe_mode = COMPONENT_DUPE_UNIQUE - var/obj/item/organ/internal/eyes/E + var/obj/item/organ/eyes/E var/warn_grace = FALSE var/warn_dying = FALSE var/last_blink @@ -69,18 +69,18 @@ /datum/component/manual_blinking/proc/check_added_organ(mob/who_cares, obj/item/organ/O) SIGNAL_HANDLER - var/obj/item/organ/internal/eyes/new_eyes = O + var/obj/item/organ/eyes/new_eyes = O - if(istype(new_eyes,/obj/item/organ/internal/eyes)) + if(istype(new_eyes,/obj/item/organ/eyes)) E = new_eyes START_PROCESSING(SSdcs, src) /datum/component/manual_blinking/proc/check_removed_organ(mob/who_cares, obj/item/organ/O) SIGNAL_HANDLER - var/obj/item/organ/internal/eyes/bye_beyes = O // oh come on, that's pretty good + var/obj/item/organ/eyes/bye_beyes = O // oh come on, that's pretty good - if(istype(bye_beyes, /obj/item/organ/internal/eyes)) + if(istype(bye_beyes, /obj/item/organ/eyes)) E = null STOP_PROCESSING(SSdcs, src) diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm index d8d4fea07d9..8e5f096766a 100644 --- a/code/datums/components/manual_breathing.dm +++ b/code/datums/components/manual_breathing.dm @@ -1,7 +1,7 @@ /datum/component/manual_breathing dupe_mode = COMPONENT_DUPE_UNIQUE - var/obj/item/organ/internal/lungs/L + var/obj/item/organ/lungs/L var/warn_grace = FALSE var/warn_dying = FALSE var/last_breath @@ -71,18 +71,18 @@ /datum/component/manual_breathing/proc/check_added_organ(mob/who_cares, obj/item/organ/O) SIGNAL_HANDLER - var/obj/item/organ/internal/eyes/new_lungs = O + var/obj/item/organ/eyes/new_lungs = O - if(istype(new_lungs,/obj/item/organ/internal/lungs)) + if(istype(new_lungs,/obj/item/organ/lungs)) L = new_lungs START_PROCESSING(SSdcs, src) /datum/component/manual_breathing/proc/check_removed_organ(mob/who_cares, obj/item/organ/O) SIGNAL_HANDLER - var/obj/item/organ/internal/lungs/old_lungs = O + var/obj/item/organ/lungs/old_lungs = O - if(istype(old_lungs, /obj/item/organ/internal/lungs)) + if(istype(old_lungs, /obj/item/organ/lungs)) L = null STOP_PROCESSING(SSdcs, src) diff --git a/code/datums/components/manual_heart.dm b/code/datums/components/manual_heart.dm index 09448acfc67..d8d74854900 100644 --- a/code/datums/components/manual_heart.dm +++ b/code/datums/components/manual_heart.dm @@ -56,7 +56,7 @@ pump_action.Grant(parent) var/mob/living/carbon/carbon_parent = parent - var/obj/item/organ/internal/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART) if(parent_heart && !HAS_TRAIT(carbon_parent, TRAIT_NOBLOOD) && carbon_parent.stat != DEAD) START_PROCESSING(SSdcs, src) COOLDOWN_START(src, heart_timer, pump_delay) @@ -126,7 +126,7 @@ /datum/component/manual_heart/proc/check_added_organ(mob/organ_owner, obj/item/organ/new_organ) SIGNAL_HANDLER - var/obj/item/organ/internal/heart/new_heart = new_organ + var/obj/item/organ/heart/new_heart = new_organ if(!istype(new_heart) || !check_valid()) return @@ -141,7 +141,7 @@ /datum/component/manual_heart/proc/check_removed_organ(mob/organ_owner, obj/item/organ/removed_organ) SIGNAL_HANDLER - var/obj/item/organ/internal/heart/removed_heart = removed_organ + var/obj/item/organ/heart/removed_heart = removed_organ if(istype(removed_heart)) pump_action.build_all_button_icons(UPDATE_BUTTON_STATUS) @@ -150,7 +150,7 @@ ///Helper proc to check if processing can be restarted. /datum/component/manual_heart/proc/check_valid() var/mob/living/carbon/carbon_parent = parent - var/obj/item/organ/internal/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART) return !isnull(parent_heart) && !HAS_TRAIT(carbon_parent, TRAIT_NOBLOOD) && carbon_parent.stat != DEAD ///Action to pump your heart. Cooldown will always be set to 1 second less than the pump delay. @@ -171,7 +171,7 @@ var/mob/living/carbon/heart_haver = owner if(!istype(heart_haver) || HAS_TRAIT(heart_haver, TRAIT_NOBLOOD) || heart_haver.stat == DEAD) return FALSE - var/obj/item/organ/internal/heart/heart_havers_heart = heart_haver.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart_havers_heart = heart_haver.get_organ_slot(ORGAN_SLOT_HEART) if(isnull(heart_havers_heart)) return FALSE return ..() diff --git a/code/datums/components/phylactery.dm b/code/datums/components/phylactery.dm index 572f816b5ad..9c96416f800 100644 --- a/code/datums/components/phylactery.dm +++ b/code/datums/components/phylactery.dm @@ -169,7 +169,7 @@ var/mob/living/carbon/human/lich = new(parent_turf) ADD_TRAIT(lich, TRAIT_NO_SOUL, LICH_TRAIT) - var/obj/item/organ/internal/brain/new_lich_brain = lich.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/new_lich_brain = lich.get_organ_slot(ORGAN_SLOT_BRAIN) if(new_lich_brain) // Prevent MMI cheese new_lich_brain.organ_flags &= ~ORGAN_VITAL new_lich_brain.decoy_override = TRUE @@ -201,7 +201,7 @@ var/mob/living/carbon/carbon_body = corpse for(var/obj/item/organ/to_drop as anything in carbon_body.organs) // Skip the brain - it can disappear, we don't need it anymore - if(istype(to_drop, /obj/item/organ/internal/brain)) + if(istype(to_drop, /obj/item/organ/brain)) continue // For the rest, drop all the organs onto the floor (for style) diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index fe723e4e804..8b6f744f144 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -329,7 +329,7 @@ TEXT_WEST = list(REGULAR_OFFSET, REGULAR_SIDE_OFFSET) ) if (ride_check_flags & RIDING_TAUR) - var/obj/item/organ/external/taur_body/taur_body = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/taur_body = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) return taur_body.get_riding_offset(oversized = HAS_TRAIT(H, TRAIT_OVERSIZED)) // NOVA EDIT ADDITION END diff --git a/code/datums/components/sign_language.dm b/code/datums/components/sign_language.dm index 054a4de4af0..478de762afc 100644 --- a/code/datums/components/sign_language.dm +++ b/code/datums/components/sign_language.dm @@ -75,7 +75,7 @@ SIGNAL_HANDLER var/mob/living/carbon/carbon_parent = parent - var/obj/item/organ/internal/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE) if(tongue) tongue.temp_say_mod = "signs" //this speech relies on hands, which we have our own way of garbling speech when they're occupied, so we can have this always on @@ -102,7 +102,7 @@ SIGNAL_HANDLER var/mob/living/carbon/carbon_parent = parent - var/obj/item/organ/internal/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE) if(tongue) tongue.temp_say_mod = "" REMOVE_TRAIT(carbon_parent, TRAIT_SPEAKS_CLEARLY, SPEAKING_FROM_HANDS) @@ -128,9 +128,9 @@ /datum/component/sign_language/proc/on_added_organ(mob/living/source, obj/item/organ/new_organ) SIGNAL_HANDLER - if(!istype(new_organ, /obj/item/organ/internal/tongue)) + if(!istype(new_organ, /obj/item/organ/tongue)) return - var/obj/item/organ/internal/tongue/new_tongue = new_organ + var/obj/item/organ/tongue/new_tongue = new_organ new_tongue.temp_say_mod = "signs" /// Signal proc for [COMSIG_MOB_TRY_SPEECH] @@ -238,7 +238,7 @@ return SPELL_INVOCATION_ALWAYS_SUCCEED /// Signal proc for [COMSIG_LIVING_TREAT_MESSAGE] -/// Changes our message based on conditions that limit or alter our ability to communicate +/// Changes our message based on conditions that limit or alter our ability to communicate /datum/component/sign_language/proc/on_treat_living_message(atom/movable/source, list/message_args) SIGNAL_HANDLER diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index afd8cce49e8..ca1bb82ace7 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -46,7 +46,7 @@ else if(isstructure(parent)) RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(use_squeak)) - if(istype(parent, /obj/item/organ/internal/liver)) + if(istype(parent, /obj/item/organ/liver)) // Liver squeaking is depending on them functioning like a clown's liver RegisterSignal(parent, SIGNAL_REMOVETRAIT(TRAIT_COMEDY_METABOLISM), PROC_REF(on_comedy_metabolism_removal)) diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm index 53a0797c2e1..4dac194c158 100644 --- a/code/datums/components/supermatter_crystal.dm +++ b/code/datums/components/supermatter_crystal.dm @@ -130,7 +130,7 @@ ) return - var/obj/item/organ/internal/tongue/licking_tongue = user.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/licking_tongue = user.get_organ_slot(ORGAN_SLOT_TONGUE) if(licking_tongue) dust_mob(source, user, span_danger("As [user] hesitantly leans in and licks [atom_source] everything goes silent before [user.p_their()] body starts to glow and burst into flames before flashing to ash!"), diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index 9df4c57d328..a4652d354a5 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -399,13 +399,13 @@ if(HAS_TRAIT(tackle_target, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)) // riot armor and such defense_mod += 5 - var/obj/item/organ/external/tail/lizard/el_tail = tackle_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/lizard/el_tail = tackle_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(HAS_TRAIT(tackle_target, TRAIT_TACKLING_TAILED_DEFENDER) && !el_tail) defense_mod -= 1 if(el_tail && (el_tail.wag_flags & WAG_WAGGING)) // lizard tail wagging is robust and can swat away assailants! defense_mod += 1 - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = tackle_target.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = tackle_target.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) defense_mod += potential_spine.strength_bonus @@ -434,14 +434,14 @@ attack_mod += 2 if(HAS_TRAIT(sacker, TRAIT_TACKLING_WINGED_ATTACKER)) - var/obj/item/organ/external/wings/moth/sacker_moth_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + var/obj/item/organ/wings/moth/sacker_moth_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) if(!sacker_moth_wing || sacker_moth_wing.burnt) attack_mod -= 2 - var/obj/item/organ/external/wings/sacker_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + var/obj/item/organ/wings/sacker_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) if(sacker_wing) attack_mod += 2 - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = sacker.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = sacker.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) attack_mod += potential_spine.strength_bonus @@ -508,7 +508,7 @@ if(HAS_TRAIT(user, TRAIT_HEAD_INJURY_BLOCKED)) oopsie_mod -= 6 - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) // Can't snap that spine if it's made of metal. + var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) // Can't snap that spine if it's made of metal. if(istype(potential_spine)) oopsie_mod -= potential_spine.strength_bonus diff --git a/code/datums/components/vision_hurting.dm b/code/datums/components/vision_hurting.dm index acf2d186bb4..925395f3d39 100644 --- a/code/datums/components/vision_hurting.dm +++ b/code/datums/components/vision_hurting.dm @@ -16,7 +16,7 @@ for(var/mob/living/carbon/viewer in viewers(parent)) if(viewer.is_blind() || viewer.get_eye_protection() >= damage_per_second) continue - var/obj/item/organ/internal/eyes/burning_orbs = locate() in viewer.organs + var/obj/item/organ/eyes/burning_orbs = locate() in viewer.organs if(!burning_orbs) continue burning_orbs.apply_organ_damage(damage_per_second * seconds_per_tick) diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm index c93d94023df..bf096a9fb4a 100644 --- a/code/datums/diseases/advance/symptoms/deafness.dm +++ b/code/datums/diseases/advance/symptoms/deafness.dm @@ -45,7 +45,7 @@ return var/mob/living/carbon/infected_mob = advanced_disease.affected_mob - var/obj/item/organ/internal/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS) switch(advanced_disease.stage) if(3, 4) diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 79c4909d277..2848ec484b3 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -95,13 +95,13 @@ switch(advanced_disease.stage) if(4, 5) if(advanced_disease.has_required_infectious_organ(infected_mob, ORGAN_SLOT_EARS)) - var/obj/item/organ/internal/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS) ears.adjustEarDamage(-4, -4) if(!advanced_disease.has_required_infectious_organ(infected_mob, ORGAN_SLOT_EYES)) return - var/obj/item/organ/internal/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES) infected_mob.adjust_temp_blindness(-4 SECONDS) infected_mob.adjust_eye_blur(-4 SECONDS) diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index e53faf5bac5..cc9e70a2421 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -42,7 +42,7 @@ return var/mob/living/carbon/infected_mob = source_disease.affected_mob - var/obj/item/organ/internal/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES) switch(source_disease.stage) if(1, 2) diff --git a/code/datums/diseases/chronic_illness.dm b/code/datums/diseases/chronic_illness.dm index fcb27ed9434..6ef3874d1ff 100644 --- a/code/datums/diseases/chronic_illness.dm +++ b/code/datums/diseases/chronic_illness.dm @@ -112,7 +112,7 @@ if(affected_mob.stat == CONSCIOUS) affected_mob.visible_message(span_danger("[affected_mob] clutches at [affected_mob.p_their()] chest as if [affected_mob.p_their()] heart is stopping!"), \ span_userdanger("You feel a horrible pain as your heart is replaced with one from another dimension!")) - var/obj/item/organ/internal/heart/cursed/cheart = new /obj/item/organ/internal/heart/cursed() + var/obj/item/organ/heart/cursed/cheart = new /obj/item/organ/heart/cursed() cheart.replace_into(affected_mob) playsound(affected_mob, 'sound/effects/hallucinations/far_noise.ogg', 50, 1) update_stage(1) diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm index aab0fcded1d..f7348c38cb8 100644 --- a/code/datums/diseases/gastrolisis.dm +++ b/code/datums/diseases/gastrolisis.dm @@ -37,9 +37,9 @@ if(isopenturf(OT)) OT.MakeSlippery(TURF_WET_LUBE, 100) if(4) - var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes/snail) in affected_mob.organs + var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes/snail) in affected_mob.organs if(!eyes && SPT_PROB(2.5, seconds_per_tick)) - var/obj/item/organ/internal/eyes/snail/new_eyes = new() + var/obj/item/organ/eyes/snail/new_eyes = new() new_eyes.Insert(affected_mob) affected_mob.visible_message(span_warning("[affected_mob]'s eyes fall out, with snail eyes taking its place!"), \ span_userdanger("You scream in pain as your eyes are pushed out by your new snail eyes!")) @@ -57,9 +57,9 @@ affected_mob.emote("scream") return - var/obj/item/organ/internal/tongue/tongue = locate(/obj/item/organ/internal/tongue/snail) in affected_mob.organs + var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in affected_mob.organs if(!tongue && SPT_PROB(2.5, seconds_per_tick)) - var/obj/item/organ/internal/tongue/snail/new_tongue = new() + var/obj/item/organ/tongue/snail/new_tongue = new() new_tongue.Insert(affected_mob) to_chat(affected_mob, span_userdanger("You feel your speech slow down...")) return @@ -84,13 +84,13 @@ . = ..() if(affected_mob && !is_species(affected_mob, /datum/species/snail)) //undo all the snail fuckening var/mob/living/carbon/human/H = affected_mob - var/obj/item/organ/internal/tongue/tongue = locate(/obj/item/organ/internal/tongue/snail) in H.organs + var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in H.organs if(tongue) - var/obj/item/organ/internal/tongue/new_tongue = new H.dna.species.mutanttongue () + var/obj/item/organ/tongue/new_tongue = new H.dna.species.mutanttongue () new_tongue.Insert(H) - var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes/snail) in H.organs + var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes/snail) in H.organs if(eyes) - var/obj/item/organ/internal/eyes/new_eyes = new H.dna.species.mutanteyes () + var/obj/item/organ/eyes/new_eyes = new H.dna.species.mutanteyes () new_eyes.Insert(H) var/obj/item/storage/backpack/bag = H.get_item_by_slot(ITEM_SLOT_BACK) if(istype(bag, /obj/item/storage/backpack/snail)) diff --git a/code/datums/diseases/parasitic_infection.dm b/code/datums/diseases/parasitic_infection.dm index 64bb59f01fd..53b61266271 100644 --- a/code/datums/diseases/parasitic_infection.dm +++ b/code/datums/diseases/parasitic_infection.dm @@ -43,7 +43,7 @@ to_chat(affected_mob, span_warning("You feel much, MUCH lighter!")) affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 20) // disease code already checks if the liver exists otherwise it is cured - var/obj/item/organ/internal/liver/affected_liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/affected_liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) affected_liver.Remove(affected_mob) affected_liver.forceMove(get_turf(affected_mob)) cure() diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 15e70d3792b..9145106d6e0 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -999,7 +999,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) /mob/living/carbon/human/proc/something_horrible_mindmelt() if(!is_blind()) - var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes) in organs + var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes) in organs if(!eyes) return eyes.Remove(src) diff --git a/code/datums/elements/climbable.dm b/code/datums/elements/climbable.dm index 5700ca3bc2e..eb3bc611b29 100644 --- a/code/datums/elements/climbable.dm +++ b/code/datums/elements/climbable.dm @@ -62,8 +62,19 @@ climbed_thing.add_fingerprint(user) user.visible_message(span_warning("[user] starts climbing onto [climbed_thing]."), \ span_notice("You start climbing onto [climbed_thing]...")) + // Time in deciseoncds it takes to complete the climb do_after() var/adjusted_climb_time = climb_time + // Time in deciseonds that the mob is stunned after climbing successfully. var/adjusted_climb_stun = climb_stun + // Our climbers fitness level, which removes some climb time and speeds up our climbing do_after, assuming they worked out + var/fitness_level = user.mind?.get_skill_level(/datum/skill/athletics) - 1 + adjusted_climb_time = clamp(adjusted_climb_time - fitness_level, 1, climb_time) //Here we adjust the number of deciseconds we shave off per level of fitness, with a minimum of 1 decisecond and a maximum of climb_time (just in case) + + var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) + if(istype(potential_spine)) + adjusted_climb_time *= potential_spine.athletics_boost_multiplier + adjusted_climb_stun *= potential_spine.athletics_boost_multiplier + if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //climbing takes twice as long without help from the hands. adjusted_climb_time *= 2 if(isalien(user)) @@ -88,6 +99,7 @@ if(istype(buckle_target)) if(buckle_target.is_buckle_possible(user)) buckle_target.buckle_mob(user) + user.mind?.adjust_experience(/datum/skill/athletics, 5) //Get a bit fitter with every climb. else to_chat(user, span_warning("You fail to climb onto [climbed_thing].")) LAZYREMOVEASSOC(current_climbers, climbed_thing, user) diff --git a/code/datums/elements/corrupted_organ.dm b/code/datums/elements/corrupted_organ.dm index 504c6851e00..fda892887ca 100644 --- a/code/datums/elements/corrupted_organ.dm +++ b/code/datums/elements/corrupted_organ.dm @@ -2,9 +2,9 @@ /// Mostly just does something spooky when it is removed /datum/element/corrupted_organ -/datum/element/corrupted_organ/Attach(datum/target) +/datum/element/corrupted_organ/Attach(obj/item/organ/target) . = ..() - if (!isinternalorgan(target)) + if (!istype(target) || (target.organ_flags & ORGAN_EXTERNAL)) return ELEMENT_INCOMPATIBLE RegisterSignal(target, COMSIG_ORGAN_SURGICALLY_REMOVED, PROC_REF(on_removed)) diff --git a/code/datums/elements/cult_eyes.dm b/code/datums/elements/cult_eyes.dm index 3e685419836..68d70a47092 100644 --- a/code/datums/elements/cult_eyes.dm +++ b/code/datums/elements/cult_eyes.dm @@ -26,13 +26,11 @@ return ADD_TRAIT(target, TRAIT_UNNATURAL_RED_GLOWY_EYES, CULT_TRAIT) - if (ishuman(target)) - var/mob/living/carbon/human/human_parent = target - human_parent.eye_color_left = BLOODCULT_EYE - human_parent.eye_color_right = BLOODCULT_EYE - human_parent.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK) - human_parent.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK) - human_parent.update_body() + if (!ishuman(target)) + return + var/mob/living/carbon/human/human_parent = target + human_parent.add_eye_color(BLOODCULT_EYE, EYE_COLOR_CULT_PRIORITY) + human_parent.update_body() /** * Detach proc @@ -43,10 +41,7 @@ REMOVE_TRAIT(target, TRAIT_UNNATURAL_RED_GLOWY_EYES, CULT_TRAIT) if (ishuman(target)) var/mob/living/carbon/human/human_parent = target - human_parent.eye_color_left = initial(human_parent.eye_color_left) - human_parent.eye_color_right = initial(human_parent.eye_color_right) - human_parent.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK) - human_parent.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK) + human_parent.remove_eye_color(EYE_COLOR_CULT_PRIORITY) human_parent.update_body() UnregisterSignal(target, list(COMSIG_CHANGELING_TRANSFORM, COMSIG_HUMAN_MONKEYIZE, COMSIG_MONKEY_HUMANIZE)) return ..() diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm index f1b34652059..ac69e8cc18e 100644 --- a/code/datums/elements/earhealing.dm +++ b/code/datums/elements/earhealing.dm @@ -26,7 +26,7 @@ /datum/element/earhealing/process(seconds_per_tick) for(var/i in user_by_item) var/mob/living/carbon/user = user_by_item[i] - var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) if(!ears || !ears.damage || (ears.organ_flags & ORGAN_FAILING) || IS_ROBOTIC_ORGAN(ears)) continue ears.deaf = max(ears.deaf - 0.25 * seconds_per_tick, (ears.damage < ears.maxHealth ? 0 : 1)) // Do not clear deafness if our ears are too damaged diff --git a/code/datums/elements/eyestab.dm b/code/datums/elements/eyestab.dm index a6757f67fb3..7821b26fab8 100644 --- a/code/datums/elements/eyestab.dm +++ b/code/datums/elements/eyestab.dm @@ -77,7 +77,7 @@ target.add_mood_event("eye_stab", /datum/mood_event/eye_stab) log_combat(user, target, "attacked", "[item.name]", "(Combat mode: [user.combat_mode ? "On" : "Off"])") - var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) if (!eyes) return diff --git a/code/datums/elements/frozen.dm b/code/datums/elements/frozen.dm index df857cdd6ef..b65d44096bd 100644 --- a/code/datums/elements/frozen.dm +++ b/code/datums/elements/frozen.dm @@ -20,11 +20,11 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0 target_obj.add_atom_colour(GLOB.freon_color_matrix, TEMPORARY_COLOUR_PRIORITY) target_obj.alpha -= 25 - if (isinternalorgan(target)) - var/obj/item/organ/internal/organ = target + if(isorgan(target)) + var/obj/item/organ/organ = target organ.organ_flags |= ORGAN_FROZEN else if (isbodypart(target)) - for(var/obj/item/organ/internal/organ in target_obj.contents) + for(var/obj/item/organ/organ in target_obj.contents) organ.organ_flags |= ORGAN_FROZEN RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) @@ -40,11 +40,11 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0 obj_source.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, GLOB.freon_color_matrix) obj_source.alpha += 25 - if (isinternalorgan(source)) - var/obj/item/organ/internal/organ = source + if (isorgan(source)) + var/obj/item/organ/organ = source organ.organ_flags &= ~ORGAN_FROZEN else if (isbodypart(source)) - for(var/obj/item/organ/internal/organ in obj_source.contents) + for(var/obj/item/organ/organ in obj_source.contents) organ.organ_flags &= ~ORGAN_FROZEN return ..() diff --git a/code/datums/elements/kneejerk.dm b/code/datums/elements/kneejerk.dm index 78c0ba7654d..52b2e00e19c 100644 --- a/code/datums/elements/kneejerk.dm +++ b/code/datums/elements/kneejerk.dm @@ -28,7 +28,7 @@ var/selected_zone = user.zone_selected var/obj/item/bodypart/leg/right = target.get_bodypart(BODY_ZONE_R_LEG) var/obj/item/bodypart/leg/left = target.get_bodypart(BODY_ZONE_L_LEG) - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!ishuman(target)) return diff --git a/code/datums/instability_meltdown.dm b/code/datums/instability_meltdown.dm index d8e6fbd77ac..4e3a82fd376 100644 --- a/code/datums/instability_meltdown.dm +++ b/code/datums/instability_meltdown.dm @@ -72,8 +72,9 @@ /datum/instability_meltdown/organ_vomit/meltdown(mob/living/carbon/human/victim) var/list/elligible_organs = list() - for(var/obj/item/organ/internal/internal_organ in victim.organs) //make sure we dont get an implant or cavity item - elligible_organs += internal_organ + for(var/obj/item/organ/organ as anything in victim.organs) //make sure we dont get an implant or cavity item + if(!(organ.organ_flags & ORGAN_EXTERNAL)) + elligible_organs += organ victim.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 10) if(!elligible_organs.len) return diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index 9d6252855d3..e46467327ed 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -107,7 +107,7 @@ if(honor_check(defender)) var/strength_bonus = HAS_TRAIT(attacker, TRAIT_STRENGTH) ? 2 : 0 //Investing into genetic strength improvements makes you a better boxer - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = attacker.get_organ_slot(ORGAN_SLOT_SPINE) //Getting a cyberspine also pushes you further than just mere meat + var/obj/item/organ/cyberimp/chest/spine/potential_spine = attacker.get_organ_slot(ORGAN_SLOT_SPINE) //Getting a cyberspine also pushes you further than just mere meat if(istype(potential_spine)) strength_bonus *= potential_spine.strength_bonus diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index ce8b8bfdea8..816dd1698ab 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -583,7 +583,7 @@ explosion(owner, light_impact_range = 2, adminlog = TRUE, explosion_cause = src) for(var/mob/living/carbon/human/splashed in view(2, owner)) - var/obj/item/organ/internal/eyes/eyes = splashed.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = splashed.get_organ_slot(ORGAN_SLOT_EYES) if(eyes) to_chat(splashed, span_userdanger("You are blinded by a shower of blood!")) eyes.apply_organ_damage(5) @@ -611,7 +611,7 @@ if(.)//cant add return TRUE - var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN) if(brain) brain.Remove(owner, special = TRUE, movement_flags = NO_ID_TRANSFER) brain.zone = BODY_ZONE_CHEST @@ -636,7 +636,7 @@ if(!successful) stack_trace("HARS mutation head regeneration failed! (usually caused by headless syndrome having a head)") return TRUE - var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN) if(brain) brain.Remove(owner, special = TRUE, movement_flags = NO_ID_TRANSFER) brain.zone = initial(brain.zone) diff --git a/code/datums/mutations/tongue_spike.dm b/code/datums/mutations/tongue_spike.dm index d5db738213f..c6a48a32a14 100644 --- a/code/datums/mutations/tongue_spike.dm +++ b/code/datums/mutations/tongue_spike.dm @@ -30,7 +30,7 @@ to_chat(cast_on, span_notice("You concentrate really hard, but nothing happens.")) return - var/obj/item/organ/internal/tongue/to_fire = locate() in cast_on.organs + var/obj/item/organ/tongue/to_fire = locate() in cast_on.organs if(!to_fire) to_chat(cast_on, span_notice("You don't have a tongue to shoot!")) return diff --git a/code/datums/quirks/negative_quirks/addict.dm b/code/datums/quirks/negative_quirks/addict.dm index 5eb88795bdc..62262dc3bf7 100644 --- a/code/datums/quirks/negative_quirks/addict.dm +++ b/code/datums/quirks/negative_quirks/addict.dm @@ -145,15 +145,15 @@ quirk_holder.add_mob_memory(/datum/memory/key/quirk_smoker, protagonist = quirk_holder, preferred_brand = initial(drug_container_type.name)) // smoker lungs have 25% less health and healing var/mob/living/carbon/carbon_holder = quirk_holder - var/obj/item/organ/internal/lungs/smoker_lungs = null - var/obj/item/organ/internal/lungs/old_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/smoker_lungs = null + var/obj/item/organ/lungs/old_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS) if(old_lungs && IS_ORGANIC_ORGAN(old_lungs)) if(isplasmaman(carbon_holder)) - smoker_lungs = /obj/item/organ/internal/lungs/plasmaman/plasmaman_smoker + smoker_lungs = /obj/item/organ/lungs/plasmaman/plasmaman_smoker else if(isethereal(carbon_holder)) - smoker_lungs = /obj/item/organ/internal/lungs/ethereal/ethereal_smoker + smoker_lungs = /obj/item/organ/lungs/ethereal/ethereal_smoker else - smoker_lungs = /obj/item/organ/internal/lungs/smoker_lungs + smoker_lungs = /obj/item/organ/lungs/smoker_lungs if(!isnull(smoker_lungs)) smoker_lungs = new smoker_lungs smoker_lungs.Insert(carbon_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) @@ -217,7 +217,7 @@ quirk_holder.add_mob_memory(/datum/memory/key/quirk_alcoholic, protagonist = quirk_holder, preferred_brandy = initial(favorite_alcohol.name)) // alcoholic livers have 25% less health and healing - var/obj/item/organ/internal/liver/alcohol_liver = quirk_holder.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/alcohol_liver = quirk_holder.get_organ_slot(ORGAN_SLOT_LIVER) if(alcohol_liver && IS_ORGANIC_ORGAN(alcohol_liver)) // robotic livers aren't affected alcohol_liver.maxHealth = alcohol_liver.maxHealth * 0.75 alcohol_liver.healing_factor = alcohol_liver.healing_factor * 0.75 diff --git a/code/datums/quirks/negative_quirks/photophobia.dm b/code/datums/quirks/negative_quirks/photophobia.dm index ea9ef428a50..89be1c82676 100644 --- a/code/datums/quirks/negative_quirks/photophobia.dm +++ b/code/datums/quirks/negative_quirks/photophobia.dm @@ -27,23 +27,23 @@ COMSIG_CARBON_LOSE_ORGAN, COMSIG_MOVABLE_MOVED,)) quirk_holder.clear_mood_event(MOOD_CATEGORY_PHOTOPHOBIA) - var/obj/item/organ/internal/eyes/normal_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/normal_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) if(istype(normal_eyes)) normal_eyes.flash_protect = initial(normal_eyes.flash_protect) -/datum/quirk/photophobia/proc/check_eyes(obj/item/organ/internal/eyes/sensitive_eyes) +/datum/quirk/photophobia/proc/check_eyes(obj/item/organ/eyes/sensitive_eyes) SIGNAL_HANDLER if(!istype(sensitive_eyes)) return update_eyes(sensitive_eyes) -/datum/quirk/photophobia/proc/update_eyes(obj/item/organ/internal/eyes/target_eyes) +/datum/quirk/photophobia/proc/update_eyes(obj/item/organ/eyes/target_eyes) if(!istype(target_eyes)) return target_eyes.flash_protect = max(target_eyes.flash_protect - severity, FLASH_PROTECTION_HYPER_SENSITIVE) // NOVA EDIT CHANGE - ORIGINAL: target_eyes.flash_protect = max(target_eyes.flash_protect - 1, FLASH_PROTECTION_HYPER_SENSITIVE) target_eyes.refresh() // NOVA EDIT ADDITION -/datum/quirk/photophobia/proc/restore_eyes(obj/item/organ/internal/eyes/normal_eyes) +/datum/quirk/photophobia/proc/restore_eyes(obj/item/organ/eyes/normal_eyes) SIGNAL_HANDLER if(!istype(normal_eyes)) return diff --git a/code/datums/quirks/negative_quirks/prosthetic_organ.dm b/code/datums/quirks/negative_quirks/prosthetic_organ.dm index 4a377699b40..2b0f20b0d9f 100644 --- a/code/datums/quirks/negative_quirks/prosthetic_organ.dm +++ b/code/datums/quirks/negative_quirks/prosthetic_organ.dm @@ -46,16 +46,16 @@ var/obj/item/organ/prosthetic switch(organ_slot) if(ORGAN_SLOT_HEART) - prosthetic = new /obj/item/organ/internal/heart/cybernetic/surplus + prosthetic = new /obj/item/organ/heart/cybernetic/surplus slot_string = "heart" if(ORGAN_SLOT_LUNGS) - prosthetic = new /obj/item/organ/internal/lungs/cybernetic/surplus + prosthetic = new /obj/item/organ/lungs/cybernetic/surplus slot_string = "lungs" if(ORGAN_SLOT_LIVER) - prosthetic = new /obj/item/organ/internal/liver/cybernetic/surplus + prosthetic = new /obj/item/organ/liver/cybernetic/surplus slot_string = "liver" if(ORGAN_SLOT_STOMACH) - prosthetic = new /obj/item/organ/internal/stomach/cybernetic/surplus + prosthetic = new /obj/item/organ/stomach/cybernetic/surplus slot_string = "stomach" medical_record_text = "During physical examination, patient was found to have a low-budget prosthetic [slot_string]. \ Removal of these organs is known to be dangerous to the patient as well as the practitioner." diff --git a/code/datums/quirks/negative_quirks/scarred_eye.dm b/code/datums/quirks/negative_quirks/scarred_eye.dm index 49628545cfa..11b3f16f8aa 100644 --- a/code/datums/quirks/negative_quirks/scarred_eye.dm +++ b/code/datums/quirks/negative_quirks/scarred_eye.dm @@ -35,7 +35,7 @@ /datum/quirk/item_quirk/scarred_eye/add(client/client_source) var/mob/living/carbon/human/human_owner = quirk_holder - var/obj/item/organ/internal/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES) if (isnull(eyes)) return @@ -57,7 +57,7 @@ /datum/quirk/item_quirk/scarred_eye/remove() var/mob/living/carbon/human/human_owner = quirk_holder - var/obj/item/organ/internal/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES) if (!isnull(eyes)) eyes.fix_scar(RIGHT_EYE_SCAR) eyes.fix_scar(LEFT_EYE_SCAR) diff --git a/code/datums/quirks/negative_quirks/tin_man.dm b/code/datums/quirks/negative_quirks/tin_man.dm index e6d411bc772..0afd8874bed 100644 --- a/code/datums/quirks/negative_quirks/tin_man.dm +++ b/code/datums/quirks/negative_quirks/tin_man.dm @@ -11,10 +11,10 @@ /datum/quirk/tin_man/add_unique(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder var/static/list/organ_slots = list( - ORGAN_SLOT_HEART = /obj/item/organ/internal/heart/cybernetic/surplus, - ORGAN_SLOT_LUNGS = /obj/item/organ/internal/lungs/cybernetic/surplus, - ORGAN_SLOT_LIVER = /obj/item/organ/internal/liver/cybernetic/surplus, - ORGAN_SLOT_STOMACH = /obj/item/organ/internal/stomach/cybernetic/surplus, + ORGAN_SLOT_HEART = /obj/item/organ/heart/cybernetic/surplus, + ORGAN_SLOT_LUNGS = /obj/item/organ/lungs/cybernetic/surplus, + ORGAN_SLOT_LIVER = /obj/item/organ/liver/cybernetic/surplus, + ORGAN_SLOT_STOMACH = /obj/item/organ/stomach/cybernetic/surplus, ) var/list/possible_organ_slots = organ_slots.Copy() if(HAS_TRAIT(human_holder, TRAIT_NOBLOOD)) diff --git a/code/datums/quirks/neutral_quirks/deviant_tastes.dm b/code/datums/quirks/neutral_quirks/deviant_tastes.dm index 566b469c7a7..5be181f96b5 100644 --- a/code/datums/quirks/neutral_quirks/deviant_tastes.dm +++ b/code/datums/quirks/neutral_quirks/deviant_tastes.dm @@ -9,7 +9,7 @@ mail_goodies = list(/obj/item/food/urinalcake, /obj/item/food/badrecipe) // Mhhhmmm yummy /datum/quirk/deviant_tastes/add(client/client_source) - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return var/liked_foodtypes = tongue.liked_foodtypes @@ -17,7 +17,7 @@ tongue.disliked_foodtypes = liked_foodtypes /datum/quirk/deviant_tastes/remove() - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return tongue.liked_foodtypes = initial(tongue.liked_foodtypes) diff --git a/code/datums/quirks/neutral_quirks/gamer.dm b/code/datums/quirks/neutral_quirks/gamer.dm index 0ab2e780480..9055b09ce7f 100644 --- a/code/datums/quirks/neutral_quirks/gamer.dm +++ b/code/datums/quirks/neutral_quirks/gamer.dm @@ -13,7 +13,7 @@ var/gaming_withdrawal_timer = TIMER_ID_NULL /datum/quirk/gamer/add(client/client_source) - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(tongue) // Gamer diet tongue.liked_foodtypes = JUNKFOOD @@ -26,7 +26,7 @@ gaming_withdrawal_timer = addtimer(CALLBACK(src, PROC_REF(enter_withdrawal)), GAMING_WITHDRAWAL_TIME, TIMER_STOPPABLE) /datum/quirk/gamer/remove() - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(tongue) tongue.liked_foodtypes = initial(tongue.liked_foodtypes) UnregisterSignal(quirk_holder, COMSIG_MOB_WON_VIDEOGAME) diff --git a/code/datums/quirks/neutral_quirks/heretochromatic.dm b/code/datums/quirks/neutral_quirks/heretochromatic.dm index 311cbf66868..96982b4089a 100644 --- a/code/datums/quirks/neutral_quirks/heretochromatic.dm +++ b/code/datums/quirks/neutral_quirks/heretochromatic.dm @@ -22,12 +22,11 @@ human_holder.eye_color_right = color human_holder.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK) - var/obj/item/organ/internal/eyes/eyes_of_the_holder = quirk_holder.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes_of_the_holder = quirk_holder.get_organ_by_type(/obj/item/organ/eyes) if(!eyes_of_the_holder) return eyes_of_the_holder.eye_color_right = color - eyes_of_the_holder.old_eye_color_right = color eyes_of_the_holder.refresh() if(was_not_hetero) @@ -39,7 +38,7 @@ human_holder.eye_color_right = human_holder.eye_color_left UnregisterSignal(human_holder, COMSIG_CARBON_LOSE_ORGAN) -/datum/quirk/heterochromatic/proc/check_eye_removal(datum/source, obj/item/organ/internal/eyes/removed) +/datum/quirk/heterochromatic/proc/check_eye_removal(datum/source, obj/item/organ/eyes/removed) SIGNAL_HANDLER if(!istype(removed)) diff --git a/code/datums/quirks/neutral_quirks/pineapple_hater.dm b/code/datums/quirks/neutral_quirks/pineapple_hater.dm index f17eb4224ec..858963e0a36 100644 --- a/code/datums/quirks/neutral_quirks/pineapple_hater.dm +++ b/code/datums/quirks/neutral_quirks/pineapple_hater.dm @@ -15,13 +15,13 @@ ) /datum/quirk/pineapple_hater/add(client/client_source) - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return tongue.disliked_foodtypes |= PINEAPPLE /datum/quirk/pineapple_hater/remove() - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return tongue.disliked_foodtypes = initial(tongue.disliked_foodtypes) diff --git a/code/datums/quirks/neutral_quirks/pineapple_liker.dm b/code/datums/quirks/neutral_quirks/pineapple_liker.dm index c342e14769c..d2de14a0e81 100644 --- a/code/datums/quirks/neutral_quirks/pineapple_liker.dm +++ b/code/datums/quirks/neutral_quirks/pineapple_liker.dm @@ -9,13 +9,13 @@ mail_goodies = list(/obj/item/food/pizzaslice/pineapple) /datum/quirk/pineapple_liker/add(client/client_source) - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return tongue.liked_foodtypes |= PINEAPPLE /datum/quirk/pineapple_liker/remove() - var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return tongue.liked_foodtypes = initial(tongue.liked_foodtypes) diff --git a/code/datums/quirks/positive_quirks/chip_connector.dm b/code/datums/quirks/positive_quirks/chip_connector.dm index c12809bbfd2..6fcc5bf9d31 100644 --- a/code/datums/quirks/positive_quirks/chip_connector.dm +++ b/code/datums/quirks/positive_quirks/chip_connector.dm @@ -7,7 +7,7 @@ lose_text = span_danger("You don't feel so CONNECTED anymore.") medical_record_text = "Patient has a cybernetic implant on their back of their head that lets them install and remove skillchips at will. Gross." mail_goodies = list() - var/obj/item/organ/internal/cyberimp/brain/connector/connector + var/obj/item/organ/cyberimp/brain/connector/connector /datum/quirk/chip_connector/New() . = ..() diff --git a/code/datums/quirks/positive_quirks/chipped.dm b/code/datums/quirks/positive_quirks/chipped.dm index 30c226c1300..7f43fc07b5b 100644 --- a/code/datums/quirks/positive_quirks/chipped.dm +++ b/code/datums/quirks/positive_quirks/chipped.dm @@ -42,7 +42,7 @@ quirk_holder_carbon.implant_skillchip(installed_chip, force = TRUE) installed_chip.try_activate_skillchip(silent = FALSE, force = TRUE) - var/obj/item/organ/internal/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN) itchy_timer = addtimer(CALLBACK(src, PROC_REF(cause_itchy), itchy_brain), rand(5 SECONDS, 10 MINUTES)) // they get The Itch from a poor quality install every so often /datum/quirk/chipped/remove() @@ -50,7 +50,7 @@ deltimer(itchy_timer) . = ..() -/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/internal/brain/itchy_brain) +/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/brain/itchy_brain) itchy_brain.apply_organ_damage(rand(1, 5), maximum = itchy_brain.maxHealth * 0.3) to_chat(itchy_brain.owner, span_warning("Your [itchy_brain] itches.")) diff --git a/code/datums/quirks/positive_quirks/friendly.dm b/code/datums/quirks/positive_quirks/friendly.dm index 943bc2c4b84..26b42f554f9 100644 --- a/code/datums/quirks/positive_quirks/friendly.dm +++ b/code/datums/quirks/positive_quirks/friendly.dm @@ -12,12 +12,12 @@ /datum/quirk/friendly/add_unique(client/client_source) var/mob/living/carbon/human/human_quirkholder = quirk_holder - var/obj/item/organ/internal/heart/holder_heart = human_quirkholder.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/holder_heart = human_quirkholder.get_organ_slot(ORGAN_SLOT_HEART) if(isnull(holder_heart) || isnull(holder_heart.reagents)) return holder_heart.reagents.maximum_volume = 20 // We have a bigger heart full of love! holder_heart.reagents.add_reagent(/datum/reagent/love, 2.5) // Like, physically bigger. - holder_heart.reagents.add_reagent(/datum/reagent/consumable/nutriment, 5) + holder_heart.reagents.add_reagent(/datum/reagent/consumable/nutriment/organ_tissue, 5) holder_heart.transform = holder_heart.transform.Scale(1.5) diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 3598bd764ca..fadcbb85709 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -64,7 +64,7 @@ /datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language) if(iscarbon(user)) var/mob/living/carbon/C = user - var/obj/item/organ/internal/vocal_cords/V = C.get_organ_slot(ORGAN_SLOT_VOICE) + var/obj/item/organ/vocal_cords/V = C.get_organ_slot(ORGAN_SLOT_VOICE) if(V?.can_speak_with()) V.handle_speech(message) //message V.speak_with(message) //action diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index 8e3c7e55616..c1a928fa6cd 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -258,54 +258,54 @@ trait_to_give = STATION_TRAIT_CYBERNETIC_REVOLUTION /// List of all job types with the cybernetics they should receive. var/static/list/job_to_cybernetic = list( - /datum/job/assistant = /obj/item/organ/internal/heart/cybernetic, //real cardiac - /datum/job/atmospheric_technician = /obj/item/organ/internal/cyberimp/mouth/breathing_tube, - /datum/job/bartender = /obj/item/organ/internal/liver/cybernetic/tier3, - /datum/job/bitrunner = /obj/item/organ/internal/eyes/robotic/thermals, - /datum/job/botanist = /obj/item/organ/internal/cyberimp/chest/nutriment, - /datum/job/captain = /obj/item/organ/internal/heart/cybernetic/tier3, - /datum/job/cargo_technician = /obj/item/organ/internal/stomach/cybernetic/tier2, - /datum/job/chaplain = /obj/item/organ/internal/cyberimp/brain/anti_drop, - /datum/job/chemist = /obj/item/organ/internal/liver/cybernetic/tier2, - /datum/job/chief_engineer = /obj/item/organ/internal/cyberimp/chest/thrusters, - /datum/job/chief_medical_officer = /obj/item/organ/internal/cyberimp/chest/reviver, - /datum/job/clown = /obj/item/organ/internal/cyberimp/brain/anti_stun, //HONK! - /datum/job/cook = /obj/item/organ/internal/cyberimp/chest/nutriment/plus, - /datum/job/coroner = /obj/item/organ/internal/tongue/bone, //hes got a bone to pick with you - /datum/job/curator = /obj/item/organ/internal/cyberimp/brain/connector, - /datum/job/detective = /obj/item/organ/internal/lungs/cybernetic/tier3, - /datum/job/doctor = /obj/item/organ/internal/cyberimp/arm/surgery, - /datum/job/geneticist = /obj/item/organ/internal/fly, //we don't care about implants, we have cancer. - /datum/job/head_of_personnel = /obj/item/organ/internal/eyes/robotic, - /datum/job/head_of_security = /obj/item/organ/internal/eyes/robotic/thermals, - /datum/job/human_ai = /obj/item/organ/internal/brain/cybernetic, - /datum/job/janitor = /obj/item/organ/internal/eyes/robotic/xray, - /datum/job/lawyer = /obj/item/organ/internal/heart/cybernetic/tier2, - /datum/job/mime = /obj/item/organ/internal/tongue/robot, //... - /datum/job/paramedic = /obj/item/organ/internal/cyberimp/eyes/hud/medical, - /datum/job/prisoner = /obj/item/organ/internal/eyes/robotic/shield, - /datum/job/psychologist = /obj/item/organ/internal/ears/cybernetic/whisper, - /datum/job/pun_pun = /obj/item/organ/internal/cyberimp/arm/strongarm, - /datum/job/quartermaster = /obj/item/organ/internal/stomach/cybernetic/tier3, - /datum/job/research_director = /obj/item/organ/internal/cyberimp/bci, - /datum/job/roboticist = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic, - /datum/job/scientist = /obj/item/organ/internal/ears/cybernetic, - /datum/job/security_officer = /obj/item/organ/internal/cyberimp/arm/flash, - /datum/job/shaft_miner = /obj/item/organ/internal/monster_core/rush_gland, - /datum/job/station_engineer = /obj/item/organ/internal/cyberimp/arm/toolset, - /datum/job/warden = /obj/item/organ/internal/cyberimp/eyes/hud/security, + /datum/job/assistant = /obj/item/organ/heart/cybernetic, //real cardiac + /datum/job/atmospheric_technician = /obj/item/organ/cyberimp/mouth/breathing_tube, + /datum/job/bartender = /obj/item/organ/liver/cybernetic/tier3, + /datum/job/bitrunner = /obj/item/organ/eyes/robotic/thermals, + /datum/job/botanist = /obj/item/organ/cyberimp/chest/nutriment, + /datum/job/captain = /obj/item/organ/heart/cybernetic/tier3, + /datum/job/cargo_technician = /obj/item/organ/stomach/cybernetic/tier2, + /datum/job/chaplain = /obj/item/organ/cyberimp/brain/anti_drop, + /datum/job/chemist = /obj/item/organ/liver/cybernetic/tier2, + /datum/job/chief_engineer = /obj/item/organ/cyberimp/chest/thrusters, + /datum/job/chief_medical_officer = /obj/item/organ/cyberimp/chest/reviver, + /datum/job/clown = /obj/item/organ/cyberimp/brain/anti_stun, //HONK! + /datum/job/cook = /obj/item/organ/cyberimp/chest/nutriment/plus, + /datum/job/coroner = /obj/item/organ/tongue/bone, //hes got a bone to pick with you + /datum/job/curator = /obj/item/organ/cyberimp/brain/connector, + /datum/job/detective = /obj/item/organ/lungs/cybernetic/tier3, + /datum/job/doctor = /obj/item/organ/cyberimp/arm/surgery, + /datum/job/geneticist = /obj/item/organ/fly, //we don't care about implants, we have cancer. + /datum/job/head_of_personnel = /obj/item/organ/eyes/robotic, + /datum/job/head_of_security = /obj/item/organ/eyes/robotic/thermals, + /datum/job/human_ai = /obj/item/organ/brain/cybernetic, + /datum/job/janitor = /obj/item/organ/eyes/robotic/xray, + /datum/job/lawyer = /obj/item/organ/heart/cybernetic/tier2, + /datum/job/mime = /obj/item/organ/tongue/robot, //... + /datum/job/paramedic = /obj/item/organ/cyberimp/eyes/hud/medical, + /datum/job/prisoner = /obj/item/organ/eyes/robotic/shield, + /datum/job/psychologist = /obj/item/organ/ears/cybernetic/whisper, + /datum/job/pun_pun = /obj/item/organ/cyberimp/arm/strongarm, + /datum/job/quartermaster = /obj/item/organ/stomach/cybernetic/tier3, + /datum/job/research_director = /obj/item/organ/cyberimp/bci, + /datum/job/roboticist = /obj/item/organ/cyberimp/eyes/hud/diagnostic, + /datum/job/scientist = /obj/item/organ/ears/cybernetic, + /datum/job/security_officer = /obj/item/organ/cyberimp/arm/flash, + /datum/job/shaft_miner = /obj/item/organ/monster_core/rush_gland, + /datum/job/station_engineer = /obj/item/organ/cyberimp/arm/toolset, + /datum/job/warden = /obj/item/organ/cyberimp/eyes/hud/security, // NOVA EDIT ADDITION START - MODULAR JOBS - /datum/job/virologist = /obj/item/organ/internal/lungs/cybernetic/tier2, - /datum/job/blueshield = /obj/item/organ/internal/cyberimp/brain/anti_stun, - /datum/job/nanotrasen_consultant = /obj/item/organ/internal/heart/cybernetic/tier3, - /datum/job/barber = /obj/item/organ/internal/ears/cybernetic/whisper, - /datum/job/corrections_officer = /obj/item/organ/internal/cyberimp/arm/flash, - /datum/job/orderly = /obj/item/organ/internal/cyberimp/brain/anti_drop, - /datum/job/science_guard = /obj/item/organ/internal/cyberimp/arm/flash, - /datum/job/customs_agent = /obj/item/organ/internal/cyberimp/eyes/hud/security, - /datum/job/bouncer = /obj/item/organ/internal/cyberimp/arm/strongarm, - /datum/job/engineering_guard = /obj/item/organ/internal/cyberimp/arm/flash, - /datum/job/telecomms_specialist = /obj/item/organ/internal/ears/cybernetic/xray, + /datum/job/virologist = /obj/item/organ/lungs/cybernetic/tier2, + /datum/job/blueshield = /obj/item/organ/cyberimp/brain/anti_stun, + /datum/job/nanotrasen_consultant = /obj/item/organ/heart/cybernetic/tier3, + /datum/job/barber = /obj/item/organ/ears/cybernetic/whisper, + /datum/job/corrections_officer = /obj/item/organ/cyberimp/arm/flash, + /datum/job/orderly = /obj/item/organ/cyberimp/brain/anti_drop, + /datum/job/science_guard = /obj/item/organ/cyberimp/arm/flash, + /datum/job/customs_agent = /obj/item/organ/cyberimp/eyes/hud/security, + /datum/job/bouncer = /obj/item/organ/cyberimp/arm/strongarm, + /datum/job/engineering_guard = /obj/item/organ/cyberimp/arm/flash, + /datum/job/telecomms_specialist = /obj/item/organ/ears/cybernetic/xray, // NOVA EDIT END ) @@ -325,7 +325,7 @@ var/mob/living/silicon/ai/ai = spawned ai.eyeobj.relay_speech = TRUE //surveillance upgrade. the ai gets cybernetics too. return - var/obj/item/organ/internal/cybernetic = new cybernetic_type() + var/obj/item/organ/cybernetic = new cybernetic_type() cybernetic.Insert(spawned, special = TRUE, movement_flags = DELETE_IF_REPLACED) /datum/station_trait/luxury_escape_pods diff --git a/code/datums/status_effects/debuffs/drunk.dm b/code/datums/status_effects/debuffs/drunk.dm index 928841f1049..e0f61d91584 100644 --- a/code/datums/status_effects/debuffs/drunk.dm +++ b/code/datums/status_effects/debuffs/drunk.dm @@ -138,7 +138,7 @@ // Handle the Ballmer Peak. // If our owner is a scientist (has the trait "TRAIT_BALLMER_SCIENTIST"), there's a 5% chance // that they'll say one of the special "ballmer message" lines, depending their drunk-ness level. - var/obj/item/organ/internal/liver/liver_organ = owner.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver_organ = owner.get_organ_slot(ORGAN_SLOT_LIVER) if(liver_organ && HAS_TRAIT(liver_organ, TRAIT_BALLMER_SCIENTIST) && prob(5)) if(drunk_value >= BALLMER_PEAK_LOW_END && drunk_value <= BALLMER_PEAK_HIGH_END) owner.say(pick_list_replacements(VISTA_FILE, "ballmer_good_msg"), forced = "ballmer") diff --git a/code/datums/status_effects/drug_effects.dm b/code/datums/status_effects/drug_effects.dm index 849d3cb4d1e..7e8466f3372 100644 --- a/code/datums/status_effects/drug_effects.dm +++ b/code/datums/status_effects/drug_effects.dm @@ -65,19 +65,13 @@ duration = 10 SECONDS alert_type = /atom/movable/screen/alert/status_effect/stoned status_type = STATUS_EFFECT_REFRESH - var/original_eye_color_left - var/original_eye_color_right /datum/status_effect/stoned/on_apply() if(!ishuman(owner)) return FALSE var/mob/living/carbon/human/human_owner = owner - original_eye_color_left = human_owner.eye_color_left - original_eye_color_right = human_owner.eye_color_right human_owner.add_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis) //slows you down - human_owner.eye_color_left = BLOODCULT_EYE //makes cult eyes less obvious - human_owner.eye_color_right = BLOODCULT_EYE //makes cult eyes less obvious - human_owner.update_body() //updates eye color + human_owner.add_eye_color(BLOODCULT_EYE, EYE_COLOR_WEED_PRIORITY) //makes cult eyes less obvious human_owner.add_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type) // impairs motor coordination and dilates blood vessels in eyes human_owner.add_mood_event("stoned", /datum/mood_event/stoned) //improves mood human_owner.sound_environment_override = SOUND_ENVIRONMENT_DRUGGED //not realistic but very immersive @@ -88,9 +82,7 @@ return var/mob/living/carbon/human/human_owner = owner human_owner.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis) - human_owner.eye_color_left = original_eye_color_left - human_owner.eye_color_right = original_eye_color_right - human_owner.update_body() + human_owner.remove_eye_color(EYE_COLOR_WEED_PRIORITY) human_owner.remove_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type) human_owner.clear_mood_event("stoned") human_owner.sound_environment_override = SOUND_ENVIRONMENT_NONE diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index 90f9a3c3097..d65c9fbfca3 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -547,7 +547,7 @@ if(QDELETED(human_mob)) return if(prob(1))//low chance of the alternative reality returning to monkey - var/obj/item/organ/external/tail/monkey/monkey_tail = new () + var/obj/item/organ/tail/monkey/monkey_tail = new () monkey_tail.Insert(human_mob, movement_flags = DELETE_IF_REPLACED) var/datum/species/human_species = human_mob.dna?.species if(human_species) diff --git a/code/datums/wounds/cranial_fissure.dm b/code/datums/wounds/cranial_fissure.dm index 071b6d19e70..f45aa165957 100644 --- a/code/datums/wounds/cranial_fissure.dm +++ b/code/datums/wounds/cranial_fissure.dm @@ -66,7 +66,7 @@ if (source.stat == DEAD) return - var/obj/item/organ/internal/brain/brain = source.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/brain = source.get_organ_by_type(/obj/item/organ/brain) if (isnull(brain)) return @@ -91,7 +91,7 @@ if (victim.body_position != LYING_DOWN) return FALSE - var/obj/item/organ/internal/eyes/eyes = victim.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes = victim.get_organ_by_type(/obj/item/organ/eyes) if (isnull(eyes)) victim.balloon_alert(user, "no eyes to take!") return TRUE @@ -131,9 +131,9 @@ return TRUE -/datum/wound/cranial_fissure/proc/still_has_eyes(obj/item/organ/internal/eyes/eyes) +/datum/wound/cranial_fissure/proc/still_has_eyes(obj/item/organ/eyes/eyes) PRIVATE_PROC(TRUE) - return victim?.get_organ_by_type(/obj/item/organ/internal/eyes) == eyes + return victim?.get_organ_by_type(/obj/item/organ/eyes) == eyes #undef CRANIAL_FISSURE_FILTER_DISPLACEMENT diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm index 8b5529f5112..fa357d47fe9 100644 --- a/code/datums/wounds/pierce.dm +++ b/code/datums/wounds/pierce.dm @@ -262,7 +262,7 @@ var/right_side = FALSE /datum/wound/pierce/bleed/severe/eye/apply_wound(obj/item/bodypart/limb, silent, datum/wound/old_wound, smited, attack_direction, wound_source, replacing, right_side) - var/obj/item/organ/internal/eyes/eyes = locate() in limb + var/obj/item/organ/eyes/eyes = locate() in limb if (!istype(eyes)) return FALSE . = ..() @@ -294,7 +294,7 @@ can_be_randomly_generated = FALSE /datum/wound_pregen_data/flesh_pierce/open_puncture/eye/can_be_applied_to(obj/item/bodypart/limb, list/suggested_wounding_types, datum/wound/old_wound, random_roll, duplicates_allowed, care_about_existing_wounds) - if (isnull(locate(/obj/item/organ/internal/eyes) in limb)) + if (isnull(locate(/obj/item/organ/eyes) in limb)) return FALSE return ..() diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index aaa56433b27..93d6adcd773 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -364,7 +364,7 @@ GLOBAL_LIST_EMPTY(objectives) //NOVA EDIT ADDITION var/human_check = TRUE /datum/objective/protect/check_completion() - var/obj/item/organ/internal/brain/brain_target + var/obj/item/organ/brain/brain_target if(isnull(target)) return FALSE if(human_check) diff --git a/code/game/machinery/dna_infuser/dna_infusion.dm b/code/game/machinery/dna_infuser/dna_infusion.dm index 9b85ae856e2..82e562fb7ed 100644 --- a/code/game/machinery/dna_infuser/dna_infusion.dm +++ b/code/game/machinery/dna_infuser/dna_infusion.dm @@ -67,7 +67,7 @@ if(old_organ) if((old_organ.type != new_organ) && !IS_ROBOTIC_ORGAN(old_organ)) continue // Old organ can be mutated! - else if(ispath(new_organ, /obj/item/organ/external)) + else if(new_organ::organ_flags & ORGAN_EXTERNAL) continue // External organ can be grown! // Internal organ is either missing, or is non-organic. potential_new_organs -= new_organ diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm index ff951c587c0..e69a78f132d 100644 --- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm +++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm @@ -19,10 +19,10 @@ /mob/living/basic/mining/goliath, ) output_organs = list( - /obj/item/organ/internal/brain/goliath, - /obj/item/organ/internal/eyes/night_vision/goliath, - /obj/item/organ/internal/heart/goliath, - /obj/item/organ/internal/lungs/lavaland/goliath, + /obj/item/organ/brain/goliath, + /obj/item/organ/eyes/night_vision/goliath, + /obj/item/organ/heart/goliath, + /obj/item/organ/lungs/lavaland/goliath, ) infusion_desc = "armored tendril-like" tier = DNA_MUTANT_TIER_ONE @@ -43,10 +43,10 @@ /mob/living/basic/carp, ) output_organs = list( - /obj/item/organ/internal/brain/carp, - /obj/item/organ/internal/heart/carp, - /obj/item/organ/internal/lungs/carp, - /obj/item/organ/internal/tongue/carp, + /obj/item/organ/brain/carp, + /obj/item/organ/heart/carp, + /obj/item/organ/lungs/carp, + /obj/item/organ/tongue/carp, ) infusion_desc = "nomadic" tier = DNA_MUTANT_TIER_ONE @@ -67,10 +67,10 @@ /obj/item/food/deadmouse, ) output_organs = list( - /obj/item/organ/internal/eyes/night_vision/rat, - /obj/item/organ/internal/heart/rat, - /obj/item/organ/internal/stomach/rat, - /obj/item/organ/internal/tongue/rat, + /obj/item/organ/eyes/night_vision/rat, + /obj/item/organ/heart/rat, + /obj/item/organ/stomach/rat, + /obj/item/organ/tongue/rat, ) infusion_desc = "skittish" tier = DNA_MUTANT_TIER_ONE @@ -97,10 +97,10 @@ /mob/living/basic/cockroach, ) output_organs = list( - /obj/item/organ/internal/heart/roach, - /obj/item/organ/internal/stomach/roach, - /obj/item/organ/internal/liver/roach, - /obj/item/organ/internal/appendix/roach, + /obj/item/organ/heart/roach, + /obj/item/organ/stomach/roach, + /obj/item/organ/liver/roach, + /obj/item/organ/appendix/roach, ) infusion_desc = "kafkaesque" // Gregor Samsa !! tier = DNA_MUTANT_TIER_ONE @@ -128,9 +128,9 @@ /obj/item/fish, ) output_organs = list( - /obj/item/organ/internal/lungs/fish, - /obj/item/organ/internal/stomach/fish, - /obj/item/organ/external/tail/fish, + /obj/item/organ/lungs/fish, + /obj/item/organ/stomach/fish, + /obj/item/organ/tail/fish, ) infusion_desc = "piscine" tier = DNA_MUTANT_TIER_ONE @@ -158,7 +158,7 @@ var/list/organs = ..() if(infused_from.required_fluid_type == AQUARIUM_FLUID_AIR || HAS_TRAIT(infused_from, TRAIT_FISH_AMPHIBIOUS)) - organs -= /obj/item/organ/internal/lungs/fish + organs -= /obj/item/organ/lungs/fish return organs @@ -172,7 +172,7 @@ "spit ink to blind foes", ) output_organs = list( - /obj/item/organ/internal/tongue/inky + /obj/item/organ/tongue/inky ) tier = DNA_MUTANT_TIER_ONE @@ -187,7 +187,7 @@ "drink like a fish", ) output_organs = list( - /obj/item/organ/internal/liver/fish + /obj/item/organ/liver/fish ) tier = DNA_MUTANT_TIER_ONE unreachable_effect = TRUE @@ -208,7 +208,7 @@ /mob/living/basic/crab, ) output_organs = list( - /obj/item/organ/internal/lungs/fish/amphibious, + /obj/item/organ/lungs/fish/amphibious, ) infusion_desc = "semi-aquatic" tier = DNA_MUTANT_TIER_ONE diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm index 1620607d5f0..045fa669c4f 100644 --- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm +++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm @@ -22,9 +22,9 @@ /obj/item/food/meat/slab/gondola, ) output_organs = list( - /obj/item/organ/internal/heart/gondola, - /obj/item/organ/internal/tongue/gondola, - /obj/item/organ/internal/liver/gondola, + /obj/item/organ/heart/gondola, + /obj/item/organ/tongue/gondola, + /obj/item/organ/liver/gondola, ) infusion_desc = "observant" tier = DNA_MUTANT_TIER_TWO diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm index e93cffd5143..e4d93a587f8 100644 --- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm +++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm @@ -17,12 +17,12 @@ "this is a bad idea", ) output_organs = list( - /obj/item/organ/internal/appendix/fly, - /obj/item/organ/internal/eyes/fly, - /obj/item/organ/internal/heart/fly, - /obj/item/organ/internal/lungs/fly, - /obj/item/organ/internal/stomach/fly, - /obj/item/organ/internal/tongue/fly, + /obj/item/organ/appendix/fly, + /obj/item/organ/eyes/fly, + /obj/item/organ/heart/fly, + /obj/item/organ/lungs/fly, + /obj/item/organ/stomach/fly, + /obj/item/organ/tongue/fly, ) infusion_desc = "fly-like" tier = DNA_MUTANT_TIER_ZERO @@ -41,7 +41,7 @@ /mob/living/basic/pet/fox, ) output_organs = list( - /obj/item/organ/internal/ears/fox, + /obj/item/organ/ears/fox, ) infusion_desc = "inexcusable" tier = DNA_MUTANT_TIER_ZERO @@ -61,10 +61,10 @@ /mob/living/basic/mothroach, ) output_organs = list( - /obj/item/organ/external/antennae, - /obj/item/organ/external/wings/moth, - /obj/item/organ/internal/eyes/moth, - /obj/item/organ/internal/tongue/moth, + /obj/item/organ/antennae, + /obj/item/organ/wings/moth, + /obj/item/organ/eyes/moth, + /obj/item/organ/tongue/moth, ) infusion_desc = "fluffy" tier = DNA_MUTANT_TIER_ZERO @@ -84,11 +84,11 @@ /mob/living/basic/lizard, ) output_organs = list( - /obj/item/organ/external/horns, - /obj/item/organ/external/frills, - /obj/item/organ/external/snout, - /obj/item/organ/external/tail/lizard, - /obj/item/organ/internal/tongue/lizard, + /obj/item/organ/horns, + /obj/item/organ/frills, + /obj/item/organ/snout, + /obj/item/organ/tail/lizard, + /obj/item/organ/tongue/lizard, ) infusion_desc = "scaly" tier = DNA_MUTANT_TIER_ZERO @@ -105,8 +105,8 @@ /mob/living/basic/pet/cat, ) output_organs = list( - /obj/item/organ/internal/ears/cat, - /obj/item/organ/external/tail/cat, + /obj/item/organ/ears/cat, + /obj/item/organ/tail/cat, ) infusion_desc = "domestic" tier = DNA_MUTANT_TIER_ZERO diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm index 622cafaa7bf..1e4bc41ae41 100644 --- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm @@ -15,7 +15,7 @@ ///Carp lungs! You can breathe in space! Oh... you can't breathe on the station, you need low oxygen environments. /// Inverts behavior of lungs. Bypasses suffocation due to space / lack of gas, but also allows Oxygen to suffocate. -/obj/item/organ/internal/lungs/carp +/obj/item/organ/lungs/carp name = "mutated carp-lungs" desc = "Carp DNA infused into what was once some normal lungs." // Oxygen causes suffocation. @@ -27,14 +27,14 @@ greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = CARP_COLORS -/obj/item/organ/internal/lungs/carp/Initialize(mapload) +/obj/item/organ/lungs/carp/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their neck has odd gills.", BODY_ZONE_HEAD) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) ADD_TRAIT(src, TRAIT_SPACEBREATHING, REF(src)) ///occasionally sheds carp teeth, stronger melee (bite) attacks, but you can't cover your mouth anymore. -/obj/item/organ/internal/tongue/carp +/obj/item/organ/tongue/carp name = "mutated carp-jaws" desc = "Carp DNA infused into what was once some normal teeth." @@ -45,12 +45,12 @@ greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = CARP_COLORS -/obj/item/organ/internal/tongue/carp/Initialize(mapload) +/obj/item/organ/tongue/carp/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their teeth are big and sharp.", BODY_ZONE_PRECISE_MOUTH) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) -/obj/item/organ/internal/tongue/carp/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) +/obj/item/organ/tongue/carp/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) . = ..() if(!ishuman(tongue_owner)) return @@ -60,14 +60,14 @@ var/datum/species/rec_species = human_receiver.dna.species rec_species.update_no_equip_flags(tongue_owner, rec_species.no_equip_flags | ITEM_SLOT_MASK) -/obj/item/organ/internal/tongue/carp/on_bodypart_insert(obj/item/bodypart/head) +/obj/item/organ/tongue/carp/on_bodypart_insert(obj/item/bodypart/head) . = ..() head.unarmed_damage_low = 10 head.unarmed_damage_high = 15 head.unarmed_effectiveness = 15 head.unarmed_attack_effect = ATTACK_EFFECT_BITE -/obj/item/organ/internal/tongue/carp/on_mob_remove(mob/living/carbon/tongue_owner) +/obj/item/organ/tongue/carp/on_mob_remove(mob/living/carbon/tongue_owner) . = ..() if(!ishuman(tongue_owner)) return @@ -77,14 +77,14 @@ var/datum/species/rec_species = human_receiver.dna.species rec_species.update_no_equip_flags(tongue_owner, initial(rec_species.no_equip_flags)) -/obj/item/organ/internal/tongue/carp/on_bodypart_remove(obj/item/bodypart/head) +/obj/item/organ/tongue/carp/on_bodypart_remove(obj/item/bodypart/head) . = ..() head.unarmed_damage_low = initial(head.unarmed_damage_low) head.unarmed_damage_high = initial(head.unarmed_damage_high) head.unarmed_effectiveness = initial(head.unarmed_effectiveness) head.unarmed_attack_effect = initial(head.unarmed_attack_effect) -/obj/item/organ/internal/tongue/carp/on_life(seconds_per_tick, times_fired) +/obj/item/organ/tongue/carp/on_life(seconds_per_tick, times_fired) . = ..() if(owner.stat != CONSCIOUS || !prob(0.1)) return @@ -99,7 +99,7 @@ icon_state = "carptooth" ///carp brain. you need to occasionally go to a new zlevel. think of it as... walking your dog! -/obj/item/organ/internal/brain/carp +/obj/item/organ/brain/carp name = "mutated carp-brain" desc = "Carp DNA infused into what was once a normal brain." @@ -114,35 +114,35 @@ ///how much time the timer is given var/cooldown_time = 10 MINUTES -/obj/item/organ/internal/brain/carp/Initialize(mapload) +/obj/item/organ/brain/carp/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) AddElement(/datum/element/noticable_organ, "%PRONOUN_They seem%PRONOUN_s unable to stay still.") -/obj/item/organ/internal/brain/carp/on_mob_insert(mob/living/carbon/brain_owner) +/obj/item/organ/brain/carp/on_mob_insert(mob/living/carbon/brain_owner) . = ..() cooldown_timer = addtimer(CALLBACK(src, PROC_REF(unsatisfied_nomad)), cooldown_time, TIMER_STOPPABLE|TIMER_OVERRIDE|TIMER_UNIQUE) RegisterSignal(brain_owner, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(satisfied_nomad)) //technically you could get around the mood issue by extracting and reimplanting the brain but it will be far easier to just go one z there and back -/obj/item/organ/internal/brain/carp/on_mob_remove(mob/living/carbon/brain_owner) +/obj/item/organ/brain/carp/on_mob_remove(mob/living/carbon/brain_owner) . = ..() UnregisterSignal(brain_owner, COMSIG_MOVABLE_Z_CHANGED) deltimer(cooldown_timer) -/obj/item/organ/internal/brain/carp/get_attacking_limb(mob/living/carbon/human/target) +/obj/item/organ/brain/carp/get_attacking_limb(mob/living/carbon/human/target) return owner.get_bodypart(BODY_ZONE_HEAD) -/obj/item/organ/internal/brain/carp/proc/unsatisfied_nomad() +/obj/item/organ/brain/carp/proc/unsatisfied_nomad() owner.add_mood_event("nomad", /datum/mood_event/unsatisfied_nomad) -/obj/item/organ/internal/brain/carp/proc/satisfied_nomad() +/obj/item/organ/brain/carp/proc/satisfied_nomad() SIGNAL_HANDLER owner.clear_mood_event("nomad") cooldown_timer = addtimer(CALLBACK(src, PROC_REF(unsatisfied_nomad)), cooldown_time, TIMER_STOPPABLE|TIMER_OVERRIDE|TIMER_UNIQUE) /// makes you cold resistant, but heat-weak. -/obj/item/organ/internal/heart/carp +/obj/item/organ/heart/carp name = "mutated carp-heart" desc = "Carp DNA infused into what was once a normal heart." @@ -153,7 +153,7 @@ organ_traits = list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE) -/obj/item/organ/internal/heart/carp/Initialize(mapload) +/obj/item/organ/heart/carp/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their skin has small patches of scales growing on it.", BODY_ZONE_CHEST) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) diff --git a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm index 7ac41ab28c0..aa479f1d316 100644 --- a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm @@ -40,7 +40,7 @@ else ADD_TRAIT(owner, TRAIT_GRABRESISTANCE, REF(src)) owner.add_mood_event("fish_organs_bonus", /datum/mood_event/fish_water) - if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish)) + if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish)) add_speed_buff() owner.mind?.adjust_experience(/datum/skill/fishing, SKILL_EXP_JOURNEYMAN, silent = TRUE) @@ -62,7 +62,7 @@ if(ishuman(owner)) var/mob/living/carbon/human/human = owner human.physiology.damage_resistance -= 8 - if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish)) + if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish)) remove_speed_buff() owner.mind?.adjust_experience(/datum/skill/fishing, -SKILL_EXP_JOURNEYMAN, silent = TRUE) @@ -86,11 +86,11 @@ SIGNAL_HANDLER if(HAS_TRAIT(owner, TRAIT_IS_WET)) //remove the debuffs from being dry remove_debuff() - if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish)) + if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish)) add_speed_buff() return apply_debuff() - if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish)) + if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish)) remove_speed_buff() /datum/status_effect/organ_set_bonus/fish/proc/apply_debuff() @@ -125,7 +125,7 @@ /datum/status_effect/organ_set_bonus/fish/proc/check_tail(mob/living/carbon/source, obj/item/organ/organ, special) SIGNAL_HANDLER - if(!HAS_TRAIT(owner, TRAIT_IS_WET) || !istype(organ, /obj/item/organ/external/tail/fish)) + if(!HAS_TRAIT(owner, TRAIT_IS_WET) || !istype(organ, /obj/item/organ/tail/fish)) return var/obj/item/organ/tail = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(tail != organ) @@ -152,7 +152,7 @@ ///Tail for fish DNA-infused spacemen. It provides a speed buff while in water. It's also needed for the crawl speed bonus once the threshold is reached. -/obj/item/organ/external/tail/fish +/obj/item/organ/tail/fish name = "fish tail" desc = "A severed tail from some sort of marine creature... or a fish-infused spaceman. It's smooth, faintly wet and definitely not flopping." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -180,29 +180,29 @@ /// The amount of fillets this gets processed into var/fillet_amount = 5 -/obj/item/organ/external/tail/fish/Initialize(mapload) +/obj/item/organ/tail/fish/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish) var/time_to_fillet = fillet_amount * 0.5 SECONDS AddElement(/datum/element/processable, TOOL_KNIFE, fillet_type, fillet_amount, time_to_fillet, screentip_verb = "Cut") -/obj/item/organ/external/tail/fish/on_mob_insert(mob/living/carbon/owner) +/obj/item/organ/tail/fish/on_mob_insert(mob/living/carbon/owner) . = ..() owner.AddElementTrait(TRAIT_WADDLING, type, /datum/element/waddling) RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_location)) check_location(owner, null) -/obj/item/organ/external/tail/fish/on_mob_remove(mob/living/carbon/owner) +/obj/item/organ/tail/fish/on_mob_remove(mob/living/carbon/owner) . = ..() owner.remove_traits(list(TRAIT_WADDLING, TRAIT_NO_STAGGER), type) owner.remove_movespeed_modifier(/datum/movespeed_modifier/fish_on_water) owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/fish_on_water) UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) -/obj/item/organ/external/tail/fish/get_greyscale_color_from_draw_color() +/obj/item/organ/tail/fish/get_greyscale_color_from_draw_color() set_greyscale(bodypart_overlay.draw_color) -/obj/item/organ/external/tail/fish/proc/check_location(mob/living/carbon/source, atom/movable/old_loc, dir, forced) +/obj/item/organ/tail/fish/proc/check_location(mob/living/carbon/source, atom/movable/old_loc, dir, forced) SIGNAL_HANDLER var/was_water = istype(old_loc, /turf/open/water) var/is_water = istype(source.loc, /turf/open/water) && !HAS_TRAIT(source.loc, TRAIT_TURF_IGNORE_SLOWDOWN) @@ -240,7 +240,7 @@ ///Lungs that replace the need of oxygen with water vapor or being wet -/obj/item/organ/internal/lungs/fish +/obj/item/organ/lungs/fish name = "mutated gills" desc = "Fish DNA infused on what once was a normal pair of lungs that now require spacemen to breathe water vapor, or keep themselves covered in water." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -258,7 +258,7 @@ var/has_gills = TRUE -/obj/item/organ/internal/lungs/fish/Initialize(mapload) +/obj/item/organ/lungs/fish/Initialize(mapload) . = ..() add_gas_reaction(/datum/gas/water_vapor, always = PROC_REF(breathe_water)) respiration_type |= RESPIRATION_OXYGEN //after all, we get oxygen from water @@ -269,26 +269,26 @@ AddComponent(/datum/component/bubble_icon_override, "fish", BUBBLE_ICON_PRIORITY_ORGAN) AddComponent(/datum/component/speechmod, replacements = strings("crustacean_replacement.json", "crustacean")) -/obj/item/organ/internal/lungs/fish/Destroy() +/obj/item/organ/lungs/fish/Destroy() QDEL_NULL(gills) return ..() -/obj/item/organ/internal/lungs/fish/on_bodypart_insert(obj/item/bodypart/limb) +/obj/item/organ/lungs/fish/on_bodypart_insert(obj/item/bodypart/limb) . = ..() if(gills) limb.add_bodypart_overlay(gills) -/obj/item/organ/internal/lungs/fish/on_bodypart_remove(obj/item/bodypart/limb) +/obj/item/organ/lungs/fish/on_bodypart_remove(obj/item/bodypart/limb) . = ..() if(gills) limb.remove_bodypart_overlay(gills) -/obj/item/organ/internal/lungs/fish/on_mob_remove(mob/living/carbon/owner) +/obj/item/organ/lungs/fish/on_mob_remove(mob/living/carbon/owner) . = ..() owner.clear_alert(ALERT_NOT_ENOUGH_WATER) /// Requires the spaceman to have either water vapor or be wet. -/obj/item/organ/internal/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp) +/obj/item/organ/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp) var/need_to_breathe = !HAS_TRAIT(src, TRAIT_SPACEBREATHING) && !HAS_TRAIT(breather, TRAIT_IS_WET) if(water_pp < safe_water_level && need_to_breathe) on_low_water(breather, breath, water_pp) @@ -305,7 +305,7 @@ breather.adjustOxyLoss(-5) /// Called when there isn't enough water to breath -/obj/item/organ/internal/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp) +/obj/item/organ/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp) breather.throw_alert(ALERT_NOT_ENOUGH_WATER, /atom/movable/screen/alert/not_enough_water) var/gas_breathed = handle_suffocation(breather, water_pp, safe_water_level, breath.gases[/datum/gas/water_vapor][MOLES]) if(water_pp) @@ -325,10 +325,10 @@ ) /// Subtype of gills that allow the mob to optionally breathe water. -/obj/item/organ/internal/lungs/fish/amphibious +/obj/item/organ/lungs/fish/amphibious name = "mutated semi-aquatic lungs" desc = "DNA from an amphibious or semi-aquatic creature infused on a pair lungs. Enjoy breathing underwater without drowning outside water." - safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min + safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min has_gills = FALSE /** * If false, we don't breathe air since we've got water instead. @@ -336,7 +336,7 @@ */ var/should_breathe_oxygen = FALSE -/obj/item/organ/internal/lungs/fish/amphibious/Initialize(mapload) +/obj/item/organ/lungs/fish/amphibious/Initialize(mapload) . = ..() /** * We're setting the gas reaction for breathing oxygen here, @@ -344,18 +344,18 @@ * and we want breathe_water() to run before breathe_oxygen, * so that if we're breathing water vapor (or are wet), we won't have to breathe oxygen. */ - safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min + safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min add_gas_reaction(/datum/gas/oxygen, always = PROC_REF(breathe_oxygen)) -/obj/item/organ/internal/lungs/fish/amphibious/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather) +/obj/item/organ/lungs/fish/amphibious/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather) should_breathe_oxygen = FALSE //assume we don't have to breathe oxygen until we fail to breathe water return ..() -/obj/item/organ/internal/lungs/fish/amphibious/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp) +/obj/item/organ/lungs/fish/amphibious/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp) should_breathe_oxygen = TRUE return -/obj/item/organ/internal/lungs/fish/amphibious/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp) +/obj/item/organ/lungs/fish/amphibious/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp) if(!should_breathe_oxygen) if(breather.failed_last_breath) //in case we had neither oxygen nor water last tick. breather.clear_alert(ALERT_NOT_ENOUGH_OXYGEN) @@ -363,7 +363,7 @@ return ..() ///Fish infuser organ, allows mobs to safely eat raw fish. -/obj/item/organ/internal/stomach/fish +/obj/item/organ/stomach/fish name = "mutated fish-stomach" desc = "Fish DNA infused into a stomach now permeated by the faint smell of salt and slightly putrefied fish." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -382,13 +382,13 @@ "putrid fish" = 1, ) -/obj/item/organ/internal/stomach/fish/Initialize(mapload) +/obj/item/organ/stomach/fish/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish) ///Organ from fish with the ink production trait. Doesn't count toward the organ set bonus but is buffed once it's active. -/obj/item/organ/internal/tongue/inky +/obj/item/organ/tongue/inky name = "ink-secreting tongue" desc = "A black tongue linked to two swollen black sacs underneath the palate." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -403,12 +403,12 @@ "the sea" = 0.2, ) -/obj/item/organ/internal/tongue/inky/Initialize(mapload) +/obj/item/organ/tongue/inky/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "Slick black ink seldom rivulets from %PRONOUN_their mouth.", BODY_ZONE_PRECISE_MOUTH) ///Organ from fish with the toxic trait. Allows the user to use tetrodotoxin as a healing chem instead of a toxin. -/obj/item/organ/internal/liver/fish +/obj/item/organ/liver/fish name = "mutated fish-liver" desc = "Fish DNA infused into a stomach that now uses tetrodotoxin as regenerative material. It also processes alcohol quite well." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -418,7 +418,7 @@ organ_traits = list(TRAIT_TETRODOTOXIN_HEALING, TRAIT_ALCOHOL_TOLERANCE) //drink like a fish :^) liver_resistance = parent_type::liver_resistance * 1.5 - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/iron = 5, /datum/reagent/toxin/tetrodotoxin = 5) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/iron = 5, /datum/reagent/toxin/tetrodotoxin = 5) grind_results = list(/datum/reagent/consumable/nutriment/peptides = 5, /datum/reagent/toxin/tetrodotoxin = 5) // Seafood instead of meat, because it's a fish organ @@ -426,7 +426,7 @@ // Just fish, the toxin isn't obvious food_tastes = list("fish" = 1) -/obj/item/organ/internal/liver/fish/Initialize(mapload) +/obj/item/organ/liver/fish/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish) diff --git a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm index 4fb894394cb..23f9a377ab6 100644 --- a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm @@ -19,7 +19,7 @@ to_chat(new_fly, span_danger("Too much fly DNA! Your skin begins to discolor into a horrible black as you become more fly than person!")) new_fly.set_species(/datum/species/fly) -/obj/item/organ/internal/eyes/fly +/obj/item/organ/eyes/fly name = "fly eyes" desc = "These eyes seem to stare back no matter the direction you look at it from." eye_icon_state = "flyeyes" @@ -27,11 +27,11 @@ flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE native_fov = NONE //flies can see all around themselves. -/obj/item/organ/internal/eyes/fly/Initialize(mapload) +/obj/item/organ/eyes/fly/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) -/obj/item/organ/internal/tongue/fly +/obj/item/organ/tongue/fly name = "proboscis" desc = "A freakish looking meat tube that apparently can take in liquids." icon = 'icons/obj/medical/organs/fly_organs.dmi' @@ -61,56 +61,56 @@ ) // NOVA EDIT ADDITION END -/obj/item/organ/internal/tongue/fly/New(class, timer, datum/mutation/human/copymut) +/obj/item/organ/tongue/fly/New(class, timer, datum/mutation/human/copymut) . = ..() AddComponent(/datum/component/speechmod, replacements = CONFIG_GET(flag/russian_text_formation) ? russian_speech_replacements : speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) // NOVA EDIT CHANGE - ORIGINAL:AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) -/obj/item/organ/internal/tongue/fly/Initialize(mapload) +/obj/item/organ/tongue/fly/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) -/obj/item/organ/internal/tongue/fly/get_possible_languages() +/obj/item/organ/tongue/fly/get_possible_languages() return ..() + /datum/language/buzzwords -/obj/item/organ/internal/heart/fly +/obj/item/organ/heart/fly desc = FLY_INFUSED_ORGAN_DESC -/obj/item/organ/internal/heart/fly/Initialize(mapload) +/obj/item/organ/heart/fly/Initialize(mapload) . = ..() name = odd_organ_name() icon_state = FLY_INFUSED_ORGAN_ICON AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) AddElement(/datum/element/update_icon_blocker) -/obj/item/organ/internal/lungs/fly +/obj/item/organ/lungs/fly desc = FLY_INFUSED_ORGAN_DESC -/obj/item/organ/internal/lungs/fly/Initialize(mapload) +/obj/item/organ/lungs/fly/Initialize(mapload) . = ..() name = odd_organ_name() icon_state = FLY_INFUSED_ORGAN_ICON AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) -/obj/item/organ/internal/liver/fly +/obj/item/organ/liver/fly desc = FLY_INFUSED_ORGAN_DESC alcohol_tolerance = 0.007 //flies eat vomit, so a lower alcohol tolerance is perfect! -/obj/item/organ/internal/liver/fly/Initialize(mapload) +/obj/item/organ/liver/fly/Initialize(mapload) . = ..() name = odd_organ_name() icon_state = FLY_INFUSED_ORGAN_ICON AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) -/obj/item/organ/internal/stomach/fly +/obj/item/organ/stomach/fly desc = FLY_INFUSED_ORGAN_DESC -/obj/item/organ/internal/stomach/fly/Initialize(mapload) +/obj/item/organ/stomach/fly/Initialize(mapload) . = ..() name = odd_organ_name() icon_state = FLY_INFUSED_ORGAN_ICON AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) -/obj/item/organ/internal/stomach/fly/after_eat(edible) +/obj/item/organ/stomach/fly/after_eat(edible) var/mob/living/carbon/body = owner ASSERT(istype(body)) // we do not lose any nutrition as a fly when vomiting out food @@ -122,28 +122,28 @@ ) return ..() -/obj/item/organ/internal/appendix/fly +/obj/item/organ/appendix/fly desc = FLY_INFUSED_ORGAN_DESC -/obj/item/organ/internal/appendix/fly/Initialize(mapload) +/obj/item/organ/appendix/fly/Initialize(mapload) . = ..() name = odd_organ_name() icon_state = FLY_INFUSED_ORGAN_ICON AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) -/obj/item/organ/internal/appendix/fly/update_appearance(updates=ALL) +/obj/item/organ/appendix/fly/update_appearance(updates=ALL) return ..(updates & ~(UPDATE_NAME|UPDATE_ICON)) //don't set name or icon thank you //useless organs we throw in just to fuck with surgeons a bit more. they aren't part of a bonus, just the (absolute) state of flies -/obj/item/organ/internal/fly +/obj/item/organ/fly desc = FLY_INFUSED_ORGAN_DESC -/obj/item/organ/internal/fly/Initialize(mapload) +/obj/item/organ/fly/Initialize(mapload) . = ..() name = odd_organ_name() icon_state = FLY_INFUSED_ORGAN_ICON -/obj/item/organ/internal/fly/groin //appendix is the only groin organ so we gotta have one of these too lol +/obj/item/organ/fly/groin //appendix is the only groin organ so we gotta have one of these too lol zone = BODY_ZONE_PRECISE_GROIN #undef FLY_INFUSED_ORGAN_DESC diff --git a/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm index 3fecac3bb6d..4c1f701e355 100644 --- a/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/ears/fox +/obj/item/organ/ears/fox name = "fox ears" icon = 'icons/obj/clothing/head/costume.dmi' worn_icon = 'icons/mob/clothing/head/costume.dmi' @@ -6,4 +6,6 @@ visual = TRUE damage_multiplier = 2 + //dna_block = DNA_EARS_BLOCK // NOVA EDIT REMOVAL - Customization - We have our own system to handle DNA. + bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears sprite_accessory_override = /datum/sprite_accessory/ears/fox diff --git a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm index 3962d59b845..5a06aa8e8c2 100644 --- a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm @@ -12,7 +12,7 @@ bonus_traits = list(TRAIT_LAVA_IMMUNE) ///goliath eyes, simple night vision -/obj/item/organ/internal/eyes/night_vision/goliath +/obj/item/organ/eyes/night_vision/goliath name = "goliath eyes" desc = "goliath DNA infused into what was once some normal eyes." @@ -29,13 +29,13 @@ high_light_cutoff = list(50, 10, 40) organ_traits = list(TRAIT_UNNATURAL_RED_GLOWY_EYES) -/obj/item/organ/internal/eyes/night_vision/goliath/Initialize(mapload) +/obj/item/organ/eyes/night_vision/goliath/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes are blood red and stone-like.", BODY_ZONE_PRECISE_EYES) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath) ///goliath lungs! You can breathe lavaland air mix but can't breath pure O2 from a tank anymore. -/obj/item/organ/internal/lungs/lavaland/goliath +/obj/item/organ/lungs/lavaland/goliath name = "mutated goliath-lungs" desc = "goliath DNA infused into what was once some normal lungs." @@ -44,13 +44,13 @@ greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = GOLIATH_COLORS -/obj/item/organ/internal/lungs/lavaland/goliath/Initialize(mapload) +/obj/item/organ/lungs/lavaland/goliath/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their back is covered in small tendrils.", BODY_ZONE_CHEST) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath) ///goliath brain. you can't use gloves but one of your arms becomes a tendril hammer that can be used to mine! -/obj/item/organ/internal/brain/goliath +/obj/item/organ/brain/goliath name = "mutated goliath-brain" desc = "goliath DNA infused into what was once a normal brain." @@ -62,12 +62,12 @@ var/obj/item/goliath_infuser_hammer/hammer -/obj/item/organ/internal/brain/goliath/Initialize(mapload) +/obj/item/organ/brain/goliath/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their arm is just a mass of plate and tendrils.", BODY_ZONE_CHEST) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath) -/obj/item/organ/internal/brain/goliath/on_mob_insert(mob/living/carbon/brain_owner) +/obj/item/organ/brain/goliath/on_mob_insert(mob/living/carbon/brain_owner) . = ..() if(!ishuman(brain_owner)) return @@ -79,7 +79,7 @@ hammer = new/obj/item/goliath_infuser_hammer brain_owner.put_in_hands(hammer) -/obj/item/organ/internal/brain/goliath/on_mob_remove(mob/living/carbon/brain_owner) +/obj/item/organ/brain/goliath/on_mob_remove(mob/living/carbon/brain_owner) . = ..() UnregisterSignal(brain_owner) if(!ishuman(brain_owner)) @@ -159,7 +159,7 @@ target.throw_at(get_edge_target_turf(target, get_cardinal_dir(src, target)), rand(1, 2), prob(60) ? 1 : 4, user) /// goliath heart gives you the ability to survive ash storms. -/obj/item/organ/internal/heart/goliath +/obj/item/organ/heart/goliath name = "mutated goliath-heart" desc = "goliath DNA infused into what was once a normal heart." @@ -170,7 +170,7 @@ organ_traits = list(TRAIT_ASHSTORM_IMMUNE) -/obj/item/organ/internal/heart/goliath/Initialize(mapload) +/obj/item/organ/heart/goliath/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their skin has visible hard plates growing from within.", BODY_ZONE_CHEST) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath) diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm index 9fcf7e483bb..82c9c9fc8e8 100644 --- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm @@ -16,7 +16,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... bonus_traits = list(TRAIT_RESISTHEAT, TRAIT_RESISTCOLD, TRAIT_NOBREATH, TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE) /// makes you a pacifist and turns most mobs neutral towards you -/obj/item/organ/internal/heart/gondola +/obj/item/organ/heart/gondola name = "mutated gondola-heart" desc = "Gondola DNA infused into what was once a normal heart." @@ -28,13 +28,13 @@ Fluoride Stare: After someone says 5 words, blah blah blah... ///keeps track of whether the receiver actually gained factions var/list/factions_to_remove = list() -/obj/item/organ/internal/heart/gondola/Initialize(mapload) +/obj/item/organ/heart/gondola/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola) AddElement(/datum/element/noticable_organ, "%PRONOUN_They radiate%PRONOUN_s an aura of serenity.") AddElement(/datum/element/update_icon_blocker) -/obj/item/organ/internal/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(!(FACTION_HOSTILE in receiver.faction)) factions_to_remove += FACTION_HOSTILE @@ -42,7 +42,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... factions_to_remove += FACTION_MINING receiver.faction |= list(FACTION_HOSTILE, FACTION_MINING) -/obj/item/organ/internal/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags) +/obj/item/organ/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags) . = ..() for(var/faction in factions_to_remove) heartless.faction -= faction @@ -50,7 +50,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... factions_to_remove = list() /// Zen (tounge): You can no longer speak, but get a powerful positive moodlet -/obj/item/organ/internal/tongue/gondola +/obj/item/organ/tongue/gondola name = "mutated gondola-tongue" desc = "Gondola DNA infused into what was once a normal tongue." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -59,21 +59,21 @@ Fluoride Stare: After someone says 5 words, blah blah blah... greyscale_colors = GONDOLA_COLORS organ_traits = list(TRAIT_MUTE) -/obj/item/organ/internal/tongue/gondola/Initialize(mapload) +/obj/item/organ/tongue/gondola/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is permanently affixed into a relaxed smile.", BODY_ZONE_PRECISE_MOUTH) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola) -/obj/item/organ/internal/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) +/obj/item/organ/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) . = ..() tongue_owner.add_mood_event("gondola_zen", /datum/mood_event/gondola_serenity) -/obj/item/organ/internal/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags) +/obj/item/organ/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags) tongue_owner.clear_mood_event("gondola_zen") return ..() /// Loving arms: your hands become unable to hold much of anything but your hugs now infuse the subject with pax. -/obj/item/organ/internal/liver/gondola +/obj/item/organ/liver/gondola name = "mutated gondola-liver" desc = "Gondola DNA infused into what was once a normal liver." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -81,13 +81,13 @@ Fluoride Stare: After someone says 5 words, blah blah blah... greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = GONDOLA_COLORS -/obj/item/organ/internal/liver/gondola/Initialize(mapload) +/obj/item/organ/liver/gondola/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola) AddElement(/datum/element/noticable_organ, "%PRONOUN_Their left arm has small needles breaching the skin all over it.", BODY_ZONE_L_ARM) AddElement(/datum/element/noticable_organ, "%PRONOUN_Their right arm has small needles breaching the skin all over it.", BODY_ZONE_R_ARM) -/obj/item/organ/internal/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags) +/obj/item/organ/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags) . = ..() var/has_left = liver_owner.has_left_hand(check_disabled = FALSE) var/has_right = liver_owner.has_right_hand(check_disabled = FALSE) @@ -102,19 +102,19 @@ Fluoride Stare: After someone says 5 words, blah blah blah... RegisterSignal(liver_owner, COMSIG_LIVING_TRY_PULL, PROC_REF(on_owner_try_pull)) RegisterSignal(liver_owner, COMSIG_CARBON_HELPED, PROC_REF(on_hug)) -/obj/item/organ/internal/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags) +/obj/item/organ/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags) . = ..() UnregisterSignal(liver_owner, list(COMSIG_HUMAN_EQUIPPING_ITEM, COMSIG_LIVING_TRY_PULL, COMSIG_CARBON_HELPED)) /// signal sent when prompting if an item can be equipped -/obj/item/organ/internal/liver/gondola/proc/on_owner_equipping_item(mob/living/carbon/human/owner, obj/item/equip_target, slot) +/obj/item/organ/liver/gondola/proc/on_owner_equipping_item(mob/living/carbon/human/owner, obj/item/equip_target, slot) SIGNAL_HANDLER if(equip_target.w_class > WEIGHT_CLASS_TINY) equip_target.balloon_alert(owner, "too weak to hold this!") return COMPONENT_BLOCK_EQUIP /// signal sent when owner tries to pull an item -/obj/item/organ/internal/liver/gondola/proc/on_owner_try_pull(mob/living/carbon/owner, atom/movable/target, force) +/obj/item/organ/liver/gondola/proc/on_owner_try_pull(mob/living/carbon/owner, atom/movable/target, force) SIGNAL_HANDLER if(isliving(target)) var/mob/living/living_target = target @@ -127,7 +127,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... item_target.balloon_alert(owner, "too weak to pull this!") return COMSIG_LIVING_CANCEL_PULL -/obj/item/organ/internal/liver/gondola/proc/on_hug(mob/living/carbon/human/source, mob/living/carbon/hugged) +/obj/item/organ/liver/gondola/proc/on_hug(mob/living/carbon/human/source, mob/living/carbon/hugged) SIGNAL_HANDLER var/list/covered_body_zones = source.get_covered_body_zones() diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm index 4f8d38aa999..f10dcefb0d5 100644 --- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm @@ -12,7 +12,7 @@ bonus_traits = list(TRAIT_VENTCRAWLER_NUDE) ///way better night vision, super sensitive. lotta things work like this, huh? -/obj/item/organ/internal/eyes/night_vision/rat +/obj/item/organ/eyes/night_vision/rat name = "mutated rat-eyes" desc = "Rat DNA infused into what was once a normal pair of eyes." flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE @@ -27,13 +27,13 @@ medium_light_cutoff = list(30, 20, 5) high_light_cutoff = list(45, 35, 10) -/obj/item/organ/internal/eyes/night_vision/rat/Initialize(mapload) +/obj/item/organ/eyes/night_vision/rat/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes have deep, shifty black pupils, surrounded by a sickening yellow sclera.", BODY_ZONE_PRECISE_EYES) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat) ///increases hunger, disgust recovers quicker, expands what is defined as "food" -/obj/item/organ/internal/stomach/rat +/obj/item/organ/stomach/rat name = "mutated rat-stomach" desc = "Rat DNA infused into what was once a normal stomach." disgust_metabolism = 3 @@ -44,13 +44,13 @@ greyscale_colors = RAT_COLORS hunger_modifier = 10 -/obj/item/organ/internal/stomach/rat/Initialize(mapload) +/obj/item/organ/stomach/rat/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat) AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is drooling excessively.", BODY_ZONE_PRECISE_MOUTH) /// makes you smaller, walk over tables, and take 1.5x damage -/obj/item/organ/internal/heart/rat +/obj/item/organ/heart/rat name = "mutated rat-heart" desc = "Rat DNA infused into what was once a normal heart." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -58,13 +58,13 @@ greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = RAT_COLORS -/obj/item/organ/internal/heart/rat/Initialize(mapload) +/obj/item/organ/heart/rat/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat) AddElement(/datum/element/noticable_organ, "%PRONOUN_They hunch%PRONOUN_es over unnaturally!") AddElement(/datum/element/update_icon_blocker) -/obj/item/organ/internal/heart/rat/on_mob_insert(mob/living/carbon/receiver) +/obj/item/organ/heart/rat/on_mob_insert(mob/living/carbon/receiver) . = ..() if(!ishuman(receiver)) return @@ -74,7 +74,7 @@ //but 1.5 damage human_receiver.physiology?.damage_resistance -= 50 -/obj/item/organ/internal/heart/rat/on_mob_remove(mob/living/carbon/heartless, special) +/obj/item/organ/heart/rat/on_mob_remove(mob/living/carbon/heartless, special) . = ..() if(!ishuman(heartless)) return @@ -84,7 +84,7 @@ human_heartless.physiology?.damage_resistance += 50 /// you occasionally squeak, and have some rat related verbal tics -/obj/item/organ/internal/tongue/rat +/obj/item/organ/tongue/rat name = "mutated rat-tongue" desc = "Rat DNA infused into what was once a normal tongue." icon = 'icons/obj/medical/organs/infuser_organs.dmi' @@ -97,12 +97,12 @@ disliked_foodtypes = NONE //but a rat can eat anything without issue toxic_foodtypes = NONE -/obj/item/organ/internal/tongue/rat/Initialize(mapload) +/obj/item/organ/tongue/rat/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_Their teeth are oddly shaped and yellowing.", BODY_ZONE_PRECISE_MOUTH) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat) -/obj/item/organ/internal/tongue/rat/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/rat/modify_speech(datum/source, list/speech_args) . = ..() var/message = LOWER_TEXT(speech_args[SPEECH_MESSAGE]) if(message == "hi" || message == "hi.") @@ -110,23 +110,23 @@ if(message == "hi?") speech_args[SPEECH_MESSAGE] = "Um... cheesed to meet you?" -/obj/item/organ/internal/tongue/rat/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) +/obj/item/organ/tongue/rat/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) . = ..() RegisterSignal(tongue_owner, COMSIG_CARBON_ITEM_GIVEN, PROC_REF(its_on_the_mouse)) -/obj/item/organ/internal/tongue/rat/on_mob_remove(mob/living/carbon/tongue_owner) +/obj/item/organ/tongue/rat/on_mob_remove(mob/living/carbon/tongue_owner) . = ..() UnregisterSignal(tongue_owner, COMSIG_CARBON_ITEM_GIVEN) -/obj/item/organ/internal/tongue/rat/proc/on_item_given(mob/living/carbon/offerer, mob/living/taker, obj/item/given) +/obj/item/organ/tongue/rat/proc/on_item_given(mob/living/carbon/offerer, mob/living/taker, obj/item/given) SIGNAL_HANDLER INVOKE_ASYNC(src, PROC_REF(its_on_the_mouse), offerer, taker) -/obj/item/organ/internal/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker) +/obj/item/organ/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker) offerer.say("For you, it's on the mouse.") taker.add_mood_event("it_was_on_the_mouse", /datum/mood_event/it_was_on_the_mouse) -/obj/item/organ/internal/tongue/rat/on_life(seconds_per_tick, times_fired) +/obj/item/organ/tongue/rat/on_life(seconds_per_tick, times_fired) . = ..() if(prob(5)) owner.emote("squeaks") diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm index b31a64d9bb8..2b32ad85702 100644 --- a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm @@ -46,7 +46,7 @@ /// Roach heart: /// Reduces damage taken from brute attacks from behind, /// but increases duration of knockdowns -/obj/item/organ/internal/heart/roach +/obj/item/organ/heart/roach name = "mutated roach-heart" desc = "Roach DNA infused into what was once a normal heart." maxHealth = 2 * STANDARD_ORGAN_THRESHOLD @@ -61,18 +61,18 @@ COOLDOWN_DECLARE(harden_effect_cd) -/obj/item/organ/internal/heart/roach/Initialize(mapload) +/obj/item/organ/heart/roach/Initialize(mapload) . = ..() AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have hardened, somewhat translucent skin.") AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) AddElement(/datum/element/update_icon_blocker) roach_shell = new() -/obj/item/organ/internal/heart/roach/Destroy() +/obj/item/organ/heart/roach/Destroy() QDEL_NULL(roach_shell) return ..() -/obj/item/organ/internal/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() if(!ishuman(organ_owner)) return @@ -83,11 +83,11 @@ RegisterSignal(human_owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(do_block_effect)) human_owner.physiology.knockdown_mod *= 3 -/obj/item/organ/internal/heart/roach/on_bodypart_insert(obj/item/bodypart/limb) +/obj/item/organ/heart/roach/on_bodypart_insert(obj/item/bodypart/limb) . = ..() limb.add_bodypart_overlay(roach_shell) -/obj/item/organ/internal/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() if(!ishuman(organ_owner) || QDELETED(organ_owner)) return @@ -97,7 +97,7 @@ UnregisterSignal(human_owner, list(COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, COMSIG_MOB_AFTER_APPLY_DAMAGE)) human_owner.physiology.knockdown_mod /= 3 -/obj/item/organ/internal/heart/roach/on_bodypart_remove(obj/item/bodypart/limb) +/obj/item/organ/heart/roach/on_bodypart_remove(obj/item/bodypart/limb) . = ..() limb.remove_bodypart_overlay(roach_shell) @@ -107,7 +107,7 @@ * * Adds a 0.5 modifier to attacks from the back */ -/obj/item/organ/internal/heart/roach/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) +/obj/item/organ/heart/roach/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER if(!is_blocking(source, damage_amount, damagetype, attack_direction)) @@ -120,7 +120,7 @@ * * Does a special effect if we blocked damage with our back */ -/obj/item/organ/internal/heart/roach/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item) +/obj/item/organ/heart/roach/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER if(!is_blocking(source, damage_dealt, damagetype, attack_direction)) @@ -133,7 +133,7 @@ COOLDOWN_START(src, harden_effect_cd, 5 SECONDS) // Cooldown resets EVERY time we get hit /// Checks if the passed mob is in a valid state to be blocking damage with the roach shell -/obj/item/organ/internal/heart/roach/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction) +/obj/item/organ/heart/roach/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction) if(damage_amount < 5 || damagetype != BRUTE || !attack_direction) return if(!ishuman(blocker) || blocker.stat >= UNCONSCIOUS) @@ -160,7 +160,7 @@ /// Roach stomach: /// Makes disgust a non-issue, very slightly worse at passing off reagents /// Also makes you more hungry -/obj/item/organ/internal/stomach/roach +/obj/item/organ/stomach/roach name = "mutated roach-stomach" desc = "Roach DNA infused into what was once a normal stomach." maxHealth = 2 * STANDARD_ORGAN_THRESHOLD @@ -173,13 +173,13 @@ greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = ROACH_COLORS -/obj/item/organ/internal/stomach/roach/Initialize(mapload) +/obj/item/organ/stomach/roach/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) /// Roach liver: /// Purges toxins at a higher threshold, but takes more damage from them if not purged -/obj/item/organ/internal/liver/roach +/obj/item/organ/liver/roach name = "mutated roach-liver" desc = "Roach DNA infused into what was once a normal liver." maxHealth = 2 * STANDARD_ORGAN_THRESHOLD @@ -191,11 +191,11 @@ greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = ROACH_COLORS -/obj/item/organ/internal/liver/roach/Initialize(mapload) +/obj/item/organ/liver/roach/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) -/obj/item/organ/internal/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() if(!ishuman(organ_owner)) return @@ -203,7 +203,7 @@ var/mob/living/carbon/human/human_owner = owner human_owner.physiology.tox_mod *= 2 -/obj/item/organ/internal/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() if(!ishuman(organ_owner) || QDELETED(organ_owner)) return @@ -213,7 +213,7 @@ /// Roach appendix: /// No appendicitus! weee! -/obj/item/organ/internal/appendix/roach +/obj/item/organ/appendix/roach name = "mutated roach-appendix" desc = "Roach DNA infused into what was once a normal appendix. It could get worse?" maxHealth = 2 * STANDARD_ORGAN_THRESHOLD @@ -223,11 +223,11 @@ greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = ROACH_COLORS -/obj/item/organ/internal/appendix/roach/Initialize(mapload) +/obj/item/organ/appendix/roach/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) -/obj/item/organ/internal/appendix/roach/become_inflamed() +/obj/item/organ/appendix/roach/become_inflamed() return #undef ROACH_ORGAN_COLOR diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 0c84e401d6c..3848717cc37 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -7,7 +7,7 @@ density = TRUE obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open interaction_flags_mouse_drop = NEED_DEXTERITY - occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/internal/brain) + occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/brain) circuit = /obj/item/circuitboard/machine/dnascanner var/locked = FALSE diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm index 0bc227fcdb9..54a5cf29c05 100644 --- a/code/game/machinery/medical_kiosk.dm +++ b/code/game/machinery/medical_kiosk.dm @@ -292,7 +292,7 @@ chemical_list += list(list("name" = reagent.name, "volume" = round(reagent.volume, 0.01))) if(reagent.overdosed) overdose_list += list(list("name" = reagent.name)) - var/obj/item/organ/internal/stomach/belly = patient.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = patient.get_organ_slot(ORGAN_SLOT_STOMACH) if(belly?.reagents.reagent_list.len) //include the stomach contents if it exists for(var/bile in belly.reagents.reagent_list) var/datum/reagent/bit = bile diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 166410cfccf..134fa7731d0 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -171,7 +171,7 @@ not_eaten += 1 continue - if (istype(thing, /obj/item/organ/internal/brain) || istype(thing, /obj/item/dullahan_relay)) + if (istype(thing, /obj/item/organ/brain) || istype(thing, /obj/item/dullahan_relay)) living_detected = TRUE if (istype(thing, /obj/item/mmi)) diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm index e651c8a3e24..0bc59ded98d 100644 --- a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm @@ -391,7 +391,7 @@ var/fraction = (seconds_per_tick SECONDS) / initial(lifetime) reagents.copy_to(smoker, reagents.total_volume, fraction) - reagents.expose(smoker, INGEST, fraction) + reagents.expose(smoker, INHALE, fraction) return TRUE /// Helper to quickly create a cloud of reagent smoke diff --git a/code/game/objects/effects/spawners/random/medical.dm b/code/game/objects/effects/spawners/random/medical.dm index b0f7a4aeaf5..02462afe113 100644 --- a/code/game/objects/effects/spawners/random/medical.dm +++ b/code/game/objects/effects/spawners/random/medical.dm @@ -25,20 +25,20 @@ icon_state = "eyes" spawn_loot_count = 3 loot = list( - /obj/item/organ/internal/heart/gland/egg = 7, - /obj/item/organ/internal/heart/gland/plasma = 7, - /obj/item/organ/internal/heart/gland/chem = 5, - /obj/item/organ/internal/heart/gland/mindshock = 5, - /obj/item/organ/internal/heart/gland/transform = 5, - /obj/item/organ/internal/heart/gland/spiderman = 5, - /obj/item/organ/internal/heart/gland/slime = 4, - /obj/item/organ/internal/heart/gland/trauma = 4, - /obj/item/organ/internal/heart/gland/electric = 3, - /obj/item/organ/internal/monster_core/regenerative_core = 2, - /obj/item/organ/internal/monster_core/rush_gland = 2, - /obj/item/organ/internal/monster_core/brimdust_sac = 2, - /obj/item/organ/internal/heart/gland/ventcrawling = 1, - /obj/item/organ/internal/body_egg/alien_embryo = 1, + /obj/item/organ/heart/gland/egg = 7, + /obj/item/organ/heart/gland/plasma = 7, + /obj/item/organ/heart/gland/chem = 5, + /obj/item/organ/heart/gland/mindshock = 5, + /obj/item/organ/heart/gland/transform = 5, + /obj/item/organ/heart/gland/spiderman = 5, + /obj/item/organ/heart/gland/slime = 4, + /obj/item/organ/heart/gland/trauma = 4, + /obj/item/organ/heart/gland/electric = 3, + /obj/item/organ/monster_core/regenerative_core = 2, + /obj/item/organ/monster_core/rush_gland = 2, + /obj/item/organ/monster_core/brimdust_sac = 2, + /obj/item/organ/heart/gland/ventcrawling = 1, + /obj/item/organ/body_egg/alien_embryo = 1, ) /obj/effect/spawner/random/medical/memeorgans @@ -46,23 +46,23 @@ icon_state = "eyes" spawn_loot_count = 5 loot = list( - /obj/item/organ/internal/ears/penguin, - /obj/item/organ/internal/ears/cat, - /obj/item/organ/internal/eyes/moth, - /obj/item/organ/internal/eyes/snail, - /obj/item/organ/internal/tongue/bone, - /obj/item/organ/internal/tongue/fly, - /obj/item/organ/internal/tongue/snail, - /obj/item/organ/internal/tongue/lizard, - /obj/item/organ/internal/tongue/alien, - /obj/item/organ/internal/tongue/ethereal, - /obj/item/organ/internal/tongue/robot, - /obj/item/organ/internal/tongue/zombie, - /obj/item/organ/internal/appendix, - /obj/item/organ/internal/liver/fly, - /obj/item/organ/internal/lungs/plasmaman, - /obj/item/organ/external/tail/cat, - /obj/item/organ/external/tail/lizard, + /obj/item/organ/ears/penguin, + /obj/item/organ/ears/cat, + /obj/item/organ/eyes/moth, + /obj/item/organ/eyes/snail, + /obj/item/organ/tongue/bone, + /obj/item/organ/tongue/fly, + /obj/item/organ/tongue/snail, + /obj/item/organ/tongue/lizard, + /obj/item/organ/tongue/alien, + /obj/item/organ/tongue/ethereal, + /obj/item/organ/tongue/robot, + /obj/item/organ/tongue/zombie, + /obj/item/organ/appendix, + /obj/item/organ/liver/fly, + /obj/item/organ/lungs/plasmaman, + /obj/item/organ/tail/cat, + /obj/item/organ/tail/lizard, ) /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index f82de9c49a7..d84ebfa5c13 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -73,7 +73,7 @@ return TRUE /obj/item/airlock_painter/suicide_act(mob/living/user) - var/obj/item/organ/internal/lungs/L = user.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/L = user.get_organ_slot(ORGAN_SLOT_LUNGS) if(can_use(user) && L) user.visible_message(span_suicide("[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!")) diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index d8b48e0789b..d5769ceb8d7 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/body_egg +/obj/item/organ/body_egg name = "body egg" desc = "All slimy and yuck." icon_state = "innards" @@ -6,47 +6,47 @@ zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_PARASITE_EGG -/obj/item/organ/internal/body_egg/on_find(mob/living/finder) +/obj/item/organ/body_egg/on_find(mob/living/finder) ..() to_chat(finder, span_warning("You found an unknown alien organism in [owner]'s [zone]!")) -/obj/item/organ/internal/body_egg/Initialize(mapload) +/obj/item/organ/body_egg/Initialize(mapload) . = ..() if(iscarbon(loc)) Insert(loc) -/obj/item/organ/internal/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() egg_owner.add_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT) egg_owner.med_hud_set_status() INVOKE_ASYNC(src, PROC_REF(AddInfectionImages), egg_owner) -/obj/item/organ/internal/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags) +/obj/item/organ/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags) . = ..() egg_owner.remove_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT) egg_owner.med_hud_set_status() INVOKE_ASYNC(src, PROC_REF(RemoveInfectionImages), egg_owner) -/obj/item/organ/internal/body_egg/on_death(seconds_per_tick, times_fired) +/obj/item/organ/body_egg/on_death(seconds_per_tick, times_fired) . = ..() if(!owner) return egg_process(seconds_per_tick, times_fired) -/obj/item/organ/internal/body_egg/on_life(seconds_per_tick, times_fired) +/obj/item/organ/body_egg/on_life(seconds_per_tick, times_fired) . = ..() egg_process(seconds_per_tick, times_fired) -/obj/item/organ/internal/body_egg/proc/egg_process(seconds_per_tick, times_fired) +/obj/item/organ/body_egg/proc/egg_process(seconds_per_tick, times_fired) return -/obj/item/organ/internal/body_egg/proc/RefreshInfectionImage() +/obj/item/organ/body_egg/proc/RefreshInfectionImage() RemoveInfectionImages() AddInfectionImages() -/obj/item/organ/internal/body_egg/proc/AddInfectionImages() +/obj/item/organ/body_egg/proc/AddInfectionImages() return -/obj/item/organ/internal/body_egg/proc/RemoveInfectionImages() +/obj/item/organ/body_egg/proc/RemoveInfectionImages() return diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm index aa51d71c5ed..e99ed4b3320 100644 --- a/code/game/objects/items/choice_beacon.dm +++ b/code/game/objects/items/choice_beacon.dm @@ -147,12 +147,12 @@ augment_list = list() // cyberimplants range from a nice bonus to fucking broken bullshit so no subtypesof var/list/selectable_types = list( - /obj/item/organ/internal/cyberimp/brain/anti_drop, - /obj/item/organ/internal/cyberimp/arm/toolset, - /obj/item/organ/internal/cyberimp/arm/surgery, - /obj/item/organ/internal/cyberimp/chest/thrusters, - /obj/item/organ/internal/lungs/cybernetic/tier3, - /obj/item/organ/internal/liver/cybernetic/tier3, + /obj/item/organ/cyberimp/brain/anti_drop, + /obj/item/organ/cyberimp/arm/toolset, + /obj/item/organ/cyberimp/arm/surgery, + /obj/item/organ/cyberimp/chest/thrusters, + /obj/item/organ/lungs/cybernetic/tier3, + /obj/item/organ/liver/cybernetic/tier3, ) for(var/obj/item/organ/organ as anything in selectable_types) augment_list[initial(organ.name)] = organ diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm index b4ee67ea9d7..015babebce0 100644 --- a/code/game/objects/items/cigarettes.dm +++ b/code/game/objects/items/cigarettes.dm @@ -452,12 +452,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM return how_long_have_we_been_smokin += seconds_per_tick * (1 SECONDS) - reagents.expose(smoker, INGEST, min(to_smoke / reagents.total_volume, 1)) - var/obj/item/organ/internal/lungs/lungs = smoker.get_organ_slot(ORGAN_SLOT_LUNGS) + reagents.expose(smoker, INHALE, min(to_smoke / reagents.total_volume, 1)) + var/obj/item/organ/lungs/lungs = smoker.get_organ_slot(ORGAN_SLOT_LUNGS) if(lungs && IS_ORGANIC_ORGAN(lungs)) var/smoker_resistance = HAS_TRAIT(smoker, TRAIT_SMOKER) ? 0.5 : 1 smoker.adjustOrganLoss(ORGAN_SLOT_LUNGS, lung_harm * smoker_resistance) - if(!reagents.trans_to(smoker, to_smoke, methods = INGEST, ignore_stomach = TRUE)) + if(!reagents.trans_to(smoker, to_smoke, methods = INHALE, ignore_stomach = TRUE)) reagents.remove_all(to_smoke) /obj/item/cigarette/process(seconds_per_tick) @@ -1011,7 +1011,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM e.start(src) qdel(src) - if(!reagents.trans_to(vaper, REAGENTS_METABOLISM, methods = INGEST, ignore_stomach = TRUE)) + if(!reagents.trans_to(vaper, REAGENTS_METABOLISM, methods = INHALE, ignore_stomach = TRUE)) reagents.remove_all(REAGENTS_METABOLISM) /obj/item/vape/process(seconds_per_tick) diff --git a/code/game/objects/items/climbingrope.dm b/code/game/objects/items/climbingrope.dm index 57eaa06935c..936858bbae7 100644 --- a/code/game/objects/items/climbingrope.dm +++ b/code/game/objects/items/climbingrope.dm @@ -59,7 +59,7 @@ // Misc bonuses to the climb speed. var/misc_multiplier = 1 - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) misc_multiplier *= potential_spine.athletics_boost_multiplier @@ -68,6 +68,7 @@ if(do_after(user, final_climb_time, target)) user.forceMove(target) uses-- + user.mind?.adjust_experience(/datum/skill/athletics, 50) //get some experience for our trouble, especially since this costs us a climbing rope use if(uses <= 0) user.visible_message(span_warning("[src] snaps and tears apart!")) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 7184db90932..d6b13b8bfa0 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -589,7 +589,7 @@ if(do_after(user, 3 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process user.visible_message(span_notice("[user] places [src] on [H]'s chest."), span_warning("You place [src] on [H]'s chest.")) playsound(src, 'sound/machines/defib/defib_charge.ogg', 75, FALSE) - var/obj/item/organ/internal/heart = H.get_organ_by_type(/obj/item/organ/internal/heart) + var/obj/item/organ/heart = H.get_organ_by_type(/obj/item/organ/heart) if(do_after(user, 2 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total if((!combat && !req_defib) || (req_defib && !defib.combat)) for(var/obj/item/clothing/C in H.get_equipped_items()) @@ -679,7 +679,7 @@ iterated_part.emp_act(EMP_LIGHT) for (var/obj/item/organ/iterated_organ as anything in H.organs) iterated_organ.emp_act(EMP_LIGHT) - var/obj/item/organ/internal/brain/brain_organ = H.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain_organ = H.get_organ_slot(ORGAN_SLOT_BRAIN) if (istype(brain_organ)) var/datum/brain_trauma/trauma = brain_organ.gain_trauma_type(SYNTH_DEFIBBED_TRAUMA_SEVERITY, TRAUMA_LIMIT_BASIC) if (!QDELETED(trauma)) @@ -688,7 +688,7 @@ do_success() return - else if (!H.get_organ_by_type(/obj/item/organ/internal/heart)) + else if (!H.get_organ_by_type(/obj/item/organ/heart)) user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's heart is missing. Operation aborted.")) playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE) else if(H.undergoing_cardiac_arrest()) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 657d054f11c..94b7e14fe80 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -112,8 +112,8 @@ to_chat(user, span_warning("You're going to need to remove that [(M.head && M.head.flags_cover & HEADCOVERSEYES) ? "helmet" : (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSEYES) ? "mask": "glasses"] first!")) return - var/obj/item/organ/internal/eyes/E = M.get_organ_slot(ORGAN_SLOT_EYES) - var/obj/item/organ/internal/brain = M.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/eyes/E = M.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/brain = M.get_organ_slot(ORGAN_SLOT_BRAIN) if(!E) to_chat(user, span_warning("[M] doesn't have any eyes!")) return @@ -889,7 +889,7 @@ if(!fuel) user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but it's empty!")) return SHAME - var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) if(!eyes) user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but [user.p_they()] don't have any!")) return SHAME diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index 3a4cdf2ffa0..e880f9e46a1 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -336,7 +336,7 @@ // Cybernetics var/list/cyberimps - for(var/obj/item/organ/internal/cyberimp/cyberimp in humantarget.organs) + for(var/obj/item/organ/cyberimp/cyberimp in humantarget.organs) if(IS_ROBOTIC_ORGAN(cyberimp) && !(cyberimp.organ_flags & ORGAN_HIDDEN)) LAZYADD(cyberimps, cyberimp.examine_title(user)) if(LAZYLEN(cyberimps)) @@ -486,7 +486,7 @@ render_block.Cut() // Stomach reagents - var/obj/item/organ/internal/stomach/belly = target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = target.get_organ_slot(ORGAN_SLOT_STOMACH) if(belly) if(belly.reagents.reagent_list.len) for(var/bile in belly.reagents.reagent_list) diff --git a/code/game/objects/items/drug_items.dm b/code/game/objects/items/drug_items.dm index d25c9571455..7f31b155a26 100644 --- a/code/game/objects/items/drug_items.dm +++ b/code/game/objects/items/drug_items.dm @@ -44,6 +44,8 @@ reagent_flags = TRANSPARENT spillable = FALSE list_reagents = list(/datum/reagent/drug/blastoff = 10) + reagent_consumption_method = INHALE + consumption_sound = 'sound/effects/spray2.ogg' /obj/item/reagent_containers/cup/blastoff_ampoule/update_icon_state() . = ..() diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm index 1eae1693735..1f428236e82 100644 --- a/code/game/objects/items/dualsaber.dm +++ b/code/game/objects/items/dualsaber.dm @@ -86,7 +86,7 @@ user.visible_message(span_suicide("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!")) var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code - var/obj/item/organ/internal/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN) B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea var/randdir for(var/i in 1 to 24)//like a headless chicken! diff --git a/code/game/objects/items/dyespray.dm b/code/game/objects/items/dyespray.dm index 1893774b21b..8cc721b5c12 100644 --- a/code/game/objects/items/dyespray.dm +++ b/code/game/objects/items/dyespray.dm @@ -29,11 +29,34 @@ return //NOVA EDIT ADDITION var/mob/living/carbon/human/human_target = target - var/beard_or_hair = tgui_alert(user, "What do you want to dye?", "Character Preference", list("Hair", "Facial Hair")) - if(!beard_or_hair || !user.can_perform_action(src, NEED_DEXTERITY)) + var/list/dyables = list("Hair", "Facial Hair") + for(var/obj/item/organ/organ as anything in human_target.organs) + if(!istype(organ.bodypart_overlay, /datum/bodypart_overlay/mutant)) + continue + var/datum/bodypart_overlay/mutant/overlay = organ.bodypart_overlay + if(overlay.dyable && overlay.sprite_datum.color_src) + dyables += list("External Body Parts") + break + var/obj/item/bodypart/head/head = human_target.get_bodypart(BODY_ZONE_HEAD) + if(!head || !(head.head_flags & HEAD_HAIR) || HAS_TRAIT(human_target, TRAIT_BALD)) + dyables -= "Hair" + if(!head || !(head.head_flags & HEAD_FACIAL_HAIR) || HAS_TRAIT(human_target, TRAIT_SHAVED)) + dyables -= "Facial Hair" + if(!length(dyables)) + if(target != user) + to_chat(user, span_warning("[human_target] doesn't have anything that can be dyed.")) + else + to_chat(user, span_warning("You have nothing to dye.")) + return + var/what_to_dye = tgui_alert(user, "What do you want to dye?", "Character Preference", dyables) + if(!what_to_dye || !user.can_perform_action(src, NEED_DEXTERITY)) + return + + if(what_to_dye == "External Bodyparts/Organs") + dye_organ(target, user) return - var/list/choices = beard_or_hair == "Hair" ? SSaccessories.hair_gradients_list : SSaccessories.facial_hair_gradients_list + var/list/choices = what_to_dye == "Hair" ? SSaccessories.hair_gradients_list : SSaccessories.facial_hair_gradients_list var/new_grad_style = tgui_input_list(user, "Choose a color pattern", "Character Preference", choices) if(isnull(new_grad_style)) return @@ -47,7 +70,7 @@ to_chat(user, span_notice("You start applying the hair dye...")) if(!do_after(user, 3 SECONDS, target)) return - if(beard_or_hair == "Hair") + if(what_to_dye == "Hair") human_target.set_hair_gradient_style(new_grad_style, update = FALSE) human_target.set_hair_gradient_color(new_grad_color, update = TRUE) else @@ -55,3 +78,47 @@ human_target.set_facial_hair_gradient_color(new_grad_color, update = TRUE) playsound(src, 'sound/effects/spray.ogg', 10, vary = TRUE) */ + +/obj/item/dyespray/proc/dye_organ(mob/living/carbon/human/target, mob/user) + var/list/dyables = list() + var/list/choices = list() + for(var/obj/item/organ/organ as anything in target.organs) + if(!istype(organ.bodypart_overlay, /datum/bodypart_overlay/mutant)) + continue + var/datum/bodypart_overlay/mutant/overlay = organ.bodypart_overlay + if(overlay.dyable && overlay.sprite_datum.color_src) + var/choice_name = full_capitalize(organ.name) + dyables[choice_name] = organ + choices += choice_name + if(!length(choices)) + return + var/what_to_dye = tgui_alert(user, "What do you want to dye?", "Character Preference", choices) + if(!what_to_dye || !user.can_perform_action(src, NEED_DEXTERITY)) + return + + var/obj/item/organ/selected = dyables[what_to_dye] + if(QDELETED(selected) || !(selected in target.organs)) + return + + var/datum/bodypart_overlay/mutant/overlay = selected.bodypart_overlay + if(overlay.dye_color) + var/remove_dye = tgui_alert(user, "Do you want to un-dye [selected]?", "Character Preference", list("Yes", "No")) + if(isnull(remove_dye) || !user.can_perform_action(src, NEED_DEXTERITY)) + return + if(QDELETED(selected) || !(selected in target.organs)) + return + if(remove_dye == "Yes") + overlay.set_dye_color(null, selected) + return + + var/default_color = overlay.dye_color || overlay.draw_color + var/new_color = input(user, "Choose a color for [selected]:", "Character Preference", default_color) as color|null + if(isnull(new_color) || new_color == default_color || !user.can_perform_action(src, NEED_DEXTERITY)) + return + if(QDELETED(selected) || !(selected in target.organs)) + return + if(!do_after(user, 4.5 SECONDS, target)) + return + if(QDELETED(selected) || !(selected in target.organs)) + return + overlay.set_dye_color(new_color, selected) diff --git a/code/game/objects/items/food/donuts.dm b/code/game/objects/items/food/donuts.dm index 922ed2eaa66..993ada424ad 100644 --- a/code/game/objects/items/food/donuts.dm +++ b/code/game/objects/items/food/donuts.dm @@ -45,7 +45,7 @@ ///Override for checkliked in edible component, because all cops LOVE donuts /obj/item/food/donut/proc/check_liked(mob/living/carbon/human/consumer) - var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) if(!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) return FOOD_LIKED diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm index b3ad6ce0b40..4c289e60efb 100644 --- a/code/game/objects/items/food/misc.dm +++ b/code/game/objects/items/food/misc.dm @@ -611,7 +611,7 @@ AddComponent(/datum/component/edible, check_liked = CALLBACK(src, PROC_REF(check_liked))) /obj/item/food/pickle/proc/check_liked(mob/living/carbon/human/consumer) - var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) if(!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)) return FOOD_LIKED diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm index 8dc706d8723..6ac9bdf97c1 100644 --- a/code/game/objects/items/hand_items.dm +++ b/code/game/objects/items/hand_items.dm @@ -635,7 +635,7 @@ if(!iscarbon(target)) return var/mob/living/carbon/heartbreakee = target - var/obj/item/organ/internal/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot(ORGAN_SLOT_HEART) dont_go_breakin_my_heart.apply_organ_damage(999) // Based on energy gun characteristics diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index 9c9ebc3c9bd..b87bf0f593e 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -352,7 +352,7 @@ /obj/item/melee/baton/telescopic/suicide_act(mob/living/user) var/mob/living/carbon/human/human_user = user - var/obj/item/organ/internal/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/brain) user.visible_message(span_suicide("[user] stuffs [src] up [user.p_their()] nose and presses the 'extend' button! It looks like [user.p_theyre()] trying to clear [user.p_their()] mind.")) if(active) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 1917f98ba2c..adde7bba3c1 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -95,7 +95,7 @@ */ /obj/item/melee/sabre/proc/attempt_bane(element_owner, mob/living/carbon/criminal) SIGNAL_HANDLER - var/obj/item/organ/internal/liver/liver = criminal.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = criminal.get_organ_slot(ORGAN_SLOT_LIVER) if(isnull(liver) || !HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM)) return COMPONENT_CANCEL_BANING diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index fdfd2b5568e..443fd3bb64f 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -239,7 +239,7 @@ else if(istype(W, /obj/item/bodypart/head/robot)) var/obj/item/bodypart/head/robot/HD = W - if(locate(/obj/item/organ/internal) in HD) + if(locate(/obj/item/organ) in HD) to_chat(user, span_warning("There are organs inside [HD]!")) return if(head) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 586e1461527..2f399bd35b9 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -435,7 +435,7 @@ /obj/item/lighter, /obj/item/mining_scanner, /obj/item/multitool, - /obj/item/organ/internal/monster_core, + /obj/item/organ/monster_core, /obj/item/pickaxe, /obj/item/radio, /obj/item/reagent_containers/cup/glass, @@ -479,7 +479,7 @@ for(var/i in 1 to 2) new /obj/item/reagent_containers/hypospray/medipen/survival(src) for(var/i in 1 to 2) - var/obj/item/organ/internal/monster_core/core = new /obj/item/organ/internal/monster_core/regenerative_core/legion(src) + var/obj/item/organ/monster_core/core = new /obj/item/organ/monster_core/regenerative_core/legion(src) core.preserve() /obj/item/storage/belt/mining/primitive diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 120b91a40ff..e6dad759c83 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -385,7 +385,7 @@ . = ..() if(.) return - if(user.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)) + if(user.get_organ_by_type(/obj/item/organ/alien/plasmavessel)) switch(status) if(BURSTING) to_chat(user, span_notice("The child is hatching out.")) @@ -457,7 +457,7 @@ return var/mob/living/carbon/C = AM - if(C.stat == CONSCIOUS && C.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)) + if(C.stat == CONSCIOUS && C.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo)) return Burst(kill=FALSE) diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index 131e08808fb..3a6d6d3ee4a 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -26,7 +26,7 @@ if(!length(buckled_mobs)) return - if(hero.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)) + if(hero.get_organ_by_type(/obj/item/organ/alien/plasmavessel)) unbuckle_mob(captive) add_fingerprint(hero) return @@ -59,9 +59,9 @@ if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.incapacitated || M.buckled ) return - if(M.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)) + if(M.get_organ_by_type(/obj/item/organ/alien/plasmavessel)) return - if(!user.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)) + if(!user.get_organ_by_type(/obj/item/organ/alien/plasmavessel)) return if(has_buckled_mobs()) diff --git a/code/game/objects/structures/gym/punching_bag.dm b/code/game/objects/structures/gym/punching_bag.dm index bba9e4f715c..bea51bc1d8c 100644 --- a/code/game/objects/structures/gym/punching_bag.dm +++ b/code/game/objects/structures/gym/punching_bag.dm @@ -58,7 +58,7 @@ if (is_heavy_gravity) stamina_exhaustion *= 1.5 - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) stamina_exhaustion *= potential_spine.athletics_boost_multiplier diff --git a/code/game/objects/structures/gym/weight_machine.dm b/code/game/objects/structures/gym/weight_machine.dm index 352ef65ff00..b36e35245c2 100644 --- a/code/game/objects/structures/gym/weight_machine.dm +++ b/code/game/objects/structures/gym/weight_machine.dm @@ -172,7 +172,7 @@ // total stamina drain of 1 workout calculated based on the workout length var/stamina_exhaustion = FLOOR(user.maxHealth / workout_reps / WORKOUT_LENGTH, 0.1) - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) stamina_exhaustion *= potential_spine.athletics_boost_multiplier diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index fb082b72456..f9d490a29b2 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -150,7 +150,7 @@ GLOBAL_LIST_INIT(ore_probability, list( if(3) new /obj/item/reagent_containers/cup/bottle/potion/flight(loc) if(4) - new /obj/item/organ/internal/heart/cursed/wizard(loc) + new /obj/item/organ/heart/cursed/wizard(loc) if(5) new /obj/item/jacobs_ladder(loc) if(6) diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index 17f81eb2428..80b3a10e8e9 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -112,21 +112,21 @@ // Misc bonuses to the climb speed. var/misc_multiplier = 1 - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) misc_multiplier *= potential_spine.athletics_boost_multiplier var/final_travel_time = (travel_time - fitness_level) * misc_multiplier if(do_after(user, final_travel_time, target = src, interaction_key = DOAFTER_SOURCE_CLIMBING_LADDER)) - travel(user, going_up) + travel(user, going_up, grant_exp = TRUE) /// The message shown when the player starts climbing the ladder /obj/structure/ladder/proc/show_initial_fluff_message(mob/user, going_up) var/up_down = going_up ? "up" : "down" user.balloon_alert_to_viewers("climbing [up_down]...") -/obj/structure/ladder/proc/travel(mob/user, going_up = TRUE, is_ghost = FALSE) +/obj/structure/ladder/proc/travel(mob/user, going_up = TRUE, is_ghost = FALSE, grant_exp = FALSE) var/obj/structure/ladder/ladder = going_up ? up : down if(!ladder) balloon_alert(user, "there's nothing that way!") @@ -138,6 +138,9 @@ var/turf/target = get_turf(ladder) user.zMove(target = target, z_move_flags = ZMOVE_CHECK_PULLEDBY|ZMOVE_ALLOW_BUCKLED|ZMOVE_INCLUDE_PULLED) + if(grant_exp) + user.mind?.adjust_experience(/datum/skill/athletics, 10) //get a little experience for our trouble + if(!is_ghost) show_final_fluff_message(user, ladder, going_up) diff --git a/code/game/objects/structures/lavaland/gulag_vent.dm b/code/game/objects/structures/lavaland/gulag_vent.dm index 8cb530e31b1..d6e30cf1fe3 100644 --- a/code/game/objects/structures/lavaland/gulag_vent.dm +++ b/code/game/objects/structures/lavaland/gulag_vent.dm @@ -33,7 +33,7 @@ var/boulder_lift_speed = 8 SECONDS - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = living_user.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = living_user.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) boulder_lift_speed *= potential_spine.athletics_boost_multiplier diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index d27a2e8e1cd..895602bb017 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -77,7 +77,7 @@ petrified_mob.investigate_log("has been dusted by statue deconstruction.", INVESTIGATE_DEATHS) if(iscarbon(petrified_mob) && brain) var/mob/living/carbon/petrified_carbon = petrified_mob - var/obj/item/organ/internal/brain/carbon_brain = petrified_carbon.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/carbon_brain = petrified_carbon.get_organ_slot(ORGAN_SLOT_BRAIN) carbon_brain.Remove(petrified_carbon) carbon_brain.forceMove(get_turf(src)) carbon_brain.name = "petrified [carbon_brain.name]" diff --git a/code/game/objects/structures/signs/sign_eyechart.dm b/code/game/objects/structures/signs/sign_eyechart.dm index eaaa3bb2428..de0db7d0074 100644 --- a/code/game/objects/structures/signs/sign_eyechart.dm +++ b/code/game/objects/structures/signs/sign_eyechart.dm @@ -35,7 +35,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/eyechart, 32) else if(isdog(user) || iscat(user)) colorblind = TRUE // i know these pets are not colorblind in the conventional sense, but it's an easter egg, ok? - var/obj/item/organ/internal/eyes/eye = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eye = user.get_organ_slot(ORGAN_SLOT_EYES) // eye null checks here are for mobs without eyes. // humans missing eyes will be caught by the is_blind check above. var/eye_goodness = isnull(eye) ? 0 : eye.damage diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 6a03adbdfb1..08a730110a9 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -288,7 +288,7 @@ tableplace_delay = 2.75 SECONDS skills_space = " quickly" - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) tableplace_delay *= potential_spine.athletics_boost_multiplier diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 92c77e0b12a..10e9bd1299d 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -669,7 +669,7 @@ GLOBAL_LIST_EMPTY(station_turfs) clear_reagents_to_vomit_pool(vomiter, throw_up, purge_ratio) /proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V, purge_ratio = 0.1) - var/obj/item/organ/internal/stomach/belly = M.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = M.get_organ_slot(ORGAN_SLOT_STOMACH) if(!belly?.reagents.total_volume) return var/chemicals_lost = belly.reagents.total_volume * purge_ratio diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm index c58d63581bd..93b398397c2 100644 --- a/code/modules/admin/verbs/adminfun.dm +++ b/code/modules/admin/verbs/adminfun.dm @@ -110,7 +110,7 @@ ADMIN_VERB(mass_zombie_infection, R_ADMIN, "Mass Zombie Infection", "Infects all for(var/i in GLOB.human_list) var/mob/living/carbon/human/H = i - new /obj/item/organ/internal/zombie_infection/nodamage(H) + new /obj/item/organ/zombie_infection/nodamage(H) message_admins("[key_name_admin(user)] added a latent zombie infection to all humans.") log_admin("[key_name(user)] added a latent zombie infection to all humans.") @@ -121,7 +121,7 @@ ADMIN_VERB(mass_zombie_cure, R_ADMIN, "Mass Zombie Cure", "Removes the zombie in if(confirm != "Yes") return - for(var/obj/item/organ/internal/zombie_infection/nodamage/I in GLOB.zombie_infection_list) + for(var/obj/item/organ/zombie_infection/nodamage/I in GLOB.zombie_infection_list) qdel(I) message_admins("[key_name_admin(user)] cured all zombies.") diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm index 368f6f4d6f4..26cf1222113 100644 --- a/code/modules/admin/verbs/secrets.dm +++ b/code/modules/admin/verbs/secrets.dm @@ -517,8 +517,8 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w if(H.dna.species.id == SPECIES_HUMAN) if(H.dna.features["tail_human"] == "None" || H.dna.features["ears"] == "None") - var/obj/item/organ/internal/ears/cat/ears = new - var/obj/item/organ/external/tail/cat/tail = new + var/obj/item/organ/ears/cat/ears = new + var/obj/item/organ/tail/cat/tail = new ears.Insert(H, movement_flags = DELETE_IF_REPLACED) tail.Insert(H, movement_flags = DELETE_IF_REPLACED) var/list/honorifics = list("[MALE]" = list("kun"), "[FEMALE]" = list("chan","tan"), "[NEUTER]" = list("san"), "[PLURAL]" = list("san")) //John Robust -> Robust-kun diff --git a/code/modules/admin/verbs/selectequipment.dm b/code/modules/admin/verbs/selectequipment.dm index 415130fa1b7..96534967702 100644 --- a/code/modules/admin/verbs/selectequipment.dm +++ b/code/modules/admin/verbs/selectequipment.dm @@ -213,7 +213,7 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(select_equipment, R_FUN, "Select Equipment", mob/ta for(var/obj/item/item in human_target.get_equipped_items(includes_flags)) qdel(item) - var/obj/item/organ/internal/brain/human_brain = human_target.get_organ_slot(BRAIN) + var/obj/item/organ/brain/human_brain = human_target.get_organ_slot(BRAIN) human_brain.destroy_all_skillchips() // get rid of skillchips to prevent runtimes if(dresscode != "Naked") diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm index 8bd5f3f8432..d33bb48887f 100644 --- a/code/modules/antagonists/abductor/abductor.dm +++ b/code/modules/antagonists/abductor/abductor.dm @@ -98,7 +98,7 @@ //Equip var/mob/living/carbon/human/new_abductor = owner.current new_abductor.set_species(/datum/species/abductor) - var/obj/item/organ/internal/tongue/abductor/abductor_tongue = new_abductor.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/abductor/abductor_tongue = new_abductor.get_organ_slot(ORGAN_SLOT_TONGUE) abductor_tongue.mothership = "[team.name]" new_abductor.real_name = "[team.name] [sub_role]" diff --git a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm index a02d89e6b1d..296eef07e81 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm @@ -29,7 +29,7 @@ accept_hand = 1 time = 32 var/obj/item/organ/IC = null - var/list/organ_types = list(/obj/item/organ/internal/heart) + var/list/organ_types = list(/obj/item/organ/heart) /datum/surgery_step/extract_organ/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) for(var/atom/A in target.organs) @@ -50,7 +50,7 @@ /datum/surgery_step/gland_insert name = "insert gland" - implements = list(/obj/item/organ/internal/heart/gland = 100) + implements = list(/obj/item/organ/heart/gland = 100) time = 32 /datum/surgery_step/gland_insert/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -59,6 +59,6 @@ /datum/surgery_step/gland_insert/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message(span_notice("[user] inserts [tool] into [target]."), span_notice("You insert [tool] into [target].")) user.temporarilyRemoveItemFromInventory(tool, TRUE) - var/obj/item/organ/internal/heart/gland/gland = tool + var/obj/item/organ/heart/gland/gland = tool gland.Insert(target, 2) return 1 diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm index 9f6d10677d1..d70dc3f0e67 100644 --- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm +++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm @@ -178,7 +178,7 @@ /obj/item/abductor/mind_device/proc/mind_control(atom/target, mob/living/user) if(iscarbon(target)) var/mob/living/carbon/carbon_target = target - var/obj/item/organ/internal/heart/gland/target_gland = carbon_target.get_organ_slot("heart") + var/obj/item/organ/heart/gland/target_gland = carbon_target.get_organ_slot("heart") if(!istype(target_gland)) to_chat(user, span_warning("Your target does not have an experimental gland!")) return @@ -448,7 +448,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} species = span_notice("[human_victim.dna.species.name]") if(IS_CHANGELING(human_victim)) species = span_warning("Changeling lifeform") - var/obj/item/organ/internal/heart/gland/temp = locate() in human_victim.organs + var/obj/item/organ/heart/gland/temp = locate() in human_victim.organs if(temp) helptext = span_warning("Experimental gland detected!") else diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index d1f240b7f68..b991a16b831 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland +/obj/item/organ/heart/gland name = "fleshy mass" desc = "A nausea-inducing hunk of twisting flesh and metal." icon = 'icons/obj/antags/abductor.dmi' @@ -22,31 +22,31 @@ var/mind_control_duration = 1800 var/active_mind_control = FALSE -/obj/item/organ/internal/heart/gland/Initialize(mapload) +/obj/item/organ/heart/gland/Initialize(mapload) . = ..() icon_state = pick(list("health", "spider", "slime", "emp", "species", "egg", "vent", "mindshock", "viral")) AddElement(/datum/element/update_icon_blocker) -/obj/item/organ/internal/heart/gland/examine(mob/user) +/obj/item/organ/heart/gland/examine(mob/user) . = ..() if(HAS_MIND_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || isobserver(user)) . += span_notice("It is \a [abductor_hint]") -/obj/item/organ/internal/heart/gland/Stop() +/obj/item/organ/heart/gland/Stop() return FALSE -/obj/item/organ/internal/heart/gland/proc/ownerCheck() +/obj/item/organ/heart/gland/proc/ownerCheck() if(ishuman(owner)) return TRUE if(!human_only && iscarbon(owner)) return TRUE return FALSE -/obj/item/organ/internal/heart/gland/proc/Start() +/obj/item/organ/heart/gland/proc/Start() active = 1 COOLDOWN_START(src, activation_cooldown, rand(cooldown_low, cooldown_high)) -/obj/item/organ/internal/heart/gland/proc/update_gland_hud() +/obj/item/organ/heart/gland/proc/update_gland_hud() if(!owner) return var/image/holder = owner.hud_list[GLAND_HUD] @@ -59,7 +59,7 @@ else holder.icon_state = "hudgland_spent" -/obj/item/organ/internal/heart/gland/proc/mind_control(command, mob/living/user) +/obj/item/organ/heart/gland/proc/mind_control(command, mob/living/user) if(!ownerCheck() || !mind_control_uses || active_mind_control) return FALSE mind_control_uses-- @@ -75,7 +75,7 @@ addtimer(CALLBACK(src, PROC_REF(clear_mind_control)), mind_control_duration) return TRUE -/obj/item/organ/internal/heart/gland/proc/clear_mind_control() +/obj/item/organ/heart/gland/proc/clear_mind_control() if(!ownerCheck() || !active_mind_control) return FALSE owner.balloon_alert(owner, "compulsion forgotten") @@ -84,7 +84,7 @@ active_mind_control = FALSE return TRUE -/obj/item/organ/internal/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags) +/obj/item/organ/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags) . = ..() active = FALSE if(initial(uses) == 1) @@ -93,7 +93,7 @@ hud.remove_atom_from_hud(gland_owner) clear_mind_control() -/obj/item/organ/internal/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() if(special != 2 && uses) // Special 2 means abductor surgery @@ -102,7 +102,7 @@ hud.add_atom_to_hud(gland_owner) update_gland_hud() -/obj/item/organ/internal/heart/gland/on_life(seconds_per_tick, times_fired) +/obj/item/organ/heart/gland/on_life(seconds_per_tick, times_fired) if(!active) return if(!ownerCheck()) @@ -115,5 +115,5 @@ if(!uses) active = FALSE -/obj/item/organ/internal/heart/gland/proc/activate() +/obj/item/organ/heart/gland/proc/activate() return diff --git a/code/modules/antagonists/abductor/equipment/glands/access.dm b/code/modules/antagonists/abductor/equipment/glands/access.dm index 8e8ff9a7ef9..29be30c0cfc 100644 --- a/code/modules/antagonists/abductor/equipment/glands/access.dm +++ b/code/modules/antagonists/abductor/equipment/glands/access.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/access +/obj/item/organ/heart/gland/access abductor_hint = "anagraphic electro-scrambler. After it activates, grants the abductee intrinsic all access." cooldown_low = 600 cooldown_high = 1200 @@ -7,6 +7,6 @@ mind_control_uses = 3 mind_control_duration = 900 -/obj/item/organ/internal/heart/gland/access/activate() +/obj/item/organ/heart/gland/access/activate() to_chat(owner, span_notice("You feel like a VIP for some reason.")) owner.AddComponent(/datum/component/simple_access, SSid_access.get_region_access_list(list(REGION_ALL_GLOBAL)), src) diff --git a/code/modules/antagonists/abductor/equipment/glands/blood.dm b/code/modules/antagonists/abductor/equipment/glands/blood.dm index 522354fac3a..b1d40852673 100644 --- a/code/modules/antagonists/abductor/equipment/glands/blood.dm +++ b/code/modules/antagonists/abductor/equipment/glands/blood.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/blood +/obj/item/organ/heart/gland/blood abductor_hint = "pseudonuclear hemo-destabilizer. Periodically randomizes the abductee's bloodtype into a random reagent." cooldown_low = 1200 cooldown_high = 1800 @@ -9,7 +9,7 @@ mind_control_uses = 3 mind_control_duration = 1500 -/obj/item/organ/internal/heart/gland/blood/activate() +/obj/item/organ/heart/gland/blood/activate() if(!ishuman(owner) || !owner.dna.species) return var/mob/living/carbon/human/H = owner diff --git a/code/modules/antagonists/abductor/equipment/glands/chem.dm b/code/modules/antagonists/abductor/equipment/glands/chem.dm index 965d8f2fc20..54644bd8e9f 100644 --- a/code/modules/antagonists/abductor/equipment/glands/chem.dm +++ b/code/modules/antagonists/abductor/equipment/glands/chem.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/chem +/obj/item/organ/heart/gland/chem abductor_hint = "intrinsic pharma-provider. The abductee constantly produces random chemicals inside their bloodstream. They also quickly regenerate toxin damage." cooldown_low = 50 cooldown_high = 50 @@ -8,12 +8,12 @@ mind_control_duration = 1200 var/list/possible_reagents = list() -/obj/item/organ/internal/heart/gland/chem/Initialize(mapload) +/obj/item/organ/heart/gland/chem/Initialize(mapload) . = ..() for(var/R in subtypesof(/datum/reagent/drug) + subtypesof(/datum/reagent/medicine) + typesof(/datum/reagent/toxin)) possible_reagents += R -/obj/item/organ/internal/heart/gland/chem/activate() +/obj/item/organ/heart/gland/chem/activate() var/chem_to_add = pick(possible_reagents) owner.reagents.add_reagent(chem_to_add, 2) owner.adjustToxLoss(-5, forced = TRUE) diff --git a/code/modules/antagonists/abductor/equipment/glands/egg.dm b/code/modules/antagonists/abductor/equipment/glands/egg.dm index 938caeeb361..67c3efd42cb 100644 --- a/code/modules/antagonists/abductor/equipment/glands/egg.dm +++ b/code/modules/antagonists/abductor/equipment/glands/egg.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/egg +/obj/item/organ/heart/gland/egg abductor_hint = "roe/enzymatic synthesizer. The abductee will periodically lay eggs filled with random reagents." cooldown_low = 300 cooldown_high = 400 @@ -9,7 +9,7 @@ mind_control_uses = 2 mind_control_duration = 1800 -/obj/item/organ/internal/heart/gland/egg/activate() +/obj/item/organ/heart/gland/egg/activate() owner.visible_message(span_alertalien("[owner] [pick(EGG_LAYING_MESSAGES)]")) var/turf/T = owner.drop_location() new /obj/item/food/egg/gland(T) diff --git a/code/modules/antagonists/abductor/equipment/glands/electric.dm b/code/modules/antagonists/abductor/equipment/glands/electric.dm index e0b3df0f19c..77c6cfdfeec 100644 --- a/code/modules/antagonists/abductor/equipment/glands/electric.dm +++ b/code/modules/antagonists/abductor/equipment/glands/electric.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/electric +/obj/item/organ/heart/gland/electric abductor_hint = "electron accumulator/discharger. The abductee becomes fully immune to electric shocks. Additionally, they will randomly discharge electric bolts." cooldown_low = 800 cooldown_high = 1200 @@ -7,20 +7,20 @@ mind_control_uses = 2 mind_control_duration = 900 -/obj/item/organ/internal/heart/gland/electric/on_mob_insert(mob/living/carbon/gland_owner) +/obj/item/organ/heart/gland/electric/on_mob_insert(mob/living/carbon/gland_owner) . = ..() ADD_TRAIT(gland_owner, TRAIT_SHOCKIMMUNE, ABDUCTOR_GLAND_TRAIT) -/obj/item/organ/internal/heart/gland/electric/on_mob_remove(mob/living/carbon/gland_owner) +/obj/item/organ/heart/gland/electric/on_mob_remove(mob/living/carbon/gland_owner) . = ..() REMOVE_TRAIT(gland_owner, TRAIT_SHOCKIMMUNE, ABDUCTOR_GLAND_TRAIT) -/obj/item/organ/internal/heart/gland/electric/activate() +/obj/item/organ/heart/gland/electric/activate() owner.visible_message(span_danger("[owner]'s skin starts emitting electric arcs!"),\ span_warning("You feel electric energy building up inside you!")) playsound(get_turf(owner), SFX_SPARKS, 100, TRUE, -1, SHORT_RANGE_SOUND_EXTRARANGE) addtimer(CALLBACK(src, PROC_REF(zap)), rand(3 SECONDS, 10 SECONDS)) -/obj/item/organ/internal/heart/gland/electric/proc/zap() +/obj/item/organ/heart/gland/electric/proc/zap() tesla_zap(source = owner, zap_range = 4, power = 8e3, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN) playsound(get_turf(owner), 'sound/effects/magic/lightningshock.ogg', 50, TRUE) diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm index 83ba7a7ffbd..13761ba0cdb 100644 --- a/code/modules/antagonists/abductor/equipment/glands/heal.dm +++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm @@ -1,6 +1,6 @@ #define REJECTION_VOMIT_FLAGS (MOB_VOMIT_BLOOD | MOB_VOMIT_STUN | MOB_VOMIT_KNOCKDOWN | MOB_VOMIT_FORCE) -/obj/item/organ/internal/heart/gland/heal +/obj/item/organ/heart/gland/heal abductor_hint = "organic replicator. Forcibly ejects damaged and robotic organs from the abductee and regenerates them. Additionally, forcibly removes reagents (via vomit) from the abductee if they have moderate toxin damage or poison within the bloodstream, and regenerates blood to a healthy threshold if too low. The abductee will also reject implants such as mindshields." cooldown_low = 200 cooldown_high = 400 @@ -10,7 +10,7 @@ mind_control_uses = 3 mind_control_duration = 3000 -/obj/item/organ/internal/heart/gland/heal/activate() +/obj/item/organ/heart/gland/heal/activate() if(!(owner.mob_biotypes & MOB_ORGANIC)) return @@ -19,31 +19,31 @@ return for(var/organ in owner.organs) - if(istype(organ, /obj/item/organ/internal/cyberimp)) + if(istype(organ, /obj/item/organ/cyberimp)) reject_cyberimp(organ) return - var/obj/item/organ/internal/appendix/appendix = owner.get_organ_slot(ORGAN_SLOT_APPENDIX) + var/obj/item/organ/appendix/appendix = owner.get_organ_slot(ORGAN_SLOT_APPENDIX) if((!appendix && !HAS_TRAIT(owner, TRAIT_NOHUNGER)) || (appendix && ((appendix.organ_flags & ORGAN_FAILING) || IS_ROBOTIC_ORGAN(appendix)))) replace_appendix(appendix) return - var/obj/item/organ/internal/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER) if((!liver && !HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM)) || (liver && ((liver.damage > liver.high_threshold) || IS_ROBOTIC_ORGAN(liver)))) replace_liver(liver) return - var/obj/item/organ/internal/lungs/lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS) if((!lungs && !HAS_TRAIT(owner, TRAIT_NOBREATH)) || (lungs && ((lungs.damage > lungs.high_threshold) || IS_ROBOTIC_ORGAN(lungs)))) replace_lungs(lungs) return - var/obj/item/organ/internal/stomach/stomach = owner.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/stomach = owner.get_organ_slot(ORGAN_SLOT_STOMACH) if((!stomach && !HAS_TRAIT(owner, TRAIT_NOHUNGER)) || (stomach && ((stomach.damage > stomach.high_threshold) || IS_ROBOTIC_ORGAN(stomach)))) replace_stomach(stomach) return - var/obj/item/organ/internal/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES) if(!eyes || (eyes && ((eyes.damage > eyes.low_threshold) || IS_ROBOTIC_ORGAN(eyes)))) replace_eyes(eyes) return @@ -78,19 +78,19 @@ replace_chest(chest) return -/obj/item/organ/internal/heart/gland/heal/proc/reject_implant(obj/item/implant/implant) +/obj/item/organ/heart/gland/heal/proc/reject_implant(obj/item/implant/implant) owner.visible_message(span_warning("[owner] vomits up a tiny mangled implant!"), span_userdanger("You suddenly vomit up a tiny mangled implant!")) owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0) implant.removed(owner) qdel(implant) -/obj/item/organ/internal/heart/gland/heal/proc/reject_cyberimp(obj/item/organ/internal/cyberimp/implant) +/obj/item/organ/heart/gland/heal/proc/reject_cyberimp(obj/item/organ/cyberimp/implant) owner.visible_message(span_warning("[owner] vomits up his [implant.name]!"), span_userdanger("You suddenly vomit up your [implant.name]!")) owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0) implant.Remove(owner) implant.forceMove(owner.drop_location()) -/obj/item/organ/internal/heart/gland/heal/proc/replace_appendix(obj/item/organ/internal/appendix/appendix) +/obj/item/organ/heart/gland/heal/proc/replace_appendix(obj/item/organ/appendix/appendix) if(appendix) owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0) appendix.Remove(owner) @@ -99,13 +99,13 @@ else to_chat(owner, span_warning("You feel a weird rumble in your bowels...")) - var/appendix_type = /obj/item/organ/internal/appendix + var/appendix_type = /obj/item/organ/appendix if(owner?.dna?.species?.mutantappendix) appendix_type = owner.dna.species.mutantappendix - var/obj/item/organ/internal/appendix/new_appendix = new appendix_type() + var/obj/item/organ/appendix/new_appendix = new appendix_type() new_appendix.Insert(owner) -/obj/item/organ/internal/heart/gland/heal/proc/replace_liver(obj/item/organ/internal/liver/liver) +/obj/item/organ/heart/gland/heal/proc/replace_liver(obj/item/organ/liver/liver) if(liver) owner.visible_message(span_warning("[owner] vomits up his [liver.name]!"), span_userdanger("You suddenly vomit up your [liver.name]!")) owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0) @@ -114,13 +114,13 @@ else to_chat(owner, span_warning("You feel a weird rumble in your bowels...")) - var/liver_type = /obj/item/organ/internal/liver + var/liver_type = /obj/item/organ/liver if(owner?.dna?.species?.mutantliver) liver_type = owner.dna.species.mutantliver - var/obj/item/organ/internal/liver/new_liver = new liver_type() + var/obj/item/organ/liver/new_liver = new liver_type() new_liver.Insert(owner) -/obj/item/organ/internal/heart/gland/heal/proc/replace_lungs(obj/item/organ/internal/lungs/lungs) +/obj/item/organ/heart/gland/heal/proc/replace_lungs(obj/item/organ/lungs/lungs) if(lungs) owner.visible_message(span_warning("[owner] vomits up his [lungs.name]!"), span_userdanger("You suddenly vomit up your [lungs.name]!")) owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0) @@ -129,13 +129,13 @@ else to_chat(owner, span_warning("You feel a weird rumble inside your chest...")) - var/lung_type = /obj/item/organ/internal/lungs + var/lung_type = /obj/item/organ/lungs if(owner.dna.species && owner.dna.species.mutantlungs) lung_type = owner.dna.species.mutantlungs - var/obj/item/organ/internal/lungs/new_lungs = new lung_type() + var/obj/item/organ/lungs/new_lungs = new lung_type() new_lungs.Insert(owner) -/obj/item/organ/internal/heart/gland/heal/proc/replace_stomach(obj/item/organ/internal/stomach/stomach) +/obj/item/organ/heart/gland/heal/proc/replace_stomach(obj/item/organ/stomach/stomach) if(stomach) owner.visible_message(span_warning("[owner] vomits up his [stomach.name]!"), span_userdanger("You suddenly vomit up your [stomach.name]!")) owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0) @@ -144,13 +144,13 @@ else to_chat(owner, span_warning("You feel a weird rumble in your bowels...")) - var/stomach_type = /obj/item/organ/internal/stomach + var/stomach_type = /obj/item/organ/stomach if(owner?.dna?.species?.mutantstomach) stomach_type = owner.dna.species.mutantstomach - var/obj/item/organ/internal/stomach/new_stomach = new stomach_type() + var/obj/item/organ/stomach/new_stomach = new stomach_type() new_stomach.Insert(owner) -/obj/item/organ/internal/heart/gland/heal/proc/replace_eyes(obj/item/organ/internal/eyes/eyes) +/obj/item/organ/heart/gland/heal/proc/replace_eyes(obj/item/organ/eyes/eyes) if(eyes) owner.visible_message(span_warning("[owner]'s [eyes.name] fall out of their sockets!"), span_userdanger("Your [eyes.name] fall out of their sockets!")) playsound(owner, 'sound/effects/splat.ogg', 50, TRUE) @@ -161,15 +161,15 @@ addtimer(CALLBACK(src, PROC_REF(finish_replace_eyes)), rand(10 SECONDS, 20 SECONDS)) -/obj/item/organ/internal/heart/gland/heal/proc/finish_replace_eyes() - var/eye_type = /obj/item/organ/internal/eyes +/obj/item/organ/heart/gland/heal/proc/finish_replace_eyes() + var/eye_type = /obj/item/organ/eyes if(owner.dna.species && owner.dna.species.mutanteyes) eye_type = owner.dna.species.mutanteyes - var/obj/item/organ/internal/eyes/new_eyes = new eye_type() + var/obj/item/organ/eyes/new_eyes = new eye_type() new_eyes.Insert(owner) owner.visible_message(span_warning("A pair of new eyes suddenly inflates into [owner]'s eye sockets!"), span_userdanger("A pair of new eyes suddenly inflates into your eye sockets!")) -/obj/item/organ/internal/heart/gland/heal/proc/replace_limb(body_zone, obj/item/bodypart/limb) +/obj/item/organ/heart/gland/heal/proc/replace_limb(body_zone, obj/item/bodypart/limb) if(limb) owner.visible_message(span_warning("[owner]'s [limb.plaintext_zone] suddenly detaches from [owner.p_their()] body!"), span_userdanger("Your [limb.plaintext_zone] suddenly detaches from your body!")) playsound(owner, SFX_DESECRATION, 50, TRUE, -1) @@ -179,18 +179,18 @@ addtimer(CALLBACK(src, PROC_REF(finish_replace_limb), body_zone), rand(15 SECONDS, 30 SECONDS)) -/obj/item/organ/internal/heart/gland/heal/proc/finish_replace_limb(body_zone) +/obj/item/organ/heart/gland/heal/proc/finish_replace_limb(body_zone) owner.visible_message(span_warning("With a loud snap, [owner]'s [parse_zone(body_zone)] rapidly grows back from [owner.p_their()] body!"), span_userdanger("With a loud snap, your [parse_zone(body_zone)] rapidly grows back from your body!"), span_warning("Your hear a loud snap.")) playsound(owner, 'sound/effects/magic/demon_consume.ogg', 50, TRUE) owner.regenerate_limb(body_zone) -/obj/item/organ/internal/heart/gland/heal/proc/replace_blood() +/obj/item/organ/heart/gland/heal/proc/replace_blood() owner.visible_message(span_warning("[owner] starts vomiting huge amounts of blood!"), span_userdanger("You suddenly start vomiting huge amounts of blood!")) keep_replacing_blood() -/obj/item/organ/internal/heart/gland/heal/proc/keep_replacing_blood() +/obj/item/organ/heart/gland/heal/proc/keep_replacing_blood() var/keep_going = FALSE owner.vomit(vomit_flags = (MOB_VOMIT_BLOOD | MOB_VOMIT_FORCE), lost_nutrition = 0, distance = 3) owner.Stun(15) @@ -209,7 +209,7 @@ if(keep_going) addtimer(CALLBACK(src, PROC_REF(keep_replacing_blood)), 3 SECONDS) -/obj/item/organ/internal/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest) +/obj/item/organ/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest) if(!IS_ORGANIC_LIMB(chest)) owner.visible_message(span_warning("[owner]'s [chest.name] rapidly expels its mechanical components, replacing them with flesh!"), span_userdanger("Your [chest.name] rapidly expels its mechanical components, replacing them with flesh!")) playsound(owner, 'sound/effects/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE) diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm index 1a3f140c341..a4aa88b8da9 100644 --- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm +++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/mindshock +/obj/item/organ/heart/gland/mindshock abductor_hint = "neural crosstalk uninhibitor. The abductee emits a disrupting psychic wave every so often. This will either stun, cause hallucinations or deal random brain damage to people nearby." cooldown_low = 40 SECONDS cooldown_high = 70 SECONDS @@ -8,7 +8,7 @@ mind_control_duration = 120 SECONDS var/list/mob/living/carbon/human/broadcasted_mobs = list() -/obj/item/organ/internal/heart/gland/mindshock/activate() +/obj/item/organ/heart/gland/mindshock/activate() to_chat(owner, span_notice("You get a headache.")) var/turf/owner_turf = get_turf(owner) @@ -30,7 +30,7 @@ if(3) target.adjust_hallucinations(120 SECONDS) -/obj/item/organ/internal/heart/gland/mindshock/mind_control(command, mob/living/user) +/obj/item/organ/heart/gland/mindshock/mind_control(command, mob/living/user) if(!ownerCheck() || !mind_control_uses || active_mind_control) return FALSE mind_control_uses-- @@ -62,7 +62,7 @@ update_gland_hud() return TRUE -/obj/item/organ/internal/heart/gland/mindshock/clear_mind_control() +/obj/item/organ/heart/gland/mindshock/clear_mind_control() if(!active_mind_control || !LAZYLEN(broadcasted_mobs)) return FALSE for(var/target_mob in broadcasted_mobs) diff --git a/code/modules/antagonists/abductor/equipment/glands/plasma.dm b/code/modules/antagonists/abductor/equipment/glands/plasma.dm index 76cd806bb42..6b4a6150f74 100644 --- a/code/modules/antagonists/abductor/equipment/glands/plasma.dm +++ b/code/modules/antagonists/abductor/equipment/glands/plasma.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/plasma +/obj/item/organ/heart/gland/plasma abductor_hint = "effluvium sanguine-synonym emitter. The abductee randomly emits clouds of plasma." cooldown_low = 1200 cooldown_high = 1800 @@ -7,12 +7,12 @@ mind_control_uses = 1 mind_control_duration = 800 -/obj/item/organ/internal/heart/gland/plasma/activate() +/obj/item/organ/heart/gland/plasma/activate() to_chat(owner, span_warning("You feel bloated.")) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), owner, span_userdanger("A massive stomachache overcomes you.")), 15 SECONDS) addtimer(CALLBACK(src, PROC_REF(vomit_plasma)), 20 SECONDS) -/obj/item/organ/internal/heart/gland/plasma/proc/vomit_plasma() +/obj/item/organ/heart/gland/plasma/proc/vomit_plasma() if(!owner) return owner.visible_message(span_danger("[owner] vomits a cloud of plasma!")) diff --git a/code/modules/antagonists/abductor/equipment/glands/quantum.dm b/code/modules/antagonists/abductor/equipment/glands/quantum.dm index a2a4a9149e7..1991287981c 100644 --- a/code/modules/antagonists/abductor/equipment/glands/quantum.dm +++ b/code/modules/antagonists/abductor/equipment/glands/quantum.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/quantum +/obj/item/organ/heart/gland/quantum abductor_hint = "quantic de-observation matrix. Periodically links with a random person in view, then the abductee later swaps positions with that person." cooldown_low = 150 cooldown_high = 150 @@ -8,7 +8,7 @@ mind_control_duration = 1200 var/mob/living/carbon/entangled_mob -/obj/item/organ/internal/heart/gland/quantum/activate() +/obj/item/organ/heart/gland/quantum/activate() if(entangled_mob) return for(var/mob/M in oview(owner, 7)) @@ -18,7 +18,7 @@ addtimer(CALLBACK(src, PROC_REF(quantum_swap)), rand(1 MINUTES, 4 MINUTES)) return -/obj/item/organ/internal/heart/gland/quantum/proc/quantum_swap() +/obj/item/organ/heart/gland/quantum/proc/quantum_swap() if(QDELETED(entangled_mob)) entangled_mob = null return @@ -30,7 +30,7 @@ if(!active_mind_control) //Do not reset entangled mob while mind control is active entangled_mob = null -/obj/item/organ/internal/heart/gland/quantum/mind_control(command, mob/living/user) +/obj/item/organ/heart/gland/quantum/mind_control(command, mob/living/user) if(..()) if(entangled_mob && ishuman(entangled_mob) && (entangled_mob.stat < DEAD)) to_chat(entangled_mob, span_userdanger("You suddenly feel an irresistible compulsion to follow an order...")) @@ -41,7 +41,7 @@ user.log_message("mirrored an abductor mind control message to [key_name(entangled_mob)]: [command]", LOG_GAME) update_gland_hud() -/obj/item/organ/internal/heart/gland/quantum/clear_mind_control() +/obj/item/organ/heart/gland/quantum/clear_mind_control() if(active_mind_control) to_chat(entangled_mob, span_userdanger("You feel the compulsion fade, and you completely forget about your previous orders.")) entangled_mob.clear_alert(ALERT_MIND_CONTROL) diff --git a/code/modules/antagonists/abductor/equipment/glands/slime.dm b/code/modules/antagonists/abductor/equipment/glands/slime.dm index 6d3287ecae6..252afdaa45e 100644 --- a/code/modules/antagonists/abductor/equipment/glands/slime.dm +++ b/code/modules/antagonists/abductor/equipment/glands/slime.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/slime +/obj/item/organ/heart/gland/slime abductor_hint = "gastric animation galvanizer. The abductee occasionally vomits slimes. Slimes will no longer attack the abductee." cooldown_low = 600 cooldown_high = 1200 @@ -7,17 +7,17 @@ mind_control_uses = 1 mind_control_duration = 2400 -/obj/item/organ/internal/heart/gland/slime/on_mob_insert(mob/living/carbon/gland_owner) +/obj/item/organ/heart/gland/slime/on_mob_insert(mob/living/carbon/gland_owner) . = ..() gland_owner.faction |= FACTION_SLIME gland_owner.grant_language(/datum/language/slime, source = LANGUAGE_GLAND) -/obj/item/organ/internal/heart/gland/slime/on_mob_remove(mob/living/carbon/gland_owner) +/obj/item/organ/heart/gland/slime/on_mob_remove(mob/living/carbon/gland_owner) . = ..() gland_owner.faction -= FACTION_SLIME gland_owner.remove_language(/datum/language/slime, source = LANGUAGE_GLAND) -/obj/item/organ/internal/heart/gland/slime/activate() +/obj/item/organ/heart/gland/slime/activate() to_chat(owner, span_warning("You feel nauseated!")) owner.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 20) diff --git a/code/modules/antagonists/abductor/equipment/glands/spider.dm b/code/modules/antagonists/abductor/equipment/glands/spider.dm index 52ff520a876..44150d9ed80 100644 --- a/code/modules/antagonists/abductor/equipment/glands/spider.dm +++ b/code/modules/antagonists/abductor/equipment/glands/spider.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/spiderman +/obj/item/organ/heart/gland/spiderman abductor_hint = "araneae cloister accelerator. The abductee occasionally exhales spider pheromones and will spawn spiderlings." cooldown_low = 450 cooldown_high = 900 @@ -7,7 +7,7 @@ mind_control_uses = 2 mind_control_duration = 2400 -/obj/item/organ/internal/heart/gland/spiderman/activate() +/obj/item/organ/heart/gland/spiderman/activate() to_chat(owner, span_warning("You feel something crawling in your skin.")) owner.faction |= FACTION_SPIDER var/mob/living/basic/spider/growing/spiderling/spider = new(owner.drop_location()) diff --git a/code/modules/antagonists/abductor/equipment/glands/transform.dm b/code/modules/antagonists/abductor/equipment/glands/transform.dm index 3ea10c77255..f13418a9082 100644 --- a/code/modules/antagonists/abductor/equipment/glands/transform.dm +++ b/code/modules/antagonists/abductor/equipment/glands/transform.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/transform +/obj/item/organ/heart/gland/transform abductor_hint = "anthropmorphic transmorphosizer. The abductee will occasionally change appearance and species." cooldown_low = 900 cooldown_high = 1800 @@ -8,7 +8,7 @@ mind_control_uses = 7 mind_control_duration = 300 -/obj/item/organ/internal/heart/gland/transform/activate() +/obj/item/organ/heart/gland/transform/activate() to_chat(owner, span_notice("You feel unlike yourself.")) randomize_human(owner) var/species = pick(list(/datum/species/human, /datum/species/lizard, /datum/species/moth, /datum/species/fly)) diff --git a/code/modules/antagonists/abductor/equipment/glands/trauma.dm b/code/modules/antagonists/abductor/equipment/glands/trauma.dm index 5fab30332ef..844cc795a94 100644 --- a/code/modules/antagonists/abductor/equipment/glands/trauma.dm +++ b/code/modules/antagonists/abductor/equipment/glands/trauma.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/trauma +/obj/item/organ/heart/gland/trauma abductor_hint = "white matter randomiser. The abductee occasionally gains a random brain trauma, up to five times. The traumas can range from basic to deep-rooted." cooldown_low = 800 cooldown_high = 1200 @@ -7,7 +7,7 @@ mind_control_uses = 3 mind_control_duration = 1800 -/obj/item/organ/internal/heart/gland/trauma/activate() +/obj/item/organ/heart/gland/trauma/activate() to_chat(owner, span_warning("You feel a spike of pain in your head.")) if(prob(33)) owner.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY)) diff --git a/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm b/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm index c7e3a74e4f9..ed0cc5bbed2 100644 --- a/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm +++ b/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/ventcrawling +/obj/item/organ/heart/gland/ventcrawling abductor_hint = "pliant cartilage enabler. The abductee can crawl through vents without trouble." cooldown_low = 1800 cooldown_high = 2400 @@ -7,6 +7,6 @@ mind_control_uses = 4 mind_control_duration = 1800 -/obj/item/organ/internal/heart/gland/ventcrawling/activate() +/obj/item/organ/heart/gland/ventcrawling/activate() to_chat(owner, span_notice("You feel very stretchy.")) ADD_TRAIT(owner, TRAIT_VENTCRAWLER_ALWAYS, type) diff --git a/code/modules/antagonists/abductor/equipment/glands/viral.dm b/code/modules/antagonists/abductor/equipment/glands/viral.dm index c3d82af9674..9aa4a26e549 100644 --- a/code/modules/antagonists/abductor/equipment/glands/viral.dm +++ b/code/modules/antagonists/abductor/equipment/glands/viral.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/gland/viral +/obj/item/organ/heart/gland/viral abductor_hint = "contamination incubator. The abductee becomes a carrier of a random advanced disease - of which they are unaffected by." cooldown_low = 1800 cooldown_high = 2400 @@ -7,13 +7,13 @@ mind_control_uses = 1 mind_control_duration = 1800 -/obj/item/organ/internal/heart/gland/viral/activate() +/obj/item/organ/heart/gland/viral/activate() to_chat(owner, span_warning("You feel sick.")) var/datum/disease/advance/A = random_virus(pick(2,6),6) A.carrier = TRUE owner.ForceContractDisease(A, FALSE, TRUE) -/obj/item/organ/internal/heart/gland/viral/proc/random_virus(max_symptoms, max_level) +/obj/item/organ/heart/gland/viral/proc/random_virus(max_symptoms, max_level) if(max_symptoms > VIRUS_SYMPTOM_LIMIT) max_symptoms = VIRUS_SYMPTOM_LIMIT var/datum/disease/advance/A = new /datum/disease/advance() diff --git a/code/modules/antagonists/abductor/equipment/orderable_gear.dm b/code/modules/antagonists/abductor/equipment/orderable_gear.dm index b133bf3f8a5..aa6ef608f6c 100644 --- a/code/modules/antagonists/abductor/equipment/orderable_gear.dm +++ b/code/modules/antagonists/abductor/equipment/orderable_gear.dm @@ -53,7 +53,7 @@ GLOBAL_LIST_INIT(abductor_gear, subtypesof(/datum/abductor_gear)) name = "Superlingual Matrix" description = "A mysterious structure that allows for instant communication between users. Using it inhand will attune it to your mothership's channel. Pretty impressive until you need to eat something." id = "superlingual_matrix" - build_path = list(/obj/item/organ/internal/tongue/abductor = 1) + build_path = list(/obj/item/organ/tongue/abductor = 1) category = CATEGORY_MISC_GEAR /datum/abductor_gear/mental_interface diff --git a/code/modules/antagonists/abductor/machinery/dispenser.dm b/code/modules/antagonists/abductor/machinery/dispenser.dm index 416153c50e5..8254247f9dd 100644 --- a/code/modules/antagonists/abductor/machinery/dispenser.dm +++ b/code/modules/antagonists/abductor/machinery/dispenser.dm @@ -14,7 +14,7 @@ /obj/machinery/abductor/gland_dispenser/Initialize(mapload) . = ..() - gland_types = subtypesof(/obj/item/organ/internal/heart/gland) + gland_types = subtypesof(/obj/item/organ/heart/gland) gland_types = shuffle(gland_types) gland_colors = new/list(gland_types.len) amounts = new/list(gland_types.len) @@ -62,7 +62,7 @@ return TRUE /obj/machinery/abductor/gland_dispenser/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/organ/internal/heart/gland)) + if(istype(W, /obj/item/organ/heart/gland)) if(!user.transferItemToLoc(W, src)) return for(var/i in 1 to gland_colors.len) diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm index c4e59c505bf..324ec4381e1 100644 --- a/code/modules/antagonists/abductor/machinery/experiment.dm +++ b/code/modules/antagonists/abductor/machinery/experiment.dm @@ -137,7 +137,7 @@ if(occupant.stat == DEAD) say("Specimen deceased - please provide fresh sample.") return "Specimen deceased." - var/obj/item/organ/internal/heart/gland/GlandTest = locate() in occupant.organs + var/obj/item/organ/heart/gland/GlandTest = locate() in occupant.organs if(!GlandTest) say("Experimental dissection not detected!") return "No glands detected!" @@ -158,7 +158,7 @@ user_abductor.team.abductees += occupant.mind occupant.mind.add_antag_datum(/datum/antagonist/abductee) - for(var/obj/item/organ/internal/heart/gland/G in occupant.organs) + for(var/obj/item/organ/heart/gland/G in occupant.organs) G.Start() point_reward++ if(point_reward > 0) diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index f15dfd27164..615a3d7a325 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -161,7 +161,7 @@ make_brain_decoy(living_mob) /datum/antagonist/changeling/proc/make_brain_decoy(mob/living/ling) - var/obj/item/organ/internal/brain/our_ling_brain = ling.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/our_ling_brain = ling.get_organ_slot(ORGAN_SLOT_BRAIN) if(isnull(our_ling_brain) || our_ling_brain.decoy_override) return diff --git a/code/modules/antagonists/changeling/headslug_eggs.dm b/code/modules/antagonists/changeling/headslug_eggs.dm index 75c0881c551..e2238d9d7e7 100644 --- a/code/modules/antagonists/changeling/headslug_eggs.dm +++ b/code/modules/antagonists/changeling/headslug_eggs.dm @@ -1,7 +1,7 @@ #define EGG_INCUBATION_TIME (4 MINUTES) /// The actual organ that the changeling headslug implants into a dead host. -/obj/item/organ/internal/body_egg/changeling_egg +/obj/item/organ/body_egg/changeling_egg name = "changeling egg" desc = "Twitching and disgusting." /// The mind of the original changeling that gave forth to the headslug mob. @@ -11,20 +11,20 @@ /// When this egg last got removed from a body. If -1, the egg hasn't been removed from a body. var/removal_time = -1 -/obj/item/organ/internal/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() hatch_time = world.time + (removal_time == -1 ? EGG_INCUBATION_TIME : (hatch_time - removal_time)) -/obj/item/organ/internal/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags) +/obj/item/organ/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags) . = ..() removal_time = world.time -/obj/item/organ/internal/body_egg/changeling_egg/egg_process(seconds_per_tick, times_fired) +/obj/item/organ/body_egg/changeling_egg/egg_process(seconds_per_tick, times_fired) if(owner && hatch_time <= world.time) pop() /// Once the egg is fully grown, we gib the host and spawn a monkey (with the changeling's player controlling it). Very descriptive proc name. -/obj/item/organ/internal/body_egg/changeling_egg/proc/pop() +/obj/item/organ/body_egg/changeling_egg/proc/pop() var/mob/living/carbon/human/spawned_monkey = new(owner) spawned_monkey.set_species(/datum/species/monkey) diff --git a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm index dec2fa6a76e..52a5d371cf0 100644 --- a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm +++ b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm @@ -16,7 +16,7 @@ /datum/action/changeling/augmented_eyesight/on_purchase(mob/user) //The ability starts inactive, so we should be protected from flashes. . = ..() - var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES) RegisterSignal(user, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(eye_implanted)) RegisterSignal(user, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(eye_removed)) if(!isnull(ling_eyes)) @@ -27,7 +27,7 @@ if(!istype(user)) return FALSE - var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES) if(isnull(ling_eyes)) user.balloon_alert(user, "no eyes!") return FALSE @@ -50,7 +50,7 @@ return TRUE /datum/action/changeling/augmented_eyesight/Remove(mob/user) - var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES) if(!isnull(ling_eyes)) ling_eyes.flash_protect = initial(ling_eyes.flash_protect) @@ -64,7 +64,7 @@ /datum/action/changeling/augmented_eyesight/proc/eye_implanted(mob/living/source, obj/item/organ/gained, special) SIGNAL_HANDLER - var/obj/item/organ/internal/eyes/ling_eyes = gained + var/obj/item/organ/eyes/ling_eyes = gained if(!istype(ling_eyes)) return if(active) @@ -76,7 +76,7 @@ /datum/action/changeling/augmented_eyesight/proc/eye_removed(mob/living/source, obj/item/organ/removed, special) SIGNAL_HANDLER - var/obj/item/organ/internal/eyes/ling_eyes = removed + var/obj/item/organ/eyes/ling_eyes = removed if(!istype(ling_eyes)) return ling_eyes.flash_protect = initial(ling_eyes.flash_protect) diff --git a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm index c33b36a785f..bd498b58482 100644 --- a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm +++ b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm @@ -37,7 +37,7 @@ animate(cling, color = COLOR_DARK, time = 3 SECONDS) // Darkens their overall appearance var/datum/antagonist/changeling/changeling_data = cling.mind?.has_antag_datum(/datum/antagonist/changeling) changeling_data?.chem_recharge_slowdown -= recharge_slowdown //Slows down chem regeneration - var/obj/item/organ/internal/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/eyes) if(!istype(eyes)) return eyes.lighting_cutoff = LIGHTING_CUTOFF_MEDIUM // Adds barely usable, kinda shit night vision @@ -53,7 +53,7 @@ animate(cling, color = null, time = 3 SECONDS) var/datum/antagonist/changeling/changeling_data = cling.mind?.has_antag_datum(/datum/antagonist/changeling) changeling_data?.chem_recharge_slowdown += recharge_slowdown - var/obj/item/organ/internal/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/eyes) if(!istype(eyes)) return eyes.lighting_cutoff = LIGHTING_CUTOFF_VISIBLE @@ -64,7 +64,7 @@ /datum/action/changeling/darkness_adaptation/proc/eye_implanted(mob/living/source, obj/item/organ/gained, special) SIGNAL_HANDLER - var/obj/item/organ/internal/eyes/eyes = gained + var/obj/item/organ/eyes/eyes = gained if(!istype(eyes)) return if(is_active) @@ -76,7 +76,7 @@ /datum/action/changeling/darkness_adaptation/proc/eye_removed(mob/living/source, obj/item/organ/removed, special) SIGNAL_HANDLER - var/obj/item/organ/internal/eyes/eyes = removed + var/obj/item/organ/eyes/eyes = removed if(!istype(eyes)) return eyes.flash_protect = initial(eyes.flash_protect) diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm index c4f2376f755..1af11d3ad15 100644 --- a/code/modules/antagonists/changeling/powers/headcrab.dm +++ b/code/modules/antagonists/changeling/powers/headcrab.dm @@ -22,7 +22,7 @@ explosion(user, light_impact_range = 2, adminlog = TRUE, explosion_cause = src) for(var/mob/living/carbon/human/blinded_human in range(2, user)) - var/obj/item/organ/internal/eyes/eyes = blinded_human.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = blinded_human.get_organ_slot(ORGAN_SLOT_EYES) if(!eyes || blinded_human.is_blind()) continue to_chat(blinded_human, span_userdanger("You are blinded by a shower of blood!")) diff --git a/code/modules/antagonists/changeling/powers/mmi_talk.dm b/code/modules/antagonists/changeling/powers/mmi_talk.dm index 2fe90d08318..ecd64890c42 100644 --- a/code/modules/antagonists/changeling/powers/mmi_talk.dm +++ b/code/modules/antagonists/changeling/powers/mmi_talk.dm @@ -15,7 +15,7 @@ * Set when created via the ling decoy component. * If the brain ends up being qdelled, this action will also be qdelled, and thus this ref is cleared. */ - VAR_FINAL/obj/item/organ/internal/brain/brain_ref + VAR_FINAL/obj/item/organ/brain/brain_ref /// A map view of the area around the MMI. VAR_FINAL/atom/movable/screen/map_view/mmi_view diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index f6b42bf19f2..158b32df216 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -632,7 +632,7 @@ /obj/item/clothing/head/helmet/changeling_hivehead/attackby(obj/item/attacking_item, mob/user, params) . = ..() - if(!istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core/legion) || !holds_reagents) + if(!istype(attacking_item, /obj/item/organ/monster_core/regenerative_core/legion) || !holds_reagents) return visible_message(span_boldwarning("As [user] shoves [attacking_item] into [src], [src] begins to mutate.")) var/mob/living/carbon/wearer = loc diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm index b05bb38ae31..18f04727ff3 100644 --- a/code/modules/antagonists/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -12,10 +12,10 @@ to_chat(user, span_notice("We cleanse impurities from our form.")) ..() var/list/bad_organs = list( - user.get_organ_by_type(/obj/item/organ/internal/empowered_borer_egg), // NOVA EDIT ADDITION - user.get_organ_by_type(/obj/item/organ/internal/body_egg), - user.get_organ_by_type(/obj/item/organ/internal/legion_tumour), - user.get_organ_by_type(/obj/item/organ/internal/zombie_infection), + user.get_organ_by_type(/obj/item/organ/empowered_borer_egg), // NOVA EDIT ADDITION + user.get_organ_by_type(/obj/item/organ/body_egg), + user.get_organ_by_type(/obj/item/organ/legion_tumour), + user.get_organ_by_type(/obj/item/organ/zombie_infection), ) diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm index 8873ef73a49..b6d6f550d05 100644 --- a/code/modules/antagonists/changeling/powers/shriek.dm +++ b/code/modules/antagonists/changeling/powers/shriek.dm @@ -18,7 +18,7 @@ if(iscarbon(M)) var/mob/living/carbon/C = M if(!IS_CHANGELING(C)) - var/obj/item/organ/internal/ears/ears = C.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = C.get_organ_slot(ORGAN_SLOT_EARS) if(ears) ears.adjustEarDamage(0, 30) C.adjust_confusion(25 SECONDS) diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index cd5c24ced7a..4fa2d453cdc 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -237,7 +237,7 @@ dna_cost = 1 /datum/action/changeling/sting/blind/sting_action(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) if(!eyes) user.balloon_alert(user, "no eyes!") return FALSE diff --git a/code/modules/antagonists/clown_ops/clownop.dm b/code/modules/antagonists/clown_ops/clownop.dm index 8dbcb3c232d..2fd2daa7489 100644 --- a/code/modules/antagonists/clown_ops/clownop.dm +++ b/code/modules/antagonists/clown_ops/clownop.dm @@ -29,7 +29,7 @@ /datum/antagonist/nukeop/clownop/equip_op() . = ..() var/mob/living/current_mob = owner.current - var/obj/item/organ/internal/liver/liver = current_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = current_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(liver) ADD_TRAIT(liver, TRAIT_COMEDY_METABOLISM, CLOWNOP_TRAIT) @@ -61,7 +61,7 @@ /datum/antagonist/nukeop/leader/clownop/equip_op() . = ..() var/mob/living/L = owner.current - var/obj/item/organ/internal/liver/liver = L.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = L.get_organ_slot(ORGAN_SLOT_LIVER) if(liver) ADD_TRAIT(liver, TRAIT_COMEDY_METABOLISM, CLOWNOP_TRAIT) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index e334b17e360..af7254119dd 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -1092,7 +1092,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) /mob/living/carbon/human/cult_ghost/get_organs_for_zone(zone, include_children) . = ..() - for(var/obj/item/organ/internal/brain/B in .) //they're not that smart, really + for(var/obj/item/organ/brain/B in .) //they're not that smart, really . -= B diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index bbd1fc9ee03..5b73476a3af 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -66,7 +66,7 @@ /datum/outfit/synthetic/post_equip(mob/living/carbon/human/H, visuals_only = FALSE) if(visuals_only) return - var/obj/item/organ/internal/eyes/robotic/glow/eyes = new() + var/obj/item/organ/eyes/robotic/glow/eyes = new() eyes.Insert(H, movement_flags = DELETE_IF_REPLACED) /datum/outfit/invisible_man diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm index 007dc15bbc4..d4fdf79dfbb 100644 --- a/code/modules/antagonists/heretic/heretic_knowledge.dm +++ b/code/modules/antagonists/heretic/heretic_knowledge.dm @@ -581,15 +581,15 @@ /datum/heretic_knowledge/knowledge_ritual/New() . = ..() var/static/list/potential_organs = list( - /obj/item/organ/internal/appendix, - /obj/item/organ/external/tail, - /obj/item/organ/internal/eyes, - /obj/item/organ/internal/tongue, - /obj/item/organ/internal/ears, - /obj/item/organ/internal/heart, - /obj/item/organ/internal/liver, - /obj/item/organ/internal/stomach, - /obj/item/organ/internal/lungs, + /obj/item/organ/appendix, + /obj/item/organ/tail, + /obj/item/organ/eyes, + /obj/item/organ/tongue, + /obj/item/organ/ears, + /obj/item/organ/heart, + /obj/item/organ/liver, + /obj/item/organ/stomach, + /obj/item/organ/lungs, ) var/static/list/potential_easy_items = list( diff --git a/code/modules/antagonists/heretic/items/corrupted_organs.dm b/code/modules/antagonists/heretic/items/corrupted_organs.dm index 335279c9553..fec25094bb7 100644 --- a/code/modules/antagonists/heretic/items/corrupted_organs.dm +++ b/code/modules/antagonists/heretic/items/corrupted_organs.dm @@ -1,17 +1,17 @@ /// Renders you unable to see people who were heretics at the time that this organ is gained -/obj/item/organ/internal/eyes/corrupt +/obj/item/organ/eyes/corrupt name = "corrupt orbs" desc = "These eyes have seen something they shouldn't have." organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS /// The override images we are applying var/list/hallucinations -/obj/item/organ/internal/eyes/corrupt/Initialize(mapload) +/obj/item/organ/eyes/corrupt/Initialize(mapload) . = ..() AddElement(/datum/element/corrupted_organ) AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes have wide dilated pupils, and no iris. Something is moving in the darkness.", BODY_ZONE_PRECISE_EYES) -/obj/item/organ/internal/eyes/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/eyes/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if (!organ_owner.client) return @@ -28,7 +28,7 @@ if (LAZYLEN(hallucinations)) organ_owner.client.images |= hallucinations -/obj/item/organ/internal/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() if (!LAZYLEN(hallucinations)) return @@ -37,26 +37,26 @@ /// Sometimes speak in incomprehensible tongues -/obj/item/organ/internal/tongue/corrupt +/obj/item/organ/tongue/corrupt name = "corrupt tongue" desc = "This one tells only lies." organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS -/obj/item/organ/internal/tongue/corrupt/Initialize(mapload) +/obj/item/organ/tongue/corrupt/Initialize(mapload) . = ..() AddElement(/datum/element/corrupted_organ) AddElement(/datum/element/noticable_organ, "The inside of %PRONOUN_Their mouth is full of stars.", BODY_ZONE_PRECISE_MOUTH) -/obj/item/organ/internal/tongue/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/tongue/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() RegisterSignal(organ_owner, COMSIG_MOB_SAY, PROC_REF(on_spoken)) -/obj/item/organ/internal/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_MOB_SAY) /// When the mob speaks, sometimes put it in a different language -/obj/item/organ/internal/tongue/corrupt/proc/on_spoken(mob/living/organ_owner, list/speech_args) +/obj/item/organ/tongue/corrupt/proc/on_spoken(mob/living/organ_owner, list/speech_args) SIGNAL_HANDLER if (organ_owner.has_reagent(/datum/reagent/water/holywater) || prob(60)) return @@ -64,7 +64,7 @@ /// Randomly secretes alcohol or hallucinogens when you're drinking something -/obj/item/organ/internal/liver/corrupt +/obj/item/organ/liver/corrupt name = "corrupt liver" desc = "After what you've seen you could really go for a drink." organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS @@ -83,20 +83,20 @@ /datum/reagent/drug/mushroomhallucinogen, ) -/obj/item/organ/internal/liver/corrupt/Initialize(mapload) +/obj/item/organ/liver/corrupt/Initialize(mapload) . = ..() AddElement(/datum/element/corrupted_organ) -/obj/item/organ/internal/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank)) -/obj/item/organ/internal/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS) /// If we drank something, add a little extra -/obj/item/organ/internal/liver/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods) +/obj/item/organ/liver/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods) SIGNAL_HANDLER if (!(methods & INGEST)) return @@ -108,7 +108,7 @@ /// Rapidly become hungry if you are not digesting blood -/obj/item/organ/internal/stomach/corrupt +/obj/item/organ/stomach/corrupt name = "corrupt stomach" desc = "This parasite demands an unwholesome diet in order to be satisfied." organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS @@ -119,21 +119,21 @@ /// How long until we prompt the player to drink blood again? COOLDOWN_DECLARE(message_cooldown) -/obj/item/organ/internal/stomach/corrupt/Initialize(mapload) +/obj/item/organ/stomach/corrupt/Initialize(mapload) . = ..() AddElement(/datum/element/corrupted_organ) AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have an unhealthy pallor.") -/obj/item/organ/internal/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank)) -/obj/item/organ/internal/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS) /// Check if we drank a little blood -/obj/item/organ/internal/stomach/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods) +/obj/item/organ/stomach/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods) SIGNAL_HANDLER if (!(methods & INGEST)) return @@ -148,7 +148,7 @@ deltimer(thirst_timer) thirst_timer = addtimer(VARSET_CALLBACK(src, thirst_satiated, FALSE), 3 MINUTES, TIMER_STOPPABLE | TIMER_DELETE_ME) -/obj/item/organ/internal/stomach/corrupt/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired) +/obj/item/organ/stomach/corrupt/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired) if (thirst_satiated || human.has_reagent(/datum/reagent/water/holywater)) return ..() @@ -174,18 +174,18 @@ /// Occasionally bombards you with spooky hands and lets everyone hear your pulse. -/obj/item/organ/internal/heart/corrupt +/obj/item/organ/heart/corrupt name = "corrupt heart" desc = "What corruption is this spreading along with the blood?" organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS /// How long until the next heart? COOLDOWN_DECLARE(hand_cooldown) -/obj/item/organ/internal/heart/corrupt/Initialize(mapload) +/obj/item/organ/heart/corrupt/Initialize(mapload) . = ..() AddElement(/datum/element/corrupted_organ) -/obj/item/organ/internal/heart/corrupt/on_life(seconds_per_tick, times_fired) +/obj/item/organ/heart/corrupt/on_life(seconds_per_tick, times_fired) . = ..() if (!COOLDOWN_FINISHED(src, hand_cooldown) || IS_IN_MANSUS(owner) || !owner.needs_heart() || !is_beating() || owner.has_reagent(/datum/reagent/water/holywater)) return @@ -194,7 +194,7 @@ /// Sometimes cough out some kind of dangerous gas -/obj/item/organ/internal/lungs/corrupt +/obj/item/organ/lungs/corrupt name = "corrupt lungs" desc = "Some things SHOULD be drowned in tar." organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS @@ -209,11 +209,11 @@ /datum/gas/plasma = 20, ) -/obj/item/organ/internal/lungs/corrupt/Initialize(mapload) +/obj/item/organ/lungs/corrupt/Initialize(mapload) . = ..() AddElement(/datum/element/corrupted_organ) -/obj/item/organ/internal/lungs/corrupt/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather) +/obj/item/organ/lungs/corrupt/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather) . = ..() if (!. || IS_IN_MANSUS(owner) || breather.has_reagent(/datum/reagent/water/holywater) || !prob(cough_chance)) return @@ -229,19 +229,19 @@ /// It's full of worms -/obj/item/organ/internal/appendix/corrupt +/obj/item/organ/appendix/corrupt name = "corrupt appendix" desc = "What kind of dark, cosmic force is even going to bother to corrupt an appendix?" organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS /// How likely are we to spawn worms? var/worm_chance = 2 -/obj/item/organ/internal/appendix/corrupt/Initialize(mapload) +/obj/item/organ/appendix/corrupt/Initialize(mapload) . = ..() AddElement(/datum/element/corrupted_organ) AddElement(/datum/element/noticable_organ, "%PRONOUN_Their abdomen is distended... and wiggling.", BODY_ZONE_PRECISE_GROIN) -/obj/item/organ/internal/appendix/corrupt/on_life(seconds_per_tick, times_fired) +/obj/item/organ/appendix/corrupt/on_life(seconds_per_tick, times_fired) . = ..() if (owner.stat != CONSCIOUS || owner.has_reagent(/datum/reagent/water/holywater) || IS_IN_MANSUS(owner) || !SPT_PROB(worm_chance, seconds_per_tick)) return diff --git a/code/modules/antagonists/heretic/items/eldritch_painting.dm b/code/modules/antagonists/heretic/items/eldritch_painting.dm index a88e7016386..8dd3d7ef6e1 100644 --- a/code/modules/antagonists/heretic/items/eldritch_painting.dm +++ b/code/modules/antagonists/heretic/items/eldritch_painting.dm @@ -129,14 +129,14 @@ // A list made of the organs and bodyparts the heretic can get var/static/list/random_bodypart_or_organ = list( - /obj/item/organ/internal/brain, - /obj/item/organ/internal/lungs, - /obj/item/organ/internal/eyes, - /obj/item/organ/internal/ears, - /obj/item/organ/internal/heart, - /obj/item/organ/internal/liver, - /obj/item/organ/internal/stomach, - /obj/item/organ/internal/appendix, + /obj/item/organ/brain, + /obj/item/organ/lungs, + /obj/item/organ/eyes, + /obj/item/organ/ears, + /obj/item/organ/heart, + /obj/item/organ/liver, + /obj/item/organ/stomach, + /obj/item/organ/appendix, /obj/item/bodypart/arm/left, /obj/item/bodypart/arm/right, /obj/item/bodypart/leg/left, diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm index 99f0eeaeba2..402bbd9537d 100644 --- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm @@ -111,7 +111,7 @@ It can also be forced onto a heathen, to make them unable to take it off..." gain_text = "The Nightwatcher was lost. That's what the Watch believed. Yet he walked the world, unnoticed by the masses." required_atoms = list( - /obj/item/organ/internal/liver = 1, + /obj/item/organ/liver = 1, /obj/item/melee/baton/security = 1, // Technically means a cattleprod is valid /obj/item/clothing/mask = 1, /obj/item/flashlight/flare/candle = 4, diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm index 33bedad5195..8ade390e4d9 100644 --- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm @@ -225,7 +225,7 @@ gain_text = "I could not continue alone. I was able to summon The Uncanny Man to help me see more. \ The screams... once constant, now silenced by their wretched appearance. Nothing was out of reach." required_atoms = list( - /obj/item/organ/internal/eyes = 1, + /obj/item/organ/eyes = 1, /obj/effect/decal/cleanable/blood = 1, /obj/item/bodypart/arm/left = 1, ) @@ -261,9 +261,9 @@ An ever shapeshifting mass of flesh, it knew well my goals. The Marshal approved." required_atoms = list( - /obj/item/organ/external/tail = 1, - /obj/item/organ/internal/stomach = 1, - /obj/item/organ/internal/tongue = 1, + /obj/item/organ/tail = 1, + /obj/item/organ/stomach = 1, + /obj/item/organ/tongue = 1, /obj/item/pen = 1, /obj/item/paper = 1, ) diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm index 499d2444048..2ab75e96c5a 100644 --- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm @@ -100,7 +100,7 @@ gain_text = "At the head of the parade he stood, the moon condensed into one mass, a reflection of the soul." required_atoms = list( - /obj/item/organ/internal/heart = 1, + /obj/item/organ/heart = 1, /obj/item/stack/sheet/glass = 2, /obj/item/clothing/neck/tie = 1, ) diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm index 87086de6e00..782ec6ec55d 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm @@ -68,15 +68,15 @@ return var/list/removable_organs = list() - for(var/obj/item/organ/internal/bodypart_organ in organ_storage.contents) - if(bodypart_organ.organ_flags & ORGAN_UNREMOVABLE) + for(var/obj/item/organ/bodypart_organ in organ_storage.contents) + if(bodypart_organ.organ_flags & (ORGAN_EXTERNAL|ORGAN_UNREMOVABLE)) continue removable_organs += bodypart_organ if (!length(removable_organs)) return // This one is a little more possible but they're probably already in pretty bad shape by this point - var/obj/item/organ/internal/removing_organ = pick(removable_organs) + var/obj/item/organ/removing_organ = pick(removable_organs) if (carbon_owner.vomit(vomit_flags = VOMIT_CATEGORY_BLOOD)) carbon_owner.visible_message(span_boldwarning("[carbon_owner] vomits out [carbon_owner.p_their()] [removing_organ]")) diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm index 5ce9c89ab2a..9a69eb2db61 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -31,13 +31,13 @@ var/list/return_timers /// Evil organs we can put in people var/static/list/grantable_organs = list( - /obj/item/organ/internal/appendix/corrupt, - /obj/item/organ/internal/eyes/corrupt, - /obj/item/organ/internal/heart/corrupt, - /obj/item/organ/internal/liver/corrupt, - /obj/item/organ/internal/lungs/corrupt, - /obj/item/organ/internal/stomach/corrupt, - /obj/item/organ/internal/tongue/corrupt, + /obj/item/organ/appendix/corrupt, + /obj/item/organ/eyes/corrupt, + /obj/item/organ/heart/corrupt, + /obj/item/organ/liver/corrupt, + /obj/item/organ/lungs/corrupt, + /obj/item/organ/stomach/corrupt, + /obj/item/organ/tongue/corrupt, ) /datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force) @@ -422,7 +422,7 @@ /datum/heretic_knowledge/hunt_and_sacrifice/proc/curse_organs(mob/living/carbon/human/sac_target) var/usable_organs = grantable_organs.Copy() if (isplasmaman(sac_target)) - usable_organs -= /obj/item/organ/internal/lungs/corrupt // Their lungs are already more cursed than anything I could give them + usable_organs -= /obj/item/organ/lungs/corrupt // Their lungs are already more cursed than anything I could give them var/total_implant = rand(2, 4) @@ -430,7 +430,7 @@ if (!length(usable_organs)) return var/organ_path = pick_n_take(usable_organs) - var/obj/item/organ/internal/to_give = new organ_path + var/obj/item/organ/to_give = new organ_path to_give.Insert(sac_target) new /obj/effect/gibspawner/human/bodypartless(get_turf(sac_target)) diff --git a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm index 6672c9e7da8..b4470f9c7fb 100644 --- a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm +++ b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm @@ -16,7 +16,7 @@ gain_text = "Piercing eyes guided them through the mundane. Neither darkness nor terror could stop them." required_atoms = list( - /obj/item/organ/internal/eyes = 1, + /obj/item/organ/eyes = 1, /obj/item/shard = 1, /obj/item/flashlight/flare/candle = 1, ) diff --git a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm index f4d9d80717b..03b4fc477ad 100644 --- a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm +++ b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm @@ -20,7 +20,7 @@ required_atoms = list( /obj/effect/decal/cleanable/ash = 1, - /obj/item/organ/internal/liver = 1, + /obj/item/organ/liver = 1, /obj/item/stack/sheet/mineral/plasma = 1, ) mob_to_summon = /mob/living/basic/heretic_summon/fire_shark diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm index 5a3a042e609..f8a3cdf465b 100644 --- a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm +++ b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm @@ -37,7 +37,7 @@ gain_text = "The mansus holds many a curio, some are not meant for the mortal eye." required_atoms = list( - /obj/item/organ/internal/lungs = 1, + /obj/item/organ/lungs = 1, /obj/item/stack/rods = 3, /obj/item/storage/belt = 1, ) @@ -69,11 +69,11 @@ /datum/heretic_knowledge/painting/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) - if(locate(/obj/item/organ/internal/eyes) in atoms) + if(locate(/obj/item/organ/eyes) in atoms) src.result_atoms = list(/obj/item/wallframe/painting/eldritch/weeping) src.required_atoms = list( /obj/item/canvas = 1, - /obj/item/organ/internal/eyes = 1, + /obj/item/organ/eyes = 1, ) return TRUE diff --git a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm index 3818aeb7224..953590124f6 100644 --- a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm +++ b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm @@ -65,7 +65,7 @@ required_atoms = list( /obj/item/wirecutters = 1, /obj/effect/decal/cleanable/vomit = 1, - /obj/item/organ/internal/heart = 1, + /obj/item/organ/heart = 1, ) duration = 0.5 MINUTES duration_modifier = 4 diff --git a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm index 110cbbeb28e..664db996926 100644 --- a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm +++ b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm @@ -165,7 +165,7 @@ /obj/item/stack/sheet/mineral/titanium = 5, /obj/item/clothing/suit/armor = 1, /obj/item/assembly/flash = 1, - /obj/item/organ/internal/lungs = 1, + /obj/item/organ/lungs = 1, ) cost = 1 diff --git a/code/modules/antagonists/heretic/knowledge/starting_lore.dm b/code/modules/antagonists/heretic/knowledge/starting_lore.dm index 8c61f13f495..d6c9d1bc216 100644 --- a/code/modules/antagonists/heretic/knowledge/starting_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/starting_lore.dm @@ -48,7 +48,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) research_tree_icon_state = "living_heart" research_tree_icon_frame = 1 /// The typepath of the organ type required for our heart. - var/required_organ_type = /obj/item/organ/internal/heart + var/required_organ_type = /obj/item/organ/heart /datum/heretic_knowledge/living_heart/on_research(mob/user, datum/antagonist/heretic/our_heretic) . = ..() @@ -61,9 +61,9 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) // If a heretic is made from a species without a heart, we need to find a backup. if(!where_to_put_our_heart) var/static/list/backup_organs = list( - ORGAN_SLOT_LUNGS = /obj/item/organ/internal/lungs, - ORGAN_SLOT_LIVER = /obj/item/organ/internal/liver, - ORGAN_SLOT_STOMACH = /obj/item/organ/internal/stomach, + ORGAN_SLOT_LUNGS = /obj/item/organ/lungs, + ORGAN_SLOT_LIVER = /obj/item/organ/liver, + ORGAN_SLOT_STOMACH = /obj/item/organ/stomach, ) for(var/backup_slot in backup_organs) @@ -197,7 +197,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) desc = "Allows you to transmute a sheet of glass and a pair of eyes to create an Amber Focus. \ A focus must be worn in order to cast more advanced spells." required_atoms = list( - /obj/item/organ/internal/eyes = 1, + /obj/item/organ/eyes = 1, /obj/item/stack/sheet/glass = 1, ) result_atoms = list(/obj/item/clothing/neck/heretic_focus) diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm index 071284ac193..7f8b5795c01 100644 --- a/code/modules/antagonists/heretic/knowledge/void_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm @@ -217,7 +217,7 @@ heavy_storm = new(user, 10) if(ishuman(user)) var/mob/living/carbon/human/ascended_human = user - var/obj/item/organ/internal/eyes/heretic_eyes = ascended_human.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/heretic_eyes = ascended_human.get_organ_slot(ORGAN_SLOT_EYES) heretic_eyes?.color_cutoffs = list(30, 30, 30) ascended_human.update_sight() diff --git a/code/modules/antagonists/heretic/magic/moon_smile.dm b/code/modules/antagonists/heretic/magic/moon_smile.dm index f6f88894efd..2ded0134a04 100644 --- a/code/modules/antagonists/heretic/magic/moon_smile.dm +++ b/code/modules/antagonists/heretic/magic/moon_smile.dm @@ -40,7 +40,7 @@ cast_on.adjust_temp_blindness(moon_smile_duration + 1 SECONDS) cast_on.set_eye_blur_if_lower(moon_smile_duration + 2 SECONDS) - var/obj/item/organ/internal/ears/ears = cast_on.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = cast_on.get_organ_slot(ORGAN_SLOT_EARS) //adjustEarDamage takes deafness duration parameter in one unit per two seconds, instead of the normal time, so we divide by two seconds ears?.adjustEarDamage(0, (moon_smile_duration + 1 SECONDS) / (2 SECONDS)) diff --git a/code/modules/antagonists/nightmare/nightmare_organs.dm b/code/modules/antagonists/nightmare/nightmare_organs.dm index 4aaacb77e5f..ddfe675d412 100644 --- a/code/modules/antagonists/nightmare/nightmare_organs.dm +++ b/code/modules/antagonists/nightmare/nightmare_organs.dm @@ -4,7 +4,7 @@ #define HEART_SPECIAL_SHADOWIFY 2 -/obj/item/organ/internal/brain/shadow/nightmare +/obj/item/organ/brain/shadow/nightmare name = "tumorous mass" desc = "A fleshy growth that was dug out of the skull of a Nightmare." icon = 'icons/obj/medical/organs/organs.dmi' @@ -15,7 +15,7 @@ ///Our associated terrorize spell, for antagonist nightmares var/datum/action/cooldown/spell/pointed/terrorize/terrorize_spell -/obj/item/organ/internal/brain/shadow/nightmare/on_mob_insert(mob/living/carbon/brain_owner) +/obj/item/organ/brain/shadow/nightmare/on_mob_insert(mob/living/carbon/brain_owner) . = ..() if(brain_owner.dna.species.id != SPECIES_NIGHTMARE) @@ -29,7 +29,7 @@ terrorize_spell = new(src) terrorize_spell.Grant(brain_owner) -/obj/item/organ/internal/brain/shadow/nightmare/on_mob_remove(mob/living/carbon/brain_owner) +/obj/item/organ/brain/shadow/nightmare/on_mob_remove(mob/living/carbon/brain_owner) . = ..() QDEL_NULL(our_jaunt) QDEL_NULL(terrorize_spell) @@ -62,7 +62,7 @@ playsound(source, SFX_BULLET_MISS, 75, TRUE) return COMPONENT_BULLET_PIERCED -/obj/item/organ/internal/heart/nightmare +/obj/item/organ/heart/nightmare name = "heart of darkness" desc = "An alien organ that twists and writhes when exposed to light." visual = TRUE @@ -72,13 +72,13 @@ color = COLOR_CRAYON_BLACK decay_factor = 0 // No love is to be found in a heart so twisted. - food_reagents = list(/datum/reagent/consumable/nutriment = 5) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5) /// How many life ticks in the dark the owner has been dead for. Used for nightmare respawns. var/respawn_progress = 0 /// The armblade granted to the host of this heart. var/obj/item/light_eater/blade -/obj/item/organ/internal/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target) +/obj/item/organ/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target) if(M != user) return ..() user.visible_message( @@ -94,23 +94,23 @@ user.temporarilyRemoveItemFromInventory(src, TRUE) Insert(user) -/obj/item/organ/internal/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special) +/obj/item/organ/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special) . = ..() if(special != HEART_SPECIAL_SHADOWIFY) blade = new/obj/item/light_eater heart_owner.put_in_hands(blade) -/obj/item/organ/internal/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special) +/obj/item/organ/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special) . = ..() respawn_progress = 0 if(blade && special != HEART_SPECIAL_SHADOWIFY) heart_owner.visible_message(span_warning("\The [blade] disintegrates!")) QDEL_NULL(blade) -/obj/item/organ/internal/heart/nightmare/Stop() +/obj/item/organ/heart/nightmare/Stop() return FALSE -/obj/item/organ/internal/heart/nightmare/on_death(seconds_per_tick, times_fired) +/obj/item/organ/heart/nightmare/on_death(seconds_per_tick, times_fired) if(!owner) return var/turf/T = get_turf(owner) @@ -134,7 +134,7 @@ playsound(owner, 'sound/effects/hallucinations/far_noise.ogg', 50, TRUE) respawn_progress = 0 -/obj/item/organ/internal/heart/nightmare/get_availability(datum/species/owner_species, mob/living/owner_mob) +/obj/item/organ/heart/nightmare/get_availability(datum/species/owner_species, mob/living/owner_mob) if(isnightmare(owner_mob)) return TRUE return ..() diff --git a/code/modules/antagonists/nightmare/nightmare_species.dm b/code/modules/antagonists/nightmare/nightmare_species.dm index 38db2dfae86..e81819e44fc 100644 --- a/code/modules/antagonists/nightmare/nightmare_species.dm +++ b/code/modules/antagonists/nightmare/nightmare_species.dm @@ -24,8 +24,8 @@ TRAIT_NEVER_WOUNDED, ) - mutantheart = /obj/item/organ/internal/heart/nightmare - mutantbrain = /obj/item/organ/internal/brain/shadow/nightmare + mutantheart = /obj/item/organ/heart/nightmare + mutantbrain = /obj/item/organ/brain/shadow/nightmare bodypart_overrides = list( BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/shadow/nightmare, BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/shadow/nightmare, diff --git a/code/modules/antagonists/obsessed/obsessed.dm b/code/modules/antagonists/obsessed/obsessed.dm index ff4232ab2dc..cd58d6fec5d 100644 --- a/code/modules/antagonists/obsessed/obsessed.dm +++ b/code/modules/antagonists/obsessed/obsessed.dm @@ -41,7 +41,7 @@ if(!istype(C)) to_chat(admin, "[roundend_category] come from a brain trauma, so they need to at least be a carbon!") return - if(!C.get_organ_by_type(/obj/item/organ/internal/brain)) // If only I had a brain + if(!C.get_organ_by_type(/obj/item/organ/brain)) // If only I had a brain to_chat(admin, "[roundend_category] come from a brain trauma, so they need to HAVE A BRAIN.") return message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner)] into [name].") diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index dc35b766843..a339b0cc264 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -186,7 +186,7 @@ /datum/antagonist/rev/head/on_removal() if(give_hud) var/mob/living/carbon/C = owner.current - var/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate/S = C.get_organ_slot(ORGAN_SLOT_HUD) + var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = C.get_organ_slot(ORGAN_SLOT_HUD) if(S) S.Remove(C) return ..() @@ -365,7 +365,7 @@ to_chat(carbon_owner, "The Syndicate were unfortunately unable to get you a flash.") if(give_hud) - var/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate/hud = new() + var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/hud = new() hud.Insert(carbon_owner) if(carbon_owner.get_quirk(/datum/quirk/body_purist)) to_chat(carbon_owner, "Being a body purist, you would never accept cybernetic implants. Upon hearing this, your employers signed you up for a special program, which... for \ diff --git a/code/modules/antagonists/spy/spy_bounty.dm b/code/modules/antagonists/spy/spy_bounty.dm index ccab7952a9c..1aa318fb682 100644 --- a/code/modules/antagonists/spy/spy_bounty.dm +++ b/code/modules/antagonists/spy/spy_bounty.dm @@ -621,10 +621,10 @@ /obj/item/bodypart/arm/right, /obj/item/bodypart/leg/left, /obj/item/bodypart/leg/right, - /obj/item/organ/internal/stomach, - /obj/item/organ/internal/appendix, - /obj/item/organ/internal/liver, - /obj/item/organ/internal/eyes, + /obj/item/organ/stomach, + /obj/item/organ/appendix, + /obj/item/organ/liver, + /obj/item/organ/eyes, ) return ..() diff --git a/code/modules/antagonists/traitor/objectives/eyesnatching.dm b/code/modules/antagonists/traitor/objectives/eyesnatching.dm index 7d664b20d36..2ddad4913f0 100644 --- a/code/modules/antagonists/traitor/objectives/eyesnatching.dm +++ b/code/modules/antagonists/traitor/objectives/eyesnatching.dm @@ -81,7 +81,7 @@ continue var/mob/living/carbon/human/targets_current = possible_target.current - if(!targets_current.get_organ_by_type(/obj/item/organ/internal/eyes)) + if(!targets_current.get_organ_by_type(/obj/item/organ/eyes)) continue possible_targets += possible_target @@ -110,7 +110,7 @@ AddComponent(/datum/component/traitor_objective_register, target, fail_signals = list(COMSIG_QDELETING)) return TRUE -/datum/traitor_objective/target_player/eyesnatching/proc/check_eye_removal(datum/source, obj/item/organ/internal/eyes/removed) +/datum/traitor_objective/target_player/eyesnatching/proc/check_eye_removal(datum/source, obj/item/organ/eyes/removed) SIGNAL_HANDLER if(!istype(removed)) @@ -159,7 +159,7 @@ if(used || !istype(target) || !target.Adjacent(user)) //Works only once, no TK use return ..() - var/obj/item/organ/internal/eyes/eyeballies = target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyeballies = target.get_organ_slot(ORGAN_SLOT_EYES) var/obj/item/bodypart/head/head = target.get_bodypart(BODY_ZONE_HEAD) if(!head || !eyeballies || target.is_eyes_covered()) @@ -224,7 +224,7 @@ if(used) . += span_notice("It has been used up.") -/obj/item/eyesnatcher/proc/eyeballs_exist(obj/item/organ/internal/eyes/eyeballies, obj/item/bodypart/head/head, mob/living/carbon/human/target) +/obj/item/eyesnatcher/proc/eyeballs_exist(obj/item/organ/eyes/eyeballies, obj/item/bodypart/head/head, mob/living/carbon/human/target) if(!eyeballies || QDELETED(eyeballies)) return FALSE if(!head || QDELETED(head)) @@ -232,7 +232,7 @@ if(eyeballies.owner != target) return FALSE - var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) //got different eyes or doesn't own the head... somehow if(head.owner != target || eyes != eyeballies) return FALSE diff --git a/code/modules/antagonists/voidwalker/voidwalker_organs.dm b/code/modules/antagonists/voidwalker/voidwalker_organs.dm index e6e3d028ac8..23f1c6fb2fe 100644 --- a/code/modules/antagonists/voidwalker/voidwalker_organs.dm +++ b/code/modules/antagonists/voidwalker/voidwalker_organs.dm @@ -1,5 +1,5 @@ /// Voidwalker eyes with nightvision and thermals -/obj/item/organ/internal/eyes/voidwalker +/obj/item/organ/eyes/voidwalker name = "blackened orbs" desc = "These orbs will withstand the light of the sun, yet still see within the darkest voids." eye_icon_state = null @@ -9,7 +9,7 @@ sight_flags = SEE_MOBS /// Voidwalker brain stacked with a lot of the abilities -/obj/item/organ/internal/brain/voidwalker +/obj/item/organ/brain/voidwalker name = "cosmic brain" desc = "A mind fully integrated into the cosmic thread." icon = 'icons/obj/medical/organs/shadow_organs.dmi' @@ -30,7 +30,7 @@ /// Our brain transmit telepathy spell var/datum/action/transmit = /datum/action/cooldown/spell/list_target/telepathy/voidwalker -/obj/item/organ/internal/brain/voidwalker/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/brain/voidwalker/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() RegisterSignal(organ_owner, COMSIG_ATOM_ENTERING, PROC_REF(on_atom_entering)) @@ -52,7 +52,7 @@ glass_breaker = new/obj/item/void_eater organ_owner.put_in_hands(glass_breaker) -/obj/item/organ/internal/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_ENTER_AREA) @@ -75,7 +75,7 @@ if(glass_breaker) qdel(glass_breaker) -/obj/item/organ/internal/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering) +/obj/item/organ/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering) SIGNAL_HANDLER if(!isturf(entering)) @@ -90,7 +90,7 @@ else organ_owner.remove_movespeed_modifier(speed_modifier) -/obj/item/organ/internal/brain/voidwalker/on_death() +/obj/item/organ/brain/voidwalker/on_death() . = ..() var/turf/spawn_loc = get_turf(owner) diff --git a/code/modules/antagonists/voidwalker/voidwalker_species.dm b/code/modules/antagonists/voidwalker/voidwalker_species.dm index 5b50c3da69e..8c417c97773 100644 --- a/code/modules/antagonists/voidwalker/voidwalker_species.dm +++ b/code/modules/antagonists/voidwalker/voidwalker_species.dm @@ -35,8 +35,8 @@ no_equip_flags = ITEM_SLOT_OCLOTHING | ITEM_SLOT_ICLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_MASK | ITEM_SLOT_HEAD | ITEM_SLOT_FEET | ITEM_SLOT_BACK | ITEM_SLOT_EARS | ITEM_SLOT_EYES - mutantbrain = /obj/item/organ/internal/brain/voidwalker - mutanteyes = /obj/item/organ/internal/eyes/voidwalker + mutantbrain = /obj/item/organ/brain/voidwalker + mutanteyes = /obj/item/organ/eyes/voidwalker mutantheart = null mutantlungs = null mutanttongue = null diff --git a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm index 9bf5b3c2664..f88c09188cf 100644 --- a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm +++ b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm @@ -63,7 +63,7 @@ hewmon.balloon_alert(user, "shattering...") if(do_after(user, 4 SECONDS, hewmon)) new /obj/effect/spawner/random/glass_shards (spawnloc) - var/obj/item/organ/brain = hewmon.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain = hewmon.get_organ_by_type(/obj/item/organ/brain) if(brain) brain.Remove(hewmon) brain.forceMove(spawnloc) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index ef2a40636d0..e56f651a095 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -311,7 +311,7 @@ head = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire) //Provides a decent heal, need to pump every 6 seconds -/obj/item/organ/internal/heart/cursed/wizard +/obj/item/organ/heart/cursed/wizard pump_delay = 6 SECONDS heal_brute = 25 heal_burn = 25 diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 6e448637dba..88b21cf8971 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -313,7 +313,7 @@ var/datum/weakref/arm /obj/item/assembly/flash/armimplant/burn_out() - var/obj/item/organ/internal/cyberimp/arm/flash/real_arm = arm.resolve() + var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve() if(real_arm?.owner) to_chat(real_arm.owner, span_warning("Your photon projector implant overheats and deactivates!")) real_arm.Retract() @@ -322,7 +322,7 @@ /obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null) if(overheat) - var/obj/item/organ/internal/cyberimp/arm/flash/real_arm = arm.resolve() + var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve() if(real_arm?.owner) to_chat(real_arm.owner, span_warning("Your photon projector is running too hot to be used again so quickly!")) return FALSE diff --git a/code/modules/awaymissions/pamphlet.dm b/code/modules/awaymissions/pamphlet.dm index be8aa9de890..67a56ed9b32 100644 --- a/code/modules/awaymissions/pamphlet.dm +++ b/code/modules/awaymissions/pamphlet.dm @@ -53,7 +53,7 @@ cybernetic augments by Synthman Co. to you in this rare exclusive offer! With this letter, you are being gifted a \ special limited edition choice NTSDA-certified grade-A cybernetic implant, FREE OF CHARGE! Build up your body to \ GREATNESS with Synthman's new exclusive line of cybernetic products! Become greater, stronger, and BETTER today!" - var/obj/item/organ/internal/heart/cybernetic/sample + var/obj/item/organ/heart/cybernetic/sample /obj/item/paper/pamphlet/cybernetics/Initialize(mapload) . = ..() diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index cc66fa72196..357dba08bb9 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -187,7 +187,7 @@ if(failed) to_chat(neo, span_warning("One of your disks failed to load. Check for duplicate or inactive disks.")) - var/obj/item/organ/internal/brain/neo_brain = neo.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/neo_brain = neo.get_organ_slot(ORGAN_SLOT_BRAIN) for(var/obj/item/skillchip/skill_chip as anything in neo_brain?.skillchips) if(!skill_chip.active) continue diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm index 5205c2afc22..3483c28d8d5 100644 --- a/code/modules/cargo/bounties/medical.dm +++ b/code/modules/cargo/bounties/medical.dm @@ -3,11 +3,11 @@ description = "Commander Johnson is in critical condition after suffering yet another heart attack. Doctors say he needs a new heart fast. Ship one, pronto! We'll take a cybernetic one if need be, but only if it's upgraded." reward = CARGO_CRATE_VALUE * 5 wanted_types = list( - /obj/item/organ/internal/heart = TRUE, - /obj/item/organ/internal/heart/synth = FALSE, - /obj/item/organ/internal/heart/cybernetic = FALSE, - /obj/item/organ/internal/heart/cybernetic/tier2 = TRUE, - /obj/item/organ/internal/heart/cybernetic/tier3 = TRUE, + /obj/item/organ/heart = TRUE, + /obj/item/organ/heart/synth = FALSE, // NOVA EDIT ADDITION + /obj/item/organ/heart/cybernetic = FALSE, + /obj/item/organ/heart/cybernetic/tier2 = TRUE, + /obj/item/organ/heart/cybernetic/tier3 = TRUE, ) /datum/bounty/item/medical/lung @@ -16,18 +16,18 @@ reward = CARGO_CRATE_VALUE * 10 required_count = 3 wanted_types = list( - /obj/item/organ/internal/lungs = TRUE, - /obj/item/organ/internal/lungs/synth = FALSE, - /obj/item/organ/internal/lungs/cybernetic = FALSE, - /obj/item/organ/internal/lungs/cybernetic/tier2 = TRUE, - /obj/item/organ/internal/lungs/cybernetic/tier3 = TRUE, + /obj/item/organ/lungs = TRUE, + /obj/item/organ/lungs/synth = FALSE, // NOVA EDIT ADDITION + /obj/item/organ/lungs/cybernetic = FALSE, + /obj/item/organ/lungs/cybernetic/tier2 = TRUE, + /obj/item/organ/lungs/cybernetic/tier3 = TRUE, ) /datum/bounty/item/medical/appendix name = "Appendix" description = "Chef Gibb of Central Command wants to prepare a meal using a very special delicacy: an appendix. If you ship one, he'll pay." reward = CARGO_CRATE_VALUE * 5 //there are no synthetic appendixes - wanted_types = list(/obj/item/organ/internal/appendix = TRUE) + wanted_types = list(/obj/item/organ/appendix = TRUE) /datum/bounty/item/medical/ears name = "Ears" @@ -35,12 +35,12 @@ reward = CARGO_CRATE_VALUE * 10 required_count = 3 wanted_types = list( - /obj/item/organ/internal/ears = TRUE, - /obj/item/organ/internal/ears/synth = FALSE, - /obj/item/organ/internal/ears/cybernetic = FALSE, - /obj/item/organ/internal/ears/cybernetic/upgraded = TRUE, - /obj/item/organ/internal/ears/cybernetic/whisper = TRUE, - /obj/item/organ/internal/ears/cybernetic/xray = TRUE, + /obj/item/organ/ears = TRUE, + /obj/item/organ/ears/synth = FALSE, // NOVA EDIT ADDITION + /obj/item/organ/ears/cybernetic = FALSE, + /obj/item/organ/ears/cybernetic/upgraded = TRUE, + /obj/item/organ/ears/cybernetic/whisper = TRUE, + /obj/item/organ/ears/cybernetic/xray = TRUE, ) /datum/bounty/item/medical/liver @@ -49,11 +49,11 @@ reward = CARGO_CRATE_VALUE * 10 required_count = 3 wanted_types = list( - /obj/item/organ/internal/liver = TRUE, - /obj/item/organ/internal/liver/synth = FALSE, - /obj/item/organ/internal/liver/cybernetic = FALSE, - /obj/item/organ/internal/liver/cybernetic/tier2 = TRUE, - /obj/item/organ/internal/liver/cybernetic/tier3 = TRUE, + /obj/item/organ/liver = TRUE, + /obj/item/organ/liver/synth = FALSE, // NOVA EDIT ADDITION + /obj/item/organ/liver/cybernetic = FALSE, + /obj/item/organ/liver/cybernetic/tier2 = TRUE, + /obj/item/organ/liver/cybernetic/tier3 = TRUE, ) /datum/bounty/item/medical/eye @@ -62,9 +62,9 @@ reward = CARGO_CRATE_VALUE * 10 required_count = 3 wanted_types = list( - /obj/item/organ/internal/eyes = TRUE, - /obj/item/organ/internal/eyes/synth = FALSE, - /obj/item/organ/internal/eyes/robotic = FALSE, + /obj/item/organ/eyes = TRUE, + /obj/item/organ/eyes/synth = FALSE, // NOVA EDIT ADDITION + /obj/item/organ/eyes/robotic = FALSE, ) /datum/bounty/item/medical/tongue @@ -72,22 +72,25 @@ description = "A recent attack by Mime extremists has left staff at Station 23 speechless. Ship some spare tongues." reward = CARGO_CRATE_VALUE * 10 required_count = 3 + // wanted_types = list(/obj/item/organ/tongue = TRUE) // NOVA EDIT REMOVAL + // NOVA EDIT ADDITION START wanted_types = list( - /obj/item/organ/internal/tongue = TRUE, - /obj/item/organ/internal/tongue/synth = FALSE, + /obj/item/organ/tongue = TRUE, + /obj/item/organ/tongue/synth = FALSE, ) + // NOVA EDIT ADDITION END /datum/bounty/item/medical/lizard_tail name = "Lizard Tail" description = "The Wizard Federation has made off with Nanotrasen's supply of lizard tails. While CentCom is dealing with the wizards, can the station spare a tail of their own?" reward = CARGO_CRATE_VALUE * 6 - wanted_types = list(/obj/item/organ/external/tail/lizard = TRUE) + wanted_types = list(/obj/item/organ/tail/lizard = TRUE) /datum/bounty/item/medical/cat_tail name = "Cat Tail" description = "Central Command has run out of heavy duty pipe cleaners. Can you ship over a cat tail to help us out?" reward = CARGO_CRATE_VALUE * 6 - wanted_types = list(/obj/item/organ/external/tail/cat = TRUE) + wanted_types = list(/obj/item/organ/tail/cat = TRUE) /datum/bounty/item/medical/chainsaw name = "Chainsaw" diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm index 268ac2ea033..8f395b5152f 100644 --- a/code/modules/cargo/bounties/special.dm +++ b/code/modules/cargo/bounties/special.dm @@ -4,12 +4,12 @@ reward = CARGO_CRATE_VALUE * 50 required_count = 3 wanted_types = list( - /obj/item/organ/internal/brain/alien = TRUE, - /obj/item/organ/internal/alien = TRUE, - /obj/item/organ/internal/body_egg/alien_embryo = TRUE, - /obj/item/organ/internal/liver/alien = TRUE, - /obj/item/organ/internal/tongue/alien = TRUE, - /obj/item/organ/internal/eyes/alien = TRUE, + /obj/item/organ/brain/alien = TRUE, + /obj/item/organ/alien = TRUE, + /obj/item/organ/body_egg/alien_embryo = TRUE, + /obj/item/organ/liver/alien = TRUE, + /obj/item/organ/tongue/alien = TRUE, + /obj/item/organ/eyes/alien = TRUE, ) /datum/bounty/item/syndicate_documents diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index 7102db0dd8f..6b621beeaeb 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -8,10 +8,10 @@ /obj/item/immortality_talisman, /obj/item/book_of_babel, /obj/item/wisp_lantern, - /obj/item/organ/internal/cyberimp/arm/shard/katana, + /obj/item/organ/cyberimp/arm/shard/katana, /obj/item/clothing/glasses/godeye, /obj/item/clothing/neck/necklace/memento_mori, - /obj/item/organ/internal/heart/cursed/wizard, + /obj/item/organ/heart/cursed/wizard, /obj/item/clothing/suit/hooded/cloak/drake, /obj/item/ship_in_a_bottle, /obj/item/clothing/shoes/clown_shoes/banana_shoes, @@ -48,7 +48,7 @@ export_types = list( /obj/item/hierophant_club, /obj/item/melee/cleaving_saw, - /obj/item/organ/internal/vocal_cords/colossus, + /obj/item/organ/vocal_cords/colossus, /obj/machinery/anomalous_crystal, /obj/item/mayhem, /obj/item/soulscythe, diff --git a/code/modules/cargo/exports/organs.dm b/code/modules/cargo/exports/organs.dm index 784af1c8574..ec042a8613e 100644 --- a/code/modules/cargo/exports/organs.dm +++ b/code/modules/cargo/exports/organs.dm @@ -4,51 +4,51 @@ /datum/export/organ/heart cost = CARGO_CRATE_VALUE * 0.2 //For the man who has everything and nothing. unit_name = "humanoid heart" - export_types = list(/obj/item/organ/internal/heart) + export_types = list(/obj/item/organ/heart) /datum/export/organ/eyes cost = CARGO_CRATE_VALUE * 0.1 unit_name = "humanoid eyes" - export_types = list(/obj/item/organ/internal/eyes) + export_types = list(/obj/item/organ/eyes) /datum/export/organ/ears cost = CARGO_CRATE_VALUE * 0.1 unit_name = "humanoid ears" - export_types = list(/obj/item/organ/internal/ears) + export_types = list(/obj/item/organ/ears) /datum/export/organ/liver cost = CARGO_CRATE_VALUE * 0.1 unit_name = "humanoid liver" - export_types = list(/obj/item/organ/internal/liver) + export_types = list(/obj/item/organ/liver) /datum/export/organ/lungs cost = CARGO_CRATE_VALUE * 0.1 unit_name = "humanoid lungs" - export_types = list(/obj/item/organ/internal/lungs) + export_types = list(/obj/item/organ/lungs) /datum/export/organ/stomach cost = CARGO_CRATE_VALUE * 0.1 unit_name = "humanoid stomach" - export_types = list(/obj/item/organ/internal/stomach) + export_types = list(/obj/item/organ/stomach) /datum/export/organ/tongue cost = CARGO_CRATE_VALUE * 0.1 unit_name = "humanoid tounge" - export_types = list(/obj/item/organ/internal/tongue) + export_types = list(/obj/item/organ/tongue) /datum/export/organ/external/tail/lizard cost = CARGO_CRATE_VALUE * 1.25 unit_name = "lizard tail" - export_types = list(/obj/item/organ/external/tail/lizard) + export_types = list(/obj/item/organ/tail/lizard) /datum/export/organ/external/tail/cat cost = CARGO_CRATE_VALUE * 1.5 unit_name = "cat tail" - export_types = list(/obj/item/organ/external/tail/cat) + export_types = list(/obj/item/organ/tail/cat) /datum/export/organ/ears/cat cost = CARGO_CRATE_VALUE unit_name = "cat ears" - export_types = list(/obj/item/organ/internal/ears/cat) + export_types = list(/obj/item/organ/ears/cat) diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index 3005cfd7fca..d021fa8665f 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -188,7 +188,7 @@ name = "Strong-Arm Implant Set" desc = "A crate containing two implants, which can be surgically implanted to empower the strength of human arms. Warranty void if exposed to electromagnetic pulses." cost = CARGO_CRATE_VALUE * 6 - contains = list(/obj/item/organ/internal/cyberimp/arm/strongarm = 2) + contains = list(/obj/item/organ/cyberimp/arm/strongarm = 2) crate_name = "Strong-Arm implant crate" discountable = SUPPLY_PACK_RARE_DISCOUNTABLE diff --git a/code/modules/client/preferences/species.dm b/code/modules/client/preferences/species.dm index 9829a929213..de609d360c7 100644 --- a/code/modules/client/preferences/species.dm +++ b/code/modules/client/preferences/species.dm @@ -38,7 +38,7 @@ target.dna.update_body_size() for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS)) - var/obj/item/organ/external/genital/gent = target.get_organ_slot(organ_key) + var/obj/item/organ/genital/gent = target.get_organ_slot(organ_key) if(gent) gent.aroused = prefs.arousal_preview gent.update_sprite_suffix() diff --git a/code/modules/client/preferences/species_features/basic.dm b/code/modules/client/preferences/species_features/basic.dm index 21459697f86..e2802b3d29d 100644 --- a/code/modules/client/preferences/species_features/basic.dm +++ b/code/modules/client/preferences/species_features/basic.dm @@ -32,20 +32,18 @@ if(!hetero) target.eye_color_right = value - var/obj/item/organ/internal/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/eyes) if (!eyes_organ || !istype(eyes_organ)) return if (!initial(eyes_organ.eye_color_left)) eyes_organ.eye_color_left = value - eyes_organ.old_eye_color_left = value if(hetero) // Don't override the snowflakes please return if (!initial(eyes_organ.eye_color_right)) eyes_organ.eye_color_right = value - eyes_organ.old_eye_color_right = value eyes_organ.refresh() /datum/preference/color/eye_color/create_default_value() diff --git a/code/modules/client/preferences/species_features/felinid.dm b/code/modules/client/preferences/species_features/felinid.dm index ef2d49f33e8..0dcf1e4a383 100644 --- a/code/modules/client/preferences/species_features/felinid.dm +++ b/code/modules/client/preferences/species_features/felinid.dm @@ -4,7 +4,7 @@ savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES can_randomize = FALSE - relevant_external_organ = /obj/item/organ/external/tail/cat + relevant_external_organ = /obj/item/organ/tail/cat /datum/preference/choiced/tail_felinid/init_possible_values() return assoc_to_keys_features(SSaccessories.tails_list_felinid) @@ -21,7 +21,7 @@ savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES can_randomize = FALSE - relevant_external_organ = /obj/item/organ/internal/ears/cat + relevant_external_organ = /obj/item/organ/ears/cat /datum/preference/choiced/felinid_ears/init_possible_values() return assoc_to_keys_features(SSaccessories.ears_list) diff --git a/code/modules/client/preferences/species_features/lizard.dm b/code/modules/client/preferences/species_features/lizard.dm index dd9ebe437b4..18b28d1b85b 100644 --- a/code/modules/client/preferences/species_features/lizard.dm +++ b/code/modules/client/preferences/species_features/lizard.dm @@ -160,7 +160,7 @@ savefile_key = "feature_lizard_spines" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - relevant_external_organ = /obj/item/organ/external/spines + relevant_external_organ = /obj/item/organ/spines /datum/preference/choiced/lizard_spines/init_possible_values() return assoc_to_keys_features(SSaccessories.spines_list) @@ -172,7 +172,7 @@ savefile_key = "feature_lizard_tail" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - relevant_external_organ = /obj/item/organ/external/tail/lizard + relevant_external_organ = /obj/item/organ/tail/lizard /datum/preference/choiced/lizard_tail/init_possible_values() return assoc_to_keys_features(SSaccessories.tails_list_lizard) diff --git a/code/modules/client/preferences/species_features/monkey.dm b/code/modules/client/preferences/species_features/monkey.dm index 65bee35edef..845a8096158 100644 --- a/code/modules/client/preferences/species_features/monkey.dm +++ b/code/modules/client/preferences/species_features/monkey.dm @@ -3,7 +3,7 @@ savefile_key = "feature_monkey_tail" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - relevant_external_organ = /obj/item/organ/external/tail/monkey + relevant_external_organ = /obj/item/organ/tail/monkey can_randomize = FALSE /datum/preference/choiced/monkey_tail/init_possible_values() diff --git a/code/modules/client/preferences/species_features/mushperson.dm b/code/modules/client/preferences/species_features/mushperson.dm index a6a0c6a8fe1..e16c647f99e 100644 --- a/code/modules/client/preferences/species_features/mushperson.dm +++ b/code/modules/client/preferences/species_features/mushperson.dm @@ -3,7 +3,7 @@ savefile_key = "feature_mushperson_cap" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - relevant_external_organ = /obj/item/organ/external/mushroom_cap + relevant_external_organ = /obj/item/organ/mushroom_cap /datum/preference/choiced/mushroom_cap/init_possible_values() return assoc_to_keys_features(GLOB.caps_list) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 9fd87da4635..44a71d6cd45 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -53,7 +53,7 @@ /obj/item/clothing/glasses/proc/thermal_overload() if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc - var/obj/item/organ/internal/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES) if(!H.is_blind()) if(H.glasses == src) to_chat(H, span_danger("[src] overloads and blinds you!")) @@ -456,7 +456,7 @@ if(!user.get_organ_slot(ORGAN_SLOT_EYES)) to_chat(user, span_warning("You have no eyes to apply the contacts to!")) return - var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) to_chat(user, span_notice("You begin applying the contact lenses to your eyes...")) if(!do_after(user, 3 SECONDS, src)) diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm index f084b7e9a91..09df92bb8c4 100644 --- a/code/modules/clothing/gloves/special.dm +++ b/code/modules/clothing/gloves/special.dm @@ -216,7 +216,7 @@ var/mob/living/wearer = loc var/stamina_exhaustion = 2 + challenge.difficulty * 0.02 var/is_heavy_gravity = wearer.has_gravity() > STANDARD_GRAVITY - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = wearer.get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = wearer.get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) stamina_exhaustion *= potential_spine.athletics_boost_multiplier if(HAS_TRAIT(wearer, TRAIT_STRENGTH)) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index a15a59f05ad..640867a7c93 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -707,7 +707,7 @@ if(human_examined.is_mouth_covered()) final_message += "\tYou can't see [examining.p_their()] mouth." else - var/obj/item/organ/internal/tongue/has_tongue = human_examined.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/has_tongue = human_examined.get_organ_slot(ORGAN_SLOT_TONGUE) var/pill_count = 0 for(var/datum/action/item_action/activate_pill/pill in human_examined.actions) pill_count++ @@ -724,7 +724,7 @@ if(human_examined.is_ears_covered()) final_message += "\tYou can't see [examining.p_their()] ears." else - var/obj/item/organ/internal/ears/has_ears = human_examined.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/has_ears = human_examined.get_organ_slot(ORGAN_SLOT_EARS) if(has_ears) if(has_ears.deaf) final_message += "\tDamaged eardrums in [examining.p_their()] ear canals." @@ -736,7 +736,7 @@ if(human_examined.is_eyes_covered()) final_message += "\tYou can't see [examining.p_their()] eyes." else - var/obj/item/organ/internal/eyes/has_eyes = human_examined.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/has_eyes = human_examined.get_organ_slot(ORGAN_SLOT_EYES) if(has_eyes) final_message += "\tA pair of [has_eyes.damage ? "" : "healthy "][has_eyes.name]." else diff --git a/code/modules/clothing/head/tinfoilhat.dm b/code/modules/clothing/head/tinfoilhat.dm index 74ce320a8ab..c1e6df6c30c 100644 --- a/code/modules/clothing/head/tinfoilhat.dm +++ b/code/modules/clothing/head/tinfoilhat.dm @@ -109,7 +109,7 @@ ";WE REPEAT OUR LIVES DAILY WITHOUT FURTHER QUESTIONS!!" ) user.say(pick(conspiracy_line), forced=type) - var/obj/item/organ/internal/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN) if(brain) brain.set_organ_damage(BRAIN_DAMAGE_DEATH) return OXYLOSS diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index a02c7d1debf..6d97c116ab1 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -234,10 +234,10 @@ var/heart_strength var/pulse_pressure - var/obj/item/organ/internal/heart/heart = carbon_patient.get_organ_slot(ORGAN_SLOT_HEART) - var/obj/item/organ/internal/lungs/lungs = carbon_patient.get_organ_slot(ORGAN_SLOT_LUNGS) - var/obj/item/organ/internal/liver/liver = carbon_patient.get_organ_slot(ORGAN_SLOT_LIVER) - var/obj/item/organ/internal/appendix/appendix = carbon_patient.get_organ_slot(ORGAN_SLOT_APPENDIX) + var/obj/item/organ/heart/heart = carbon_patient.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/lungs/lungs = carbon_patient.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/liver/liver = carbon_patient.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/appendix/appendix = carbon_patient.get_organ_slot(ORGAN_SLOT_APPENDIX) var/render_list = list()//information will be packaged in a list for clean display to the user diff --git a/code/modules/deathmatch/deathmatch_lobby.dm b/code/modules/deathmatch/deathmatch_lobby.dm index a79bd3aa21d..8bd324a5b7b 100644 --- a/code/modules/deathmatch/deathmatch_lobby.dm +++ b/code/modules/deathmatch/deathmatch_lobby.dm @@ -156,7 +156,7 @@ // register death handling. RegisterSignals(new_player, list(COMSIG_LIVING_DEATH, COMSIG_MOB_GHOSTIZED, COMSIG_QDELETING), PROC_REF(player_died)) // NOVA EDIT ADDITION START - Synth brains don't drop here - let them delete with the mob - var/obj/item/organ/internal/brain/synth/synth_brain = new_player.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/synth/synth_brain = new_player.get_organ_slot(ORGAN_SLOT_BRAIN) if(istype(synth_brain)) synth_brain.drop_when_organ_spilling = FALSE // NOVA EDIT ADDITION END diff --git a/code/modules/events/brain_trauma.dm b/code/modules/events/brain_trauma.dm index b9d1c4188b5..5a00436d0fc 100644 --- a/code/modules/events/brain_trauma.dm +++ b/code/modules/events/brain_trauma.dm @@ -17,7 +17,7 @@ continue if(H.stat == DEAD) // What are you doing in this list continue - if(!H.get_organ_by_type(/obj/item/organ/internal/brain)) // If only I had a brain + if(!H.get_organ_by_type(/obj/item/organ/brain)) // If only I had a brain continue if(!(H.mind.assigned_role.job_flags & JOB_CREW_MEMBER)) //please stop giving my centcom admin gimmicks full body paralysis continue diff --git a/code/modules/events/creep_awakening.dm b/code/modules/events/creep_awakening.dm index 648c2cc9db0..0dfa87ddfa3 100644 --- a/code/modules/events/creep_awakening.dm +++ b/code/modules/events/creep_awakening.dm @@ -19,7 +19,7 @@ continue if(H.mind.has_antag_datum(/datum/antagonist/obsessed)) continue - if(!H.get_organ_by_type(/obj/item/organ/internal/brain)) + if(!H.get_organ_by_type(/obj/item/organ/brain)) continue H.gain_trauma(/datum/brain_trauma/special/obsessed) announce_to_ghosts(H) diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm index 8cc87a60df5..833afd35bbc 100644 --- a/code/modules/events/holiday/halloween.dm +++ b/code/modules/events/holiday/halloween.dm @@ -61,5 +61,5 @@ /obj/item/food/candy, /obj/item/food/candiedapple, /obj/item/food/chocolatebar, - /obj/item/organ/internal/brain ) // OH GOD THIS ISN'T CANDY! + /obj/item/organ/brain ) // OH GOD THIS ISN'T CANDY! new type(src) diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm index 0b4f5abf866..b5c7967de4e 100644 --- a/code/modules/experisci/experiment/experiments.dm +++ b/code/modules/experisci/experiment/experiments.dm @@ -437,7 +437,7 @@ . = ..() if (!.) return - var/obj/item/organ/internal/brain/scanned_brain = check.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/scanned_brain = check.get_organ_slot(ORGAN_SLOT_BRAIN) if (isnull(scanned_brain)) experiment_handler.announce_message("Subject is brainless!") return FALSE diff --git a/code/modules/experisci/handheld_scanner.dm b/code/modules/experisci/handheld_scanner.dm index 390937e0dd4..67850aedd28 100644 --- a/code/modules/experisci/handheld_scanner.dm +++ b/code/modules/experisci/handheld_scanner.dm @@ -46,7 +46,7 @@ /obj/item/experi_scanner/proc/make_meat_toilet(mob/living/carbon/user) ///The suicide victim's brain that will be placed inside the toilet's cistern - var/obj/item/organ/internal/brain/toilet_brain = user.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/toilet_brain = user.get_organ_slot(ORGAN_SLOT_BRAIN) ///The toilet we're about to unleash unto this cursed plane of existence var/obj/structure/toilet/greyscale/result_toilet = new (drop_location()) diff --git a/code/modules/explorer_drone/exploration_events/trader.dm b/code/modules/explorer_drone/exploration_events/trader.dm index c4d4b5ac94b..443ec5fd36d 100644 --- a/code/modules/explorer_drone/exploration_events/trader.dm +++ b/code/modules/explorer_drone/exploration_events/trader.dm @@ -89,7 +89,7 @@ requires_translator = FALSE required_site_traits = list(EXPLORATION_SITE_HABITABLE,EXPLORATION_SITE_CIVILIZED) band_values = list(EXOSCANNER_BAND_LIFE=1) - required_path = list(/obj/item/organ/internal/heart,/obj/item/organ/internal/liver,/obj/item/organ/internal/stomach,/obj/item/organ/internal/eyes) + required_path = list(/obj/item/organ/heart,/obj/item/organ/liver,/obj/item/organ/stomach,/obj/item/organ/eyes) traded_path = list(/obj/item/implanter/explosive) amount = 1 diff --git a/code/modules/food_and_drinks/recipes/soup_mixtures.dm b/code/modules/food_and_drinks/recipes/soup_mixtures.dm index 88cb4d27e41..cefaf65bc32 100644 --- a/code/modules/food_and_drinks/recipes/soup_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/soup_mixtures.dm @@ -661,7 +661,7 @@ required_reagents = list(/datum/reagent/water = 50) required_ingredients = list( /obj/item/food/grown/tomato = 2, - /obj/item/organ/internal/eyes = 1, + /obj/item/organ/eyes = 1, ) results = list( /datum/reagent/consumable/nutriment/soup/eyeball = 20, diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm index 8f78cb01ebc..d0517272d77 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm @@ -155,8 +155,8 @@ /datum/crafting_recipe/food/breaddog name = "Living dog/bread hybrid" reqs = list( - /obj/item/organ/internal/brain = 1, - /obj/item/organ/internal/heart = 1, + /obj/item/organ/brain = 1, + /obj/item/organ/heart = 1, /obj/item/food/bread/plain = 2, /obj/item/food/meat/slab = 3, /datum/reagent/blood = 30, @@ -216,8 +216,8 @@ name = "Bread cat/bread hybrid" reqs = list( /obj/item/food/bread/plain = 1, - /obj/item/organ/internal/ears/cat = 1, - /obj/item/organ/external/tail/cat = 1, + /obj/item/organ/ears/cat = 1, + /obj/item/organ/tail/cat = 1, /obj/item/food/meat/slab = 3, /datum/reagent/blood = 50, /datum/reagent/medicine/strange_reagent = 5 diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm index 4e7c63413ec..2953f8408ac 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm @@ -39,7 +39,7 @@ /datum/crafting_recipe/food/appendixburger name = "Appendix burger" reqs = list( - /obj/item/organ/internal/appendix = 1, + /obj/item/organ/appendix = 1, /obj/item/food/bun = 1 ) result = /obj/item/food/burger/appendix @@ -48,7 +48,7 @@ /datum/crafting_recipe/food/brainburger name = "Brain burger" reqs = list( - /obj/item/organ/internal/brain = 1, + /obj/item/organ/brain = 1, /obj/item/food/bun = 1 ) result = /obj/item/food/burger/brain @@ -306,8 +306,8 @@ reqs = list( /obj/item/food/bun = 1, /obj/item/food/patty/plain = 1, - /obj/item/organ/internal/ears/cat = 1, - /obj/item/organ/external/tail/cat = 1, + /obj/item/organ/ears/cat = 1, + /obj/item/organ/tail/cat = 1, ) result = /obj/item/food/burger/catburger category = CAT_BURGER diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index 4b56874eb7c..86956ba861c 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -90,7 +90,7 @@ /datum/crafting_recipe/food/braincake name = "Brain cake" reqs = list( - /obj/item/organ/internal/brain = 1, + /obj/item/organ/brain = 1, /obj/item/food/cake/plain = 1 ) result = /obj/item/food/cake/brain @@ -218,8 +218,8 @@ /datum/crafting_recipe/food/cak name = "Living cat/cake hybrid" reqs = list( - /obj/item/organ/internal/brain = 1, - /obj/item/organ/internal/heart = 1, + /obj/item/organ/brain = 1, + /obj/item/organ/heart = 1, /obj/item/food/cake/birthday = 1, /obj/item/food/meat/slab = 3, /datum/reagent/blood = 30, diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm index 5a754361ffb..5a7947c569e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm @@ -11,10 +11,10 @@ name = "Lizard Wine" time = 40 reqs = list( - /obj/item/organ/external/tail/lizard = 1, + /obj/item/organ/tail/lizard = 1, /datum/reagent/consumable/ethanol = 100 ) - blacklist = list(/obj/item/organ/external/tail/lizard/fake) + blacklist = list(/obj/item/organ/tail/lizard/fake) result = /obj/item/reagent_containers/cup/glass/bottle/lizardwine category = CAT_DRINK diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm index 7b253f32ce1..d9f9cd16fe9 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm @@ -25,11 +25,11 @@ /obj/item/food/grown/carrot = 1, /obj/item/food/grown/chili = 1, /obj/item/food/grown/onion = 1, - /obj/item/organ/internal/lungs = 1, + /obj/item/organ/lungs = 1, /obj/item/reagent_containers/cup/bowl = 1, ) blacklist = list( - /obj/item/organ/internal/lungs/cybernetic, + /obj/item/organ/lungs/cybernetic, ) result = /obj/item/food/shredded_lungs @@ -38,10 +38,10 @@ /datum/crafting_recipe/food/tsatsikh name = "Tsatsikh" reqs = list( - /obj/item/organ/internal/heart = 1, - /obj/item/organ/internal/liver = 1, - /obj/item/organ/internal/lungs = 1, - /obj/item/organ/internal/stomach = 1, + /obj/item/organ/heart = 1, + /obj/item/organ/liver = 1, + /obj/item/organ/lungs = 1, + /obj/item/organ/stomach = 1, /datum/reagent/consumable/salt = 2, /datum/reagent/consumable/blackpepper = 2 ) @@ -51,7 +51,7 @@ /datum/crafting_recipe/food/liver_pate name = "Liver pate" reqs = list( - /obj/item/organ/internal/liver = 1, + /obj/item/organ/liver = 1, /obj/item/food/meat/rawcutlet = 1, /obj/item/food/grown/onion = 1 ) @@ -104,8 +104,8 @@ /datum/crafting_recipe/food/brain_pate name = "Eyeball-and-brain pate" reqs = list( - /obj/item/organ/internal/brain = 1, - /obj/item/organ/internal/eyes = 1, + /obj/item/organ/brain = 1, + /obj/item/organ/eyes = 1, /obj/item/food/grown/onion = 1, /datum/reagent/consumable/salt = 3 ) @@ -305,7 +305,7 @@ /obj/item/food/root_flatbread = 1, /obj/item/food/grown/cucumber = 2, /obj/item/food/egg = 1, - /obj/item/organ/internal/liver = 1 + /obj/item/organ/liver = 1 ) result = /obj/item/food/pizza/flatbread/zmorgast category = CAT_LIZARD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index 804956cbeed..9244f4c54f3 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -33,7 +33,7 @@ name = "Lizard tail kebab" reqs = list( /obj/item/stack/rods = 1, - /obj/item/organ/external/tail/lizard = 1 + /obj/item/organ/tail/lizard = 1 ) result = /obj/item/food/kebab/tail category = CAT_MEAT diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm index 840d3a8c08b..3dbd7093a74 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm @@ -107,7 +107,7 @@ time = 40 reqs = list( /obj/item/food/meat/steak/goliath = 1, - /obj/item/organ/internal/monster_core/regenerative_core/legion = 1, + /obj/item/organ/monster_core/regenerative_core/legion = 1, /datum/reagent/consumable/ketchup = 2, /datum/reagent/consumable/capsaicin = 2 ) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index 4b78482867a..86ae81e5bbd 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -154,8 +154,8 @@ /datum/crafting_recipe/food/butterbear //ITS ALIVEEEEEE! name = "Living bear/butter hybrid" reqs = list( - /obj/item/organ/internal/brain = 1, - /obj/item/organ/internal/heart = 1, + /obj/item/organ/brain = 1, + /obj/item/organ/heart = 1, /obj/item/food/butter = 4, /obj/item/food/meat/slab = 5, /datum/reagent/blood = 50, diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index 8798f7cd880..522f6e9f695 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -423,7 +423,7 @@ time = 15 name = "Deluxe Meat-pocket" reqs = list( - /obj/item/organ/internal/heart = 1, + /obj/item/organ/heart = 1, /obj/item/food/meatball = 1, /obj/item/food/meat/slab = 1, /obj/item/food/grown/herbs = 1 diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 6e09ee3497c..db47c5625e3 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -39,7 +39,7 @@ ///Clowns will always like bananas. /obj/item/food/grown/banana/proc/check_liked(mob/living/carbon/human/consumer) - var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) if (!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) return FOOD_LIKED diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index c95102d9b0e..b99ddaf7e94 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -159,7 +159,7 @@ if(length(mind_traits)) spawned.mind.add_traits(mind_traits, JOB_TRAIT) - var/obj/item/organ/internal/liver/liver = spawned.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = spawned.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && length(liver_traits)) liver.add_traits(liver_traits, JOB_TRAIT) diff --git a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm index d5eb15d0c47..a0e8bd47d3c 100644 --- a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm +++ b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm @@ -49,7 +49,7 @@ /datum/outfit/job/assistant/gimmick/cyborg/post_equip(mob/living/carbon/human/equipped, visuals_only) . = ..() - var/obj/item/organ/internal/tongue/robot/robotongue = new () + var/obj/item/organ/tongue/robot/robotongue = new () robotongue.Insert(equipped, movement_flags = DELETE_IF_REPLACED) /datum/outfit/job/assistant/gimmick/skater diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm index 069b36482ea..09d4bc28564 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm @@ -45,7 +45,7 @@ rods[nullrod_type] = initial(nullrod_type.menu_description) //special non-nullrod subtyped shit rods[/obj/item/gun/ballistic/bow/divine/with_quiver] = "A divine bow and 10 quivered holy arrows." - rods[/obj/item/organ/internal/cyberimp/arm/shard/scythe] = "A shard that implants itself into your arm, \ + rods[/obj/item/organ/cyberimp/arm/shard/scythe] = "A shard that implants itself into your arm, \ allowing you to conjure forth a vorpal scythe. \ Allows you to behead targets for empowered strikes. \ Harms you if you dismiss the scythe without first causing harm to a creature. \ diff --git a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm index e6f34b894b3..d2f6f61251d 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm @@ -5,17 +5,17 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and #define SCYTHE_SATED 1 #define SCYTHE_EMPOWERED 2 -/obj/item/organ/internal/cyberimp/arm/shard/scythe +/obj/item/organ/cyberimp/arm/shard/scythe name = "sinister shard" desc = "This shard seems to be directly linked to some sinister entity. It might be your god! It also gives you a really horrible rash when you hold onto it for too long." items_to_create = list(/obj/item/vorpalscythe) -/obj/item/organ/internal/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(receiver.mind) ADD_TRAIT(receiver.mind, TRAIT_MORBID, ORGAN_TRAIT) -/obj/item/organ/internal/cyberimp/arm/shard/scythe/Retract() +/obj/item/organ/cyberimp/arm/shard/scythe/Retract() var/obj/item/vorpalscythe/scythe = active_item if(!scythe) return FALSE diff --git a/code/modules/jobs/job_types/station_trait/human_ai.dm b/code/modules/jobs/job_types/station_trait/human_ai.dm index b328679795a..f0626d11152 100644 --- a/code/modules/jobs/job_types/station_trait/human_ai.dm +++ b/code/modules/jobs/job_types/station_trait/human_ai.dm @@ -128,7 +128,7 @@ if(visuals_only) return if(!equipped.get_quirk(/datum/quirk/body_purist)) - var/obj/item/organ/internal/tongue/robot/cybernetic = new() + var/obj/item/organ/tongue/robot/cybernetic = new() cybernetic.Insert(equipped, special = TRUE, movement_flags = DELETE_IF_REPLACED) //you only get respect if you go all the way, man. ADD_TRAIT(equipped, TRAIT_COMMISSIONED, INNATE_TRAIT) diff --git a/code/modules/library/skill_learning/skill_station.dm b/code/modules/library/skill_learning/skill_station.dm index 2dec45a6abf..dc42dd7db90 100644 --- a/code/modules/library/skill_learning/skill_station.dm +++ b/code/modules/library/skill_learning/skill_station.dm @@ -229,7 +229,7 @@ .["slots_max"] = null return - var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN) // If there's no brain, we don't need to worry either. if(QDELETED(occupant_brain)) @@ -272,7 +272,7 @@ return TRUE var/chipref = params["ref"] var/mob/living/carbon/carbon_occupant = occupant - var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN) if(QDELETED(carbon_occupant) || QDELETED(occupant_brain)) return TRUE var/obj/item/skillchip/to_be_removed = locate(chipref) in occupant_brain.skillchips @@ -297,7 +297,7 @@ stack_trace("[usr] tried to toggle skillchip activation when [src] was in an invalid state.") return TRUE var/mob/living/carbon/carbon_occupant = occupant - var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN) if(QDELETED(carbon_occupant) || QDELETED(occupant_brain)) return TRUE var/obj/item/skillchip/to_be_removed = locate(chipref) in occupant_brain.skillchips diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index eddaf300e08..5ca3f784ecb 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -42,7 +42,7 @@ /// Set to TRUE when the skill chip's effects are applied. Set to FALSE when they're not. var/active = FALSE /// Brain that holds this skillchip. - var/obj/item/organ/internal/brain/holding_brain + var/obj/item/organ/brain/holding_brain /obj/item/skillchip/Initialize(mapload, is_removable = TRUE) . = ..() @@ -131,7 +131,7 @@ * Arguments: * * owner_brain - The brain that this skillchip was implanted in to. */ -/obj/item/skillchip/proc/on_implant(obj/item/organ/internal/brain/owner_brain) +/obj/item/skillchip/proc/on_implant(obj/item/organ/brain/owner_brain) if(holding_brain) CRASH("Skillchip is trying to be implanted into [owner_brain], but it's already implanted in [holding_brain]") @@ -205,7 +205,7 @@ * Arguments: * * skillchip - The skillchip you're intending to activate. Does not activate the chip. */ -/obj/item/skillchip/proc/has_activate_incompatibility(obj/item/organ/internal/brain/brain) +/obj/item/skillchip/proc/has_activate_incompatibility(obj/item/organ/brain/brain) if(QDELETED(brain)) return "No brain detected." @@ -255,7 +255,7 @@ return "Incompatible lifeform detected." // No brain - var/obj/item/organ/internal/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(QDELETED(brain)) return "No brain detected." @@ -274,7 +274,7 @@ * Arguments: * * brain - The brain to check for implantability with. */ -/obj/item/skillchip/proc/has_brain_incompatibility(obj/item/organ/internal/brain/brain) +/obj/item/skillchip/proc/has_brain_incompatibility(obj/item/organ/brain/brain) if(!istype(brain)) stack_trace("Attempted to check incompatibility with invalid brain object [brain].") return "Incompatible brain." diff --git a/code/modules/lost_crew/damages/decay.dm b/code/modules/lost_crew/damages/decay.dm index 666e63d3bed..55674894474 100644 --- a/code/modules/lost_crew/damages/decay.dm +++ b/code/modules/lost_crew/damages/decay.dm @@ -11,7 +11,7 @@ // * 0.5 because life ticks happen about every 2 seconds (we really need a way to get the current life tickspeed) var/decay_ticks = max_decay_time * severity * 0.5 - for(var/obj/item/organ/internal/internal in body.organs) + for(var/obj/item/organ/internal in body.organs) internal.apply_organ_damage(decay_ticks * internal.decay_factor) return TRUE diff --git a/code/modules/lost_crew/lost_crew_manager.dm b/code/modules/lost_crew/lost_crew_manager.dm index c19b6c6bb13..a8930262731 100644 --- a/code/modules/lost_crew/lost_crew_manager.dm +++ b/code/modules/lost_crew/lost_crew_manager.dm @@ -57,7 +57,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new) if(!HAS_TRAIT(new_body, TRAIT_HUSK)) paper.name = "DO NOT REMOVE BRAIN" paper.add_raw_text("Body swapping is not covered by medical insurance for unhusked bodies. Chemical brain explosives have been administered to enforce stipend.") - var/obj/item/organ/internal/brain/boombrain = new_body.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/boombrain = new_body.get_organ_by_type(/obj/item/organ/brain) //I swear to fuck I will explode you. you're not clever //everyone thought of this, but I am the fool for having any faith //in people actually wanting to play the job in an interesting manner @@ -68,7 +68,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new) paper.name = "BODYSWAPPING PERMITTED" paper.add_raw_text("Body swapping is covered by medical insurance in case of husking and a lack of skill in the practictioner.") - var/obj/item/organ/internal/brain/hersens = new_body.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/hersens = new_body.get_organ_by_type(/obj/item/organ/brain) hersens.AddComponent( /datum/component/ghostrole_on_revive, \ /* refuse_revival_if_failed = */ TRUE, \ @@ -76,7 +76,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new) ) /// Set a timer for awarding succes and drop some awesome deathlore -/datum/lost_crew_manager/proc/on_succesful_revive(obj/item/organ/internal/brain/brain, list/death_lore, list/datum/callback/on_revive_and_player_occupancy) +/datum/lost_crew_manager/proc/on_succesful_revive(obj/item/organ/brain/brain, list/death_lore, list/datum/callback/on_revive_and_player_occupancy) var/mob/living/carbon/human/owner = brain.owner owner.mind.add_antag_datum(/datum/antagonist/recovered_crew) //for tracking mostly diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm index c49b5c13996..172c0e2f9e5 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm @@ -29,13 +29,13 @@ /obj/structure/closet/crate/secure/freezer/commsagent/PopulateContents() . = ..() //Contains a variety of less exotic tongues (And tongue accessories) for the comms agent to mess with. - new /obj/item/organ/internal/tongue(src) - new /obj/item/organ/internal/tongue/lizard(src) - new /obj/item/organ/internal/tongue/fly(src) - new /obj/item/organ/internal/tongue/zombie(src) - new /obj/item/organ/internal/tongue/bone(src) - new /obj/item/organ/internal/tongue/robot(src) //DANGER! CRYSTAL HYPERSTRUCTURE- - new /obj/item/organ/internal/tongue/ethereal(src) + new /obj/item/organ/tongue(src) + new /obj/item/organ/tongue/lizard(src) + new /obj/item/organ/tongue/fly(src) + new /obj/item/organ/tongue/zombie(src) + new /obj/item/organ/tongue/bone(src) + new /obj/item/organ/tongue/robot(src) //DANGER! CRYSTAL HYPERSTRUCTURE- + new /obj/item/organ/tongue/ethereal(src) new /obj/item/autosurgeon/syndicate/commsagent(src) new /obj/item/book/granter/sign_language(src) new /obj/item/clothing/gloves/radio(src) diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm index a91d033f1ee..d40d9178f3a 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm @@ -73,27 +73,27 @@ var/stored_organ /// Types of organ we can spawn var/static/list/allowed_organs = list( - /obj/item/organ/internal/heart/gland/egg = 7, - /obj/item/organ/internal/heart/gland/plasma = 7, - /obj/item/organ/internal/alien/plasmavessel = 5, - /obj/item/organ/internal/heart/gland/chem = 5, - /obj/item/organ/internal/heart/gland/mindshock = 5, - /obj/item/organ/internal/heart/gland/spiderman = 5, - /obj/item/organ/internal/heart/gland/transform = 5, - /obj/item/organ/internal/heart/gland/slime = 4, - /obj/item/organ/internal/heart/gland/trauma = 4, - /obj/item/organ/internal/heart/carp = 3, - /obj/item/organ/internal/heart/rat = 3, - /obj/item/organ/internal/heart/gland/electric = 3, - /obj/item/organ/internal/monster_core/brimdust_sac = 3, - /obj/item/organ/internal/monster_core/regenerative_core = 3, - /obj/item/organ/internal/monster_core/rush_gland = 3, - /obj/item/organ/internal/tongue/carp = 3, - /obj/item/organ/internal/alien/acid = 2, - /obj/item/organ/internal/alien/resinspinner = 2, - /obj/item/organ/internal/eyes/night_vision/goliath = 2, - /obj/item/organ/internal/eyes/night_vision/rat = 2, - /obj/item/organ/internal/heart/gland/ventcrawling = 1, + /obj/item/organ/heart/gland/egg = 7, + /obj/item/organ/heart/gland/plasma = 7, + /obj/item/organ/alien/plasmavessel = 5, + /obj/item/organ/heart/gland/chem = 5, + /obj/item/organ/heart/gland/mindshock = 5, + /obj/item/organ/heart/gland/spiderman = 5, + /obj/item/organ/heart/gland/transform = 5, + /obj/item/organ/heart/gland/slime = 4, + /obj/item/organ/heart/gland/trauma = 4, + /obj/item/organ/heart/carp = 3, + /obj/item/organ/heart/rat = 3, + /obj/item/organ/heart/gland/electric = 3, + /obj/item/organ/monster_core/brimdust_sac = 3, + /obj/item/organ/monster_core/regenerative_core = 3, + /obj/item/organ/monster_core/rush_gland = 3, + /obj/item/organ/tongue/carp = 3, + /obj/item/organ/alien/acid = 2, + /obj/item/organ/alien/resinspinner = 2, + /obj/item/organ/eyes/night_vision/goliath = 2, + /obj/item/organ/eyes/night_vision/rat = 2, + /obj/item/organ/heart/gland/ventcrawling = 1, ) /obj/structure/meateor_fluff/flesh_pod/Initialize(mapload) diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm index 36fdad25d84..ba135081532 100644 --- a/code/modules/meteors/meteor_types.dm +++ b/code/modules/meteors/meteor_types.dm @@ -379,7 +379,7 @@ hits = 2 heavy = TRUE meteorsound = 'sound/effects/blob/blobattack.ogg' - meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/internal/heart, /obj/item/organ/internal/lungs, /obj/item/organ/internal/tongue, /obj/item/organ/internal/appendix/) + meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/heart, /obj/item/organ/lungs, /obj/item/organ/tongue, /obj/item/organ/appendix/) var/meteorgibs = /obj/effect/gibspawner/generic threat = 2 signature = "culinary material" @@ -391,7 +391,7 @@ meteordrop += pick(subtypesof(path)) for(var/path in meteordrop) - if(path == /obj/item/organ/internal/tongue) + if(path == /obj/item/organ/tongue) meteordrop -= path meteordrop += pick(typesof(path)) return ..() @@ -412,12 +412,12 @@ //Meaty Ore Xeno edition /obj/effect/meteor/meaty/xeno color = "#5EFF00" - meteordrop = list(/obj/item/food/meat/slab/xeno, /obj/item/organ/internal/tongue/alien) + meteordrop = list(/obj/item/food/meat/slab/xeno, /obj/item/organ/tongue/alien) meteorgibs = /obj/effect/gibspawner/xeno signature = "exotic culinary material" /obj/effect/meteor/meaty/xeno/Initialize(mapload) - meteordrop += subtypesof(/obj/item/organ/internal/alien) + meteordrop += subtypesof(/obj/item/organ/alien) return ..() /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) diff --git a/code/modules/mining/boulder_processing/boulder.dm b/code/modules/mining/boulder_processing/boulder.dm index 57a143a0d33..e345f870f78 100644 --- a/code/modules/mining/boulder_processing/boulder.dm +++ b/code/modules/mining/boulder_processing/boulder.dm @@ -9,7 +9,10 @@ icon_state = "ore" icon = 'icons/obj/ore.dmi' item_flags = NO_MAT_REDEMPTION | SLOWS_WHILE_IN_HAND - throw_range = 2 + w_class = WEIGHT_CLASS_HUGE + throwforce = 30 // Under normal circumstances, pretty much nobody can throw this. + throw_range = 0 + tk_throw_range = 1 // Sorry, this is too cheesy, but maybe you can smash down doors with it. throw_speed = 0.5 slowdown = 1.5 drag_slowdown = 1.5 // It's still a big rock. @@ -28,6 +31,7 @@ register_context() AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_unwielded = 0, force_wielded = 5) //Heavy as all hell, it's a boulder, dude. AddComponent(/datum/component/sisyphus_awarder) + AddElement(/datum/element/bane, mob_biotypes = MOB_SPECIAL, added_damage = 20, requires_combat_mode = FALSE) /obj/item/boulder/Destroy(force) SSore_generation.available_boulders -= src @@ -144,6 +148,7 @@ to_chat(user, span_notice("You finish working on \the [src], and it crumbles into ore.")) playsound(src, 'sound/effects/rock/rock_break.ogg', 50) user.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * 0.2) + user.mind?.adjust_experience(/datum/skill/athletics, MINING_SKILL_BOULDER_SIZE_XP * 0.2) qdel(src) return var/msg = (durability == 1 ? "is crumbling!" : "looks weaker!") diff --git a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm index 62a3acdb447..d6767fe913b 100644 --- a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm +++ b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm @@ -11,7 +11,7 @@ * If implanted, you can shake off a cloud of brimdust to give this buff to people around you.area * It will also automatically grant you one stack every 30 seconds if you are on lavaland. */ -/obj/item/organ/internal/monster_core/brimdust_sac +/obj/item/organ/monster_core/brimdust_sac name = "brimdust sac" desc = "A strange organ from a brimdemon. You can shake it out to coat yourself in explosive powder." icon_state = "brim_sac" @@ -24,16 +24,16 @@ /// You will gain a stack of the buff every x seconds COOLDOWN_DECLARE(brimdust_auto_apply_cooldown) -/obj/item/organ/internal/monster_core/brimdust_sac/Initialize(mapload) +/obj/item/organ/monster_core/brimdust_sac/Initialize(mapload) . = ..() AddComponent(/datum/component/explodable, light_impact_range = 1) -/obj/item/organ/internal/monster_core/brimdust_sac/apply_to(mob/living/target, mob/user) +/obj/item/organ/monster_core/brimdust_sac/apply_to(mob/living/target, mob/user) target.apply_status_effect(user_status, BRIMDUST_STACKS_ON_USE) qdel(src) // Every x seconds, if on lavaland, add one stack -/obj/item/organ/internal/monster_core/brimdust_sac/on_life(seconds_per_tick, times_fired) +/obj/item/organ/monster_core/brimdust_sac/on_life(seconds_per_tick, times_fired) . = ..() if(!COOLDOWN_FINISHED(src, brimdust_auto_apply_cooldown)) return @@ -43,7 +43,7 @@ owner.apply_status_effect(user_status, BRIMDUST_STACKS_ON_LIFE) /// Make a cloud which applies brimdust to everyone nearby -/obj/item/organ/internal/monster_core/brimdust_sac/on_triggered_internal() +/obj/item/organ/monster_core/brimdust_sac/on_triggered_internal() var/turf/origin_turf = get_turf(owner) do_smoke(range = 2, holder = owner, location = origin_turf, smoke_type = /obj/effect/particle_effect/fluid/smoke/bad/brimdust) diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm index 679f3f81dd6..b6bd54a361e 100644 --- a/code/modules/mining/equipment/monster_organs/monster_organ.dm +++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm @@ -11,7 +11,7 @@ /obj/item/mining_stabilizer/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isorgan(interacting_with)) return NONE - var/obj/item/organ/internal/monster_core/target_core = interacting_with + var/obj/item/organ/monster_core/target_core = interacting_with if (!istype(target_core)) balloon_alert(user, "invalid target!") return ITEM_INTERACT_BLOCKING @@ -29,7 +29,7 @@ * Generalised behaviour is that they will decay and become useless unless provided with serum. * These should usually do something both when used in-hand, or when implanted into someone. */ -/obj/item/organ/internal/monster_core +/obj/item/organ/monster_core name = "monster core" desc = "All that remains of a monster. This abstract item should not spawn. \ It will rapidly decay into uselessness. but don't worry because it's already useless." @@ -58,11 +58,11 @@ /// Status effect applied by this organ var/datum/status_effect/user_status -/obj/item/organ/internal/monster_core/Initialize(mapload) +/obj/item/organ/monster_core/Initialize(mapload) . = ..() decay_timer = addtimer(CALLBACK(src, PROC_REF(go_inert)), time_to_decay, TIMER_STOPPABLE) -/obj/item/organ/internal/monster_core/examine(mob/user) +/obj/item/organ/monster_core/examine(mob/user) . = ..() if(!decay_timer) return @@ -79,11 +79,11 @@ if(0 SECONDS to 1 MINUTES) . += span_warning("Signs of decay have set in, but it still looks alive. It's probably about to become unusable really quickly.") -/obj/item/organ/internal/monster_core/Destroy(force) +/obj/item/organ/monster_core/Destroy(force) deltimer(decay_timer) return ..() -/obj/item/organ/internal/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags) +/obj/item/organ/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags) . = ..() if (inert) @@ -96,7 +96,7 @@ target_carbon.visible_message(span_notice("[src] stabilizes as it's inserted.")) return TRUE -/obj/item/organ/internal/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags) +/obj/item/organ/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags) if (!inert && !special) owner.visible_message(span_notice("[src] rapidly decays as it's removed.")) go_inert() @@ -107,7 +107,7 @@ * Returns true if successful. * * Implanted - If true, organ has just been inserted into someone. */ -/obj/item/organ/internal/monster_core/proc/preserve(implanted = FALSE) +/obj/item/organ/monster_core/proc/preserve(implanted = FALSE) if (inert) return FALSE deltimer(decay_timer) @@ -118,7 +118,7 @@ /** * Decays the organ, it is now useless. */ -/obj/item/organ/internal/monster_core/proc/go_inert() +/obj/item/organ/monster_core/proc/go_inert() if (inert) return FALSE inert = TRUE @@ -128,7 +128,7 @@ update_appearance() return TRUE -/obj/item/organ/internal/monster_core/update_desc() +/obj/item/organ/monster_core/update_desc() if (inert) desc = desc_inert ? desc_inert : initial(desc) return ..() @@ -138,7 +138,7 @@ desc = initial(desc) return ..() -/obj/item/organ/internal/monster_core/update_icon_state() +/obj/item/organ/monster_core/update_icon_state() if (inert) icon_state = icon_state_inert ? icon_state_inert : initial(icon_state) return ..() @@ -148,14 +148,14 @@ icon_state = initial(icon_state) return ..() -/obj/item/organ/internal/monster_core/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) +/obj/item/organ/monster_core/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isliving(interacting_with)) return NONE try_apply(interacting_with, user) return ITEM_INTERACT_SUCCESS -/obj/item/organ/internal/monster_core/attack_self(mob/user) +/obj/item/organ/monster_core/attack_self(mob/user) if (!user.can_perform_action(src, FORBID_TELEKINESIS_REACH|ALLOW_RESTING)) return try_apply(user, user) @@ -167,7 +167,7 @@ * * target - Person you are applying this to. * * user - Person who is doing the applying. */ -/obj/item/organ/internal/monster_core/proc/try_apply(atom/target, mob/user) +/obj/item/organ/monster_core/proc/try_apply(atom/target, mob/user) if (!isliving(target)) balloon_alert(user, "invalid target!") return @@ -187,7 +187,7 @@ * * target - Person you are applying this to. * * user - Person who is doing the applying. */ -/obj/item/organ/internal/monster_core/proc/apply_to(mob/living/target, mob/user) +/obj/item/organ/monster_core/proc/apply_to(mob/living/target, mob/user) if (user_status) target.apply_status_effect(user_status) qdel(src) @@ -196,7 +196,7 @@ * Utility proc to find the associated monster organ action and trigger it. * Call this instead of on_triggered_internal() if the action needs to trigger automatically, or the cooldown won't happen. */ -/obj/item/organ/internal/monster_core/proc/trigger_organ_action(trigger_flags) +/obj/item/organ/monster_core/proc/trigger_organ_action(trigger_flags) var/datum/action/cooldown/monster_core_action/action = locate() in actions action?.Trigger(trigger_flags = trigger_flags) @@ -204,7 +204,7 @@ * Called when activated while implanted inside someone. * This could be via clicking the associated action button or through the above method. */ -/obj/item/organ/internal/monster_core/proc/on_triggered_internal() +/obj/item/organ/monster_core/proc/on_triggered_internal() SHOULD_CALL_PARENT(FALSE) CRASH("Someone forgot to make their organ do something when you implant it.") @@ -221,7 +221,7 @@ . = ..() if (!target) return - var/obj/item/organ/internal/monster_core/organ = target + var/obj/item/organ/monster_core/organ = target if (!istype(organ)) return organ.on_triggered_internal() diff --git a/code/modules/mining/equipment/monster_organs/regenerative_core.dm b/code/modules/mining/equipment/monster_organs/regenerative_core.dm index 98758d5a369..e601ac89f8c 100644 --- a/code/modules/mining/equipment/monster_organs/regenerative_core.dm +++ b/code/modules/mining/equipment/monster_organs/regenerative_core.dm @@ -2,7 +2,7 @@ * On use in hand, heals you over time and removes injury movement debuffs. Also makes you a bit sad. * On use when implanted, fully heals. Automatically fully heals if you would enter crit. */ -/obj/item/organ/internal/monster_core/regenerative_core +/obj/item/organ/monster_core/regenerative_core name = "regenerative core" desc = "All that remains of a hivelord. It can be used to help keep your body going, but it will rapidly decay into uselessness." desc_preserved = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay." @@ -12,30 +12,30 @@ icon_state = "hivelord_core" icon_state_inert = "hivelord_core_decayed" -/obj/item/organ/internal/monster_core/regenerative_core/preserve(implanted = FALSE) +/obj/item/organ/monster_core/regenerative_core/preserve(implanted = FALSE) if (implanted) SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "implanted")) else SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "stabilizer")) return ..() -/obj/item/organ/internal/monster_core/regenerative_core/go_inert() +/obj/item/organ/monster_core/regenerative_core/go_inert() . = .. () if (!.) return SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert")) -/obj/item/organ/internal/monster_core/regenerative_core/on_life(seconds_per_tick, times_fired) +/obj/item/organ/monster_core/regenerative_core/on_life(seconds_per_tick, times_fired) . = ..() if (owner.health <= owner.crit_threshold) trigger_organ_action(TRIGGER_FORCE_AVAILABLE) -/obj/item/organ/internal/monster_core/regenerative_core/on_triggered_internal() +/obj/item/organ/monster_core/regenerative_core/on_triggered_internal() owner.revive(HEAL_ALL) qdel(src) /// Log applications and apply moodlet. -/obj/item/organ/internal/monster_core/regenerative_core/apply_to(mob/living/target, mob/user) +/obj/item/organ/monster_core/regenerative_core/apply_to(mob/living/target, mob/user) target.add_mood_event(MOOD_CATEGORY_LEGION_CORE, /datum/mood_event/healsbadman) if (target != user) target.visible_message(span_notice("[user] forces [target] to apply [src]... Black tendrils entangle and reinforce [target.p_them()]!")) @@ -46,7 +46,7 @@ return ..() /// Different graphics/desc for the lavaland legion -/obj/item/organ/internal/monster_core/regenerative_core/legion +/obj/item/organ/monster_core/regenerative_core/legion desc = "A strange rock that crackles with power. It can be used to heal completely, but it will rapidly decay into uselessness." desc_preserved = "The core has been stabilized, allowing you to use it to heal completely without danger of decay." desc_inert = "The core has decayed, and is completely useless." diff --git a/code/modules/mining/equipment/monster_organs/rush_gland.dm b/code/modules/mining/equipment/monster_organs/rush_gland.dm index f9cfa1b88f1..cf901269e90 100644 --- a/code/modules/mining/equipment/monster_organs/rush_gland.dm +++ b/code/modules/mining/equipment/monster_organs/rush_gland.dm @@ -5,7 +5,7 @@ * On use in hand, makes you run really fast for 5 seconds and ignore injury movement decrease. * On use when implanted, run for longer and ignore all negative movement. Automatically triggers if health is low (to escape). */ -/obj/item/organ/internal/monster_core/rush_gland +/obj/item/organ/monster_core/rush_gland name = "rush gland" icon_state = "lobster_gland" icon_state_preserved = "lobster_gland_stable" @@ -16,23 +16,23 @@ user_status = /datum/status_effect/lobster_rush actions_types = list(/datum/action/cooldown/monster_core_action/adrenal_boost) -/obj/item/organ/internal/monster_core/rush_gland/on_life(seconds_per_tick, times_fired) +/obj/item/organ/monster_core/rush_gland/on_life(seconds_per_tick, times_fired) . = ..() if (owner.health <= HEALTH_DANGER_ZONE) trigger_organ_action() -/obj/item/organ/internal/monster_core/rush_gland/on_mob_insert(mob/living/carbon/organ_owner) +/obj/item/organ/monster_core/rush_gland/on_mob_insert(mob/living/carbon/organ_owner) . = ..() RegisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED, PROC_REF(trigger_organ_action_on_sig)) -/obj/item/organ/internal/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED) -/obj/item/organ/internal/monster_core/rush_gland/on_triggered_internal() +/obj/item/organ/monster_core/rush_gland/on_triggered_internal() owner.apply_status_effect(/datum/status_effect/lobster_rush/extended) -/obj/item/organ/internal/monster_core/rush_gland/proc/trigger_organ_action_on_sig(datum/source) +/obj/item/organ/monster_core/rush_gland/proc/trigger_organ_action_on_sig(datum/source) SIGNAL_HANDLER INVOKE_ASYNC(src, PROC_REF(trigger_organ_action)) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 6b2e79ce489..d1a75bd114c 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -27,7 +27,7 @@ if(2) new /obj/item/soulstone/anybody/mining(src) if(3) - new /obj/item/organ/internal/cyberimp/arm/shard/katana(src) + new /obj/item/organ/cyberimp/arm/shard/katana(src) if(4) new /obj/item/clothing/glasses/godeye(src) if(5) @@ -48,7 +48,7 @@ if(8) new /obj/item/rod_of_asclepius(src) if(9) - new /obj/item/organ/internal/heart/cursed/wizard(src) + new /obj/item/organ/heart/cursed/wizard(src) if(10) new /obj/item/ship_in_a_bottle(src) if(11) @@ -154,7 +154,7 @@ var/list/choices = subtypesof(/obj/machinery/anomalous_crystal) - /obj/machinery/anomalous_crystal/theme_warp // NOVA EDIT CHANGE - Less griefing - ORIGINAL: var/list/choices = subtypesof(/obj/machinery/anomalous_crystal) var/random_crystal = pick(choices) new random_crystal(src) - new /obj/item/organ/internal/vocal_cords/colossus(src) + new /obj/item/organ/vocal_cords/colossus(src) /obj/structure/closet/crate/necropolis/colossus/crusher name = "angelic colossus chest" diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm index bbe1de54243..05d59f556c2 100644 --- a/code/modules/mining/lavaland/tendril_loot.dm +++ b/code/modules/mining/lavaland/tendril_loot.dm @@ -552,7 +552,7 @@ to_chat(exposed_human, span_userdanger("A terrible pain travels down your back as your wings change shape!")) else to_chat(exposed_human, span_userdanger("A terrible pain travels down your back as wings burst out!")) - var/obj/item/organ/external/wings/functional/wings = get_wing_choice(exposed_human, chest) + var/obj/item/organ/wings/functional/wings = get_wing_choice(exposed_human, chest) wings = new wings() wings.Insert(exposed_human) playsound(exposed_human.loc, 'sound/items/poster/poster_ripped.ogg', 50, TRUE, -1) @@ -565,7 +565,7 @@ return wing_types[1] var/list/radial_wings = list() var/list/name2type = list() - for(var/obj/item/organ/external/wings/functional/possible_type as anything in wing_types) + for(var/obj/item/organ/wings/functional/possible_type as anything in wing_types) var/datum/sprite_accessory/accessory = initial(possible_type.sprite_accessory_override) //get the type accessory = SSaccessories.sprite_accessories[initial(accessory.key)][initial(accessory.name)] //NOVA EDIT CHANGE - ORIGINAL: accessory = SSaccessories.wings_list[initial(accessory.name)] //get the singleton instance var/image/img = image(icon = accessory.icon, icon_state = "m_wingsopen_[accessory.icon_state]_BEHIND") //Process the HUD elements @@ -934,7 +934,7 @@ name = "Scan Target" desc = "Contact may or may not be close." -/obj/item/organ/internal/cyberimp/arm/shard +/obj/item/organ/cyberimp/arm/shard name = "dark spoon shard" desc = "An eerie metal shard surrounded by dark energies...of soup drinking. You probably don't think you should have been able to find this." icon = 'icons/obj/mining_zones/artefacts.dmi' @@ -944,7 +944,7 @@ extend_sound = 'sound/items/unsheath.ogg' retract_sound = 'sound/items/sheath.ogg' -/obj/item/organ/internal/cyberimp/arm/shard/attack_self(mob/user, modifiers) +/obj/item/organ/cyberimp/arm/shard/attack_self(mob/user, modifiers) . = ..() to_chat(user, span_userdanger("The mass goes up your arm and goes inside it!")) playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE) @@ -954,15 +954,15 @@ user.temporarilyRemoveItemFromInventory(src, TRUE) Insert(user) -/obj/item/organ/internal/cyberimp/arm/shard/screwdriver_act(mob/living/user, obj/item/screwtool) +/obj/item/organ/cyberimp/arm/shard/screwdriver_act(mob/living/user, obj/item/screwtool) return -/obj/item/organ/internal/cyberimp/arm/shard/katana +/obj/item/organ/cyberimp/arm/shard/katana name = "dark shard" desc = "An eerie metal shard surrounded by dark energies." items_to_create = list(/obj/item/cursed_katana) -/obj/item/organ/internal/cyberimp/arm/shard/katana/Retract() +/obj/item/organ/cyberimp/arm/shard/katana/Retract() var/obj/item/cursed_katana/katana = active_item if(!katana || katana.shattered) return FALSE diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c532769a1d9..adb97b09800 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -275,8 +275,8 @@ Works together with spawning an observer, noted above. if(ishuman(usr)) //following code only applies to those capable of having an ethereal heart, ie humans var/mob/living/carbon/human/crystal_fella = usr var/our_heart = crystal_fella.get_organ_slot(ORGAN_SLOT_HEART) - if(istype(our_heart, /obj/item/organ/internal/heart/ethereal)) //so you got the heart? - var/obj/item/organ/internal/heart/ethereal/ethereal_heart = our_heart + if(istype(our_heart, /obj/item/organ/heart/ethereal)) //so you got the heart? + var/obj/item/organ/heart/ethereal/ethereal_heart = our_heart ethereal_heart.stop_crystalization_process(crystal_fella) //stops the crystallization process stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm index 1fa30063dd5..13caade7c94 100644 --- a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm +++ b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm @@ -83,7 +83,7 @@ if(HAS_TRAIT(current_target, TRAIT_DEAF)) return - var/obj/item/organ/internal/ears/target_ears = current_target.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/target_ears = current_target.get_organ_slot(ORGAN_SLOT_EARS) target_ears?.adjustEarDamage(0, 5) /mob/living/basic/bot/honkbot/ui_data(mob/user) diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm index 363243a2833..7e572c2d92f 100644 --- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm +++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm @@ -177,6 +177,19 @@ paralyze_chance = 0 initial_size = 0.9 +/mob/living/basic/gorilla/hostile + name = "Feral Gorilla" + maxHealth = 180 + health = 180 + desc = "A gorilla created via \"advanced genetic science\". While not quite as strong as their wildborne brethren, this simian still packs a punch." + melee_damage_lower = 15 + melee_damage_upper = 18 + obj_damage = 25 + speed = 0.1 + paralyze_chance = 0 + initial_size = 0.9 + faction = list(FACTION_HOSTILE) + /mob/living/basic/gorilla/genetics/Initialize(mapload) . = ..() qdel(GetComponent(/datum/component/amputating_limbs)) diff --git a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm index b83c4f253f3..6f8c2e5c96f 100644 --- a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm +++ b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm @@ -28,7 +28,7 @@ var/static/list/loot = list( /obj/effect/decal/cleanable/ash, /obj/item/clothing/suit/armor/vest, - /obj/item/organ/internal/lungs, + /obj/item/organ/lungs, /obj/item/shard, ) AddElement(/datum/element/death_drops, loot) diff --git a/code/modules/mob/living/basic/heretic/raw_prophet.dm b/code/modules/mob/living/basic/heretic/raw_prophet.dm index f4ed7229a00..1d0d0f93f20 100644 --- a/code/modules/mob/living/basic/heretic/raw_prophet.dm +++ b/code/modules/mob/living/basic/heretic/raw_prophet.dm @@ -25,7 +25,7 @@ /mob/living/basic/heretic_summon/raw_prophet/Initialize(mapload) . = ..() AddElement(/datum/element/wheel) - var/static/list/body_parts = list(/obj/effect/gibspawner/human, /obj/item/bodypart/arm/left, /obj/item/organ/internal/eyes) + var/static/list/body_parts = list(/obj/effect/gibspawner/human, /obj/item/bodypart/arm/left, /obj/item/organ/eyes) AddElement(/datum/element/death_drops, body_parts) AddComponent(/datum/component/focused_attacker) var/on_link_message = "You feel something new enter your sphere of mind... \ diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm index 81dc34002ee..e314fe152ca 100644 --- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm +++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm @@ -31,7 +31,7 @@ butcher_results = list( /obj/item/food/meat/slab = 2, /obj/effect/decal/cleanable/brimdust = 1, - /obj/item/organ/internal/monster_core/brimdust_sac = 1, + /obj/item/organ/monster_core/brimdust_sac = 1, ) /// How we get blasting var/datum/action/cooldown/mob_cooldown/brimbeam/beam diff --git a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm index f76479dc131..286e7539624 100644 --- a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm +++ b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm @@ -29,7 +29,7 @@ /mob/living/basic/mining/hivelord/Initialize(mapload) . = ..() - var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core) + var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core) AddElement(/datum/element/relay_attackers) AddElement(/datum/element/death_drops, death_loot) AddComponent(/datum/component/clickbox, icon_state = "hivelord", max_scale = INFINITY, dead_state = "hivelord_dead") // They writhe so much. diff --git a/code/modules/mob/living/basic/lavaland/legion/legion.dm b/code/modules/mob/living/basic/lavaland/legion/legion.dm index 76d3f51947e..007d8b6bfa6 100644 --- a/code/modules/mob/living/basic/lavaland/legion/legion.dm +++ b/code/modules/mob/living/basic/lavaland/legion/legion.dm @@ -50,7 +50,7 @@ /// Create what we want to drop on death, in proc form so we can always return a static list /mob/living/basic/mining/legion/proc/get_loot_list() - var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core/legion) + var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core/legion) return death_loot /mob/living/basic/mining/legion/Exited(atom/movable/gone, direction) @@ -88,7 +88,7 @@ if (prob(75)) return // Congratulations you have won a special prize: cancer - var/obj/item/organ/internal/legion_tumour/cancer = new() + var/obj/item/organ/legion_tumour/cancer = new() cancer.Insert(consumed, special = TRUE, movement_flags = DELETE_IF_REPLACED) /// A Legion which only drops skeletons instead of corpses which might have fun loot, so it cannot be farmed @@ -167,5 +167,5 @@ /// Create what we want to drop on death, in proc form so we can always return a static list /mob/living/basic/mining/legion/large/get_loot_list() - var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core/legion = 3, /obj/effect/mob_spawn/corpse/human/legioninfested = 4) + var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core/legion = 3, /obj/effect/mob_spawn/corpse/human/legioninfested = 4) return death_loot diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm index d4503230e48..984080907c2 100644 --- a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm +++ b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm @@ -1,5 +1,5 @@ /// Left behind when a legion infects you, for medical enrichment -/obj/item/organ/internal/legion_tumour +/obj/item/organ/legion_tumour name = "legion tumour" desc = "A mass of pulsing flesh and dark tendrils, containing the power to regenerate flesh at a terrible cost." failing_desc = "pulses and writhes with horrible life, reaching towards you with its tendrils!" @@ -27,22 +27,22 @@ 'sound/mobs/non-humanoids/hiss/lowHiss4.ogg', ) -/obj/item/organ/internal/legion_tumour/Initialize(mapload) +/obj/item/organ/legion_tumour/Initialize(mapload) . = ..() animate_pulse() -/obj/item/organ/internal/legion_tumour/apply_organ_damage(damage_amount, maximum, required_organ_flag) +/obj/item/organ/legion_tumour/apply_organ_damage(damage_amount, maximum, required_organ_flag) var/was_failing = organ_flags & ORGAN_FAILING . = ..() if (was_failing != (organ_flags & ORGAN_FAILING)) animate_pulse() -/obj/item/organ/internal/legion_tumour/set_organ_damage(damage_amount, required_organ_flag) +/obj/item/organ/legion_tumour/set_organ_damage(damage_amount, required_organ_flag) . = ..() animate_pulse() /// Do a heartbeat animation depending on if we're failing or not -/obj/item/organ/internal/legion_tumour/proc/animate_pulse() +/obj/item/organ/legion_tumour/proc/animate_pulse() animate(src, transform = matrix()) // Stop any current animation var/speed_divider = organ_flags & ORGAN_FAILING ? 2 : 1 @@ -51,23 +51,23 @@ animate(transform = matrix(), time = 0.5 SECONDS / speed_divider, easing = SINE_EASING | EASE_IN) animate(transform = matrix(), time = 2 SECONDS / speed_divider) -/obj/item/organ/internal/legion_tumour/Remove(mob/living/carbon/egg_owner, special, movement_flags) +/obj/item/organ/legion_tumour/Remove(mob/living/carbon/egg_owner, special, movement_flags) . = ..() stage = 0 elapsed_time = 0 -/obj/item/organ/internal/legion_tumour/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/legion_tumour/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() owner.log_message("has received [src] which will eventually turn them into a Legion.", LOG_VICTIM) -/obj/item/organ/internal/legion_tumour/attack(mob/living/target, mob/living/user, params) +/obj/item/organ/legion_tumour/attack(mob/living/target, mob/living/user, params) if (try_apply(target, user)) qdel(src) return return ..() /// Smear it on someone like a regen core, why not. Make sure they're alive though. -/obj/item/organ/internal/legion_tumour/proc/try_apply(mob/living/target, mob/user) +/obj/item/organ/legion_tumour/proc/try_apply(mob/living/target, mob/user) if(!user.Adjacent(target) || !isliving(target)) return FALSE @@ -90,7 +90,7 @@ skull.melee_attack(target) return TRUE -/obj/item/organ/internal/legion_tumour/on_life(seconds_per_tick, times_fired) +/obj/item/organ/legion_tumour/on_life(seconds_per_tick, times_fired) . = ..() if (QDELETED(src) || QDELETED(owner)) return @@ -146,7 +146,7 @@ to_chat(owner, span_bolddanger("Something is moving under your skin!")) /// Consume our host -/obj/item/organ/internal/legion_tumour/proc/infest() +/obj/item/organ/legion_tumour/proc/infest() if (QDELETED(src) || QDELETED(owner)) return owner.log_message("has been turned into a Legion by their tumour.", LOG_VICTIM) @@ -155,7 +155,7 @@ new_legion.consume(owner) qdel(src) -/obj/item/organ/internal/legion_tumour/on_find(mob/living/finder) +/obj/item/organ/legion_tumour/on_find(mob/living/finder) . = ..() to_chat(finder, span_warning("There's an enormous tumour in [owner]'s [zone]!")) if(stage < 4) diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm index d7f5a024ace..d8288360bd1 100644 --- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm +++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm @@ -22,7 +22,7 @@ butcher_results = list( /obj/item/food/meat/slab/rawcrab = 2, /obj/item/stack/sheet/bone = 2, - /obj/item/organ/internal/monster_core/rush_gland = 1, + /obj/item/organ/monster_core/rush_gland = 1, ) crusher_loot = /obj/item/crusher_trophy/lobster_claw ai_controller = /datum/ai_controller/basic_controller/lobstrosity @@ -146,7 +146,7 @@ butcher_results = list( /obj/item/food/meat/slab/rawcrab = 1, /obj/item/stack/sheet/bone = 1, - /obj/item/organ/internal/monster_core/rush_gland = 1, + /obj/item/organ/monster_core/rush_gland = 1, ) crusher_loot = null ai_controller = /datum/ai_controller/basic_controller/lobstrosity/juvenile diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm index 3c2ab3f7c9f..3075aa6bcb7 100644 --- a/code/modules/mob/living/basic/pets/cat/cat.dm +++ b/code/modules/mob/living/basic/pets/cat/cat.dm @@ -12,8 +12,8 @@ unsuitable_atmos_damage = 0.5 butcher_results = list( /obj/item/food/meat/slab = 1, - /obj/item/organ/internal/ears/cat = 1, - /obj/item/organ/external/tail/cat = 1, + /obj/item/organ/ears/cat = 1, + /obj/item/organ/tail/cat = 1, /obj/item/stack/sheet/animalhide/cat = 1 ) response_help_continuous = "pets" @@ -181,8 +181,8 @@ can_interact_with_stove = TRUE butcher_results = list( /obj/item/food/meat/slab = 2, - /obj/item/organ/internal/ears/cat = 1, - /obj/item/organ/external/tail/cat = 1, + /obj/item/organ/ears/cat = 1, + /obj/item/organ/tail/cat = 1, /obj/item/food/breadslice/plain = 1 ) collar_icon_state = null diff --git a/code/modules/mob/living/basic/pets/cat/keeki.dm b/code/modules/mob/living/basic/pets/cat/keeki.dm index 4c18d22b02a..7314f9b4906 100644 --- a/code/modules/mob/living/basic/pets/cat/keeki.dm +++ b/code/modules/mob/living/basic/pets/cat/keeki.dm @@ -8,8 +8,8 @@ maxHealth = 50 gender = FEMALE butcher_results = list( - /obj/item/organ/internal/brain = 1, - /obj/item/organ/internal/heart = 1, + /obj/item/organ/brain = 1, + /obj/item/organ/heart = 1, /obj/item/food/cakeslice/birthday = 3, /obj/item/food/meat/slab = 2 ) @@ -40,7 +40,7 @@ /mob/living/basic/pet/cat/cak/CheckParts(list/parts) . = ..() - var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents + var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents if(isnull(candidate?.brainmob?.mind)) return var/datum/mind/candidate_mind = candidate.brainmob.mind diff --git a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm index 9ac8e10d8f4..c5fac5f966e 100644 --- a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm +++ b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm @@ -91,7 +91,7 @@ maxHealth = 50 gender = NEUTER damage_coeff = list(BRUTE = 3, BURN = 3, TOX = 1, STAMINA = 0, OXY = 1) - butcher_results = list(/obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1, /obj/item/food/breadslice/plain = 3, \ + butcher_results = list(/obj/item/organ/brain = 1, /obj/item/organ/heart = 1, /obj/item/food/breadslice/plain = 3, \ /obj/item/food/meat/slab = 2) response_harm_continuous = "takes a bite out of" response_harm_simple = "take a bite out of" @@ -101,7 +101,7 @@ /mob/living/basic/pet/dog/breaddog/CheckParts(list/parts) . = ..() - var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents + var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents if(!candidate || !candidate.brainmob || !candidate.brainmob.mind) return candidate.brainmob.mind.transfer_to(src) diff --git a/code/modules/mob/living/basic/pets/penguin/penguin.dm b/code/modules/mob/living/basic/pets/penguin/penguin.dm index 7f7280d5b14..0df0dfedcb2 100644 --- a/code/modules/mob/living/basic/pets/penguin/penguin.dm +++ b/code/modules/mob/living/basic/pets/penguin/penguin.dm @@ -133,7 +133,7 @@ density = FALSE pass_flags = PASSMOB mob_size = MOB_SIZE_SMALL - butcher_results = list(/obj/item/organ/internal/ears/penguin = 1, /obj/item/food/meat/slab/penguin = 1) + butcher_results = list(/obj/item/organ/ears/penguin = 1, /obj/item/food/meat/slab/penguin = 1) ai_controller = /datum/ai_controller/basic_controller/penguin/baby can_lay_eggs = FALSE ///will it grow up? diff --git a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm index 7a28473f1fa..e6d77586e4b 100644 --- a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm +++ b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm @@ -132,7 +132,7 @@ response_harm_simple = "take a bite out of" attacked_sound = 'sound/items/eatfood.ogg' death_message = "loses its false life and collapses!" - butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1) + butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/brain = 1, /obj/item/organ/heart = 1) attack_sound = 'sound/items/weapons/slap.ogg' attack_vis_effect = ATTACK_EFFECT_DISARM attack_verb_simple = "slap" @@ -160,7 +160,7 @@ /mob/living/basic/bear/butter/CheckParts(list/parts) //Borrowed code from Cak, allows the brain used to actually control the bear. . = ..() - var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents + var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents if(!candidate || !candidate.brainmob || !candidate.brainmob.mind) return var/datum/mind/candidate_mind = candidate.brainmob.mind diff --git a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm index 246b025d559..926ce374faf 100644 --- a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm +++ b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm @@ -51,7 +51,7 @@ return var/mob/living/carbon/human/attacked = target - var/obj/item/organ/external/tail/cat/tail = attacked.get_organ_by_type(/obj/item/organ/external/tail/cat) + var/obj/item/organ/tail/cat/tail = attacked.get_organ_by_type(/obj/item/organ/tail/cat) if(QDELETED(tail)) return diff --git a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm index d7aa8903398..f2585aecd62 100644 --- a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm +++ b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm @@ -74,7 +74,7 @@ /// Simply infects the target corpse with our changeling eggs. This shouldn't fail, because all checks should have been done in check_and_implant() /// Just to be super-duper safe to the player, we do return TRUE if all goes well and read that value in check_and_implant() to be nice to the player. /mob/living/basic/headslug/proc/infect(mob/living/carbon/victim) - var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim) + var/obj/item/organ/body_egg/changeling_egg/egg = new(victim) egg.origin = mind diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm index 811186d43ad..fdc92d06f66 100644 --- a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm +++ b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm @@ -1,16 +1,16 @@ /// The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl -/obj/item/organ/internal/heart/demon +/obj/item/organ/heart/demon name = "demon heart" desc = "Still it beats furiously, emanating an aura of utter hate." icon = 'icons/obj/medical/organs/organs.dmi' icon_state = "demon_heart-on" decay_factor = 0 -/obj/item/organ/internal/heart/demon/Initialize(mapload) +/obj/item/organ/heart/demon/Initialize(mapload) AddElement(/datum/element/update_icon_blocker) return ..() -/obj/item/organ/internal/heart/demon/attack(mob/target_mob, mob/living/carbon/user, obj/target) +/obj/item/organ/heart/demon/attack(mob/target_mob, mob/living/carbon/user, obj/target) if(target_mob != user) return ..() @@ -33,18 +33,18 @@ user.temporarilyRemoveItemFromInventory(src, TRUE) src.Insert(user) //Consuming the heart literally replaces your heart with a demon heart. H A R D C O R E -/obj/item/organ/internal/heart/demon/on_mob_insert(mob/living/carbon/heart_owner) +/obj/item/organ/heart/demon/on_mob_insert(mob/living/carbon/heart_owner) . = ..() // Gives a non-eat-people crawl to the new owner var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = new(heart_owner) crawl.Grant(heart_owner) -/obj/item/organ/internal/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE) +/obj/item/organ/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE) . = ..() var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = locate() in heart_owner.actions qdel(crawl) -/obj/item/organ/internal/heart/demon/Stop() +/obj/item/organ/heart/demon/Stop() return FALSE // Always beating. /obj/effect/decal/cleanable/blood/innards diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm index a8073fa8329..add0ba237f8 100644 --- a/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm +++ b/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm @@ -45,7 +45,7 @@ var/static/list/droppable_loot = list( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/blood/innards, - /obj/item/organ/internal/heart/demon, + /obj/item/organ/heart/demon, ) return droppable_loot diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm index e735067b3ed..9c56ec044c7 100644 --- a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm +++ b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm @@ -100,13 +100,13 @@ if(!ishuman(target)) return TRUE var/mob/living/carbon/human_target = target - var/obj/item/organ/internal/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES) if(isnull(eyes) || eyes.damage < 10) return TRUE heal_eye_damage(human_target, eyes) return FALSE -/mob/living/basic/eyeball/proc/heal_eye_damage(mob/living/target, obj/item/organ/internal/eyes/eyes) +/mob/living/basic/eyeball/proc/heal_eye_damage(mob/living/target, obj/item/organ/eyes/eyes) if(!COOLDOWN_FINISHED(src, eye_healing)) return to_chat(target, span_warning("[src] seems to be healing your [eyes.zone]!")) diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm index 5051f815371..27f637d3a87 100644 --- a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm +++ b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm @@ -7,7 +7,7 @@ if(!eye_damage_threshold) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED for(var/mob/living/carbon/blind in oview(9, living_pawn)) - var/obj/item/organ/internal/eyes/eyes = blind.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = blind.get_organ_slot(ORGAN_SLOT_EYES) if(isnull(eyes)) continue if(eyes.damage < eye_damage_threshold) @@ -36,7 +36,7 @@ if(QDELETED(target)) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED - var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES) var/datum/callback/callback = CALLBACK(living_pawn, TYPE_PROC_REF(/mob/living/basic/eyeball, heal_eye_damage), target, eyes) callback.Invoke() diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm index 17b260d03ed..f71594ea0ec 100644 --- a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm +++ b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm @@ -34,7 +34,7 @@ var/eye_damage_threshold = owner.ai_controller.blackboard[BB_EYE_DAMAGE_THRESHOLD] if(!eye_damage_threshold) return TRUE - var/obj/item/organ/internal/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES) if(eyes.damage > eye_damage_threshold) //we dont attack people with bad vision return FALSE diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 9953172dff5..dbfb2a79157 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -10,7 +10,7 @@ var/mob/living/brain/brainmob = null //The current occupant. var/mob/living/silicon/robot = null //Appears unused. var/obj/vehicle/sealed/mecha = null //This does not appear to be used outside of reference in mecha.dm. - var/obj/item/organ/internal/brain/brain = null //The actual brain + var/obj/item/organ/brain/brain = null //The actual brain var/datum/ai_laws/laws = new() var/force_replace_ai_name = FALSE var/overrides_aicore_laws = FALSE // Whether the laws on the MMI, if any, override possible pre-existing laws loaded on the AI core. @@ -35,7 +35,7 @@ if(!brain) icon_state = "[base_icon_state]_off" return ..() - icon_state = "[base_icon_state]_brain[istype(brain, /obj/item/organ/internal/brain/alien) ? "_alien" : null]" + icon_state = "[base_icon_state]_brain[istype(brain, /obj/item/organ/brain/alien) ? "_alien" : null]" return ..() /obj/item/mmi/update_overlays() @@ -51,8 +51,8 @@ /obj/item/mmi/attackby(obj/item/O, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) - if(istype(O, /obj/item/organ/internal/brain)) //Time to stick a brain in it --NEO - var/obj/item/organ/internal/brain/newbrain = O + if(istype(O, /obj/item/organ/brain)) //Time to stick a brain in it --NEO + var/obj/item/organ/brain/newbrain = O if(brain) to_chat(user, span_warning("There's already a brain in the MMI!")) return @@ -99,7 +99,7 @@ name = "[initial(name)]: [brainmob.real_name]" update_appearance() - if(istype(brain, /obj/item/organ/internal/brain/alien)) + if(istype(brain, /obj/item/organ/brain/alien)) braintype = "Xenoborg" //HISS....Beep. else braintype = "Cyborg" @@ -121,7 +121,7 @@ * Arguments: * * new_brain - Brain to be force-inserted into the MMI. Any calling code should handle proper removal of the brain from the mob, as this proc only forceMoves. */ -/obj/item/mmi/proc/force_brain_into(obj/item/organ/internal/brain/new_brain) +/obj/item/mmi/proc/force_brain_into(obj/item/organ/brain/new_brain) if(isnull(new_brain)) stack_trace("Proc called with null brain.") return FALSE @@ -160,7 +160,7 @@ name = "[initial(name)]: [brainmob.real_name]" update_appearance() - if(istype(brain, /obj/item/organ/internal/brain/alien)) + if(istype(brain, /obj/item/organ/brain/alien)) braintype = "Xenoborg" else braintype = "Cyborg" @@ -209,7 +209,7 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L - var/obj/item/organ/internal/brain/newbrain = H.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/newbrain = H.get_organ_by_type(/obj/item/organ/brain) newbrain.Remove(H, special = TRUE, movement_flags = NO_ID_TRANSFER) newbrain.forceMove(src) brain = newbrain @@ -220,7 +220,7 @@ name = "[initial(name)]: [brainmob.real_name]" update_appearance() - if(istype(brain, /obj/item/organ/internal/brain/alien)) + if(istype(brain, /obj/item/organ/brain/alien)) braintype = "Xenoborg" //HISS....Beep. else braintype = "Cyborg" diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index 17f5be02a91..ccce0269e54 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -11,7 +11,7 @@ create_dna(src) stored_dna.initialize_dna(random_blood_type()) if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned) - var/obj/item/organ/internal/brain/OB = new(loc) //we create a new brain organ for it. + var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it. OB.brainmob = src forceMove(OB) if(!container?.mecha && (!container || container.immobilize)) //Unless inside a mecha, brains are rather helpless. @@ -19,7 +19,7 @@ ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT) /mob/living/brain/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) - var/obj/item/organ/internal/brain/brain_loc = loc + var/obj/item/organ/brain/brain_loc = loc if(brain_loc && isnull(new_turf) && brain_loc.owner) //we're actively being put inside a new body. return ..(old_turf, get_turf(brain_loc.owner), same_z_layer, notify_contents) return ..() @@ -79,10 +79,10 @@ /mob/living/brain/forceMove(atom/destination) if(container) return container.forceMove(destination) - else if (istype(loc, /obj/item/organ/internal/brain)) - var/obj/item/organ/internal/brain/B = loc + else if (istype(loc, /obj/item/organ/brain)) + var/obj/item/organ/brain/B = loc B.forceMove(destination) - else if (istype(destination, /obj/item/organ/internal/brain)) + else if (istype(destination, /obj/item/organ/brain)) doMove(destination) else if (istype(destination, /obj/item/mmi)) doMove(destination) @@ -102,8 +102,8 @@ /mob/living/brain/proc/get_traumas() . = list() - if(istype(loc, /obj/item/organ/internal/brain)) - var/obj/item/organ/internal/brain/B = loc + if(istype(loc, /obj/item/organ/brain)) + var/obj/item/organ/brain/B = loc . = B.traumas /mob/living/brain/get_policy_keywords() diff --git a/code/modules/mob/living/brain/brain_cybernetic.dm b/code/modules/mob/living/brain/brain_cybernetic.dm index d87b6d90283..c88db6dc1a1 100644 --- a/code/modules/mob/living/brain/brain_cybernetic.dm +++ b/code/modules/mob/living/brain/brain_cybernetic.dm @@ -1,11 +1,11 @@ -/obj/item/organ/internal/brain/cybernetic +/obj/item/organ/brain/cybernetic name = "cybernetic brain" desc = "A mechanical brain found inside of androids. Not to be confused with a positronic brain." icon_state = "brain-c" organ_flags = ORGAN_ROBOTIC | ORGAN_VITAL failing_desc = "seems to be broken, and will not work without repairs." -/obj/item/organ/internal/brain/cybernetic/brain_damage_examine() +/obj/item/organ/brain/cybernetic/brain_damage_examine() if(suicided) return span_info("Its circuitry is smoking slightly. They must not have been able to handle the stress of it all.") if(brainmob && (decoy_override || brainmob.client || brainmob.get_ghost())) @@ -18,7 +18,7 @@ else return span_info("This one is completely devoid of life.") -/obj/item/organ/internal/brain/cybernetic/check_for_repair(obj/item/item, mob/user) +/obj/item/organ/brain/cybernetic/check_for_repair(obj/item/item, mob/user) if (item.tool_behaviour == TOOL_MULTITOOL) //attempt to repair the brain if (brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing to_chat(user, span_warning("[src] is far too damaged, there's nothing else we can do for it!")) @@ -48,7 +48,7 @@ return TRUE return FALSE -/obj/item/organ/internal/brain/cybernetic/emp_act(severity) +/obj/item/organ/brain/cybernetic/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index ced02095e41..44f8b14443d 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/brain +/obj/item/organ/brain name = "brain" desc = "A piece of juicy meat found in a person's head." icon_state = "brain" @@ -45,21 +45,12 @@ /// We got smooth from being washed var/smooth_brain = FALSE -/obj/item/organ/internal/brain/Initialize(mapload) +/obj/item/organ/brain/Initialize(mapload) . = ..() // Brain size logic transform = transform.Scale(brain_size) -/obj/item/organ/internal/brain/examine() - . = ..() - if (smooth_brain) - . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...") - if(brain_size < 1) - . += span_notice("It is a bit on the smaller side...") - if(brain_size > 1) - . += span_notice("It is bigger than average...") - -/obj/item/organ/internal/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags) +/obj/item/organ/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags) . = ..() if(!.) return @@ -114,7 +105,7 @@ //Update the body's icon so it doesnt appear debrained anymore brain_owner.update_body_parts() -/obj/item/organ/internal/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) // Delete skillchips first as parent proc sets owner to null, and skillchips need to know the brain's owner. if(!QDELETED(organ_owner) && length(skillchips)) if(!special) @@ -137,11 +128,11 @@ organ_owner.update_body_parts() organ_owner.clear_mood_event("brain_damage") -/obj/item/organ/internal/brain/update_icon_state() - icon_state = "[initial(icon_state)][smooth_brain ? "-smooth_brain" : ""]" +/obj/item/organ/brain/update_icon_state() + icon_state = "[initial(icon_state)][smooth_brain ? "-smooth" : ""]" return ..() -/obj/item/organ/internal/brain/proc/transfer_identity(mob/living/L) +/obj/item/organ/brain/proc/transfer_identity(mob/living/L) name = "[L.name]'s [initial(name)]" if(brainmob) if(!decoy_override) @@ -173,7 +164,7 @@ L.mind.transfer_to(brainmob) to_chat(brainmob, span_notice("You feel slightly disoriented. That's normal when you're just a brain.")) -/obj/item/organ/internal/brain/attackby(obj/item/item, mob/user, params) +/obj/item/organ/brain/attackby(obj/item/item, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) if(istype(item, /obj/item/borg/apparatus/organ_storage)) @@ -215,7 +206,7 @@ visible_message(span_danger("[user] hits [src] with [item]!")) to_chat(user, span_danger("You hit [src] with [item]!")) -/obj/item/organ/internal/brain/proc/check_for_repair(obj/item/item, mob/user) +/obj/item/organ/brain/proc/check_for_repair(obj/item/item, mob/user) if(damage && item.is_drainable() && item.reagents.has_reagent(/datum/reagent/medicine/mannitol) && (organ_flags & ORGAN_ORGANIC)) //attempt to heal the brain if(brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing to_chat(user, span_warning("[src] is far too damaged, there's nothing else we can do for it!")) @@ -234,18 +225,20 @@ return TRUE return FALSE -/obj/item/organ/internal/brain/examine(mob/user) +/obj/item/organ/brain/examine(mob/user) . = ..() if(length(skillchips)) . += span_info("It has a skillchip embedded in it.") . += brain_damage_examine() + if (smooth_brain) + . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...") if(brain_size < 1) . += span_notice("It is a bit on the smaller side...") if(brain_size > 1) . += span_notice("It is bigger than average...") /// Needed so subtypes can override examine text while still calling parent -/obj/item/organ/internal/brain/proc/brain_damage_examine() +/obj/item/organ/brain/proc/brain_damage_examine() if(suicided) return span_info("It's started turning slightly grey. They must not have been able to handle the stress of it all.") if(brainmob && (decoy_override || brainmob.client || brainmob.get_ghost())) @@ -258,7 +251,7 @@ else return span_info("This one is completely devoid of life.") -/obj/item/organ/internal/brain/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/brain/get_status_appendix(advanced, add_tooltips) var/list/trauma_text for(var/datum/brain_trauma/trauma as anything in traumas) var/trauma_desc = "" @@ -278,7 +271,7 @@ if(LAZYLEN(trauma_text)) return "Mental trauma: [english_list(trauma_text, and_text = ", and ")]." -/obj/item/organ/internal/brain/attack(mob/living/carbon/C, mob/user) +/obj/item/organ/brain/attack(mob/living/carbon/C, mob/user) if(!istype(C)) return ..() @@ -287,7 +280,7 @@ if(user.zone_selected != BODY_ZONE_HEAD) return ..() - var/target_has_brain = C.get_organ_by_type(/obj/item/organ/internal/brain) + var/target_has_brain = C.get_organ_by_type(/obj/item/organ/brain) if(!target_has_brain && C.is_eyes_covered()) to_chat(user, span_warning("You're going to need to remove [C.p_their()] head cover first!")) @@ -315,7 +308,7 @@ else ..() -/obj/item/organ/internal/brain/Destroy() //copypasted from MMIs. +/obj/item/organ/brain/Destroy() //copypasted from MMIs. QDEL_NULL(brainmob) QDEL_LIST(traumas) @@ -323,13 +316,13 @@ owner?.mind?.set_current(null) //You aren't allowed to return to brains that don't exist return ..() -/obj/item/organ/internal/brain/on_life(seconds_per_tick, times_fired) +/obj/item/organ/brain/on_life(seconds_per_tick, times_fired) if(damage >= BRAIN_DAMAGE_DEATH) //rip to_chat(owner, span_userdanger("The last spark of life in your brain fizzles out...")) owner.investigate_log("has been killed by brain damage.", INVESTIGATE_DEATHS) owner.death() -/obj/item/organ/internal/brain/check_damage_thresholds(mob/M) +/obj/item/organ/brain/check_damage_thresholds(mob/M) . = ..() //if we're not more injured than before, return without gambling for a trauma if(damage <= prev_damage) @@ -362,9 +355,9 @@ else return brain_message -/obj/item/organ/internal/brain/before_organ_replacement(obj/item/organ/replacement) +/obj/item/organ/brain/before_organ_replacement(obj/item/organ/replacement) . = ..() - var/obj/item/organ/internal/brain/replacement_brain = replacement + var/obj/item/organ/brain/replacement_brain = replacement if(!istype(replacement_brain)) return @@ -401,7 +394,7 @@ remove_trauma_from_traumas(trauma) replacement_brain.add_trauma_to_traumas(trauma) -/obj/item/organ/internal/brain/machine_wash(obj/machinery/washing_machine/brainwasher) +/obj/item/organ/brain/machine_wash(obj/machinery/washing_machine/brainwasher) . = ..() if (can_smoothen_out && !smooth_brain) smooth_brain = TRUE @@ -413,19 +406,19 @@ else set_organ_damage(BRAIN_DAMAGE_DEATH) -/obj/item/organ/internal/brain/zombie +/obj/item/organ/brain/zombie name = "zombie brain" desc = "This glob of green mass can't have much intelligence inside it." icon_state = "brain-x" organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE) -/obj/item/organ/internal/brain/alien +/obj/item/organ/brain/alien name = "alien brain" desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?" icon_state = "brain-x" organ_traits = list(TRAIT_CAN_STRIP) -/obj/item/organ/internal/brain/primitive //No like books and stompy metal men +/obj/item/organ/brain/primitive //No like books and stompy metal men name = "primitive brain" desc = "This juicy piece of meat has a clearly underdeveloped frontal lobe." organ_traits = list( @@ -438,7 +431,7 @@ TRAIT_BEAST_EMPATHY, // know the way of beast, calm with food ) -/obj/item/organ/internal/brain/golem +/obj/item/organ/brain/golem name = "crystalline matrix" desc = "This collection of sparkling gems somehow allows a golem to think." icon_state = "adamantine_resonator" @@ -447,32 +440,32 @@ organ_flags = ORGAN_MINERAL organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP, TRAIT_ROCK_METAMORPHIC) -/obj/item/organ/internal/brain/lustrous +/obj/item/organ/brain/lustrous name = "lustrous brain" desc = "This is your brain on bluespace dust. Not even once." icon_state = "random_fly_4" can_smoothen_out = FALSE organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP) -/obj/item/organ/internal/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() organ_owner.cure_trauma_type(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE) organ_owner.RemoveElement(/datum/element/tenacious) -/obj/item/organ/internal/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() organ_owner.gain_trauma(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE) organ_owner.AddElement(/datum/element/tenacious) -/obj/item/organ/internal/brain/felinid //A bit smaller than average +/obj/item/organ/brain/felinid //A bit smaller than average brain_size = 0.8 -/obj/item/organ/internal/brain/lizard //A bit smaller than average +/obj/item/organ/brain/lizard //A bit smaller than average name = "lizard brain" desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect it's owner to be pretty cold blooded." organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER) -/obj/item/organ/internal/brain/abductor +/obj/item/organ/brain/abductor name = "grey brain" desc = "A piece of juicy meat found in an ayy lmao's head." icon_state = "brain-x" @@ -481,20 +474,20 @@ ////////////////////////////////////TRAUMAS//////////////////////////////////////// -/obj/item/organ/internal/brain/proc/has_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE) +/obj/item/organ/brain/proc/has_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE) for(var/X in traumas) var/datum/brain_trauma/BT = X if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience)) return BT -/obj/item/organ/internal/brain/proc/get_traumas_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE) +/obj/item/organ/brain/proc/get_traumas_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE) . = list() for(var/X in traumas) var/datum/brain_trauma/BT = X if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience)) . += BT -/obj/item/organ/internal/brain/proc/can_gain_trauma(datum/brain_trauma/trauma, resilience, natural_gain = FALSE) +/obj/item/organ/brain/proc/can_gain_trauma(datum/brain_trauma/trauma, resilience, natural_gain = FALSE) if(!ispath(trauma)) trauma = trauma.type if(!initial(trauma.can_gain)) @@ -530,19 +523,19 @@ return TRUE //Proc to use when directly adding a trauma to the brain, so extra args can be given -/obj/item/organ/internal/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...) +/obj/item/organ/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...) var/list/arguments = list() if(args.len > 2) arguments = args.Copy(3) . = brain_gain_trauma(trauma, resilience, arguments) -/obj/item/organ/internal/brain/vv_edit_var(var_name, var_value) +/obj/item/organ/brain/vv_edit_var(var_name, var_value) . = ..() if(var_name == NAMEOF(src, smooth_brain)) update_appearance() //Direct trauma gaining proc. Necessary to assign a trauma to its brain. Avoid using directly. -/obj/item/organ/internal/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments) +/obj/item/organ/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments) if(!can_gain_trauma(trauma, resilience)) return FALSE @@ -572,18 +565,18 @@ /// Adds the passed trauma instance to our list of traumas and links it to our brain. /// DOES NOT handle setting up the trauma, that's done by [proc/brain_gain_trauma]! -/obj/item/organ/internal/brain/proc/add_trauma_to_traumas(datum/brain_trauma/trauma) +/obj/item/organ/brain/proc/add_trauma_to_traumas(datum/brain_trauma/trauma) trauma.brain = src traumas += trauma /// Removes the passed trauma instance to our list of traumas and links it to our brain /// DOES NOT handle removing the trauma's effects, that's done by [/datum/brain_trauma/Destroy()]! -/obj/item/organ/internal/brain/proc/remove_trauma_from_traumas(datum/brain_trauma/trauma) +/obj/item/organ/brain/proc/remove_trauma_from_traumas(datum/brain_trauma/trauma) trauma.brain = null traumas -= trauma //Add a random trauma of a certain subtype -/obj/item/organ/internal/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience, natural_gain = FALSE) +/obj/item/organ/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience, natural_gain = FALSE) var/list/datum/brain_trauma/possible_traumas = list() for(var/T in subtypesof(brain_trauma_type)) var/datum/brain_trauma/BT = T @@ -597,12 +590,12 @@ return gain_trauma(trauma_type, resilience) //Cure a random trauma of a certain resilience level -/obj/item/organ/internal/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC) +/obj/item/organ/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC) var/list/traumas = get_traumas_type(brain_trauma_type, resilience) if(LAZYLEN(traumas)) qdel(pick(traumas)) -/obj/item/organ/internal/brain/proc/cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC) +/obj/item/organ/brain/proc/cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC) var/amount_cured = 0 var/list/traumas = get_traumas_type(resilience = resilience) for(var/X in traumas) @@ -610,7 +603,7 @@ amount_cured++ return amount_cured -/obj/item/organ/internal/brain/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag = NONE) +/obj/item/organ/brain/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag = NONE) . = ..() if(!owner) return FALSE @@ -620,7 +613,7 @@ owner.clear_mood_event("brain_damage") /// This proc lets the mob's brain decide what bodypart to attack with in an unarmed strike. -/obj/item/organ/internal/brain/proc/get_attacking_limb(mob/living/carbon/human/target) +/obj/item/organ/brain/proc/get_attacking_limb(mob/living/carbon/human/target) var/obj/item/bodypart/arm/active_hand = owner.get_active_hand() if(target.body_position == LYING_DOWN && owner.usable_legs) var/obj/item/bodypart/found_bodypart = owner.get_bodypart((active_hand.held_index % 2) ? BODY_ZONE_L_LEG : BODY_ZONE_R_LEG) @@ -628,8 +621,8 @@ return active_hand /// Brains REALLY like ghosting people. we need special tricks to avoid that, namely removing the old brain with no_id_transfer -/obj/item/organ/internal/brain/replace_into(mob/living/carbon/new_owner) - var/obj/item/organ/internal/brain/old_brain = new_owner.get_organ_slot(ORGAN_SLOT_BRAIN) +/obj/item/organ/brain/replace_into(mob/living/carbon/new_owner) + var/obj/item/organ/brain/old_brain = new_owner.get_organ_slot(ORGAN_SLOT_BRAIN) old_brain.Remove(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER) qdel(old_brain) return Insert(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER | DELETE_IF_REPLACED) diff --git a/code/modules/mob/living/brain/death.dm b/code/modules/mob/living/brain/death.dm index 60487aa0c35..8166e9f8446 100644 --- a/code/modules/mob/living/brain/death.dm +++ b/code/modules/mob/living/brain/death.dm @@ -15,6 +15,6 @@ if(container) qdel(container)//Gets rid of the MMI if there is one if(loc) - if(istype(loc, /obj/item/organ/internal/brain)) + if(istype(loc, /obj/item/organ/brain)) qdel(loc)//Gets rid of the brain item ..() diff --git a/code/modules/mob/living/brain/life.dm b/code/modules/mob/living/brain/life.dm index 7ffe49951ec..5b016db7fba 100644 --- a/code/modules/mob/living/brain/life.dm +++ b/code/modules/mob/living/brain/life.dm @@ -20,10 +20,10 @@ return if(stat != DEAD) death() - var/obj/item/organ/internal/brain/BR + var/obj/item/organ/brain/BR if(container?.brain) BR = container.brain - else if(istype(loc, /obj/item/organ/internal/brain)) + else if(istype(loc, /obj/item/organ/brain)) BR = loc if(BR) BR.set_organ_damage(BRAIN_DAMAGE_DEATH) //beaten to a pulp diff --git a/code/modules/mob/living/brain/skillchip.dm b/code/modules/mob/living/brain/skillchip.dm index 2c066c7e735..4bab004c685 100644 --- a/code/modules/mob/living/brain/skillchip.dm +++ b/code/modules/mob/living/brain/skillchip.dm @@ -6,7 +6,7 @@ * Arguments: * * skillchip - The skillchip you'd like to remove. */ -/obj/item/organ/internal/brain/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE) +/obj/item/organ/brain/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE) // Check this skillchip is in the brain. if(!(skillchip in skillchips)) stack_trace("Attempted to remove skillchip [skillchip] that wasn't in [src] skillchip list.") @@ -27,7 +27,7 @@ * * skillchip - The skillchip you'd like to implant. * * force - Whether or not to force the skillchip to be implanted, ignoring any checks. */ -/obj/item/organ/internal/brain/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE) +/obj/item/organ/brain/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE) // If we're not forcing the implant, so let's do some checks. if(!force) // Slot capacity check! @@ -50,7 +50,7 @@ * Arguments: * * not_removable - Special override, whether or not to force cloned chips to be non-removable, i.e. to delete on removal. */ -/obj/item/organ/internal/brain/proc/clone_skillchip_list(not_removable = FALSE) +/obj/item/organ/brain/proc/clone_skillchip_list(not_removable = FALSE) var/list/skillchip_metadata = list() // Remove and call on_removal proc if successful. for(var/chip in skillchips) @@ -76,7 +76,7 @@ * Arguments: * * silent - Whether to give the user a chat notification with the removal flavour text. */ -/obj/item/organ/internal/brain/proc/destroy_all_skillchips(silent = TRUE) +/obj/item/organ/brain/proc/destroy_all_skillchips(silent = TRUE) if(!QDELETED(owner)) for(var/chip in skillchips) var/obj/item/skillchip/skillchip = chip @@ -86,7 +86,7 @@ /** * Returns the total maximum skillchip complexity supported by this brain. */ -/obj/item/organ/internal/brain/proc/get_max_skillchip_complexity() +/obj/item/organ/brain/proc/get_max_skillchip_complexity() if(!QDELETED(owner)) return max_skillchip_complexity + owner.skillchip_complexity_modifier @@ -95,7 +95,7 @@ /** * Returns the total current skillchip complexity used in this brain. */ -/obj/item/organ/internal/brain/proc/get_used_skillchip_complexity() +/obj/item/organ/brain/proc/get_used_skillchip_complexity() var/complexity_tally = 0 for(var/chip in skillchips) @@ -111,13 +111,13 @@ /** * Returns the total maximum skillchip slot capacity supported by this brain. */ -/obj/item/organ/internal/brain/proc/get_max_skillchip_slots() +/obj/item/organ/brain/proc/get_max_skillchip_slots() return max_skillchip_slots /** * Returns the total current skillchip slot capacity used in this brain. */ -/obj/item/organ/internal/brain/proc/get_used_skillchip_slots() +/obj/item/organ/brain/proc/get_used_skillchip_slots() var/slot_tally = 0 for(var/chip in skillchips) @@ -130,7 +130,7 @@ /** * Deactivates all chips currently in the brain. */ -/obj/item/organ/internal/brain/proc/activate_skillchip_failsafe(silent = TRUE) +/obj/item/organ/brain/proc/activate_skillchip_failsafe(silent = TRUE) if(QDELETED(owner)) return @@ -154,7 +154,7 @@ to_chat(owner, span_warning("Unusual brain biology detected during regeneration. Failsafe procedure engaged. [chip_tally] skillchips have been deactivated.")) /// Disables or re-enables any extra skillchips after skillchip limit changes. -/obj/item/organ/internal/brain/proc/update_skillchips() +/obj/item/organ/brain/proc/update_skillchips() var/limit = get_max_skillchip_complexity() var/dt = limit - get_used_skillchip_complexity() diff --git a/code/modules/mob/living/carbon/alien/adult/adult.dm b/code/modules/mob/living/carbon/alien/adult/adult.dm index c53491e0ce7..d2c41e61a12 100644 --- a/code/modules/mob/living/carbon/alien/adult/adult.dm +++ b/code/modules/mob/living/carbon/alien/adult/adult.dm @@ -37,7 +37,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list( AddElement(/datum/element/strippable, GLOB.strippable_alien_humanoid_items) /mob/living/carbon/alien/adult/create_internal_organs() - organs += new /obj/item/organ/internal/stomach/alien() + organs += new /obj/item/organ/stomach/alien() return ..() /mob/living/carbon/alien/adult/cuff_resist(obj/item/I) @@ -127,7 +127,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list( if(!can_consume(lucky_winner)) return TRUE - var/obj/item/organ/internal/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH) if(!istype(melting_pot)) visible_message(span_clown("[src] can't seem to consume [lucky_winner]!"), \ span_alien("You feel a pain in your... chest? You can't get [lucky_winner] down.")) diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm index 9e25a12f739..08bbf090aa1 100644 --- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm @@ -369,7 +369,7 @@ Doesn't work on other aliens/AI.*/ if(!iscarbon(owner)) return var/mob/living/carbon/alien/adult/alieninated_owner = owner - var/obj/item/organ/internal/stomach/alien/melting_pot = alieninated_owner.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/alien/melting_pot = alieninated_owner.get_organ_slot(ORGAN_SLOT_STOMACH) if(!melting_pot) owner.visible_message(span_clown("[src] gags, and spits up a bit of purple liquid. Ewwww."), \ span_alien("You feel a pain in your... chest? There's nothing there there's nothing there no no n-")) @@ -386,14 +386,14 @@ Doesn't work on other aliens/AI.*/ /// Gets the plasma level of this carbon's plasma vessel, or -1 if they don't have one /mob/living/carbon/proc/getPlasma() - var/obj/item/organ/internal/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel) + var/obj/item/organ/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/alien/plasmavessel) if(!vessel) return -1 return vessel.stored_plasma /// Adjusts the plasma level of the carbon's plasma vessel if they have one /mob/living/carbon/proc/adjustPlasma(amount) - var/obj/item/organ/internal/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel) + var/obj/item/organ/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/alien/plasmavessel) if(!vessel) return FALSE vessel.stored_plasma = max(vessel.stored_plasma + amount,0) diff --git a/code/modules/mob/living/carbon/alien/adult/caste/drone.dm b/code/modules/mob/living/carbon/alien/adult/caste/drone.dm index ff208baabd2..c238f1013ab 100644 --- a/code/modules/mob/living/carbon/alien/adult/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/adult/caste/drone.dm @@ -10,9 +10,9 @@ return ..() /mob/living/carbon/alien/adult/drone/create_internal_organs() - organs += new /obj/item/organ/internal/alien/plasmavessel/large - organs += new /obj/item/organ/internal/alien/resinspinner - organs += new /obj/item/organ/internal/alien/acid + organs += new /obj/item/organ/alien/plasmavessel/large + organs += new /obj/item/organ/alien/resinspinner + organs += new /obj/item/organ/alien/acid return ..() /datum/action/cooldown/alien/evolve_to_praetorian @@ -33,7 +33,7 @@ return FALSE var/mob/living/carbon/alien/adult/royal/evolver = owner - var/obj/item/organ/internal/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/alien/hivenode) // Players are Murphy's Law. We may not expect // there to ever be a living xeno with no hivenode, // but they _WILL_ make it happen. diff --git a/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm b/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm index 51d9a3bce1b..3bfbe796164 100644 --- a/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm @@ -10,7 +10,7 @@ var/pounce_speed = 2 /mob/living/carbon/alien/adult/hunter/create_internal_organs() - organs += new /obj/item/organ/internal/alien/plasmavessel/small + organs += new /obj/item/organ/alien/plasmavessel/small ..() //Hunter verbs diff --git a/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm index 8fa142a38f0..473cdfafec2 100644 --- a/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm +++ b/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm @@ -19,10 +19,10 @@ return ..() /mob/living/carbon/alien/adult/royal/praetorian/create_internal_organs() - organs += new /obj/item/organ/internal/alien/plasmavessel/large - organs += new /obj/item/organ/internal/alien/resinspinner - organs += new /obj/item/organ/internal/alien/acid - organs += new /obj/item/organ/internal/alien/neurotoxin + organs += new /obj/item/organ/alien/plasmavessel/large + organs += new /obj/item/organ/alien/resinspinner + organs += new /obj/item/organ/alien/acid + organs += new /obj/item/organ/alien/neurotoxin return ..() /datum/action/cooldown/alien/evolve_to_queen @@ -43,7 +43,7 @@ return FALSE var/mob/living/carbon/alien/adult/royal/evolver = owner - var/obj/item/organ/internal/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/alien/hivenode) if(!node || node.recent_queen_death) return FALSE diff --git a/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm index bef621905f4..2560522c405 100644 --- a/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm @@ -11,7 +11,7 @@ return ..() /mob/living/carbon/alien/adult/sentinel/create_internal_organs() - organs += new /obj/item/organ/internal/alien/plasmavessel - organs += new /obj/item/organ/internal/alien/acid - organs += new /obj/item/organ/internal/alien/neurotoxin + organs += new /obj/item/organ/alien/plasmavessel + organs += new /obj/item/organ/alien/acid + organs += new /obj/item/organ/alien/neurotoxin ..() diff --git a/code/modules/mob/living/carbon/alien/adult/death.dm b/code/modules/mob/living/carbon/alien/adult/death.dm index ce99343ea2c..d71d466089c 100644 --- a/code/modules/mob/living/carbon/alien/adult/death.dm +++ b/code/modules/mob/living/carbon/alien/adult/death.dm @@ -15,7 +15,7 @@ for(var/mob/living/carbon/C in GLOB.alive_mob_list) if(C == src) //Make sure not to proc it on ourselves. continue - var/obj/item/organ/internal/alien/hivenode/node = C.get_organ_by_type(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/node = C.get_organ_by_type(/obj/item/organ/alien/hivenode) if(istype(node)) // just in case someone would ever add a diffirent node to hivenode slot node.queen_death() diff --git a/code/modules/mob/living/carbon/alien/adult/queen.dm b/code/modules/mob/living/carbon/alien/adult/queen.dm index a925b4c5460..8cbd5571977 100644 --- a/code/modules/mob/living/carbon/alien/adult/queen.dm +++ b/code/modules/mob/living/carbon/alien/adult/queen.dm @@ -65,11 +65,11 @@ return ..() /mob/living/carbon/alien/adult/royal/queen/create_internal_organs() - organs += new /obj/item/organ/internal/alien/plasmavessel/large/queen - organs += new /obj/item/organ/internal/alien/resinspinner - organs += new /obj/item/organ/internal/alien/acid - organs += new /obj/item/organ/internal/alien/neurotoxin - organs += new /obj/item/organ/internal/alien/eggsac + organs += new /obj/item/organ/alien/plasmavessel/large/queen + organs += new /obj/item/organ/alien/resinspinner + organs += new /obj/item/organ/alien/acid + organs += new /obj/item/organ/alien/neurotoxin + organs += new /obj/item/organ/alien/eggsac return ..() //Queen verbs diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index e5da7a47665..6c24358ce17 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -53,12 +53,12 @@ CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_has_trait), src, TRAIT_ADVANCEDTOOLUSER)) /mob/living/carbon/alien/create_internal_organs() - organs += new /obj/item/organ/internal/brain/alien - organs += new /obj/item/organ/internal/alien/hivenode - organs += new /obj/item/organ/internal/tongue/alien - organs += new /obj/item/organ/internal/eyes/alien - organs += new /obj/item/organ/internal/liver/alien - organs += new /obj/item/organ/internal/ears + organs += new /obj/item/organ/brain/alien + organs += new /obj/item/organ/alien/hivenode + organs += new /obj/item/organ/tongue/alien + organs += new /obj/item/organ/eyes/alien + organs += new /obj/item/organ/liver/alien + organs += new /obj/item/organ/ears ..() /mob/living/carbon/alien/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) // beepsky won't hunt aliums @@ -100,7 +100,7 @@ Des: Gives the client of the alien an image on each infected mob. for (var/i in GLOB.mob_living_list) var/mob/living/L = i if(HAS_TRAIT(L, TRAIT_XENO_HOST)) - var/obj/item/organ/internal/body_egg/alien_embryo/A = L.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo) + var/obj/item/organ/body_egg/alien_embryo/A = L.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo) if(A) var/I = image('icons/mob/nonhuman-player/alien.dmi', loc = L, icon_state = "infected[A.stage]") client.images += I @@ -139,8 +139,8 @@ Des: Removes all infected images from the alien. mind.name = new_xeno.real_name mind.transfer_to(new_xeno) - var/obj/item/organ/internal/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH) - var/obj/item/organ/internal/stomach/alien/frying_pan = new_xeno.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/alien/frying_pan = new_xeno.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(melting_pot) && istype(frying_pan)) for (var/atom/movable/poor_sod as anything in melting_pot.stomach_contents) frying_pan.consume_thing(poor_sod) diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 9a6319c3092..4aeed5c2b9d 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -74,7 +74,7 @@ In all, this is a lot like the monkey code. /N if(!. || QDELETED(src)) return FALSE - var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) switch (severity) if (EXPLODE_DEVASTATE) gib(DROP_ALL_REMAINS) diff --git a/code/modules/mob/living/carbon/alien/alien_say.dm b/code/modules/mob/living/carbon/alien/alien_say.dm index 4cfdc265abf..29f55300d91 100644 --- a/code/modules/mob/living/carbon/alien/alien_say.dm +++ b/code/modules/mob/living/carbon/alien/alien_say.dm @@ -20,6 +20,6 @@ ..(message, shown_name, TRUE) /mob/living/carbon/hivecheck() - var/obj/item/organ/internal/alien/hivenode/N = get_organ_by_type(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/N = get_organ_by_type(/obj/item/organ/alien/hivenode) if(N && !N.recent_queen_death) //Mob has alien hive node and is not under the dead queen special effect. return TRUE diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index f4159813ed9..39915a0384d 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -40,7 +40,7 @@ return ..() /mob/living/carbon/alien/larva/create_internal_organs() - organs += new /obj/item/organ/internal/alien/plasmavessel/small/tiny + organs += new /obj/item/organ/alien/plasmavessel/small/tiny ..() //This needs to be fixed diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 52f7b8dfc47..a8de80b7058 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -14,7 +14,7 @@ if(HAS_TRAIT(src, TRAIT_GODMODE)) return if(stat != DEAD) - if(health <= -maxHealth || !get_organ_by_type(/obj/item/organ/internal/brain)) + if(health <= -maxHealth || !get_organ_by_type(/obj/item/organ/brain)) death() return if((HAS_TRAIT(src, TRAIT_KNOCKEDOUT))) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index ac9fd81cf97..7db1bb103cc 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -1,14 +1,14 @@ -/obj/item/organ/internal/alien +/obj/item/organ/alien icon_state = "acid" - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/acid = 10) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/acid = 10) -/obj/item/organ/internal/alien/plasmavessel +/obj/item/organ/alien/plasmavessel name = "plasma vessel" icon_state = "plasma" w_class = WEIGHT_CLASS_NORMAL zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_XENO_PLASMAVESSEL - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/plasma = 10) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/plasma = 10) actions_types = list( /datum/action/cooldown/alien/make_structure/plant_weeds, /datum/action/cooldown/alien/transfer, @@ -23,7 +23,7 @@ /// The rate this organ regenerates plasma at per second. var/plasma_rate = 5 -/obj/item/organ/internal/alien/plasmavessel/large +/obj/item/organ/alien/plasmavessel/large name = "large plasma vessel" icon_state = "plasma_large" w_class = WEIGHT_CLASS_BULKY @@ -31,10 +31,10 @@ max_plasma = 500 plasma_rate = 7.5 -/obj/item/organ/internal/alien/plasmavessel/large/queen +/obj/item/organ/alien/plasmavessel/large/queen plasma_rate = 10 -/obj/item/organ/internal/alien/plasmavessel/small +/obj/item/organ/alien/plasmavessel/small name = "small plasma vessel" icon_state = "plasma_small" w_class = WEIGHT_CLASS_SMALL @@ -42,14 +42,14 @@ max_plasma = 150 plasma_rate = 2.5 -/obj/item/organ/internal/alien/plasmavessel/small/tiny +/obj/item/organ/alien/plasmavessel/small/tiny name = "tiny plasma vessel" icon_state = "plasma_tiny" w_class = WEIGHT_CLASS_TINY max_plasma = 100 actions_types = list(/datum/action/cooldown/alien/transfer) -/obj/item/organ/internal/alien/plasmavessel/on_life(seconds_per_tick, times_fired) +/obj/item/organ/alien/plasmavessel/on_life(seconds_per_tick, times_fired) var/delta_time = DELTA_WORLD_TIME(SSmobs) //Instantly healing to max health in a single tick would be silly. If it takes 8 seconds to fire, then something's fucked. var/delta_time_capped = min(delta_time, 8) @@ -68,27 +68,27 @@ else owner.adjustPlasma(0.1 * plasma_rate * delta_time) -/obj/item/organ/internal/alien/plasmavessel/on_mob_insert(mob/living/carbon/organ_owner) +/obj/item/organ/alien/plasmavessel/on_mob_insert(mob/living/carbon/organ_owner) . = ..() if(isalien(organ_owner)) var/mob/living/carbon/alien/target_alien = organ_owner target_alien.updatePlasmaDisplay() RegisterSignal(organ_owner, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item)) -/obj/item/organ/internal/alien/plasmavessel/on_mob_remove(mob/living/carbon/organ_owner) +/obj/item/organ/alien/plasmavessel/on_mob_remove(mob/living/carbon/organ_owner) . = ..() if(isalien(organ_owner)) var/mob/living/carbon/alien/organ_owner_alien = organ_owner organ_owner_alien.updatePlasmaDisplay() UnregisterSignal(organ_owner, COMSIG_MOB_GET_STATUS_TAB_ITEMS) -/obj/item/organ/internal/alien/plasmavessel/proc/get_status_tab_item(mob/living/carbon/source, list/items) +/obj/item/organ/alien/plasmavessel/proc/get_status_tab_item(mob/living/carbon/source, list/items) SIGNAL_HANDLER items += "Plasma Stored: [stored_plasma]/[max_plasma]" #define QUEEN_DEATH_DEBUFF_DURATION 2400 -/obj/item/organ/internal/alien/hivenode +/obj/item/organ/alien/hivenode name = "hive node" icon_state = "hivenode" zone = BODY_ZONE_HEAD @@ -99,17 +99,17 @@ /// Indicates if the queen died recently, aliens are heavily weakened while this is active. var/recent_queen_death = FALSE -/obj/item/organ/internal/alien/hivenode/on_mob_insert(mob/living/carbon/organ_owner) +/obj/item/organ/alien/hivenode/on_mob_insert(mob/living/carbon/organ_owner) . = ..() organ_owner.faction |= ROLE_ALIEN -/obj/item/organ/internal/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE) +/obj/item/organ/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE) if(organ_owner) organ_owner.faction -= ROLE_ALIEN return ..() //When the alien queen dies, all aliens suffer a penalty as punishment for failing to protect her. -/obj/item/organ/internal/alien/hivenode/proc/queen_death() +/obj/item/organ/alien/hivenode/proc/queen_death() if(!owner || owner.stat == DEAD) return if(isalien(owner)) //Different effects for aliens than humans @@ -132,7 +132,7 @@ addtimer(CALLBACK(src, PROC_REF(clear_queen_death)), QUEEN_DEATH_DEBUFF_DURATION) -/obj/item/organ/internal/alien/hivenode/proc/clear_queen_death() +/obj/item/organ/alien/hivenode/proc/clear_queen_death() if(QDELETED(src)) //In case the node is deleted return recent_queen_death = FALSE @@ -143,7 +143,7 @@ #undef QUEEN_DEATH_DEBUFF_DURATION -/obj/item/organ/internal/alien/resinspinner +/obj/item/organ/alien/resinspinner name = "resin spinner" icon_state = "spinner-x" zone = BODY_ZONE_PRECISE_MOUTH @@ -151,7 +151,7 @@ actions_types = list(/datum/action/cooldown/alien/make_structure/resin) -/obj/item/organ/internal/alien/acid +/obj/item/organ/alien/acid name = "acid gland" icon_state = "acid" zone = BODY_ZONE_PRECISE_MOUTH @@ -159,7 +159,7 @@ actions_types = list(/datum/action/cooldown/alien/acid/corrosion) -/obj/item/organ/internal/alien/neurotoxin +/obj/item/organ/alien/neurotoxin name = "neurotoxin gland" icon_state = "neurotox" zone = BODY_ZONE_PRECISE_MOUTH @@ -167,7 +167,7 @@ actions_types = list(/datum/action/cooldown/alien/acid/neurotoxin) -/obj/item/organ/internal/alien/eggsac +/obj/item/organ/alien/eggsac name = "egg sac" icon_state = "eggsac" zone = BODY_ZONE_PRECISE_GROIN @@ -176,18 +176,18 @@ actions_types = list(/datum/action/cooldown/alien/make_structure/lay_egg) /// The stomach that lets aliens eat people/things -/obj/item/organ/internal/stomach/alien +/obj/item/organ/stomach/alien name = "alien stomach" icon_state = "stomach-x" w_class = WEIGHT_CLASS_BULKY actions_types = list(/datum/action/cooldown/alien/regurgitate) var/list/atom/movable/stomach_contents = list() -/obj/item/organ/internal/stomach/alien/Destroy() +/obj/item/organ/stomach/alien/Destroy() QDEL_LIST(stomach_contents) return ..() -/obj/item/organ/internal/stomach/alien/on_life(seconds_per_tick, times_fired) +/obj/item/organ/stomach/alien/on_life(seconds_per_tick, times_fired) . = ..() if(!owner || SSmobs.times_fired % 3 != 0) return @@ -198,7 +198,7 @@ continue thing.acid_act(75, 10) -/obj/item/organ/internal/stomach/alien/proc/consume_thing(atom/movable/thing) +/obj/item/organ/stomach/alien/proc/consume_thing(atom/movable/thing) RegisterSignal(thing, COMSIG_MOVABLE_MOVED, PROC_REF(content_moved)) RegisterSignal(thing, COMSIG_QDELETING, PROC_REF(content_deleted)) if(isliving(thing)) @@ -206,30 +206,30 @@ stomach_contents += thing thing.forceMove(owner || src) // We assert that if we have no owner, we will not be nullspaced -/obj/item/organ/internal/stomach/alien/proc/content_died(atom/movable/source) +/obj/item/organ/stomach/alien/proc/content_died(atom/movable/source) SIGNAL_HANDLER qdel(source) -/obj/item/organ/internal/stomach/alien/proc/content_deleted(atom/movable/source) +/obj/item/organ/stomach/alien/proc/content_deleted(atom/movable/source) SIGNAL_HANDLER stomach_contents -= source -/obj/item/organ/internal/stomach/alien/proc/content_moved(atom/movable/source) +/obj/item/organ/stomach/alien/proc/content_moved(atom/movable/source) SIGNAL_HANDLER if(source.loc == src || source.loc == owner) // not in us? out da list then return stomach_contents -= source UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_DEATH, COMSIG_QDELETING)) -/obj/item/organ/internal/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags) +/obj/item/organ/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags) RegisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE, PROC_REF(something_moved)) return ..() -/obj/item/organ/internal/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) +/obj/item/organ/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) UnregisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE) return ..() -/obj/item/organ/internal/stomach/alien/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) +/obj/item/organ/stomach/alien/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) . = ..() if(loc == null && owner) for(var/atom/movable/thing as anything in contents) @@ -238,12 +238,12 @@ for(var/atom/movable/thing as anything in contents) thing.forceMove(src) -/obj/item/organ/internal/stomach/alien/proc/something_moved(mob/living/source, mob/living/user, direction) +/obj/item/organ/stomach/alien/proc/something_moved(mob/living/source, mob/living/user, direction) SIGNAL_HANDLER relaymove(user, direction) return COMSIG_BLOCK_RELAYMOVE -/obj/item/organ/internal/stomach/alien/relaymove(mob/living/user, direction) +/obj/item/organ/stomach/alien/relaymove(mob/living/user, direction) if(!(user in src.stomach_contents)) return if(!prob(40)) @@ -327,7 +327,7 @@ owner.gib(DROP_ALL_REMAINS) qdel(src) -/obj/item/organ/internal/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4) +/obj/item/organ/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4) var/atom/spit_as = owner || src // Throw out the stuff in our stomach for(var/atom/movable/thing as anything in stomach_contents) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index fb90df140e6..97d4c4265de 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -1,10 +1,10 @@ // This is to replace the previous datum/disease/alien_embryo for slightly improved handling and maintainability // It functions almost identically (see code/datums/diseases/alien_embryo.dm) -/obj/item/organ/internal/body_egg/alien_embryo +/obj/item/organ/body_egg/alien_embryo name = "alien embryo" icon = 'icons/mob/nonhuman-player/alien.dmi' icon_state = "larva0_dead" - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/acid = 10) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/acid = 10) ///What stage of growth the embryo is at. Developed embryos give the host symptoms suggesting that an embryo is inside them. var/stage = 0 /// Are we bursting out of the poor sucker who's the xeno mom? @@ -12,11 +12,11 @@ /// How long does it take to advance one stage? Growth time * 5 = how long till we make a Larva! var/growth_time = 60 SECONDS -/obj/item/organ/internal/body_egg/alien_embryo/Initialize(mapload) +/obj/item/organ/body_egg/alien_embryo/Initialize(mapload) . = ..() advance_embryo_stage() -/obj/item/organ/internal/body_egg/alien_embryo/on_find(mob/living/finder) +/obj/item/organ/body_egg/alien_embryo/on_find(mob/living/finder) ..() if(stage < 5) to_chat(finder, span_notice("It's small and weak, barely the size of a foetus.")) @@ -25,7 +25,7 @@ if(prob(10)) attempt_grow(gib_on_success = FALSE) -/obj/item/organ/internal/body_egg/alien_embryo/on_life(seconds_per_tick, times_fired) +/obj/item/organ/body_egg/alien_embryo/on_life(seconds_per_tick, times_fired) . = ..() if(QDELETED(src) || QDELETED(owner)) return @@ -58,7 +58,7 @@ owner.adjustToxLoss(5 * seconds_per_tick) // Why is this [TOX]? /// Controls Xenomorph Embryo growth. If embryo is fully grown (or overgrown), stop the proc. If not, increase the stage by one and if it's not fully grown (stage 6), add a timer to do this proc again after however long the growth time variable is. -/obj/item/organ/internal/body_egg/alien_embryo/proc/advance_embryo_stage() +/obj/item/organ/body_egg/alien_embryo/proc/advance_embryo_stage() if(stage >= 6) return stage++ @@ -73,7 +73,7 @@ addtimer(CALLBACK(src, PROC_REF(advance_embryo_stage)), growth_time*slowdown) -/obj/item/organ/internal/body_egg/alien_embryo/egg_process() +/obj/item/organ/body_egg/alien_embryo/egg_process() if(stage == 6 && prob(50)) for(var/datum/surgery/operations as anything in owner.surgeries) if(operations.location != BODY_ZONE_CHEST) @@ -85,7 +85,7 @@ attempt_grow() /// Attempt to burst an alien outside of the host, getting a ghost to play as the xeno. -/obj/item/organ/internal/body_egg/alien_embryo/proc/attempt_grow(gib_on_success = TRUE) +/obj/item/organ/body_egg/alien_embryo/proc/attempt_grow(gib_on_success = TRUE) if(QDELETED(owner) || bursting) return @@ -104,7 +104,7 @@ on_poll_concluded(gib_on_success, chosen_one) /// Poll has concluded with a suitor -/obj/item/organ/internal/body_egg/alien_embryo/proc/on_poll_concluded(gib_on_success, mob/dead/observer/ghost) +/obj/item/organ/body_egg/alien_embryo/proc/on_poll_concluded(gib_on_success, mob/dead/observer/ghost) if(QDELETED(owner)) return @@ -157,7 +157,7 @@ Proc: AddInfectionImages(C) Des: Adds the infection image to all aliens for this embryo ----------------------------------------*/ -/obj/item/organ/internal/body_egg/alien_embryo/AddInfectionImages() +/obj/item/organ/body_egg/alien_embryo/AddInfectionImages() for(var/mob/living/carbon/alien/alien in GLOB.player_list) var/I = image('icons/mob/nonhuman-player/alien.dmi', loc = owner, icon_state = "infected[stage]") alien.client?.images += I @@ -166,7 +166,7 @@ Des: Adds the infection image to all aliens for this embryo Proc: RemoveInfectionImage(C) Des: Removes all images from the mob infected by this embryo ----------------------------------------*/ -/obj/item/organ/internal/body_egg/alien_embryo/RemoveInfectionImages() +/obj/item/organ/body_egg/alien_embryo/RemoveInfectionImages() for(var/mob/living/carbon/alien/alien in GLOB.player_list) for(var/image/I in alien.client?.images) var/searchfor = "infected" diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 12eafbc3568..1a278f4aaa5 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -213,8 +213,8 @@ worn_icon_state = "[base_icon_state]_impregnated" var/obj/item/bodypart/chest/LC = target.get_bodypart(BODY_ZONE_CHEST) - if((!LC || IS_ORGANIC_LIMB(LC)) && !target.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)) - new /obj/item/organ/internal/body_egg/alien_embryo(target) + if((!LC || IS_ORGANIC_LIMB(LC)) && !target.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo)) + new /obj/item/organ/body_egg/alien_embryo(target) target.log_message("was impregnated by a facehugger", LOG_GAME) target.log_message("was impregnated by a facehugger", LOG_VICTIM, log_globally = FALSE) if(target.stat != DEAD && istype(target.buckled, /obj/structure/bed/nest)) //Handles toggling the nest sustenance status effect if the user was already buckled to a nest. @@ -257,7 +257,7 @@ AddComponent(/datum/component/knockoff, knockoff_chance = 40, target_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST), slots_knockoffable = slot_flags) /obj/item/clothing/mask/facehugger/allow_attack_hand_drop(mob/living/carbon/human/user) - if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)) + if(!real || sterile || user.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo)) return ..() if(istype(user) && ishuman(loc) && stat != DEAD) if(user == loc && user.get_item_by_slot(slot_flags) == src) @@ -269,7 +269,7 @@ var/mob/living/carbon/human/wearer = loc if(!istype(wearer) || user != wearer) return - if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)) + if(!real || sterile || user.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo)) return ..() if(wearer.get_item_by_slot(slot_flags) == src && stat != DEAD) to_chat(user, span_userdanger("[src] is latched on too tight! Get help or wait for it to let go!")) @@ -281,7 +281,7 @@ return FALSE if(M.stat == DEAD) return FALSE - if(M.get_organ_by_type(/obj/item/organ/internal/alien/hivenode)) + if(M.get_organ_by_type(/obj/item/organ/alien/hivenode)) return FALSE var/mob/living/carbon/C = M if(ishuman(C) && !(C.dna.species.no_equip_flags & ITEM_SLOT_MASK)) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 157987c722e..1bec7342602 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -166,6 +166,13 @@ if(start_T && end_T) log_combat(src, thrown_thing, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") var/power_throw = 0 + var/extra_throw_range = HAS_TRAIT(src, TRAIT_THROWINGARM) ? 2 : 0 + + var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) + if(istype(potential_spine)) + power_throw += potential_spine.added_throw_speed + extra_throw_range += potential_spine.added_throw_range + if(HAS_TRAIT(src, TRAIT_HULK)) power_throw++ if(HAS_TRAIT(src, TRAIT_DWARF)) @@ -202,11 +209,6 @@ visible_message(span_danger("[src] [verb_text][plural_s(verb_text)] [thrown_thing][power_throw_text]"), \ span_danger("You [verb_text] [thrown_thing][power_throw_text]")) log_message("has thrown [thrown_thing] [power_throw_text]", LOG_ATTACK) - var/extra_throw_range = HAS_TRAIT(src, TRAIT_THROWINGARM) ? 2 : 0 - - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) - if(istype(potential_spine)) - extra_throw_range += potential_spine.added_throw_range var/drift_force = max(0.5 NEWTONS, 1 NEWTONS + power_throw) if (isitem(thrown_thing)) @@ -598,7 +600,7 @@ lighting_cutoff = initial(lighting_cutoff) lighting_color_cutoffs = list(lighting_cutoff_red, lighting_cutoff_green, lighting_cutoff_blue) - var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) if(eyes) set_invis_see(eyes.see_invisible) new_sight |= eyes.sight_flags @@ -654,7 +656,7 @@ for(var/obj/item/clothing/worn_item in get_equipped_items()) tint += worn_item.tint - var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) if(eyes) tint += eyes.tint @@ -955,7 +957,7 @@ return ..() /mob/living/carbon/can_be_revived() - if(!get_organ_by_type(/obj/item/organ/internal/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK)) + if(!get_organ_by_type(/obj/item/organ/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK)) return FALSE //NOVA EDIT ADDITION - DNR TRAIT if(HAS_TRAIT(src, TRAIT_DNR)) @@ -983,7 +985,7 @@ // Only check for a heart if they actually need a heart. Who would've thunk if (needs_heart()) - var/obj/item/organ/internal/heart = get_organ_by_type(/obj/item/organ/internal/heart) + var/obj/item/organ/heart = get_organ_by_type(/obj/item/organ/heart) if (!heart) return DEFIB_FAIL_NO_HEART @@ -991,7 +993,7 @@ if (heart.organ_flags & ORGAN_FAILING) return DEFIB_FAIL_FAILING_HEART - var/obj/item/organ/internal/brain/current_brain = get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) if (QDELETED(current_brain)) return DEFIB_FAIL_NO_BRAIN @@ -1102,7 +1104,7 @@ add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bodypart, update = TRUE, multiplicative_slowdown = final_modification) /mob/living/carbon/proc/create_internal_organs() - for(var/obj/item/organ/internal/internal_organ in organs) + for(var/obj/item/organ/internal_organ in organs) internal_organ.Insert(src) /proc/cmp_organ_slot_asc(slot_a, slot_b) @@ -1355,7 +1357,7 @@ /mob/living/carbon/proc/adjust_skillchip_complexity_modifier(delta) skillchip_complexity_modifier += delta - var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) if(!brain) return @@ -1484,7 +1486,7 @@ /// Accepts an optional timeout after which we remove the tail wagging /// Returns true if successful, false otherwise /mob/living/carbon/proc/wag_tail(timeout = INFINITY) - var/obj/item/organ/external/tail/wagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/wagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(!wagged) return FALSE return wagged.start_wag(src, timeout) @@ -1492,7 +1494,7 @@ /// Helper to cleanly stop all tail wagging /// Returns true if successful, false otherwise /mob/living/carbon/proc/unwag_tail() // can't unwag a tail - var/obj/item/organ/external/tail/unwagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/unwagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(!unwagged) return FALSE return unwagged.stop_wag(src) diff --git a/code/modules/mob/living/carbon/carbon_context.dm b/code/modules/mob/living/carbon/carbon_context.dm index 59d3a6db71a..b376ea3e113 100644 --- a/code/modules/mob/living/carbon/carbon_context.dm +++ b/code/modules/mob/living/carbon/carbon_context.dm @@ -25,7 +25,7 @@ if (body_position == STANDING_UP) if(check_zone(user.zone_selected) == BODY_ZONE_HEAD && get_bodypart(BODY_ZONE_HEAD)) context[SCREENTIP_CONTEXT_LMB] = "Headpat" - else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/external/tail))) + else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/tail))) context[SCREENTIP_CONTEXT_LMB] = "Pull tail" else context[SCREENTIP_CONTEXT_LMB] = "Hug" diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 5511df58083..8809c8c6195 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -4,7 +4,7 @@ . = ..() if(is_blind() && !is_blind_from(list(UNCONSCIOUS_TRAIT, HYPNOCHAIR_TRAIT))) return INFINITY //For all my homies that can not see in the world - var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) if(eyes) . += eyes.flash_protect else @@ -20,7 +20,7 @@ . = ..() if(HAS_TRAIT(src, TRAIT_DEAF)) return INFINITY //For all my homies that can not hear in the world - var/obj/item/organ/internal/ears/E = get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/E = get_organ_slot(ORGAN_SLOT_EARS) if(!E) return INFINITY else @@ -45,7 +45,7 @@ return null /mob/living/carbon/is_pepper_proof(check_flags = ALL) - var/obj/item/organ/internal/eyes/eyes = get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes = get_organ_by_type(/obj/item/organ/eyes) if(eyes && eyes.pepperspray_protect) return eyes if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & PEPPERPROOF)) @@ -347,12 +347,12 @@ to_chat(helper, span_warning("[src] looks visibly upset as you pat [p_them()] on the head.")) //NOVA EDIT ADDITION BEGIN - EMOTES if(HAS_TRAIT(src, TRAIT_EXCITABLE)) - var/obj/item/organ/external/tail/src_tail = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/src_tail = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(src_tail && !(src_tail.wag_flags & WAG_WAGGING)) emote("wag") //NOVA EDIT ADDITION END - else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/external/tail))) + else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/tail))) helper.visible_message(span_notice("[helper] pulls on [src]'s tail!"), \ null, span_hear("You hear a soft patter."), DEFAULT_MESSAGE_RANGE, list(helper, src)) to_chat(helper, span_notice("You pull on [src]'s tail!")) @@ -473,7 +473,7 @@ /mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25) - var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) if(!eyes) //can't flash what can't see! return @@ -524,7 +524,7 @@ SEND_SIGNAL(src, COMSIG_CARBON_SOUNDBANG, reflist) intensity = reflist[1] var/ear_safety = get_ear_protection() - var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) var/effect_amount = intensity - ear_safety if(effect_amount > 0) if(stun_pwr) @@ -566,7 +566,7 @@ /mob/living/carbon/can_hear() . = FALSE - var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) if(ears && !HAS_TRAIT(src, TRAIT_DEAF)) . = TRUE if(health <= hardcrit_threshold && !HAS_TRAIT(src, TRAIT_NOHARDCRIT)) @@ -741,7 +741,7 @@ body_parts -= part GLOB.bioscrambler_valid_parts = body_parts - var/list/organs = subtypesof(/obj/item/organ/internal) + subtypesof(/obj/item/organ/external) + var/list/organs = subtypesof(/obj/item/organ) + subtypesof(/obj/item/organ) for(var/obj/item/organ/organ_type as anything in organs) if(!is_type_in_typecache(organ_type, GLOB.bioscrambler_organs_blacklist) && !(initial(organ_type.organ_flags) & ORGAN_ROBOTIC)) continue diff --git a/code/modules/mob/living/carbon/carbon_say.dm b/code/modules/mob/living/carbon/carbon_say.dm index 3e4c29fa0e8..e1dc3d27992 100644 --- a/code/modules/mob/living/carbon/carbon_say.dm +++ b/code/modules/mob/living/carbon/carbon_say.dm @@ -7,7 +7,7 @@ return ..() /mob/living/carbon/could_speak_language(datum/language/language_path) - var/obj/item/organ/internal/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE) if(spoken_with) // the tower of babel needs to bypass the tongue language restrictions without giving omnitongue return HAS_MIND_TRAIT(src, TRAIT_TOWER_OF_BABEL) || spoken_with.could_speak_language(language_path) diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index abf7cdaabdd..bb341008773 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -34,7 +34,7 @@ var/atom/Tsec = drop_location() for(var/obj/item/organ/organ as anything in organs) - if((drop_bitflags & DROP_BRAIN) && istype(organ, /obj/item/organ/internal/brain)) + if((drop_bitflags & DROP_BRAIN) && istype(organ, /obj/item/organ/brain)) if((drop_bitflags & DROP_BODYPARTS) && (check_zone(organ.zone) != BODY_ZONE_CHEST)) // chests can't drop continue // the head will drop, so the brain should stay inside @@ -43,7 +43,7 @@ organ.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5) continue - if((drop_bitflags & DROP_ORGANS) && !istype(organ, /obj/item/organ/internal/brain)) + if((drop_bitflags & DROP_ORGANS) && !istype(organ, /obj/item/organ/brain)) if((drop_bitflags & DROP_BODYPARTS) && (check_zone(organ.zone) != BODY_ZONE_CHEST)) continue // only chest & groin organs will be ejected @@ -65,7 +65,7 @@ /mob/living/carbon/set_suicide(suicide_state) //you thought that box trick was pretty clever, didn't you? well now hardmode is on, boyo. . = ..() - var/obj/item/organ/internal/brain/userbrain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/userbrain = get_organ_slot(ORGAN_SLOT_BRAIN) if(userbrain) userbrain.suicided = suicide_state diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 1586d27a5ce..bad20ec7d16 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -51,7 +51,7 @@ if (length(status_examines)) . += status_examines - if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/internal/brain)) + if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/brain)) . += span_deadsay("It appears that [t_his] brain is missing...") var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) @@ -239,7 +239,7 @@ if(CONSCIOUS) if(HAS_TRAIT(src, TRAIT_DUMB)) . += "[t_He] [t_has] a stupid expression on [t_his] face." - var/obj/item/organ/internal/brain/brain = get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain) if(brain && isnull(ai_controller)) var/npc_message = "" if(HAS_TRAIT(brain, TRAIT_GHOSTROLE_ON_REVIVE)) @@ -381,7 +381,7 @@ var/t_his = p_their() var/t_is = p_are() //This checks to see if the body is revivable - var/obj/item/organ/brain = get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain = get_organ_by_type(/obj/item/organ/brain) if(brain && HAS_TRAIT(brain, TRAIT_GHOSTROLE_ON_REVIVE)) return span_deadsay("[t_He] [t_is] limp and unresponsive; but [t_his] soul might yet come back...") var/client_like = client || HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) @@ -583,7 +583,7 @@ . = list() var/list/cybers = list() - for(var/obj/item/organ/internal/cyberimp/cyberimp in organs) + for(var/obj/item/organ/cyberimp/cyberimp in organs) if(IS_ROBOTIC_ORGAN(cyberimp) && !(cyberimp.organ_flags & ORGAN_HIDDEN)) cybers += cyberimp.examine_title(user) if(length(cybers)) diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 76cb1e25dcc..c4e44f0c512 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -78,23 +78,23 @@ GLOBAL_LIST_EMPTY(features_by_species) ///Internal organs that are unique to this race, like a tail or other cosmetic organs. list(typepath of organ 1, typepath of organ 2 = "Round"). var/list/mutant_organs = list() ///Replaces default brain with a different organ - var/obj/item/organ/internal/brain/mutantbrain = /obj/item/organ/internal/brain + var/obj/item/organ/brain/mutantbrain = /obj/item/organ/brain ///Replaces default heart with a different organ - var/obj/item/organ/internal/heart/mutantheart = /obj/item/organ/internal/heart + var/obj/item/organ/heart/mutantheart = /obj/item/organ/heart ///Replaces default lungs with a different organ - var/obj/item/organ/internal/lungs/mutantlungs = /obj/item/organ/internal/lungs + var/obj/item/organ/lungs/mutantlungs = /obj/item/organ/lungs ///Replaces default eyes with a different organ - var/obj/item/organ/internal/eyes/mutanteyes = /obj/item/organ/internal/eyes + var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes ///Replaces default ears with a different organ - var/obj/item/organ/internal/ears/mutantears = /obj/item/organ/internal/ears + var/obj/item/organ/ears/mutantears = /obj/item/organ/ears ///Replaces default tongue with a different organ - var/obj/item/organ/internal/tongue/mutanttongue = /obj/item/organ/internal/tongue + var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue ///Replaces default liver with a different organ - var/obj/item/organ/internal/liver/mutantliver = /obj/item/organ/internal/liver + var/obj/item/organ/liver/mutantliver = /obj/item/organ/liver ///Replaces default stomach with a different organ - var/obj/item/organ/internal/stomach/mutantstomach = /obj/item/organ/internal/stomach + var/obj/item/organ/stomach/mutantstomach = /obj/item/organ/stomach ///Replaces default appendix with a different organ. - var/obj/item/organ/internal/appendix/mutantappendix = /obj/item/organ/internal/appendix + var/obj/item/organ/appendix/mutantappendix = /obj/item/organ/appendix /// Store body marking defines. See mobs.dm for bitflags //var/list/body_markings = list() // NOVA EDIT REMOVAL - We already have this defined as an assoc list @@ -326,7 +326,7 @@ GLOBAL_LIST_EMPTY(features_by_species) if(remove_existing) health_pct = (existing_organ.maxHealth - existing_organ.damage) / existing_organ.maxHealth if(slot == ORGAN_SLOT_BRAIN) - var/obj/item/organ/internal/brain/existing_brain = existing_organ + var/obj/item/organ/brain/existing_brain = existing_organ existing_brain.before_organ_replacement(new_organ) existing_brain.Remove(organ_holder, special = TRUE, movement_flags = NO_ID_TRANSFER) else @@ -485,7 +485,7 @@ GLOBAL_LIST_EMPTY(features_by_species) var/obj/item/bodypart/head/noggin = species_human.get_bodypart(BODY_ZONE_HEAD) if(noggin?.head_flags & HEAD_EYESPRITES) // eyes (missing eye sprites get handled by the head itself, but sadly we have to do this stupid shit here, for now) - var/obj/item/organ/internal/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES) if(eye_organ) eye_organ.refresh(call_update = FALSE) standing += eye_organ.generate_body_overlay(species_human) @@ -662,7 +662,7 @@ GLOBAL_LIST_EMPTY(features_by_species) if(ITEM_SLOT_EYES) if(!H.get_bodypart(BODY_ZONE_HEAD)) return FALSE - var/obj/item/organ/internal/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES) if(eyes?.no_glasses) return FALSE return equip_delay_self_check(I, H, bypass_equip_delay_self) @@ -851,7 +851,7 @@ GLOBAL_LIST_EMPTY(features_by_species) to_chat(user, span_warning("You don't want to harm [target]!")) return FALSE - var/obj/item/organ/internal/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN) var/obj/item/bodypart/attacking_bodypart if(brain) attacking_bodypart = brain.get_attacking_limb(target) @@ -1391,7 +1391,7 @@ GLOBAL_LIST_EMPTY(features_by_species) /datum/species/proc/spec_stun(mob/living/carbon/human/H,amount) if((H.movement_type & FLYING) && !H.buckled) - var/obj/item/organ/external/wings/functional/wings = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + var/obj/item/organ/wings/functional/wings = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) if(wings) wings.toggle_flight(H) wings.fly_slip(H) @@ -1563,7 +1563,7 @@ GLOBAL_LIST_EMPTY(features_by_species) return null var/static/list/food_flags = FOOD_FLAGS - var/obj/item/organ/internal/tongue/fake_tongue = mutanttongue + var/obj/item/organ/tongue/fake_tongue = mutanttongue return list( "liked_food" = bitfield_to_list(initial(fake_tongue.liked_foodtypes), food_flags), @@ -1886,7 +1886,7 @@ GLOBAL_LIST_EMPTY(features_by_species) var/list/to_add = list() var/alcohol_tolerance = initial(mutantliver.alcohol_tolerance) - var/obj/item/organ/internal/liver/base_liver = /obj/item/organ/internal/liver + var/obj/item/organ/liver/base_liver = /obj/item/organ/liver var/tolerance_difference = alcohol_tolerance - initial(base_liver.alcohol_tolerance) if (tolerance_difference != 0) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 220570faa80..672920633df 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) if(stat == DEAD) return stop_sound_channel(CHANNEL_HEARTBEAT) - var/obj/item/organ/internal/heart/human_heart = get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/human_heart = get_organ_slot(ORGAN_SLOT_HEART) human_heart?.beat = BEAT_NONE human_heart?.Stop() @@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) readout += "
[round(reagent.volume, 0.001)] units of [reagent.name]" readout += "
Stomach:" - var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH) for(var/datum/reagent/bile in belly?.reagents?.reagent_list) if(!belly.food_reagents[bile.type]) readout += "
[round(bile.volume, 0.001)] units of [bile.name]" diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index b2c316ec292..86d750436e9 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -120,7 +120,7 @@ /datum/emote/living/carbon/human/wag/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/organ/external/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) //I am so sorry my son //We bypass helpers here cause we already have the tail if(oranges_accessory.wag_flags & WAG_WAGGING) //We verified the tail exists in can_run_emote() @@ -130,14 +130,14 @@ /datum/emote/living/carbon/human/wag/select_message_type(mob/user, intentional) . = ..() - var/obj/item/organ/external/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(oranges_accessory.wag_flags & WAG_WAGGING) . = "stops wagging " + message else . = "wags " + message /datum/emote/living/carbon/human/wag/can_run_emote(mob/user, status_check, intentional, params) - var/obj/item/organ/external/tail/tail = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/tail = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(tail?.wag_flags & WAG_ABLE) return ..() return FALSE @@ -149,7 +149,7 @@ /datum/emote/living/carbon/human/wing/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/organ/external/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + var/obj/item/organ/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) if(isnull(wings)) CRASH("[type] ran on a mob that has no wings!") if(wings.wings_open) @@ -158,12 +158,12 @@ wings.open_wings() /datum/emote/living/carbon/human/wing/select_message_type(mob/user, intentional) - var/obj/item/organ/external/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + var/obj/item/organ/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) var/emote_verb = wings.wings_open ? "closes" : "opens" return "[emote_verb] [message]" /datum/emote/living/carbon/human/wing/can_run_emote(mob/user, status_check = TRUE, intentional, params) - if(!istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS), /obj/item/organ/external/wings/functional)) + if(!istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS), /obj/item/organ/wings/functional)) return FALSE return ..() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b0ba82f77c6..b0ce29cd1a4 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -572,12 +572,12 @@ to_chat(src, span_warning("you can't breathe!")) return FALSE - var/obj/item/organ/internal/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) if(isnull(human_lungs)) balloon_alert(src, "you don't have lungs!") return FALSE // NOVA EDIT ADDITION - Disable CPR for synth heatsink - if(istype(human_lungs, /obj/item/organ/internal/lungs/synth)) + if(istype(human_lungs, /obj/item/organ/lungs/synth)) balloon_alert(src, "you don't have lungs!") return FALSE // NOVA EDIT ADDITION END @@ -942,7 +942,7 @@ if(result != "Yes") return - var/obj/item/organ/internal/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN) if(isnull(target_brain)) to_chat(usr, "This mob has no brain to insert into an MMI.") @@ -995,17 +995,21 @@ var/carrydelay = 5 SECONDS //if you have latex you are faster at grabbing var/skills_space var/fitness_level = mind?.get_skill_level(/datum/skill/athletics) - 1 + var/experience_reward = 5 if(HAS_TRAIT(src, TRAIT_QUICKER_CARRY)) carrydelay -= 2 SECONDS + experience_reward *= 3 else if(HAS_TRAIT(src, TRAIT_QUICK_CARRY)) carrydelay -= 1 SECONDS + experience_reward *= 2 // can remove up to 2 seconds at legendary carrydelay -= fitness_level * (1/3) SECONDS - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) carrydelay *= potential_spine.athletics_boost_multiplier + experience_reward += experience_reward * potential_spine.athletics_boost_multiplier if(carrydelay <= 3 SECONDS) skills_space = " very quickly" @@ -1027,6 +1031,8 @@ visible_message(span_warning("[src] fails to fireman carry [target]!")) return + mind?.adjust_experience(/datum/skill/athletics, experience_reward) //Get a bit fitter every time we fireman carry successfully. Deadlift your friends for gains! + return buckle_mob(target, TRUE, TRUE, CARRIER_NEEDS_ARM) /mob/living/carbon/human/proc/piggyback(mob/living/carbon/target) @@ -1110,6 +1116,52 @@ if(mind.assigned_role.title in SSjob.name_occupations) .[mind.assigned_role.title] = minutes +/mob/living/carbon/human/proc/add_eye_color_left(color, color_priority, update_body = TRUE) + LAZYSET(eye_color_left_overrides, "[color_priority]", color) + if (update_body) + update_body() + +/mob/living/carbon/human/proc/add_eye_color_right(color, color_priority, update_body = TRUE) + LAZYSET(eye_color_right_overrides, "[color_priority]", color) + if (update_body) + update_body() + +/mob/living/carbon/human/proc/add_eye_color(color, color_priority, update_body = TRUE) + add_eye_color_left(color, color_priority, update_body = FALSE) + add_eye_color_right(color, color_priority, update_body = update_body) + +/mob/living/carbon/human/proc/remove_eye_color(color_priority, update_body = TRUE) + LAZYREMOVE(eye_color_left_overrides, "[color_priority]") + LAZYREMOVE(eye_color_right_overrides, "[color_priority]") + if (update_body) + update_body() + +/mob/living/carbon/human/proc/get_right_eye_color() + if (!LAZYLEN(eye_color_right_overrides)) + return eye_color_right + + var/eye_color = eye_color_right + var/priority + for (var/override_priority in eye_color_right_overrides) + var/new_priority = text2num(override_priority) + if (new_priority > priority) + priority = new_priority + eye_color = eye_color_right_overrides[override_priority] + return eye_color + +/mob/living/carbon/human/proc/get_left_eye_color() + if (!LAZYLEN(eye_color_left_overrides)) + return eye_color_left + + var/eye_color = eye_color_left + var/priority + for (var/override_priority in eye_color_left_overrides) + var/new_priority = text2num(override_priority) + if (new_priority > priority) + priority = new_priority + eye_color = eye_color_left_overrides[override_priority] + return eye_color + /mob/living/carbon/human/monkeybrain ai_controller = /datum/ai_controller/monkey @@ -1227,7 +1279,7 @@ race = /datum/species/snail /mob/living/carbon/human/species/vampire - race = /datum/species/vampire + race = /datum/species/human/vampire /mob/living/carbon/human/species/zombie race = /datum/species/zombie diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 2a075c6c4bc..486a1e819a1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -282,7 +282,7 @@ //200 max knockdown for EXPLODE_HEAVY //160 max knockdown for EXPLODE_LIGHT - var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) switch (severity) if (EXPLODE_DEVASTATE) if(bomb_armor < EXPLODE_GIB_THRESHOLD) //gibs the mob if their bomb armor is lower than EXPLODE_GIB_THRESHOLD @@ -391,7 +391,7 @@ //Note we both check that the user is in cardiac arrest and can actually heartattack //If they can't, they're missing their heart and this would runtime if(undergoing_cardiac_arrest() && can_heartattack() && (shock_damage * siemens_coeff >= 1) && prob(25)) - var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) if(heart.Restart() && stat == CONSCIOUS) to_chat(src, span_notice("You feel your heart beating again!")) if (!(flags & SHOCK_NO_HUMAN_ANIM)) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index c536a43aeb5..08b421b341c 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -35,11 +35,14 @@ var/facial_hair_color = COLOR_BLACK var/facial_hairstyle = "Shaved" - //Eye colour + // Base "natural" eye color var/eye_color_left = COLOR_BLACK var/eye_color_right = COLOR_BLACK /// Var used to keep track of a human mob having a heterochromatic right eye. To ensure prefs don't overwrite shit var/eye_color_heterochromatic = FALSE + // Eye color overrides assoc lists - priority key to hex color + var/list/eye_color_left_overrides + var/list/eye_color_right_overrides var/skin_tone = "caucasian1" //Skin tone diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 66962ba4dfe..d179673edbf 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -137,7 +137,7 @@ . += "[dna.species.type]" /mob/living/carbon/human/proc/get_eye_scars() - var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) if (!isnull(eyes)) return eyes.scarring diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm index 48011902581..c5e3c7a3123 100644 --- a/code/modules/mob/living/carbon/human/human_say.dm +++ b/code/modules/mob/living/carbon/human/human_say.dm @@ -22,7 +22,7 @@ return ..() /mob/living/carbon/human/get_default_say_verb() - var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) if(isnull(tongue)) if(HAS_TRAIT(src, TRAIT_SIGN_LANG)) return "signs" diff --git a/code/modules/mob/living/carbon/human/human_suicide.dm b/code/modules/mob/living/carbon/human/human_suicide.dm index 318cba1587d..e6b4bbac8e0 100644 --- a/code/modules/mob/living/carbon/human/human_suicide.dm +++ b/code/modules/mob/living/carbon/human/human_suicide.dm @@ -22,7 +22,7 @@ if(combat_mode) send_applicable_messages(HUMAN_COMBAT_MODE_SUICIDE_MESSAGE) else - var/obj/item/organ/internal/brain/userbrain = get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/userbrain = get_organ_by_type(/obj/item/organ/brain) if(userbrain?.damage >= 75) send_applicable_messages(HUMAN_BRAIN_DAMAGE_SUICIDE_MESSAGE) else diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 048f7bcfe2c..6befcb5c9fe 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -79,7 +79,7 @@ return ..() /mob/living/carbon/human/check_breath(datum/gas_mixture/breath) - var/obj/item/organ/internal/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) if(human_lungs) return human_lungs.check_breath(breath, src) diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 04df6a70588..db332b0efde 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -12,11 +12,11 @@ TRAIT_NO_UNDERWEAR, TRAIT_VIRUSIMMUNE, ) - mutanttongue = /obj/item/organ/internal/tongue/abductor + mutanttongue = /obj/item/organ/tongue/abductor mutantstomach = null mutantheart = null mutantlungs = null - mutantbrain = /obj/item/organ/internal/brain/abductor + mutantbrain = /obj/item/organ/brain/abductor changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT bodypart_overrides = list( diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 86f745bb8be..2974155515d 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -26,15 +26,15 @@ inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID meat = null - mutantbrain = /obj/item/organ/internal/brain/cybernetic - mutanttongue = /obj/item/organ/internal/tongue/robot + mutantbrain = /obj/item/organ/brain/cybernetic + mutanttongue = /obj/item/organ/tongue/robot mutantstomach = null mutantappendix = null mutantheart = null mutantliver = null mutantlungs = null - mutanteyes = /obj/item/organ/internal/eyes/robotic - mutantears = /obj/item/organ/internal/ears/cybernetic + mutanteyes = /obj/item/organ/eyes/robotic + mutantears = /obj/item/organ/ears/cybernetic species_language_holder = /datum/language_holder/synthetic changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index af0d8ade4bc..9251c6099d9 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -19,10 +19,10 @@ BODY_ZONE_CHEST = /obj/item/bodypart/chest, ) inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID - mutantbrain = /obj/item/organ/internal/brain/dullahan - mutanteyes = /obj/item/organ/internal/eyes/dullahan - mutanttongue = /obj/item/organ/internal/tongue/dullahan - mutantears = /obj/item/organ/internal/ears/dullahan + mutantbrain = /obj/item/organ/brain/dullahan + mutanteyes = /obj/item/organ/eyes/dullahan + mutanttongue = /obj/item/organ/tongue/dullahan + mutantears = /obj/item/organ/ears/dullahan mutantstomach = null mutantlungs = null skinned_type = /obj/item/stack/sheet/animalhide/human @@ -51,7 +51,7 @@ human.put_in_hands(head) // We want to give the head some boring old eyes just so it doesn't look too jank on the head sprite. - var/obj/item/organ/internal/eyes/eyes = new /obj/item/organ/internal/eyes(head) + var/obj/item/organ/eyes/eyes = new /obj/item/organ/eyes(head) eyes.eye_color_left = human.eye_color_left eyes.eye_color_right = human.eye_color_right eyes.bodypart_insert(my_head) @@ -95,7 +95,7 @@ human.reset_perspective(human) /datum/species/dullahan/proc/update_vision_perspective(mob/living/carbon/human/human) - var/obj/item/organ/internal/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES) if(eyes) human.update_tint() if(eyes.tint) @@ -106,7 +106,7 @@ prevent_perspective_change = TRUE /datum/species/dullahan/on_owner_login(mob/living/carbon/human/owner) - var/obj/item/organ/internal/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES) if(owner_first_client_connection_handled) if(!eyes.tint) owner.reset_perspective(my_head, TRUE) @@ -164,15 +164,15 @@ return to_add -/obj/item/organ/internal/brain/dullahan +/obj/item/organ/brain/dullahan decoy_override = TRUE organ_flags = ORGAN_ORGANIC //not vital -/obj/item/organ/internal/tongue/dullahan +/obj/item/organ/tongue/dullahan zone = "abstract" modifies_speech = TRUE -/obj/item/organ/internal/tongue/dullahan/handle_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/dullahan/handle_speech(datum/source, list/speech_args) if(ishuman(owner)) var/mob/living/carbon/human/human = owner if(isdullahan(human)) @@ -182,10 +182,10 @@ head.say(speech_args[SPEECH_MESSAGE], spans = speech_args[SPEECH_SPANS], sanitize = FALSE, language = speech_args[SPEECH_LANGUAGE], message_range = speech_args[SPEECH_RANGE]) speech_args[SPEECH_MESSAGE] = "" -/obj/item/organ/internal/ears/dullahan +/obj/item/organ/ears/dullahan zone = "abstract" -/obj/item/organ/internal/eyes/dullahan +/obj/item/organ/eyes/dullahan name = "head vision" desc = "An abstraction." actions_types = list(/datum/action/item_action/organ_action/dullahan) @@ -198,7 +198,7 @@ /datum/action/item_action/organ_action/dullahan/Trigger(trigger_flags) . = ..() - var/obj/item/organ/internal/eyes/dullahan/dullahan_eyes = target + var/obj/item/organ/eyes/dullahan/dullahan_eyes = target dullahan_eyes.tint = dullahan_eyes.tint ? NONE : INFINITY if(ishuman(owner)) @@ -247,7 +247,7 @@ return // It's so over detached_head.real_name = wearer.real_name detached_head.name = wearer.real_name - var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in detached_head + var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in detached_head brain.name = "[wearer.name]'s brain" /obj/item/dullahan_relay/proc/examinate_check(mob/user, atom/source) diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 4fa4db94336..1f1d7d3af47 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -2,10 +2,10 @@ name = "\improper Ethereal" id = SPECIES_ETHEREAL meat = /obj/item/food/meat/slab/human/mutant/ethereal - mutantlungs = /obj/item/organ/internal/lungs/ethereal - mutantstomach = /obj/item/organ/internal/stomach/ethereal - mutanttongue = /obj/item/organ/internal/tongue/ethereal - mutantheart = /obj/item/organ/internal/heart/ethereal + mutantlungs = /obj/item/organ/lungs/ethereal + mutantstomach = /obj/item/organ/stomach/ethereal + mutanttongue = /obj/item/organ/tongue/ethereal + mutantheart = /obj/item/organ/heart/ethereal exotic_blood = /datum/reagent/consumable/liquidelectricity //Liquid Electricity. fuck you think of something better gamer exotic_bloodtype = "LE" siemens_coeff = 0.5 //They thrive on energy @@ -60,7 +60,7 @@ ethereal_light = new_ethereal.mob_light(light_type = /obj/effect/dummy/lighting_obj/moblight/species) refresh_light_color(new_ethereal) - var/obj/item/organ/internal/heart/ethereal/ethereal_heart = new_ethereal.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/ethereal/ethereal_heart = new_ethereal.get_organ_slot(ORGAN_SLOT_HEART) ethereal_heart.ethereal_color = default_color for(var/obj/item/bodypart/limb as anything in new_ethereal.bodyparts) @@ -241,7 +241,7 @@ name = "Lustrous" id = SPECIES_ETHEREAL_LUSTROUS examine_limb_id = SPECIES_ETHEREAL - mutantbrain = /obj/item/organ/internal/brain/lustrous + mutantbrain = /obj/item/organ/brain/lustrous changesource_flags = MIRROR_BADMIN | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN inherent_traits = list( TRAIT_MUTANT_COLORS, diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 5728ef61367..090ae9447b4 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -3,12 +3,12 @@ name = "Felinid" id = SPECIES_FELINE examine_limb_id = SPECIES_HUMAN - mutantbrain = /obj/item/organ/internal/brain/felinid - mutanttongue = /obj/item/organ/internal/tongue/cat + mutantbrain = /obj/item/organ/brain/felinid + mutanttongue = /obj/item/organ/tongue/cat /* NOVA EDIT REMOVAL - CUSTOMIZATION - mutantears = /obj/item/organ/internal/ears/cat + mutantears = /obj/item/organ/ears/cat mutant_organs = list( - /obj/item/organ/external/tail/cat = "Cat", + /obj/item/organ/tail/cat = "Cat", ) */ // NOVA EDIT REMOVAL END inherent_traits = list( @@ -44,16 +44,16 @@ target_human.dna.features["ears"] = "Cat" /* NOVA EDIT CHANGE START - ORIGINAL if(target_human.dna.features["ears"] == "None") - mutantears = /obj/item/organ/internal/ears + mutantears = /obj/item/organ/ears else - var/obj/item/organ/internal/ears/cat/ears = new(FALSE, target_human.dna.features["ears"]) + var/obj/item/organ/ears/cat/ears = new(FALSE, target_human.dna.features["ears"]) ears.Insert(target_human, movement_flags = DELETE_IF_REPLACED) */ if(target_human.dna.features["ears"] == "Cat") - var/obj/item/organ/internal/ears/cat/ears = new + var/obj/item/organ/ears/cat/ears = new ears.Insert(target_human, movement_flags = DELETE_IF_REPLACED) else - mutantears = /obj/item/organ/internal/ears + mutantears = /obj/item/organ/ears // NOVA EDIT CHANGE END return ..() @@ -138,7 +138,7 @@ /proc/purrbation_toggle(mob/living/carbon/human/target_human, silent = FALSE) if(!ishuman(target_human)) return - if(!istype(target_human.get_organ_slot(ORGAN_SLOT_EARS), /obj/item/organ/internal/ears/cat)) + if(!istype(target_human.get_organ_slot(ORGAN_SLOT_EARS), /obj/item/organ/ears/cat)) purrbation_apply(target_human, silent = silent) . = TRUE else @@ -154,7 +154,7 @@ cat_species.original_felinid = FALSE else // This removes the spines if they exist - var/obj/item/organ/external/spines/current_spines = soon_to_be_felinid.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES) + var/obj/item/organ/spines/current_spines = soon_to_be_felinid.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES) if(current_spines) current_spines.Remove(soon_to_be_felinid, special = TRUE) qdel(current_spines) @@ -163,10 +163,10 @@ // Humans get converted directly to felinids, and the key is handled in on_species_gain. // Now when we get mob.dna.features[feature_key], it returns None, which is why the tail is invisible. // stored_feature_id is only set once (the first time an organ is inserted), so this should be safe. - var/obj/item/organ/internal/ears/cat/kitty_ears = new + var/obj/item/organ/ears/cat/kitty_ears = new kitty_ears.Insert(soon_to_be_felinid, special = TRUE, movement_flags = DELETE_IF_REPLACED) - if(should_visual_organ_apply_to(/obj/item/organ/external/tail/cat, soon_to_be_felinid)) //only give them a tail if they actually have sprites for it / are a compatible subspecies. - var/obj/item/organ/external/tail/cat/kitty_tail = new + if(should_visual_organ_apply_to(/obj/item/organ/tail/cat, soon_to_be_felinid)) //only give them a tail if they actually have sprites for it / are a compatible subspecies. + var/obj/item/organ/tail/cat/kitty_tail = new kitty_tail.Insert(soon_to_be_felinid, special = TRUE, movement_flags = DELETE_IF_REPLACED) if(!silent) @@ -183,24 +183,24 @@ var/datum/species/target_species = purrbated_human.dna.species // From the previous check we know they're not a felinid, therefore removing cat ears and tail is safe - var/obj/item/organ/external/tail/old_tail = purrbated_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) - if(istype(old_tail, /obj/item/organ/external/tail/cat)) + var/obj/item/organ/tail/old_tail = purrbated_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + if(istype(old_tail, /obj/item/organ/tail/cat)) old_tail.Remove(purrbated_human, special = TRUE) qdel(old_tail) // Locate does not work on assoc lists, so we do it by hand for(var/external_organ in target_species.mutant_organs) if(!should_visual_organ_apply_to(external_organ, purrbated_human)) continue - if(ispath(external_organ, /obj/item/organ/external/tail)) - var/obj/item/organ/external/tail/new_tail = new external_organ() + if(ispath(external_organ, /obj/item/organ/tail)) + var/obj/item/organ/tail/new_tail = new external_organ() new_tail.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED) // Don't forget the spines we removed earlier - else if(ispath(external_organ, /obj/item/organ/external/spines)) - var/obj/item/organ/external/spines/new_spines = new external_organ() + else if(ispath(external_organ, /obj/item/organ/spines)) + var/obj/item/organ/spines/new_spines = new external_organ() new_spines.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED) - var/obj/item/organ/internal/ears/old_ears = purrbated_human.get_organ_slot(ORGAN_SLOT_EARS) - if(istype(old_ears, /obj/item/organ/internal/ears/cat)) + var/obj/item/organ/ears/old_ears = purrbated_human.get_organ_slot(ORGAN_SLOT_EARS) + if(istype(old_ears, /obj/item/organ/ears/cat)) var/obj/item/organ/new_ears = new target_species.mutantears() new_ears.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED) if(!silent) @@ -211,7 +211,7 @@ human_for_preview.set_hairstyle("Hime Cut", update = TRUE) /* NOVA EDIT - Making the species menu icons work better - ORIGINAL: - var/obj/item/organ/internal/ears/cat/cat_ears = human_for_preview.get_organ_by_type(/obj/item/organ/internal/ears/cat) + var/obj/item/organ/ears/cat/cat_ears = human_for_preview.get_organ_by_type(/obj/item/organ/ears/cat) if (cat_ears) cat_ears.color = human_for_preview.hair_color human_for_preview.update_body() diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 0f2072b7773..11548c7b129 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -4,18 +4,18 @@ id = SPECIES_FLYPERSON inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG meat = /obj/item/food/meat/slab/human/mutant/fly - mutanteyes = /obj/item/organ/internal/eyes/fly + mutanteyes = /obj/item/organ/eyes/fly changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_language_holder = /datum/language_holder/fly payday_modifier = 1.0 - mutanttongue = /obj/item/organ/internal/tongue/fly - mutantheart = /obj/item/organ/internal/heart/fly - mutantlungs = /obj/item/organ/internal/lungs/fly - mutantliver = /obj/item/organ/internal/liver/fly - mutantstomach = /obj/item/organ/internal/stomach/fly - mutantappendix = /obj/item/organ/internal/appendix/fly - mutant_organs = list(/obj/item/organ/internal/fly, /obj/item/organ/internal/fly/groin) + mutanttongue = /obj/item/organ/tongue/fly + mutantheart = /obj/item/organ/heart/fly + mutantlungs = /obj/item/organ/lungs/fly + mutantliver = /obj/item/organ/liver/fly + mutantstomach = /obj/item/organ/stomach/fly + mutantappendix = /obj/item/organ/appendix/fly + mutant_organs = list(/obj/item/organ/fly, /obj/item/organ/fly/groin) bodypart_overrides = list( BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/fly, diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index ec34526351e..11be5877d4c 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -35,13 +35,13 @@ bodytemp_heat_damage_limit = BODYTEMP_HEAT_LAVALAND_SAFE bodytemp_cold_damage_limit = BODYTEMP_COLD_ICEBOX_SAFE - mutant_organs = list(/obj/item/organ/internal/adamantine_resonator) - mutanteyes = /obj/item/organ/internal/eyes/golem - mutantbrain = /obj/item/organ/internal/brain/golem - mutanttongue = /obj/item/organ/internal/tongue/golem - mutantstomach = /obj/item/organ/internal/stomach/golem - mutantliver = /obj/item/organ/internal/liver/golem - mutantappendix = /obj/item/organ/internal/appendix/golem + mutant_organs = list(/obj/item/organ/adamantine_resonator) + mutanteyes = /obj/item/organ/eyes/golem + mutantbrain = /obj/item/organ/brain/golem + mutanttongue = /obj/item/organ/tongue/golem + mutantstomach = /obj/item/organ/stomach/golem + mutantliver = /obj/item/organ/liver/golem + mutantappendix = /obj/item/organ/appendix/golem bodypart_overrides = list( BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/golem, BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/golem, diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 90757c9343b..47a627edf1c 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -17,9 +17,9 @@ TRAIT_TOXINLOVER, TRAIT_NOBLOOD, ) - mutanttongue = /obj/item/organ/internal/tongue/jelly - mutantlungs = /obj/item/organ/internal/lungs/slime - mutanteyes = /obj/item/organ/internal/eyes/jelly + mutanttongue = /obj/item/organ/tongue/jelly + mutantlungs = /obj/item/organ/lungs/slime + mutanteyes = /obj/item/organ/eyes/jelly mutantheart = null meat = /obj/item/food/meat/slab/human/mutant/slime exotic_blood = /datum/reagent/toxin/slimejelly @@ -178,7 +178,7 @@ plural_form = "Slimepeople" id = SPECIES_SLIMEPERSON changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT - mutanteyes = /obj/item/organ/internal/eyes + mutanteyes = /obj/item/organ/eyes var/datum/action/innate/split_body/slime_split var/list/mob/living/carbon/bodies var/datum/action/innate/swap_body/swap_body @@ -488,7 +488,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/jelly/luminescent, BODY_ZONE_CHEST = /obj/item/bodypart/chest/jelly/luminescent, ) - mutanteyes = /obj/item/organ/internal/eyes + mutanteyes = /obj/item/organ/eyes /// How strong is our glow var/glow_intensity = LUMINESCENT_DEFAULT_GLOW /// Internal dummy used to glow (very cool) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 346ecef9060..f8c1dd92bff 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -9,13 +9,13 @@ inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE mutant_bodyparts = list("body_markings" = "None", "legs" = "Normal Legs") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/lizard = "None") mutant_organs = list( - /obj/item/organ/external/horns = "None", - /obj/item/organ/external/frills = "None", - /obj/item/organ/external/snout = "Round", - /obj/item/organ/external/spines = "None", - /obj/item/organ/external/tail/lizard = "Smooth", + /obj/item/organ/horns = "None", + /obj/item/organ/frills = "None", + /obj/item/organ/snout = "Round", + /obj/item/organ/spines = "None", + /obj/item/organ/tail/lizard = "Smooth", ) - mutanttongue = /obj/item/organ/internal/tongue/lizard + mutanttongue = /obj/item/organ/tongue/lizard coldmod = 1.5 heatmod = 0.67 payday_modifier = 1.0 @@ -169,8 +169,8 @@ Lizard subspecies: ASHWALKERS name = "Ash Walker" id = SPECIES_LIZARD_ASH examine_limb_id = SPECIES_LIZARD - mutantlungs = /obj/item/organ/internal/lungs/lavaland - mutantbrain = /obj/item/organ/internal/brain/primitive + mutantlungs = /obj/item/organ/lungs/lavaland + mutantbrain = /obj/item/organ/brain/primitive inherent_traits = list( TRAIT_MUTANT_COLORS, TRAIT_VIRUSIMMUNE, @@ -211,15 +211,11 @@ Lizard subspecies: SILVER SCALED mutantlungs = null damage_modifier = 10 //very light silvery scales soften blows species_language_holder = /datum/language_holder/lizard/silver - mutanttongue = /obj/item/organ/internal/tongue/lizard/silver + mutanttongue = /obj/item/organ/tongue/lizard/silver changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN examine_limb_id = SPECIES_LIZARD ///stored mutcolor for when we turn back off of a silverscale. var/old_mutcolor - ///stored eye color for when we turn back off of a silverscale. - var/old_eye_color_left - ///See above - var/old_eye_color_right /datum/species/lizard/silverscale/get_physical_attributes() return "Silver Scales are to lizardpeople what angels are to humans. \ @@ -228,17 +224,13 @@ Lizard subspecies: SILVER SCALED /datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load) old_mutcolor = new_silverscale.dna.features["mcolor"] - old_eye_color_left = new_silverscale.eye_color_left - old_eye_color_right = new_silverscale.eye_color_right new_silverscale.dna.features["mcolor"] = "#eeeeee" - new_silverscale.eye_color_left = "#0000a0" - new_silverscale.eye_color_right = "#0000a0" + new_silverscale.add_eye_color("#0000a0", EYE_COLOR_SPECIES_PRIORITY) . = ..() new_silverscale.add_filter("silver_glint", 2, list("type" = "outline", "color" = "#ffffff63", "size" = 2)) /datum/species/lizard/silverscale/on_species_loss(mob/living/carbon/human/was_silverscale, datum/species/new_species, pref_load) was_silverscale.dna.features["mcolor"] = old_mutcolor - was_silverscale.eye_color_left = old_eye_color_left - was_silverscale.eye_color_right = old_eye_color_right + was_silverscale.remove_eye_color(EYE_COLOR_SPECIES_PRIORITY) was_silverscale.remove_filter("silver_glint") return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm index 0d332c78c58..057dffbf222 100644 --- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm +++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm @@ -4,10 +4,10 @@ name = "\improper Monkey" id = SPECIES_MONKEY mutant_organs = list( - /obj/item/organ/external/tail/monkey = "Monkey", + /obj/item/organ/tail/monkey = "Monkey", ) - mutanttongue = /obj/item/organ/internal/tongue/monkey - mutantbrain = /obj/item/organ/internal/brain/primate + mutanttongue = /obj/item/organ/tongue/monkey + mutantbrain = /obj/item/organ/brain/primate skinned_type = /obj/item/stack/sheet/animalhide/monkey meat = /obj/item/food/meat/slab/monkey knife_butcher_results = list(/obj/item/food/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1) @@ -123,7 +123,7 @@ return to_add -/obj/item/organ/internal/brain/primate //Ook Ook +/obj/item/organ/brain/primate //Ook Ook name = "Primate Brain" desc = "This wad of meat is small, but has enlaged occipital lobes for spotting bananas." organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE, TRAIT_GUN_NATURAL) // No literacy or advanced tool usage. @@ -143,7 +143,7 @@ if(!.) return - var/obj/item/organ/internal/brain/primate/monkey_brain = target + var/obj/item/organ/brain/primate/monkey_brain = target if(monkey_brain.tripping) monkey_brain.tripping = FALSE background_icon_state = "bg_default" @@ -154,21 +154,21 @@ to_chat(monkey_brain.owner, span_notice("You will now stumble while while colliding with people who are in combat mode.")) build_all_button_icons() -/obj/item/organ/internal/brain/primate/on_mob_insert(mob/living/carbon/primate) +/obj/item/organ/brain/primate/on_mob_insert(mob/living/carbon/primate) . = ..() RegisterSignal(primate, COMSIG_LIVING_MOB_BUMPED, PROC_REF(on_mob_bump)) -/obj/item/organ/internal/brain/primate/on_mob_remove(mob/living/carbon/primate) +/obj/item/organ/brain/primate/on_mob_remove(mob/living/carbon/primate) . = ..() UnregisterSignal(primate, COMSIG_LIVING_MOB_BUMPED) -/obj/item/organ/internal/brain/primate/proc/on_mob_bump(mob/source, mob/living/crossing_mob) +/obj/item/organ/brain/primate/proc/on_mob_bump(mob/source, mob/living/crossing_mob) SIGNAL_HANDLER if(!tripping || !crossing_mob.combat_mode) return crossing_mob.knockOver(owner) -/obj/item/organ/internal/brain/primate/get_attacking_limb(mob/living/carbon/human/target) +/obj/item/organ/brain/primate/get_attacking_limb(mob/living/carbon/human/target) if(!HAS_TRAIT(owner, TRAIT_ADVANCEDTOOLUSER)) return owner.get_bodypart(BODY_ZONE_HEAD) return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 5bf4d6a2426..67d9a5039dc 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -4,10 +4,10 @@ id = SPECIES_MOTH inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG mutant_bodyparts = list("moth_markings" = "None") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/moth = "None") - //mutant_organs = list(/obj/item/organ/external/wings/moth = "Plain", /obj/item/organ/external/antennae = "Plain") // NOVA EDIT REMOVAL - Fixing moths + //mutant_organs = list(/obj/item/organ/wings/moth = "Plain", /obj/item/organ/antennae = "Plain") // NOVA EDIT REMOVAL - Fixing moths meat = /obj/item/food/meat/slab/human/mutant/moth - mutanttongue = /obj/item/organ/internal/tongue/moth - mutanteyes = /obj/item/organ/internal/eyes/moth + mutanttongue = /obj/item/organ/tongue/moth + mutanteyes = /obj/item/organ/eyes/moth changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT species_cookie = /obj/item/food/muffin/moffin species_language_holder = /datum/language_holder/moth diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index 81efd0eaadd..05406351f2f 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -6,7 +6,7 @@ fixed_mut_color = "#DBBF92" - mutant_organs = list(/obj/item/organ/external/mushroom_cap = "Round") + mutant_organs = list(/obj/item/organ/mushroom_cap = "Round") inherent_traits = list( TRAIT_MUTANT_COLORS, @@ -20,8 +20,8 @@ heatmod = 1.5 - mutanttongue = /obj/item/organ/internal/tongue/mush - mutanteyes = /obj/item/organ/internal/eyes/night_vision/mushroom + mutanttongue = /obj/item/organ/tongue/mush + mutanteyes = /obj/item/organ/eyes/night_vision/mushroom mutantlungs = null species_language_holder = /datum/language_holder/mushroom @@ -61,7 +61,7 @@ return "#FF4B19" //cap color, spot color uses eye color /// A mushpersons mushroom cap organ -/obj/item/organ/external/mushroom_cap +/obj/item/organ/mushroom_cap name = "mushroom cap" desc = "These are yummie, no cap." @@ -77,10 +77,13 @@ bodypart_overlay = /datum/bodypart_overlay/mutant/mushroom_cap + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + /// Bodypart overlay for the mushroom cap organ /datum/bodypart_overlay/mutant/mushroom_cap layers = EXTERNAL_ADJACENT feature_key = "caps" + dyable = TRUE /datum/bodypart_overlay/mutant/mushroom_cap/get_global_feature_list() return SSaccessories.caps_list @@ -90,3 +93,7 @@ return FALSE return TRUE + +/datum/bodypart_overlay/mutant/mushroom_cap/override_color(obj/item/bodypart/bodypart_owner) + //The mushroom cap is red by default (can still be dyed) + return "#FF4B19" diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index dcfbc70ca6d..3215cc5d292 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -19,10 +19,10 @@ inherent_biotypes = MOB_HUMANOID|MOB_MINERAL inherent_respiration_type = RESPIRATION_PLASMA - mutantlungs = /obj/item/organ/internal/lungs/plasmaman - mutanttongue = /obj/item/organ/internal/tongue/bone/plasmaman - mutantliver = /obj/item/organ/internal/liver/bone/plasmaman - mutantstomach = /obj/item/organ/internal/stomach/bone/plasmaman + mutantlungs = /obj/item/organ/lungs/plasmaman + mutanttongue = /obj/item/organ/tongue/bone/plasmaman + mutantliver = /obj/item/organ/liver/bone/plasmaman + mutantstomach = /obj/item/organ/stomach/bone/plasmaman mutantappendix = null mutantheart = null heatmod = 1.5 diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 577e80c9124..951a00d2e66 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -8,7 +8,7 @@ TRAIT_PLANT_SAFE, ) mutant_organs = list( - // /obj/item/organ/external/pod_hair = "None", // NOVA EDIT REMOVAL - Customization (it messes up unit tests.) + // /obj/item/organ/pod_hair = "None", // NOVA EDIT REMOVAL - Customization (it messes up unit tests.) ) inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT inherent_factions = list(FACTION_PLANTS, FACTION_VINES) @@ -19,7 +19,7 @@ exotic_blood = /datum/reagent/water changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_language_holder = /datum/language_holder/plant - mutanttongue = /obj/item/organ/internal/tongue/pod + mutanttongue = /obj/item/organ/tongue/pod bodypart_overrides = list( BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/pod, BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/pod, diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 1723dbaa366..f2b7ed5466c 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -16,8 +16,8 @@ inherent_factions = list(FACTION_FAITHLESS) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC - mutantbrain = /obj/item/organ/internal/brain/shadow - mutanteyes = /obj/item/organ/internal/eyes/shadow + mutantbrain = /obj/item/organ/brain/shadow + mutanteyes = /obj/item/organ/eyes/shadow mutantheart = null mutantlungs = null @@ -89,7 +89,7 @@ return to_add -/obj/item/organ/internal/eyes/shadow +/obj/item/organ/eyes/shadow name = "burning red eyes" desc = "Even without their shadowy owner, looking at these eyes gives you a sense of dread." icon = 'icons/obj/medical/organs/shadow_organs.dmi' @@ -98,14 +98,14 @@ flash_protect = FLASH_PROTECTION_SENSITIVE /// the key to some of their powers -/obj/item/organ/internal/brain/shadow +/obj/item/organ/brain/shadow name = "shadowling tumor" desc = "Something that was once a brain, before being remolded by a shadowling. It has adapted to the dark, irreversibly." icon = 'icons/obj/medical/organs/shadow_organs.dmi' /// What status effect do we gain while in darkness? var/applied_status = /datum/status_effect/shadow_regeneration -/obj/item/organ/internal/brain/shadow/on_life(seconds_per_tick, times_fired) +/obj/item/organ/brain/shadow/on_life(seconds_per_tick, times_fired) . = ..() var/turf/owner_turf = owner.loc if(!isturf(owner_turf)) diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index ca87d845a7b..d1d2345ed75 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -25,11 +25,11 @@ TRAIT_XENO_IMMUNE, ) inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID - mutanttongue = /obj/item/organ/internal/tongue/bone - mutantstomach = /obj/item/organ/internal/stomach/bone + mutanttongue = /obj/item/organ/tongue/bone + mutantstomach = /obj/item/organ/stomach/bone mutantappendix = null mutantheart = null - mutantliver = /obj/item/organ/internal/liver/bone + mutantliver = /obj/item/organ/liver/bone mutantlungs = null //They can technically be in an ERT changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | ERT_SPAWN diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index f7a5fbdb51e..d06adf1307a 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -14,8 +14,8 @@ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP sexes = FALSE //snails are hermaphrodites - mutanteyes = /obj/item/organ/internal/eyes/snail - mutanttongue = /obj/item/organ/internal/tongue/snail + mutanteyes = /obj/item/organ/eyes/snail + mutanttongue = /obj/item/organ/tongue/snail exotic_blood = /datum/reagent/lube bodypart_overrides = list( diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 9333d598758..a12cd6876fc 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -4,7 +4,7 @@ ///maximum a vampire will drain, they will drain less if they hit their cap #define VAMP_DRAIN_AMOUNT 50 -/datum/species/vampire +/datum/species/human/vampire name = "Vampire" id = SPECIES_VAMPIRE examine_limb_id = SPECIES_HUMAN @@ -18,33 +18,33 @@ ) inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID changesource_flags = MIRROR_BADMIN | MIRROR_PRIDE | WABBAJACK | ERT_SPAWN - exotic_bloodtype = "U" + exotic_bloodtype = "V" blood_deficiency_drain_rate = BLOOD_DEFICIENCY_MODIFIER // vampires already passively lose blood, so this just makes them lose it slightly more quickly when they have blood deficiency. - mutantheart = /obj/item/organ/internal/heart/vampire - mutanttongue = /obj/item/organ/internal/tongue/vampire - mutantstomach = null - mutantlungs = null - skinned_type = /obj/item/stack/sheet/animalhide/human + mutantheart = /obj/item/organ/heart/vampire + mutanttongue = /obj/item/organ/tongue/vampire ///some starter text sent to the vampire initially, because vampires have shit to do to stay alive var/info_text = "You are a Vampire. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability." -/datum/species/vampire/check_roundstart_eligible() +/datum/species/human/vampire/check_roundstart_eligible() if(check_holidays(HALLOWEEN)) return TRUE return ..() -/datum/species/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species) +/datum/species/human/vampire/prepare_human_for_preview(mob/living/carbon/human/human) + return // Skip parent proc + +/datum/species/human/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species) . = ..() to_chat(new_vampire, "[info_text]") new_vampire.skin_tone = "albino" new_vampire.update_body(0) RegisterSignal(new_vampire, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness)) -/datum/species/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) +/datum/species/human/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() UnregisterSignal(C, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS) -/datum/species/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired) +/datum/species/human/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired) . = ..() if(istype(vampire.loc, /obj/structure/closet/crate/coffin)) var/need_mob_update = FALSE @@ -66,27 +66,27 @@ vampire.adjust_fire_stacks(3 * seconds_per_tick) vampire.ignite_mob() -/datum/species/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) +/datum/species/human/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER if(istype(attacking_item, /obj/item/nullrod/whip)) damage_mods += 2 -/datum/species/vampire/get_physical_attributes() +/datum/species/human/vampire/get_physical_attributes() return "Vampires are afflicted with the Thirst, needing to sate it by draining the blood out of another living creature. However, they do not need to breathe or eat normally. \ They will instantly turn into dust if they run out of blood or enter a holy area. However, coffins stabilize and heal them, and they can transform into bats!" -/datum/species/vampire/get_species_description() +/datum/species/human/vampire/get_species_description() return "A classy Vampire! They descend upon Space Station Thirteen Every year to spook the crew! \"Bleeg!!\"" -/datum/species/vampire/get_species_lore() +/datum/species/human/vampire/get_species_lore() return list( "Vampires are unholy beings blessed and cursed with The Thirst. \ The Thirst requires them to feast on blood to stay alive, and in return it gives them many bonuses. \ Because of this, Vampires have split into two clans, one that embraces their powers as a blessing and one that rejects it.", ) -/datum/species/vampire/create_pref_unique_perks() +/datum/species/human/vampire/create_pref_unique_perks() var/list/to_add = list() to_add += list( @@ -115,7 +115,7 @@ return to_add // Vampire blood is special, so it needs to be handled with its own entry. -/datum/species/vampire/create_pref_blood_perks() +/datum/species/human/vampire/create_pref_blood_perks() var/list/to_add = list() to_add += list(list( @@ -132,7 +132,7 @@ return to_add // There isn't a "Minor Undead" biotype, so we have to explain it in an override (see: dullahans) -/datum/species/vampire/create_pref_biotypes_perks() +/datum/species/human/vampire/create_pref_biotypes_perks() var/list/to_add = list() to_add += list(list( @@ -147,7 +147,7 @@ return to_add -/obj/item/organ/internal/tongue/vampire +/obj/item/organ/tongue/vampire name = "vampire tongue" actions_types = list(/datum/action/item_action/organ_action/vampire) color = COLOR_CRAYON_BLACK @@ -161,7 +161,7 @@ . = ..() if(iscarbon(owner)) var/mob/living/carbon/H = owner - var/obj/item/organ/internal/tongue/vampire/V = target + var/obj/item/organ/tongue/vampire/V = target if(!COOLDOWN_FINISHED(V, drain_cooldown)) to_chat(H, span_warning("You just drained blood, wait a few seconds!")) return @@ -197,19 +197,19 @@ if(!victim.blood_volume) to_chat(H, span_notice("You finish off [victim]'s blood supply.")) -/obj/item/organ/internal/heart/vampire +/obj/item/organ/heart/vampire name = "vampire heart" color = COLOR_CRAYON_BLACK -/obj/item/organ/internal/heart/vampire/on_mob_insert(mob/living/carbon/receiver) +/obj/item/organ/heart/vampire/on_mob_insert(mob/living/carbon/receiver) . = ..() RegisterSignal(receiver, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item)) -/obj/item/organ/internal/heart/vampire/on_mob_remove(mob/living/carbon/heartless) +/obj/item/organ/heart/vampire/on_mob_remove(mob/living/carbon/heartless) . = ..() UnregisterSignal(heartless, COMSIG_MOB_GET_STATUS_TAB_ITEMS) -/obj/item/organ/internal/heart/vampire/proc/get_status_tab_item(mob/living/carbon/source, list/items) +/obj/item/organ/heart/vampire/proc/get_status_tab_item(mob/living/carbon/source, list/items) SIGNAL_HANDLER items += "Blood Level: [source.blood_volume]/[BLOOD_VOLUME_MAXIMUM]" diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index e338d94e711..77d2765ba98 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -4,7 +4,7 @@ id = SPECIES_ZOMBIE sexes = FALSE meat = /obj/item/food/meat/slab/human/mutant/zombie - mutanttongue = /obj/item/organ/internal/tongue/zombie + mutanttongue = /obj/item/organ/tongue/zombie inherent_traits = list( // SHARED WITH ALL ZOMBIES TRAIT_EASILY_WOUNDED, @@ -95,8 +95,9 @@ id = SPECIES_ZOMBIE_INFECTIOUS examine_limb_id = SPECIES_ZOMBIE damage_modifier = 20 // 120 damage to KO a zombie, which kills it - mutanteyes = /obj/item/organ/internal/eyes/zombie - mutantbrain = /obj/item/organ/internal/brain/zombie + mutanteyes = /obj/item/organ/eyes/zombie + mutantbrain = /obj/item/organ/brain/zombie + mutanttongue = /obj/item/organ/tongue/zombie changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN inherent_traits = list( @@ -138,7 +139,7 @@ // Deal with the source of this zombie corruption // Infection organ needs to be handled separately from mutant_organs // because it persists through species transitions - var/obj/item/organ/internal/zombie_infection/infection = new_zombie.get_organ_slot(ORGAN_SLOT_ZOMBIE) + var/obj/item/organ/zombie_infection/infection = new_zombie.get_organ_slot(ORGAN_SLOT_ZOMBIE) if(isnull(infection)) infection = new() infection.Insert(new_zombie) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 28c9e987c46..2a08c8a7036 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -48,8 +48,8 @@ // Start of a breath chain, calls [carbon/proc/breathe()] /mob/living/carbon/handle_breathing(seconds_per_tick, times_fired) var/next_breath = 4 - var/obj/item/organ/internal/lungs/L = get_organ_slot(ORGAN_SLOT_LUNGS) - var/obj/item/organ/internal/heart/H = get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/lungs/L = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/heart/H = get_organ_slot(ORGAN_SLOT_HEART) if(L) if(L.damage > L.high_threshold) next_breath-- @@ -70,7 +70,7 @@ // Second link in a breath chain, calls [carbon/proc/check_breath()] /mob/living/carbon/proc/breathe(seconds_per_tick, times_fired) - var/obj/item/organ/internal/lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs = get_organ_slot(ORGAN_SLOT_LUNGS) var/is_on_internals = FALSE if(SEND_SIGNAL(src, COMSIG_CARBON_ATTEMPT_BREATHE, seconds_per_tick, times_fired) & COMSIG_CARBON_BLOCK_BREATH) @@ -205,7 +205,7 @@ /// Indicates if there are moles of gas in the breath. var/has_moles = breath.total_moles() != 0 - var/obj/item/organ/internal/lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs = get_organ_slot(ORGAN_SLOT_LUNGS) // Indicates if lungs can breathe without gas. var/can_breathe_vacuum = FALSE if(lungs) @@ -500,7 +500,7 @@ if(stat == DEAD) if(reagents && (reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1) || reagents.has_reagent(/datum/reagent/cryostylane))) // No organ decay if the body contains formaldehyde. return - for(var/obj/item/organ/internal/organ in organs) + for(var/obj/item/organ/organ in organs) // On-death is where organ decay is handled if(organ?.owner) // organ + owner can be null due to reagent metabolization causing organ shuffling organ.on_death(seconds_per_tick, times_fired) @@ -513,7 +513,7 @@ for(var/slot in organs_slot) // We don't use get_organ_slot here because we know we have the organ we want, since we're iterating the list containing em already // This code is hot enough that it's just not worth the time - var/obj/item/organ/internal/organ = organs_slot[slot] + var/obj/item/organ/organ = organs_slot[slot] if(organ?.owner) // This exist mostly because reagent metabolization can cause organ reshuffling organ.on_life(seconds_per_tick, times_fired) @@ -725,7 +725,7 @@ /mob/living/carbon/get_fullness() var/fullness = nutrition - var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH) if(!belly) //nothing to see here if we do not have a stomach return fullness @@ -743,7 +743,7 @@ . = ..() if(.) return - var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH) if(!belly) return FALSE return belly.reagents.has_reagent(reagent, amount, needs_metabolizing) @@ -758,7 +758,7 @@ if(isnull(has_dna())) return - var/obj/item/organ/internal/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER) if(liver) return @@ -772,7 +772,7 @@ adjustOrganLoss(pick(ORGAN_SLOT_HEART, ORGAN_SLOT_LUNGS, ORGAN_SLOT_STOMACH, ORGAN_SLOT_EYES, ORGAN_SLOT_EARS), 0.5* seconds_per_tick) /mob/living/carbon/proc/undergoing_liver_failure() - var/obj/item/organ/internal/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER) if(liver?.organ_flags & ORGAN_FAILING) return TRUE @@ -792,7 +792,7 @@ /mob/living/carbon/proc/can_heartattack() if(!needs_heart()) return FALSE - var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) if(!heart || IS_ROBOTIC_ORGAN(heart)) return FALSE return TRUE @@ -812,7 +812,7 @@ * related situations (i.e not just cardiac arrest) */ /mob/living/carbon/proc/undergoing_cardiac_arrest() - var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) if(istype(heart) && heart.is_beating()) return FALSE else if(!needs_heart()) @@ -830,7 +830,7 @@ if(status && !can_heartattack()) return FALSE - var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) if(!istype(heart)) return FALSE diff --git a/code/modules/mob/living/carbon/skillchip.dm b/code/modules/mob/living/carbon/skillchip.dm index 19009f21892..062ec616a51 100644 --- a/code/modules/mob/living/carbon/skillchip.dm +++ b/code/modules/mob/living/carbon/skillchip.dm @@ -9,7 +9,7 @@ */ /mob/living/carbon/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE) // Grab the brain. - var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) // Check for the brain. No brain = no implant. if(QDELETED(brain)) @@ -37,7 +37,7 @@ */ /mob/living/carbon/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE) // Check the target's brain, making sure the target exists and has a brain. - var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) if(QDELETED(brain)) return FALSE @@ -59,7 +59,7 @@ */ /mob/living/carbon/proc/clone_skillchip_list(not_removable = FALSE) // Check the target's brain, making sure the target exists and has a brain. - var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) if(QDELETED(brain)) return list() @@ -70,7 +70,7 @@ */ /mob/living/carbon/proc/destroy_all_skillchips(silent = FALSE) // Check the target's brain, making sure the target exists and has a brain. - var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) if(QDELETED(brain)) return FALSE diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index b1ca1733711..a7f46525334 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -16,17 +16,17 @@ /mob/living/carbon/proc/get_traumas() . = list() - var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) if(B) . = B.traumas /mob/living/carbon/proc/has_trauma_type(brain_trauma_type, resilience) - var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) if(B) . = B.has_trauma_type(brain_trauma_type, resilience) /mob/living/carbon/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...) - var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) if(B) var/list/arguments = list() if(args.len > 2) @@ -34,16 +34,16 @@ . = B.brain_gain_trauma(trauma, resilience, arguments) /mob/living/carbon/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience) - var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) if(B) . = B.gain_trauma_type(brain_trauma_type, resilience) /mob/living/carbon/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience) - var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) if(B) . = B.cure_trauma_type(brain_trauma_type, resilience) /mob/living/carbon/proc/cure_all_traumas(resilience) - var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN) if(B) . = B.cure_all_traumas(resilience) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 24462670f07..5f3313ef37f 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -310,7 +310,7 @@ if(HAS_TRAIT(src, TRAIT_GODMODE)) return FALSE if (required_respiration_type) - var/obj/item/organ/internal/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) if(isnull(affected_lungs)) if(!(mob_respiration_type & required_respiration_type)) // if the mob has no lungs, use mob_respiration_type return FALSE @@ -337,7 +337,7 @@ if(HAS_TRAIT(src, TRAIT_GODMODE)) return FALSE - var/obj/item/organ/internal/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) if(isnull(affected_lungs)) if(!(mob_respiration_type & required_respiration_type)) return FALSE diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 51ef4e42e02..0e9f6f8372e 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -139,22 +139,27 @@ /datum/emote/living/flap/run_emote(mob/user, params, type_override, intentional) . = ..() - if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - var/open = FALSE - var/obj/item/organ/external/wings/functional/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) - - // open/close functional wings - if(istype(wings)) - if(wings.wings_open) - open = TRUE - wings.close_wings() - else - wings.open_wings() - addtimer(CALLBACK(wings, open ? TYPE_PROC_REF(/obj/item/organ/external/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/external/wings/functional, close_wings)), wing_time) + if(!ishuman(user)) + return + var/mob/living/carbon/human/human_user = user + var/obj/item/organ/wings/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) - // play a flapping noise if the wing has this implemented - wings.make_flap_sound(human_user) + // play a flapping noise if the wing has this implemented + if(!istype(wings)) + return + wings.make_flap_sound(human_user) + + // open/close functional wings + var/obj/item/organ/wings/functional/wings_functional = wings + if(!istype(wings_functional)) + return + var/open = FALSE + if(wings_functional.wings_open) + open = TRUE + wings_functional.close_wings() + else + wings_functional.open_wings() + addtimer(CALLBACK(wings_functional, open ? TYPE_PROC_REF(/obj/item/organ/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/wings/functional, close_wings)), wing_time) /datum/emote/living/flap/aflap key = "aflap" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 1fa2e11ac64..f6acc4e8add 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -66,7 +66,7 @@ // multiplier for the damage taken from falling var/damage_softening_multiplier = 1 - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) damage_softening_multiplier *= potential_spine.athletics_boost_multiplier @@ -78,7 +78,7 @@ // If you are incapped, you probably can't brace yourself var/can_help_themselves = !INCAPACITATED_IGNORING(src, INCAPABLE_RESTRAINTS) if(levels <= 1 && can_help_themselves) - var/obj/item/organ/external/wings/gliders = get_organ_by_type(/obj/item/organ/external/wings) + var/obj/item/organ/wings/gliders = get_organ_by_type(/obj/item/organ/wings) if(HAS_TRAIT(src, TRAIT_FREERUNNING) || gliders?.can_soften_fall()) // the power of parkour or wings allows falling short distances unscathed var/graceful_landing = HAS_TRAIT(src, TRAIT_CATLIKE_GRACE) @@ -726,7 +726,7 @@ var/get_up_time = 1 SECONDS - var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) + var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE) if(istype(potential_spine)) get_up_time *= potential_spine.athletics_boost_multiplier diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 119825d02cd..36eeb7d3efe 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -675,7 +675,7 @@ /** Handles exposing a mob to reagents. * - * If the methods include INGEST the mob tastes the reagents. + * If the methods include INGEST or INHALE, the mob tastes the reagents. * If the methods include VAPOR it incorporates permiability protection. */ /mob/living/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE) @@ -683,8 +683,8 @@ if(. & COMPONENT_NO_EXPOSE_REAGENTS) return - if(methods & INGEST) - taste(source) + if(methods & (INGEST | INHALE)) + taste_list(reagents) var/touch_protection = (methods & VAPOR) ? getarmor(null, BIO) * 0.01 : 0 SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_MOB, src, reagents, methods, volume_modifier, show_message, touch_protection) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 110c502ba45..323f9a688f5 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -456,7 +456,7 @@ if(hack_software) new/obj/item/malf_upgrade(get_turf(src)) the_mmi = mmi_type - the_mmi.brain = new /obj/item/organ/internal/brain(the_mmi) + the_mmi.brain = new /obj/item/organ/brain(the_mmi) the_mmi.brain.organ_flags |= ORGAN_FROZEN the_mmi.brain.name = "[real_name]'s brain" the_mmi.name = "[initial(the_mmi.name)]: [real_name]" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ac9ca46d9b9..d33e7e7bcc1 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -64,7 +64,7 @@ //MMI stuff. Held togheter by magic. ~Miauw if(!mmi?.brainmob) mmi = new (src) - mmi.brain = new /obj/item/organ/internal/brain(mmi) + mmi.brain = new /obj/item/organ/brain(mmi) mmi.brain.organ_flags |= ORGAN_FROZEN mmi.brain.name = "[real_name]'s brain" mmi.name = "[initial(mmi.name)]: [real_name]" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index c7171b3c555..f1e34612713 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -153,7 +153,7 @@ Difficulty: Hard */ /mob/living/simple_animal/hostile/megafauna/bubblegum/attackby(obj/item/W, mob/user, params) . = ..() - if(istype(W, /obj/item/organ/internal/tongue)) + if(istype(W, /obj/item/organ/tongue)) user.client?.give_award(/datum/award/achievement/jobs/frenching, user) /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index b40a793f0fc..1cf118d5876 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -274,8 +274,8 @@ While using this makes the system rely on OnFire, it still gives options for tim /obj/structure/elite_tumor/item_interaction(mob/living/user, obj/item/attacking_item, list/modifiers) . = NONE - if(istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core) && activity == TUMOR_INACTIVE && !boosted) - var/obj/item/organ/internal/monster_core/regenerative_core/core = attacking_item + if(istype(attacking_item, /obj/item/organ/monster_core/regenerative_core) && activity == TUMOR_INACTIVE && !boosted) + var/obj/item/organ/monster_core/regenerative_core/core = attacking_item visible_message(span_boldwarning("As [user] drops the core into [src], [src] appears to swell.")) icon_state = "advanced_tumor" boosted = TRUE diff --git a/code/modules/mob/living/taste.dm b/code/modules/mob/living/taste.dm index 2b88984bf41..5da5781b2ed 100644 --- a/code/modules/mob/living/taste.dm +++ b/code/modules/mob/living/taste.dm @@ -14,7 +14,7 @@ return DEFAULT_TASTE_SENSITIVITY /mob/living/carbon/get_taste_sensitivity() - var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) if(istype(tongue)) . = tongue.taste_sensitivity else @@ -22,28 +22,65 @@ . = DEFAULT_TASTE_SENSITIVITY /** - * Non destructively tastes a reagent container + * Non-destructively tastes a reagent container * and gives feedback to the user. + * Arguments: + * * datum/reagents/from - Reagent holder to taste from. **/ -/mob/living/proc/taste(datum/reagents/from) - if(HAS_TRAIT(src, TRAIT_AGEUSIA)) +/mob/living/proc/taste_container(datum/reagents/from) + if(check_tasting_blocks()) return - if(last_taste_time + 50 < world.time) - var/taste_sensitivity = get_taste_sensitivity() - var/text_output = from.generate_taste_message(src, taste_sensitivity) - // We dont want to spam the same message over and over again at the - // person. Give it a bit of a buffer. - if(get_timed_status_effect_duration(/datum/status_effect/hallucination) > 100 SECONDS && prob(25)) - text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\ + var/taste_sensitivity = get_taste_sensitivity() + var/text_output = from.generate_taste_message(src, taste_sensitivity) + send_taste_message(text_output) + +/** + * Non-destructively tastes a reagent list + * and gives feedback to the user. + * Arguments: + * * list/from - List of reagents to taste from. + **/ +/mob/living/proc/taste_list(list/from) + if(check_tasting_blocks()) + return + + var/taste_sensitivity = get_taste_sensitivity() + var/text_output = generate_reagents_taste_message(from, src, taste_sensitivity) + send_taste_message(text_output) + +/** + * Check for anything blocking/overriding our tasting. + * Returns TRUE on a block, FALSE if not. + **/ +/mob/living/proc/check_tasting_blocks() + if(HAS_TRAIT(src, TRAIT_AGEUSIA)) + return TRUE + if(last_taste_time + 50 >= world.time) + return TRUE + + // Sometimes, try send a replacement message if we're hallucinating + if(get_timed_status_effect_duration(/datum/status_effect/hallucination) > 100 SECONDS && prob(25)) + var/text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\ "defeat","pain","bliss","revenge","poison","time","space","death","life","truth","lies","justice","memory",\ "regrets","your soul","suffering","music","noise","blood","hunger","the american way") - if(text_output != last_taste_text || last_taste_time + 100 < world.time) - to_chat(src, span_notice("You can taste [text_output].")) - // "something indescribable" -> too many tastes, not enough flavor. + send_taste_message(text_output) + return TRUE + + return FALSE + +/** + * Attempt to send a taste message using given tastes text. + **/ +/mob/living/proc/send_taste_message(tastes_text) + if(tastes_text == last_taste_text && last_taste_time + 100 >= world.time) + return + + to_chat(src, span_notice("You can taste [tastes_text].")) + // "something indescribable" -> too many tastes, not enough flavor. - last_taste_time = world.time - last_taste_text = text_output + last_taste_time = world.time + last_taste_text = tastes_text /** * Gets food flags that this mob likes @@ -57,7 +94,7 @@ // Handled in here since the brain trauma can't modify taste directly (/datum/brain_trauma/severe/flesh_desire) if(HAS_TRAIT(src, TRAIT_FLESH_DESIRE)) return GORE | MEAT - var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) . = tongue.liked_foodtypes if(HAS_TRAIT(src, TRAIT_VEGETARIAN)) . &= ~MEAT @@ -73,7 +110,7 @@ /mob/living/carbon/get_disliked_foodtypes() if(HAS_TRAIT(src, TRAIT_AGEUSIA)) return NONE - var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) . = tongue.disliked_foodtypes if(HAS_TRAIT(src, TRAIT_VEGETARIAN)) . |= MEAT @@ -86,7 +123,7 @@ return TOXIC /mob/living/carbon/get_toxic_foodtypes() - var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return ..() if(HAS_TRAIT(src, TRAIT_FLESH_DESIRE)) @@ -140,7 +177,7 @@ return food_taste_reaction /mob/living/carbon/get_food_taste_reaction(obj/item/food, foodtypes) - var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) // No tongue, no tastin' if(!tongue?.sense_of_taste || HAS_TRAIT(src, TRAIT_AGEUSIA)) // i hate that i have to do this, but we want to ensure toxic food is still BAD diff --git a/code/modules/mob_spawn/corpses/mining_corpses.dm b/code/modules/mob_spawn/corpses/mining_corpses.dm index 3963cefcb49..e9a4a9b0504 100644 --- a/code/modules/mob_spawn/corpses/mining_corpses.dm +++ b/code/modules/mob_spawn/corpses/mining_corpses.dm @@ -26,7 +26,7 @@ /obj/effect/mob_spawn/corpse/human/legioninfested/special(mob/living/carbon/human/spawned_human) . = ..() - var/obj/item/organ/internal/legion_tumour/cancer = new() + var/obj/item/organ/legion_tumour/cancer = new() cancer.Insert(spawned_human, special = TRUE, movement_flags = DELETE_IF_REPLACED) /// Returns the outfit worn by our corpse diff --git a/code/modules/mob_spawn/ghost_roles/golem_roles.dm b/code/modules/mob_spawn/ghost_roles/golem_roles.dm index 5fc643bffa6..af7cde7320d 100644 --- a/code/modules/mob_spawn/ghost_roles/golem_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/golem_roles.dm @@ -78,7 +78,7 @@ if(!ishuman(new_spawn)) return var/mob/living/carbon/human/new_golem = new_spawn - var/obj/item/organ/internal/vocal_cords/adamantine/free_golem_radio = new() + var/obj/item/organ/vocal_cords/adamantine/free_golem_radio = new() free_golem_radio.Insert(new_golem) // Subtype which follows orders diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index 019339584af..3081c64c82a 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -26,7 +26,7 @@ return var/parts_to_check = parts - part if(part.loc == src) - if(!deploy(user, part) || (active && !delayed_seal_part(part))) + if(!deploy(user, part)) return SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user) for(var/obj/item/checking_part as anything in parts_to_check) @@ -35,7 +35,7 @@ choose_deploy(user) break else - if((active && !delayed_seal_part(part, silent = TRUE)) || !retract(user, part)) + if(!retract(user, part)) return SEND_SIGNAL(src, COMSIG_MOD_RETRACTED, user) for(var/obj/item/checking_part as anything in parts_to_check) @@ -64,12 +64,7 @@ if(deploy && part.loc == src) if(!deploy(null, part)) continue - if(active && !delayed_seal_part(part)) - retract(null, part) - return else if(!deploy && part.loc != src) - if(active && !delayed_seal_part(part)) - return retract(null, part) if(deploy) SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user) @@ -78,7 +73,7 @@ return TRUE /// Deploys a part of the suit onto the user. -/obj/item/mod/control/proc/deploy(mob/user, obj/item/part) +/obj/item/mod/control/proc/deploy(mob/user, obj/item/part, instant = FALSE) var/datum/mod_part/part_datum = get_part_datum(part) if(!wearer) playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) @@ -86,7 +81,7 @@ if(part.loc != src) if(!user) return FALSE - balloon_alert(user, "[part.name] already deployed!") + balloon_alert(user, "already deployed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) if(part_datum.can_overslot) var/obj/item/overslot = wearer.get_item_by_slot(part.slot_flags) @@ -97,14 +92,21 @@ if(wearer.equip_to_slot_if_possible(part, part.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) ADD_TRAIT(part, TRAIT_NODROP, MOD_TRAIT) wearer.update_clothing(slot_flags) - if(!user) + SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part_datum) + if(user) + wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."), + span_notice("[part] deploy[part.p_s()] with a mechanical hiss."), + span_hear("You hear a mechanical hiss.")) + playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + if(!active || part_datum.sealed) return TRUE - wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."), - span_notice("[part] deploy[part.p_s()] with a mechanical hiss."), - span_hear("You hear a mechanical hiss.")) - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part) - return TRUE + if(instant) + seal_part(part, is_sealed = TRUE) + return TRUE + else if(delayed_seal_part(part)) + return TRUE + balloon_alert(user, "can't seal, retracting!") + retract(user, part, instant = TRUE) else if(part_datum.overslotting) var/obj/item/overslot = part_datum.overslotting @@ -117,14 +119,21 @@ return FALSE /// Retract a part of the suit from the user. -/obj/item/mod/control/proc/retract(mob/user, obj/item/part) +/obj/item/mod/control/proc/retract(mob/user, obj/item/part, instant = FALSE) var/datum/mod_part/part_datum = get_part_datum(part) if(part.loc == src) if(!user) return FALSE - balloon_alert(user, "[part.name] already retracted!") + balloon_alert(user, "already retracted!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE + if(active && part_datum.sealed) + if(instant) + seal_part(part, is_sealed = FALSE) + else if(!delayed_seal_part(part)) + balloon_alert(user, "can't unseal!") + playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE REMOVE_TRAIT(part, TRAIT_NODROP, MOD_TRAIT) wearer.transferItemToLoc(part, src, force = TRUE) if(part_datum.overslotting) @@ -132,7 +141,7 @@ if(!QDELING(wearer) && !wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) wearer.dropItemToGround(overslot, force = TRUE, silent = TRUE) wearer.update_clothing(slot_flags) - SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part) + SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part_datum) if(!user) return TRUE wearer.visible_message(span_notice("[wearer]'s [part.name] retract[part.p_s()] back into [src] with a mechanical hiss."), @@ -145,7 +154,7 @@ /obj/item/mod/control/proc/toggle_activate(mob/user, force_deactivate = FALSE) if(!wearer) if(!force_deactivate) - balloon_alert(user, "equip suit first!") + balloon_alert(user, "not equipped!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(!force_deactivate && (SEND_SIGNAL(src, COMSIG_MOD_ACTIVATE, user) & MOD_CANCEL_ACTIVATE)) @@ -156,16 +165,16 @@ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(!get_charge() && !force_deactivate) - balloon_alert(user, "suit not powered!") + balloon_alert(user, "no power source!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(open && !force_deactivate) - balloon_alert(user, "close the suit panel!") + balloon_alert(user, "panel open!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(activating) if(!force_deactivate) - balloon_alert(user, "suit already [active ? "shutting down" : "starting up"]!") + balloon_alert(user, "already [active ? "shutting down" : "starting up"]!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE for(var/obj/item/mod/module/module as anything in modules) @@ -221,13 +230,12 @@ SEND_SIGNAL(src, COMSIG_MOD_TOGGLED, user) return TRUE -/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part, silent = FALSE) +/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part) . = FALSE var/datum/mod_part/part_datum = get_part_datum(part) if(do_after(wearer, activation_step_time, wearer, MOD_ACTIVATION_STEP_FLAGS, extra_checks = CALLBACK(src, PROC_REF(get_wearer)), hidden = TRUE)) - if(!silent) - to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message].")) - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message].")) + playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) seal_part(part, is_sealed = !part_datum.sealed) return TRUE @@ -262,6 +270,7 @@ wearer.update_obscured_slots(part.visor_flags_inv) if((part.clothing_flags & (MASKINTERNALS|HEADINTERNALS)) && wearer.invalid_internals()) wearer.cutoff_internals() + SEND_SIGNAL(src, COMSIG_MOD_PART_SEALED, part_datum) if(is_sealed) if (!active) return @@ -308,12 +317,8 @@ /// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits. /obj/item/mod/control/proc/quick_activation() - for(var/obj/item/part as anything in get_parts()) - deploy(null, part) - for(var/obj/item/part as anything in get_parts()) - if(part.loc == src) - continue - seal_part(part, is_sealed = TRUE) control_activation(is_on = TRUE) + for(var/obj/item/part as anything in get_parts()) + deploy(null, part, instant = TRUE) #undef MOD_ACTIVATION_STEP_FLAGS diff --git a/code/modules/mod/mod_ai.dm b/code/modules/mod/mod_ai.dm index c268cc02ff3..e209b8ef10a 100644 --- a/code/modules/mod/mod_ai.dm +++ b/code/modules/mod/mod_ai.dm @@ -7,19 +7,19 @@ return // NOVA EDIT END if(!open) //mod must be open - balloon_alert(user, "suit must be open to transfer!") + balloon_alert(user, "panel closed!") return switch(interaction) if(AI_TRANS_TO_CARD) if(!ai_assistant) - balloon_alert(user, "no ai in suit!") + balloon_alert(user, "no ai in unit!") return balloon_alert(user, "transferring to card...") if(!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return if(!ai_assistant) - balloon_alert(user, "no ai in suit!") + balloon_alert(user, "no ai in unit!") return balloon_alert(user, "ai transferred to card") ai_exit_mod(card) @@ -37,13 +37,13 @@ if(intAI.stat || !intAI.client) balloon_alert(user, "ai unresponsive!") return - balloon_alert(user, "transferring to suit...") + balloon_alert(user, "transferring to unit...") if(!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return if(ai_assistant) return - balloon_alert(user, "ai transferred to suit") + balloon_alert(user, "ai transferred to unit") ai_enter_mod(intAI) card.AI = null @@ -78,14 +78,14 @@ if (isnull(card.pai?.mind)) balloon_alert(user, "pAI unresponsive!") return FALSE - balloon_alert(user, "transferring to suit...") + balloon_alert(user, "transferring to unit...") if (!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return FALSE if (!user.transferItemToLoc(card, src)) balloon_alert(user, "transfer failed!") return FALSE - balloon_alert(user, "pAI transferred to suit") + balloon_alert(user, "pAI transferred to unit") var/mob/living/silicon/pai/pai_assistant = card.pai pai_assistant.can_transmit = TRUE pai_assistant.can_receive = TRUE @@ -107,14 +107,14 @@ return FALSE if (!forced) if (!open) - balloon_alert(user, "suit panel closed!") + balloon_alert(user, "panel closed!") return FALSE balloon_alert(user, "uninstalling card...") if (!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return FALSE - balloon_alert(user, "pAI removed from suit") + balloon_alert(user, "pAI removed") var/mob/living/silicon/pai/pai_helper = ai_assistant //pai_helper.can_holo = TRUE //NOVA EDIT REMOVAL - pAI in modsuits can Holoform pai_helper.card.forceMove(get_turf(src)) @@ -123,7 +123,7 @@ /// Called when a new ai assistant is inserted /obj/item/mod/control/proc/on_gained_assistant(mob/living/silicon/new_helper) ai_assistant = new_helper - balloon_alert(new_helper, "transferred to a suit") + balloon_alert(new_helper, "transferred to a mod unit") for(var/datum/action/action as anything in actions) action.Grant(new_helper) @@ -142,7 +142,10 @@ #define AI_FALL_TIME (1 SECONDS) /obj/item/mod/control/relaymove(mob/user, direction) - if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE)) + if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE)) + return FALSE + var/datum/mod_part/legs_to_move = get_part_datum_from_slot(ITEM_SLOT_FEET) + if(wearer && (!legs_to_move || !legs_to_move.sealed)) return FALSE // NOVA EDIT START - pAIs in MODsuits with a bit more functionalities if(active && !can_pai_move_suit && ispAI(ai_assistant)) @@ -159,7 +162,7 @@ if(ismovable(wearer?.loc)) return wearer.loc.relaymove(wearer, direction) else if(wearer) - ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT) + ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src)) addtimer(CALLBACK(src, PROC_REF(ai_fall)), AI_FALL_TIME, TIMER_UNIQUE | TIMER_OVERRIDE) var/atom/movable/mover = wearer || src return mover.try_step_multiz(direction) @@ -172,7 +175,7 @@ /obj/item/mod/control/proc/ai_fall() if(!wearer) return - REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT) + REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src)) /obj/item/mod/ai_minicard name = "AI mini-card" diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm index 16ce70df945..3581c04e606 100644 --- a/code/modules/mod/mod_construction.dm +++ b/code/modules/mod/mod_construction.dm @@ -162,7 +162,7 @@ if(!istype(part, /obj/item/mod/core)) return if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "core stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "core inserted") @@ -181,7 +181,7 @@ if(SCREWED_CORE_STEP) if(istype(part, /obj/item/mod/construction/helmet)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "helmet stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "helmet added") @@ -194,7 +194,7 @@ if(HELMET_STEP) if(istype(part, /obj/item/mod/construction/chestplate)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "chestplate stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "chestplate added") @@ -209,7 +209,7 @@ if(CHESTPLATE_STEP) if(istype(part, /obj/item/mod/construction/gauntlets)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "gauntlets stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "gauntlets added") @@ -224,10 +224,10 @@ if(GAUNTLETS_STEP) if(istype(part, /obj/item/mod/construction/boots)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "boots added") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) - balloon_alert(user, "fit [part.name]") + balloon_alert(user, "boots added") boots = part step = BOOTS_STEP else if(part.tool_behaviour == TOOL_CROWBAR) //Deconstruct @@ -260,13 +260,14 @@ if(istype(part, /obj/item/mod/construction/plating)) //Construct var/obj/item/mod/construction/plating/external_plating = part if(!user.transferItemToLoc(part, src)) + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) var/obj/item/mod = new /obj/item/mod/control(drop_location(), external_plating.theme, null, core) core = null qdel(src) user.put_in_hands(mod) - mod.balloon_alert(user, "suit finished") + mod.balloon_alert(user, "unit finished") else if(part.tool_behaviour == TOOL_SCREWDRIVER) //Construct if(part.use_tool(src, user, 0, volume=30)) balloon_alert(user, "assembly unscrewed") diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 3bf7d68c3be..132fae260ac 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -98,7 +98,6 @@ theme.set_up_parts(src, new_skin) for(var/obj/item/part as anything in get_parts()) RegisterSignal(part, COMSIG_ATOM_DESTRUCTION, PROC_REF(on_part_destruction)) - RegisterSignal(part, COMSIG_QDELETING, PROC_REF(on_part_deletion)) set_wires(new /datum/wires/mod(src)) if(length(req_access)) locked = TRUE @@ -119,14 +118,19 @@ QDEL_NULL(core) QDEL_NULL(mod_link) for(var/datum/mod_part/part_datum as anything in get_part_datums(all = TRUE)) + var/obj/item/part_item = part_datum.part_item part_datum.part_item = null part_datum.overslotting = null + mod_parts -= part_datum + if(!QDELING(part_item)) + qdel(part_item) return ..() /obj/item/mod/control/atom_destruction(damage_flag) + var/atom/visible_atom = wearer || src if(wearer) - wearer.visible_message(span_danger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE) clean_up() + visible_atom.visible_message(span_bolddanger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE) for(var/obj/item/mod/module/module as anything in modules) uninstall(module) if(ai_assistant) @@ -221,12 +225,12 @@ if(user != wearer) return ..() if(active) - balloon_alert(wearer, "deactivate the suit first!") + balloon_alert(wearer, "unit active!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return for(var/obj/item/part as anything in get_parts()) if(part.loc != src) - balloon_alert(user, "retract parts first!") + balloon_alert(user, "parts extended!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return FALSE @@ -234,12 +238,12 @@ if(user != wearer || !istype(over_object, /atom/movable/screen/inventory/hand)) return if(active) - balloon_alert(wearer, "deactivate the suit first!") + balloon_alert(wearer, "unit active!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return for(var/obj/item/part as anything in get_parts()) if(part.loc != src) - balloon_alert(wearer, "retract parts first!") + balloon_alert(wearer, "parts extended!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return if(!wearer.incapacitated) @@ -267,14 +271,15 @@ /obj/item/mod/control/screwdriver_act(mob/living/user, obj/item/screwdriver) if(active || activating || ai_controller) - balloon_alert(user, "deactivate suit first!") + balloon_alert(user, "unit active!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING balloon_alert(user, "[open ? "closing" : "opening"] cover...") screwdriver.play_tool_sound(src, 100) if(screwdriver.use_tool(src, user, 1 SECONDS)) if(active || activating) - balloon_alert(user, "deactivate suit first!") + balloon_alert(user, "unit active!") + return ITEM_INTERACT_SUCCESS screwdriver.play_tool_sound(src, 100) balloon_alert(user, "cover [open ? "closed" : "opened"]") open = !open @@ -284,7 +289,7 @@ /obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING if(!allowed(user)) @@ -316,14 +321,14 @@ /obj/item/mod/control/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(istype(tool, /obj/item/pai_card)) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") return NONE // shoves the card in the storage anyways insert_pai(user, tool) return ITEM_INTERACT_SUCCESS if(istype(tool, /obj/item/mod/paint)) var/obj/item/mod/paint/paint_kit = tool if(active || activating) - balloon_alert(user, "suit is active!") + balloon_alert(user, "unit active!") return ITEM_INTERACT_BLOCKING if(LAZYACCESS(modifiers, RIGHT_CLICK)) // Right click if(paint_kit.editing_mod == src) @@ -342,7 +347,7 @@ return ITEM_INTERACT_SUCCESS if(istype(tool, /obj/item/mod/module)) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING install(tool, user) @@ -350,11 +355,11 @@ return ITEM_INTERACT_SUCCESS if(istype(tool, /obj/item/mod/core)) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING if(core) - balloon_alert(user, "core already installed!") + balloon_alert(user, "already has core!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING var/obj/item/mod/core/attacking_core = tool @@ -386,7 +391,7 @@ /obj/item/mod/control/emag_act(mob/user, obj/item/card/emag/emag_card) locked = !locked - balloon_alert(user, "suit access [locked ? "locked" : "unlocked"]") + balloon_alert(user, "access [locked ? "locked" : "unlocked"]") return TRUE /obj/item/mod/control/emp_act(severity) @@ -446,12 +451,11 @@ CRASH("get_part_datum called with incorrect item [part] passed.") /obj/item/mod/control/proc/get_part_from_slot(slot) - slot = "[slot]" - for(var/part_slot in mod_parts) - if(slot != part_slot) - continue - var/datum/mod_part/part = mod_parts[part_slot] - return part.part_item + var/datum/mod_part/part = mod_parts["[slot]"] + return part?.part_item + +/obj/item/mod/control/proc/get_part_datum_from_slot(slot) + return mod_parts["[slot]"] /obj/item/mod/control/proc/set_wearer(mob/living/carbon/human/user) if(wearer == user) @@ -512,7 +516,9 @@ for(var/obj/item/part as anything in get_parts()) seal_part(part, is_sealed = FALSE) for(var/obj/item/part as anything in get_parts()) - retract(null, part) + if(part.loc == src) + continue + INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after if(active) control_activation(is_on = FALSE) mod_link?.end_call() @@ -580,24 +586,24 @@ for(var/obj/item/mod/module/old_module as anything in modules) if(is_type_in_list(new_module, old_module.incompatible_modules) || is_type_in_list(old_module, new_module.incompatible_modules)) if(user) - balloon_alert(user, "[new_module] incompatible with [old_module]!") + balloon_alert(user, "incompatible with [old_module]!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return var/complexity_with_module = complexity complexity_with_module += new_module.complexity if(complexity_with_module > complexity_max) if(user) - balloon_alert(user, "[new_module] would make [src] too complex!") + balloon_alert(user, "above complexity max!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return if(!new_module.has_required_parts(mod_parts)) if(user) - balloon_alert(user, "[new_module] incompatible with [src]'s parts!") + balloon_alert(user, "lacking required parts!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return if(!new_module.can_install(src)) if(user) - balloon_alert(user, "[new_module] cannot be installed into [src]!") + balloon_alert(user, "can't install!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return new_module.forceMove(src) @@ -662,6 +668,12 @@ /obj/item/mod/control/proc/check_charge(amount) return core?.check_charge(amount) || FALSE +/obj/item/mod/control/proc/get_chargebar_color() + return core?.get_chargebar_color() || "transparent" + +/obj/item/mod/control/proc/get_chargebar_string() + return core?.get_chargebar_string() || "No Core Detected" + /** * Updates the wearer's hud according to the current state of the MODsuit */ @@ -707,6 +719,9 @@ uninstall(part) return if(part in get_parts()) + if(QDELING(part) && !QDELING(src)) + qdel(src) + return var/datum/mod_part/part_datum = get_part_datum(part) if(part_datum.sealed) seal_part(part, is_sealed = FALSE) @@ -715,7 +730,7 @@ if(!wearer) part.forceMove(src) return - retract(wearer, part) + INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after /obj/item/mod/control/proc/on_part_destruction(obj/item/part, damage_flag) SIGNAL_HANDLER @@ -724,14 +739,6 @@ return atom_destruction(damage_flag) -/obj/item/mod/control/proc/on_part_deletion(obj/item/part) - SIGNAL_HANDLER - - if(QDELING(src)) - return - part.moveToNullspace() - qdel(src) - /obj/item/mod/control/proc/on_overslot_exit(obj/item/part, atom/movable/overslot, direction) SIGNAL_HANDLER diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm index 791c5347722..01e0902b6b0 100644 --- a/code/modules/mod/mod_core.dm +++ b/code/modules/mod/mod_core.dm @@ -25,30 +25,45 @@ mod.update_charge_alert() mod = null +/// Returns the item responsible for charging the suit, like a power cell, an ethereal's stomach, the core itself, etc. /obj/item/mod/core/proc/charge_source() return +/// Returns the amount of charge in the core. /obj/item/mod/core/proc/charge_amount() return 0 +/// Returns the max amount of charge stored in the core. /obj/item/mod/core/proc/max_charge_amount() return 1 +/// Adds a set amount of charge to the core. /obj/item/mod/core/proc/add_charge(amount) return FALSE +/// Subtracts a set amount of charge from the core. /obj/item/mod/core/proc/subtract_charge(amount) return FALSE +/// Checks if there's enough charge in the core to use an amount of energy. /obj/item/mod/core/proc/check_charge(amount) return FALSE -/** - * Gets what icon state to display on the HUD for the charge level of this core - */ +/// Returns what icon state to display on the HUD for the charge level of this core /obj/item/mod/core/proc/get_charge_icon_state() return "0" +/// Gets what the UI should use for the charge bar color. +/obj/item/mod/core/proc/get_chargebar_color() + return "bad" + +/// Gets what the UI should use for the charge bar text. +/obj/item/mod/core/proc/get_chargebar_string() + var/charge_amount = charge_amount() + var/max_charge_amount = max_charge_amount() + return "[display_energy(charge_amount)] of [display_energy(max_charge_amount())] \ + ([round((100 * charge_amount) / max_charge_amount, 1)]%)" + /obj/item/mod/core/infinite name = "MOD infinite core" icon_state = "mod-core-infinite" @@ -76,6 +91,12 @@ /obj/item/mod/core/infinite/get_charge_icon_state() return "high" +/obj/item/mod/core/infinite/get_chargebar_color() + return "teal" + +/obj/item/mod/core/infinite/get_chargebar_string() + return "Infinite" + /obj/item/mod/core/standard name = "MOD standard core" icon_state = "mod-core-standard" @@ -163,6 +184,22 @@ return "empty" +/obj/item/mod/core/standard/get_chargebar_color() + if(isnull(charge_source())) + return "transparent" + switch(round(charge_amount() / max_charge_amount(), 0.01)) + if(-INFINITY to 0.33) + return "bad" + if(0.33 to 0.66) + return "average" + if(0.66 to INFINITY) + return "good" + +/obj/item/mod/core/standard/get_chargebar_string() + if(isnull(charge_source())) + return "Power Cell Missing" + return ..() + /obj/item/mod/core/standard/proc/install_cell(new_cell) cell = new_cell cell.forceMove(src) @@ -222,11 +259,11 @@ if(!istype(attacking_item, /obj/item/stock_parts/power_store/cell)) return FALSE if(!mod.open) - mod.balloon_alert(user, "open the cover first!") + mod.balloon_alert(user, "cover closed!") playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(cell) - mod.balloon_alert(user, "cell already installed!") + mod.balloon_alert(user, "already has cell!") playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE install_cell(attacking_item) @@ -260,41 +297,62 @@ name = "MOD ethereal core" icon_state = "mod-core-ethereal" desc = "A reverse engineered core of a Modular Outerwear Device. Using natural liquid electricity from Ethereals, \ - preventing the need to use external sources to convert electric charge." + preventing the need to use external sources to convert electric charge. As the suits are naturally charged by \ + liquid electricity, this core makes it much more efficient, running all soft, hard, and wetware with several \ + times less energy usage." /// A modifier to all charge we use, ethereals don't need to spend as much energy as normal suits. var/charge_modifier = 0.1 /obj/item/mod/core/ethereal/charge_source() - var/obj/item/organ/internal/stomach/ethereal/ethereal_stomach = mod.wearer.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/ethereal_stomach = mod.wearer.get_organ_slot(ORGAN_SLOT_STOMACH) if(!istype(ethereal_stomach)) return return ethereal_stomach /obj/item/mod/core/ethereal/charge_amount() - var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source() + var/obj/item/organ/stomach/ethereal/charge_source = charge_source() return charge_source?.cell.charge() || ETHEREAL_CHARGE_NONE /obj/item/mod/core/ethereal/max_charge_amount() return ETHEREAL_CHARGE_FULL /obj/item/mod/core/ethereal/add_charge(amount) - var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source() - if(!charge_source) + var/obj/item/organ/stomach/ethereal/charge_source = charge_source() + if(isnull(charge_source)) return FALSE - charge_source.adjust_charge(amount*charge_modifier) + charge_source.adjust_charge(amount * charge_modifier) return TRUE /obj/item/mod/core/ethereal/subtract_charge(amount) - var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source() - if(!charge_source) + var/obj/item/organ/stomach/ethereal/charge_source = charge_source() + if(isnull(charge_source)) return FALSE - return -charge_source.adjust_charge(-amount*charge_modifier) + return -charge_source.adjust_charge(-amount * charge_modifier) /obj/item/mod/core/ethereal/check_charge(amount) - return charge_amount() >= amount*charge_modifier + return charge_amount() >= amount * charge_modifier /obj/item/mod/core/ethereal/get_charge_icon_state() - return charge_source() ? "0" : "missing" + return isnull(charge_source()) ? "missing" : "0" + +/obj/item/mod/core/ethereal/get_chargebar_color() + if(isnull(charge_source())) + return "transparent" + switch(charge_amount()) + if(-INFINITY to ETHEREAL_CHARGE_LOWPOWER) + return "bad" + if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL) + return "average" + if(ETHEREAL_CHARGE_NORMAL to ETHEREAL_CHARGE_FULL) + return "good" + if(ETHEREAL_CHARGE_FULL to INFINITY) + return "teal" + +/obj/item/mod/core/ethereal/get_chargebar_string() + var/obj/item/organ/stomach/ethereal/charge_source = charge_source() + if(isnull(charge_source()) || isnull(charge_source.cell)) + return "Biological Battery Missing" + return ..() #define PLASMA_CORE_ORE_CHARGE (1.5 * STANDARD_CELL_CHARGE) #define PLASMA_CORE_SHEET_CHARGE (2 * STANDARD_CELL_CHARGE) @@ -355,6 +413,13 @@ return "empty" +/obj/item/mod/core/plasma/get_chargebar_color() + switch(round(charge_amount() / max_charge_amount(), 0.01)) + if(-INFINITY to 0.33) + return "bad" + if(0.33 to INFINITY) + return "purple" + /obj/item/mod/core/plasma/proc/on_mod_interaction(datum/source, mob/living/user, obj/item/thing) SIGNAL_HANDLER diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index e196580b99b..b5347ef5c64 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -217,7 +217,7 @@ if(!user.transferItemToLoc(attacked_by, src)) return cell = attacked_by - balloon_alert(user, "installed [cell.name]") + balloon_alert(user, "cell installed") /obj/item/clothing/neck/link_scryer/update_name(updates) . = ..() @@ -231,7 +231,7 @@ /obj/item/clothing/neck/link_scryer/attack_hand_secondary(mob/user, list/modifiers) if(!cell) return SECONDARY_ATTACK_CONTINUE_CHAIN - balloon_alert(user, "removed [cell.name]") + balloon_alert(user, "cell removed") user.put_in_hands(cell) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN @@ -413,7 +413,7 @@ if(!link_user) return if(HAS_TRAIT(link_user, TRAIT_IN_CALL)) - holder.balloon_alert(user, "user already in call!") + holder.balloon_alert(user, "already calling!") return var/mob/living/link_target = called.get_user_callback.Invoke() if(!link_target) diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm index e3e42e55f61..2f658e9df24 100644 --- a/code/modules/mod/mod_paint.dm +++ b/code/modules/mod/mod_paint.dm @@ -153,10 +153,10 @@ return NONE var/obj/item/mod/control/mod = attacked_atom if(mod.active || mod.activating) - balloon_alert(user, "suit is active!") + balloon_alert(user, "unit active!") return ITEM_INTERACT_BLOCKING if(!(skin in mod.theme.variants)) - balloon_alert(user, "incompatible theme!") + balloon_alert(user, "wrong theme for skin!") return ITEM_INTERACT_BLOCKING mod.theme.set_skin(mod, skin) balloon_alert(user, "skin applied") diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm index 2a8ccf7b4bf..9a8e77f7e8e 100644 --- a/code/modules/mod/mod_ui.dm +++ b/code/modules/mod/mod_ui.dm @@ -9,8 +9,10 @@ // Suit information var/suit_status = list( "core_name" = core?.name, - "cell_charge_current" = get_charge(), - "cell_charge_max" = get_max_charge(), + "charge_current" = get_charge(), + "charge_max" = get_max_charge(), + "chargebar_color" = get_chargebar_color(), + "chargebar_string" = get_chargebar_string(), "active" = active, "ai_name" = ai_assistant?.name, "has_pai" = ispAI(ai_assistant), @@ -56,23 +58,25 @@ "configuration_data" = module.get_configuration(user), )) data["module_custom_status"] = module_custom_status - data["module_info"] = module_info - return data - -/obj/item/mod/control/ui_static_data(mob/user) - var/data = list() - data["ui_theme"] = ui_theme data["control"] = name - data["complexity_max"] = complexity_max + data["module_info"] = module_info var/part_info = list() for(var/obj/item/part as anything in get_parts()) part_info += list(list( "slot" = english_list(parse_slot_flags(part.slot_flags)), "name" = part.name, + "deployed" = part.loc != src, + "ref" = REF(part), )) data["parts"] = part_info return data +/obj/item/mod/control/ui_static_data(mob/user) + var/data = list() + data["ui_theme"] = ui_theme + data["complexity_max"] = complexity_max + return data + /obj/item/mod/control/ui_state(mob/user) if(user == ai_assistant) return GLOB.contained_state @@ -89,7 +93,7 @@ if("lock") if(!locked || allowed(ui.user)) locked = !locked - balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]!") + balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]") else balloon_alert(ui.user, "access insufficent!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) @@ -115,6 +119,14 @@ if(!module) return module.pin(ui.user) + if("deploy") + var/obj/item/mod_part = locate(params["ref"]) in get_parts() + if(!mod_part) + return + if(mod_part.loc == src) + deploy(ui.user, mod_part) + else + retract(ui.user, mod_part) if("eject_pai") if (!ishuman(ui.user)) return diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index 2403528236f..c840382da58 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -301,7 +301,7 @@ /obj/item/mod/module/proc/add_ui_data() return list() -/// Creates a list of configuring options for this module +/// Creates a list of configuring options for this module, possible configs include number, bool, color, list, button. /obj/item/mod/module/proc/get_configuration(mob/user) return list() @@ -496,7 +496,7 @@ balloon_alert(user, "no core!") return if(!core_removable) - balloon_alert(user, "can't remove core!") + balloon_alert(user, "already has core!") return balloon_alert(user, "removing core...") if(!do_after(user, 3 SECONDS, target = src)) diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm index f0a92e3a051..487844bc2a0 100644 --- a/code/modules/mod/modules/module_pathfinder.dm +++ b/code/modules/mod/modules/module_pathfinder.dm @@ -117,19 +117,19 @@ /obj/item/implant/mod/proc/recall() if(!module?.mod) - balloon_alert(imp_in, "no connected suit!") + balloon_alert(imp_in, "no connected unit!") return FALSE if(module.mod.open) - balloon_alert(imp_in, "suit is open!") + balloon_alert(imp_in, "cover open!") return FALSE if(module.mod.ai_controller) - balloon_alert(imp_in, "already in transit!") + balloon_alert(imp_in, "already moving!") return FALSE if(ismob(get_atom_on_turf(module.mod))) balloon_alert(imp_in, "already on someone!") return FALSE if(module.z != z || get_dist(imp_in, module.mod) > MOD_AI_RANGE) - balloon_alert(imp_in, "too far away!") + balloon_alert(imp_in, "too far!") return FALSE var/datum/ai_controller/mod_ai = new /datum/ai_controller/mod(module.mod) module.mod.ai_controller = mod_ai diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index 8b770ea0913..ec550f3cfde 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -52,9 +52,10 @@ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) balloon_alert(mod.wearer, "armor boosted, EVA lost") actual_speed_added = max(0, min(mod.slowdown_active, speed_added)) - var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) - if(istype(head_cover)) - ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES) + if(head_cover) + RegisterSignal(mod, COMSIG_MOD_PART_SEALED, PROC_REF(seal_helmet)) + seal_helmet(mod, head_cover) var/list/mod_parts = mod.get_parts(all = TRUE) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().add_other_armor(armor_mod)) @@ -71,9 +72,10 @@ if(!deleting) playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) balloon_alert(mod.wearer, "armor retracts, EVA ready") - var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) - if(istype(head_cover)) - REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES) + if(head_cover) + UnregisterSignal(mod, COMSIG_MOD_PART_SEALED) + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) var/list/mod_parts = mod.get_parts(all = TRUE) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().subtract_other_armor(armor_mod)) @@ -91,6 +93,15 @@ overlay_state_active = "[initial(overlay_state_active)]-[mod.skin]" return ..() +/obj/item/mod/module/armor_booster/proc/seal_helmet(datum/source, datum/mod_part/part) + var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES) + if(part != head_cover) + return + if(part.sealed) + ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) + else + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) + ///Energy Shield - Gives you a rechargeable energy shield that nullifies attacks. /obj/item/mod/module/energy_shield name = "MOD energy shield module" @@ -184,10 +195,10 @@ required_slots = list(ITEM_SLOT_BACK) /obj/item/mod/module/anti_magic/on_part_activation() - mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src)) /obj/item/mod/module/anti_magic/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src)) /obj/item/mod/module/anti_magic/wizard name = "MOD magic neutralizer module" @@ -199,10 +210,10 @@ required_slots = list() /obj/item/mod/module/anti_magic/wizard/on_part_activation() - mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src)) /obj/item/mod/module/anti_magic/wizard/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src)) ///Insignia - Gives you a skin specific stripe. /obj/item/mod/module/insignia @@ -262,24 +273,20 @@ required_slots = list(ITEM_SLOT_FEET) /obj/item/mod/module/noslip/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src)) /obj/item/mod/module/noslip/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src)) //Bite of 87 Springlock - Equips faster, disguised as DNA lock. /obj/item/mod/module/springlock/bite_of_87 + name = /obj/item/mod/module/dna_lock::name + desc = /obj/item/mod/module/dna_lock::desc + icon_state = /obj/item/mod/module/dna_lock::icon_state + complexity = /obj/item/mod/module/dna_lock::complexity + use_energy_cost = /obj/item/mod/module/dna_lock::use_energy_cost step_change = 0.1 -/obj/item/mod/module/springlock/bite_of_87/Initialize(mapload) - . = ..() - var/obj/item/mod/module/dna_lock/the_dna_lock_behind_the_slaughter = /obj/item/mod/module/dna_lock - name = initial(the_dna_lock_behind_the_slaughter.name) - desc = initial(the_dna_lock_behind_the_slaughter.desc) - icon_state = initial(the_dna_lock_behind_the_slaughter.icon_state) - complexity = initial(the_dna_lock_behind_the_slaughter.complexity) - use_energy_cost = initial(the_dna_lock_behind_the_slaughter.use_energy_cost) - /obj/item/mod/module/springlock/bite_of_87/on_part_activation() ..() if(check_holidays(APRIL_FOOLS) || prob(1)) @@ -404,7 +411,7 @@ /obj/item/mod/module/chameleon/used() if(mod.active || mod.activating) - balloon_alert(mod.wearer, "suit active!") + balloon_alert(mod.wearer, "unit active!") return FALSE return ..() @@ -514,18 +521,18 @@ mod.item_flags &= ~EXAMINE_SKIP /obj/item/mod/module/infiltrator/on_part_activation() - mod.wearer.add_traits(traits_to_add, MOD_TRAIT) + mod.wearer.add_traits(traits_to_add, REF(src)) RegisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH, PROC_REF(on_speech_modification)) - var/obj/item/organ/internal/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE) user_tongue.temp_say_mod = "states" var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) if(istype(head_cover)) head_cover.flash_protect = FLASH_PROTECTION_WELDER_HYPER_SENSITIVE /obj/item/mod/module/infiltrator/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(traits_to_add, MOD_TRAIT) + mod.wearer.remove_traits(traits_to_add, REF(src)) UnregisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH) - var/obj/item/organ/internal/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE) user_tongue.temp_say_mod = initial(user_tongue.temp_say_mod) if(deleting) return @@ -573,7 +580,7 @@ balloon_alert(mod.wearer, "can't reach that!") return if(istype(target, /obj/machinery/power/apc)) //Bit too strong for a module so this is blacklisted - balloon_alert(mod.wearer, "cant disable apc!") + balloon_alert(mod.wearer, "can't disable apc!") return var/list/things_to_disrupt = list(target) diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm index aea9a415cf4..9c96d9edd82 100644 --- a/code/modules/mod/modules/modules_engineering.dm +++ b/code/modules/mod/modules/modules_engineering.dm @@ -62,12 +62,12 @@ var/list/active_traits = list(TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_SLIDE, TRAIT_NEGATES_GRAVITY) /obj/item/mod/module/magboot/on_activation() - mod.wearer.add_traits(active_traits, MOD_TRAIT) + mod.wearer.add_traits(active_traits, REF(src)) mod.slowdown += slowdown_active mod.wearer.update_equipment_speed_mods() /obj/item/mod/module/magboot/on_deactivation(display_message = TRUE, deleting = FALSE) - mod.wearer.remove_traits(active_traits, MOD_TRAIT) + mod.wearer.remove_traits(active_traits, REF(src)) mod.slowdown -= slowdown_active mod.wearer.update_equipment_speed_mods() @@ -104,7 +104,7 @@ /obj/item/mod/module/tether/get_configuration() . = ..() - .["cut_tethers"] = add_ui_configuration("Cut Tethers", "pin", TRUE) + .["cut_tethers"] = add_ui_configuration("Cut Tethers", "button", "scissors") /obj/item/mod/module/tether/configure_edit(key, value) if (key != "cut_tethers") @@ -267,14 +267,14 @@ /obj/item/mod/module/rad_protection/on_part_activation() AddComponent(/datum/component/geiger_sound) - ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src)) RegisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) for(var/obj/item/part in mod.get_parts(all = TRUE)) ADD_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT) /obj/item/mod/module/rad_protection/on_part_deactivation(deleting = FALSE) qdel(GetComponent(/datum/component/geiger_sound)) - REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src)) UnregisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION) for(var/obj/item/part in mod.get_parts(all = TRUE)) REMOVE_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT) @@ -309,10 +309,10 @@ required_slots = list(ITEM_SLOT_GLOVES) /obj/item/mod/module/constructor/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src)) /obj/item/mod/module/constructor/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src)) /obj/item/mod/module/constructor/on_use() rcd_scan(src, fade_time = 10 SECONDS) @@ -332,10 +332,10 @@ required_slots = list(ITEM_SLOT_HEAD) /obj/item/mod/module/headprotector/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) /obj/item/mod/module/headprotector/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) ///Mister - Sprays water over an area. /obj/item/mod/module/mister diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 42e4c56f55e..dc273965e81 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -148,9 +148,9 @@ if (!isnull(mod) && !isnull(mod.wearer) && mod.wearer.get_item_by_slot(slot_flags) == src) if (!stabilize) - ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) else - REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) /obj/item/mod/module/jetpack/get_configuration() . = ..() @@ -171,11 +171,11 @@ /obj/item/mod/module/jetpack/on_activation() mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed) if (!stabilize) - ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) /obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed) - REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) /obj/item/mod/module/jetpack/advanced name = "MOD advanced ion jetpack module" @@ -672,10 +672,10 @@ return ..() /obj/item/mod/module/plasma_stabilizer/on_equip() - ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src)) /obj/item/mod/module/plasma_stabilizer/on_unequip() - REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src)) //Finally, https://pipe.miroware.io/5b52ba1d94357d5d623f74aa/mspfa/Nuke%20Ops/Panels/0648.gif can be real: @@ -731,10 +731,10 @@ required_slots = list(ITEM_SLOT_GLOVES) /obj/item/mod/module/signlang_radio/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src)) /obj/item/mod/module/signlang_radio/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src)) ///A module that recharges the suit by an itsy tiny bit whenever the user takes a step. Originally called "magneto module" but the videogame reference sounds cooler. /obj/item/mod/module/joint_torsion @@ -952,7 +952,7 @@ if(!istype(tool, /obj/item/fishing_rod)) return ..() if(equipped) - balloon_alert(user, "remove current rod first!") + balloon_alert(user, "already has rod!") if(!user.transferItemToLoc(tool, src)) user.balloon_alert(user, "it's stuck!") equipped = tool diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index 83656aaf22f..96ba42ca332 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -297,8 +297,8 @@ mod.wearer.AddElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_upstairs)) RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(on_talk)) - ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) - passtable_on(mod.wearer, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) + passtable_on(mod.wearer, REF(src)) check_upstairs() //todo at some point flip your screen around /obj/item/mod/module/atrocinator/deactivate(display_message = TRUE, deleting = FALSE) @@ -314,8 +314,8 @@ UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED) UnregisterSignal(mod.wearer, COMSIG_MOB_SAY) step_count = 0 - REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) - passtable_off(mod.wearer, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) + passtable_off(mod.wearer, REF(src)) var/turf/open/openspace/current_turf = get_turf(mod.wearer) if(istype(current_turf)) current_turf.zFall(mod.wearer, falling_from_move = TRUE) diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm index 154717cbcc1..7c0e1c85b05 100644 --- a/code/modules/mod/modules/modules_medical.dm +++ b/code/modules/mod/modules/modules_medical.dm @@ -77,13 +77,13 @@ /obj/item/mod/module/quick_carry/on_part_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT) - ADD_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src)) + ADD_TRAIT(mod.wearer, quick_carry_trait, REF(src)) /obj/item/mod/module/quick_carry/on_part_deactivation(deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT) - REMOVE_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src)) + REMOVE_TRAIT(mod.wearer, quick_carry_trait, REF(src)) /obj/item/mod/module/quick_carry/advanced name = "MOD advanced quick carry module" diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index c4e8962c447..a6ade06a909 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -73,11 +73,11 @@ /obj/item/mod/module/stealth/ninja/on_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) /obj/item/mod/module/stealth/ninja/on_deactivation(display_message = TRUE, deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) ///Camera Vision - Prevents flashes, blocks tracking. /obj/item/mod/module/welding/camera_vision @@ -173,16 +173,16 @@ var/accepted_type = /obj/item/energy_katana /obj/item/mod/module/weapon_recall/on_part_activation() - mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src)) /obj/item/mod/module/weapon_recall/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src)) /obj/item/mod/module/weapon_recall/on_use() if(!linked_weapon) var/obj/item/weapon_to_link = mod.wearer.is_holding_item_of_type(accepted_type) if(!weapon_to_link) - balloon_alert(mod.wearer, "can't locate weapon!") + balloon_alert(mod.wearer, "no linked weapon!") return set_weapon(weapon_to_link) balloon_alert(mod.wearer, "[linked_weapon.name] linked") @@ -191,7 +191,7 @@ balloon_alert(mod.wearer, "already on self!") return var/distance = get_dist(mod.wearer, linked_weapon) - var/in_view = (linked_weapon in view(mod.wearer)) + var/in_view = (linked_weapon in view(mod.wearer)) && !(linked_weapon in get_turf(mod.wearer)) if(!in_view && !drain_power(use_energy_cost * distance)) balloon_alert(mod.wearer, "not enough charge!") return diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm index ea9f1d01e43..8cb15d35370 100644 --- a/code/modules/mod/modules/modules_science.dm +++ b/code/modules/mod/modules/modules_science.dm @@ -14,10 +14,10 @@ required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) /obj/item/mod/module/reagent_scanner/on_activation() - ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src)) /obj/item/mod/module/reagent_scanner/on_deactivation(display_message = TRUE, deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src)) /obj/item/mod/module/reagent_scanner/advanced name = "MOD advanced reagent scanner module" @@ -31,12 +31,12 @@ /obj/item/mod/module/reagent_scanner/advanced/on_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src)) RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion)) /obj/item/mod/module/reagent_scanner/advanced/on_deactivation(display_message = TRUE, deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src)) UnregisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION) /obj/item/mod/module/reagent_scanner/advanced/proc/sense_explosion(datum/source, turf/epicenter, diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm index c25dd752755..09032318304 100644 --- a/code/modules/mod/modules/modules_security.dm +++ b/code/modules/mod/modules/modules_security.dm @@ -123,7 +123,7 @@ balloon_alert(mod.wearer, "nothing to holster!") return if(!istype(holding) || holding.w_class > WEIGHT_CLASS_BULKY) - balloon_alert(mod.wearer, "it doesn't fit!") + balloon_alert(mod.wearer, "doesn't fit!") return if(mod.wearer.transferItemToLoc(holding, src, force = FALSE, silent = TRUE)) holstered = holding @@ -522,11 +522,11 @@ idle_power_cost = 0 if(STORMTROOPER_MODE) idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.4 - mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src)) RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(stormtrooper_fired_gun)) if(SHARPSHOOTER_MODE) idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.6 - mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src)) RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(sharpshooter_fired_gun)) RegisterSignal(mod.wearer, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE, PROC_REF(apply_ricochet)) mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant) @@ -535,10 +535,10 @@ switch(selected_mode) if(STORMTROOPER_MODE) UnregisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN) - mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src)) if(SHARPSHOOTER_MODE) UnregisterSignal(mod.wearer, list(COMSIG_MOB_FIRED_GUN, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE)) - mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src)) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant) /obj/item/mod/module/shooting_assistant/drain_power(amount) @@ -582,10 +582,10 @@ required_slots = list(ITEM_SLOT_OCLOTHING) /obj/item/mod/module/shove_blocker/on_part_activation() - mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src)) /obj/item/mod/module/shove_blocker/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src)) /obj/item/mod/module/shove_blocker/locked name = "superglued MOD bulwark module" @@ -602,8 +602,8 @@ /obj/item/mod/module/quick_cuff/on_part_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src)) /obj/item/mod/module/quick_cuff/on_part_deactivation(deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src)) diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm index 79d2d3779e0..70c11f069f0 100644 --- a/code/modules/mod/modules/modules_service.dm +++ b/code/modules/mod/modules/modules_service.dm @@ -46,7 +46,7 @@ if(!isitem(target)) return if(!isturf(target.loc)) - balloon_alert(mod.wearer, "must be on the floor!") + balloon_alert(mod.wearer, "not in storage!") return var/obj/item/microwave_target = target var/datum/effect_system/spark_spread/spark_effect = new() @@ -80,7 +80,7 @@ var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET) if(shoes) shoes.AddComponent(/datum/component/squeak, list('sound/effects/footstep/clownstep1.ogg'=1,'sound/effects/footstep/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please - mod.wearer.AddElementTrait(TRAIT_WADDLING, MOD_TRAIT, /datum/element/waddling) + mod.wearer.AddElementTrait(TRAIT_WADDLING, REF(src), /datum/element/waddling) if(is_clown_job(mod.wearer.mind?.assigned_role)) mod.wearer.add_mood_event("clownshoes", /datum/mood_event/clownshoes) @@ -88,6 +88,6 @@ var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET) if(shoes && !deleting) qdel(shoes.GetComponent(/datum/component/squeak)) - REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, REF(src)) if(is_clown_job(mod.wearer.mind?.assigned_role)) mod.wearer.clear_mood_event("clownshoes") diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index 8be66e0b3e3..bc34cf8781e 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -61,7 +61,7 @@ return stored_crates += picked_crate picked_crate.forceMove(src) - balloon_alert(mod.wearer, "picked up [picked_crate]") + balloon_alert(mod.wearer, "picked up crate") drain_power(use_energy_cost) else if(length(stored_crates)) var/turf/target_turf = get_turf(target) @@ -407,11 +407,11 @@ )) /obj/item/mod/module/ash_accretion/on_part_activation() - mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src)) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) /obj/item/mod/module/ash_accretion/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src)) UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED) if(!traveled_tiles) return @@ -496,10 +496,10 @@ mod.wearer.base_pixel_y -= 4 animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y, flags = ANIMATION_PARALLEL) mod.wearer.SpinAnimation(1.5) - mod.wearer.add_traits(user_traits, MOD_TRAIT) + mod.wearer.add_traits(user_traits, REF(src)) mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6) mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE) - mod.wearer.add_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown) + mod.wearer.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown) mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere) RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange)) @@ -509,8 +509,8 @@ mod.wearer.base_pixel_y += 4 animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y) addtimer(CALLBACK(mod.wearer, TYPE_PROC_REF(/datum, remove_filter), list("mod_ball", "mod_blur", "mod_outline")), animate_time) - mod.wearer.remove_traits(user_traits, MOD_TRAIT) - mod.wearer.remove_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown) + mod.wearer.remove_traits(user_traits, REF(src)) + mod.wearer.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown) mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE) mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere) diff --git a/code/modules/mod/modules/modules_timeline.dm b/code/modules/mod/modules/modules_timeline.dm index c14825bf3c7..bfb22da0c20 100644 --- a/code/modules/mod/modules/modules_timeline.dm +++ b/code/modules/mod/modules/modules_timeline.dm @@ -133,13 +133,13 @@ ///Signal fired when wearer attempts to trigger modules, if attempting while time is stopped /obj/item/mod/module/timestopper/proc/on_module_triggered(datum/source) SIGNAL_HANDLER - balloon_alert(mod.wearer, "not while channelling timestop!") + balloon_alert(mod.wearer, "not while stopping time!") return MOD_ABORT_USE ///Signal fired when wearer attempts to activate/deactivate suits, if attempting while time is stopped /obj/item/mod/module/timestopper/proc/on_activate_block(datum/source, user) SIGNAL_HANDLER - balloon_alert(user, "not while channelling timestop!") + balloon_alert(user, "not while stopping time!") return MOD_CANCEL_ACTIVATE ///Timeline Jumper - Infinite phasing. needs some special effects diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm index d4b6154f886..64ddc69d2ed 100644 --- a/code/modules/mod/modules/modules_visor.dm +++ b/code/modules/mod/modules/modules_visor.dm @@ -14,12 +14,12 @@ /obj/item/mod/module/visor/on_activation() if(length(visor_traits)) - mod.wearer.add_traits(visor_traits, MOD_TRAIT) + mod.wearer.add_traits(visor_traits, REF(src)) mod.wearer.update_sight() /obj/item/mod/module/visor/on_deactivation(display_message = TRUE, deleting = FALSE) if(length(visor_traits)) - mod.wearer.remove_traits(visor_traits, MOD_TRAIT) + mod.wearer.remove_traits(visor_traits, REF(src)) mod.wearer.update_sight() //Medical Visor - Gives you a medical HUD. diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 78b85910d9a..4c4649afb53 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -60,7 +60,7 @@ return ..() /obj/item/paperplane/suicide_act(mob/living/user) - var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) user.Stun(20 SECONDS) user.visible_message(span_suicide("[user] jams [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!")) user.adjust_eye_blur(12 SECONDS) @@ -109,7 +109,7 @@ if(. || !ishuman(hit_atom)) //if the plane is caught or it hits a nonhuman return var/mob/living/carbon/human/hit_human = hit_atom - var/obj/item/organ/internal/eyes/eyes = hit_human.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = hit_human.get_organ_slot(ORGAN_SLOT_EYES) if(!prob(hit_probability)) return if(hit_human.is_eyes_covered()) diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm index 0929066a7d3..2c5ec520a9f 100644 --- a/code/modules/power/apc/apc_attack.dm +++ b/code/modules/power/apc/apc_attack.dm @@ -13,7 +13,7 @@ if(!ishuman(user)) return var/mob/living/carbon/human/apc_interactor = user - var/obj/item/organ/internal/stomach/ethereal/maybe_ethereal_stomach = apc_interactor.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/maybe_ethereal_stomach = apc_interactor.get_organ_slot(ORGAN_SLOT_STOMACH) if(!istype(maybe_ethereal_stomach)) togglelock(user) else @@ -27,14 +27,14 @@ if(!ishuman(user)) return var/mob/living/carbon/human/ethereal = user - var/obj/item/organ/internal/stomach/maybe_stomach = ethereal.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/maybe_stomach = ethereal.get_organ_slot(ORGAN_SLOT_STOMACH) // how long we wanna wait before we show the balloon alert. don't want it to be very long in case the ethereal wants to opt-out of doing that action, just long enough to where it doesn't collide with previously queued balloon alerts. var/alert_timer_duration = 0.75 SECONDS - if(!istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal)) + if(!istype(maybe_stomach, /obj/item/organ/stomach/ethereal)) return var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - ETHEREAL_APC_POWER_GAIN - var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach + var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell if(!((stomach?.drain_time < world.time) && LAZYACCESS(modifiers, RIGHT_CLICK))) return diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index fd4bf689c90..6a704ad6b2e 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -598,9 +598,9 @@ var/protected = FALSE if(istype(user)) - var/obj/item/organ/internal/stomach/maybe_stomach = user.get_organ_slot(ORGAN_SLOT_STOMACH) - if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal)) - var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach + var/obj/item/organ/stomach/maybe_stomach = user.get_organ_slot(ORGAN_SLOT_STOMACH) + if(istype(maybe_stomach, /obj/item/organ/stomach/ethereal)) + var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach if(stomach.drain_time > world.time) return user.visible_message(span_notice("[user] clamps their hand around the [fitting], electricity jumping around inside!")) //NOVA EDIT CHANGE - Ethereal Rework 2024 - ORIGINALl: to_chat(user, span_notice("You start channeling some power through the [fitting] into your body.")) diff --git a/code/modules/power/power_store.dm b/code/modules/power/power_store.dm index 5890260be0f..0ca9ba226f4 100644 --- a/code/modules/power/power_store.dm +++ b/code/modules/power/power_store.dm @@ -290,12 +290,12 @@ /obj/item/stock_parts/power_store/attack_self(mob/user) if(ishuman(user)) var/mob/living/carbon/human/H = user - var/obj/item/organ/internal/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH) - if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal)) + if(istype(maybe_stomach, /obj/item/organ/stomach/ethereal)) var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - CELL_POWER_GAIN - var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach + var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell if((stomach.drain_time > world.time) || !stomach) return diff --git a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm index c07ec7bbe89..3cb6c8fd82c 100644 --- a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm +++ b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm @@ -95,7 +95,7 @@ var/mob/living/carbon/jedi = user to_chat(jedi, span_userdanger("That was a really dense idea.")) jedi.ghostize() - var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs + var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs if(rip_u) rip_u.Remove(jedi) qdel(rip_u) diff --git a/code/modules/power/supermatter/supermatter_hit_procs.dm b/code/modules/power/supermatter/supermatter_hit_procs.dm index 11b42d71446..167ee7988b1 100644 --- a/code/modules/power/supermatter/supermatter_hit_procs.dm +++ b/code/modules/power/supermatter/supermatter_hit_procs.dm @@ -59,7 +59,7 @@ to_chat(jedi, span_userdanger("That was a really dense idea.")) jedi.investigate_log("had [jedi.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS) jedi.ghostize() - var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs + var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs if(rip_u) rip_u.Remove(jedi) qdel(rip_u) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index eb5ad47a88c..15e262edc54 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -163,7 +163,7 @@ return var/mob/living/carbon/jedi = user to_chat(jedi, span_userdanger("That was a shockingly dumb idea.")) - var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs + var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs jedi.ghostize(jedi) if(rip_u) qdel(rip_u) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 4024420b698..de641df6dbf 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -615,7 +615,7 @@ #define BRAINS_BLOWN_THROW_SPEED 1 /obj/item/gun/ballistic/suicide_act(mob/living/user) - var/obj/item/organ/internal/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN) if (B && chambered && chambered.loaded_projectile && can_trigger_gun(user) && chambered.loaded_projectile.damage > 0) user.visible_message(span_suicide("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")) sleep(2.5 SECONDS) diff --git a/code/modules/reagents/chemistry/holder/holder.dm b/code/modules/reagents/chemistry/holder/holder.dm index 1112ad052d8..4315ea63bd9 100644 --- a/code/modules/reagents/chemistry/holder/holder.dm +++ b/code/modules/reagents/chemistry/holder/holder.dm @@ -430,7 +430,7 @@ else if(!ignore_stomach && (methods & INGEST) && iscarbon(target)) var/mob/living/carbon/eater = target - var/obj/item/organ/internal/stomach/belly = eater.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = eater.get_organ_slot(ORGAN_SLOT_STOMACH) if(!belly) var/expel_amount = round(amount, CHEMICAL_QUANTISATION_LEVEL) if(expel_amount > 0 ) @@ -779,7 +779,7 @@ * * Arguments * - Atom/target: What mob/turf/object is being exposed to reagents? This is your reaction target. - * - Methods: What reaction type is the reagent itself going to call on the reaction target? Types are TOUCH, INGEST, VAPOR, PATCH, and INJECT. + * - Methods: What reaction type is the reagent itself going to call on the reaction target? Types are TOUCH, INGEST, VAPOR, PATCH, INJECT and INHALE. * - Volume_modifier: What is the reagent volume multiplied by when exposed? Note that this is called on the volume of EVERY reagent in the base body, so factor in your Maximum_Volume if necessary! * - Show_message: Whether to display anything to mobs when they are exposed. * - list/datum/reagent/r_to_expose: list of reagents to expose. if null will expose the reagents present in this holder instead diff --git a/code/modules/reagents/chemistry/holder/mob_life.dm b/code/modules/reagents/chemistry/holder/mob_life.dm index 96869bc63eb..0bd0c38cc6a 100644 --- a/code/modules/reagents/chemistry/holder/mob_life.dm +++ b/code/modules/reagents/chemistry/holder/mob_life.dm @@ -19,8 +19,8 @@ expose_temperature(owner.bodytemperature, 0.25) var/need_mob_update = FALSE - var/obj/item/organ/internal/stomach/belly = owner.get_organ_slot(ORGAN_SLOT_STOMACH) - var/obj/item/organ/internal/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/stomach/belly = owner.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER) var/liver_tolerance = 0 var/liver_damage = 0 var/provide_pain_message diff --git a/code/modules/reagents/chemistry/holder/properties.dm b/code/modules/reagents/chemistry/holder/properties.dm index b949866a6d4..a68404c9fc7 100644 --- a/code/modules/reagents/chemistry/holder/properties.dm +++ b/code/modules/reagents/chemistry/holder/properties.dm @@ -161,35 +161,4 @@ * * minimum_percent - the lower the minimum percent, the more sensitive the message is. */ /datum/reagents/proc/generate_taste_message(mob/living/taster, minimum_percent) - var/list/out = list() - var/list/tastes = list() //descriptor = strength - if(minimum_percent <= 100) - for(var/datum/reagent/reagent as anything in reagent_list) - if(!reagent.taste_mult) - continue - - var/list/taste_data = reagent.get_taste_description(taster) - for(var/taste in taste_data) - if(taste in tastes) - tastes[taste] += taste_data[taste] * reagent.volume * reagent.taste_mult - else - tastes[taste] = taste_data[taste] * reagent.volume * reagent.taste_mult - //deal with percentages - // TODO it would be great if we could sort these from strong to weak - var/total_taste = counterlist_sum(tastes) - if(total_taste > 0) - for(var/taste_desc in tastes) - var/percent = tastes[taste_desc]/total_taste * 100 - if(percent < minimum_percent) - continue - var/intensity_desc = "a hint of" - if(percent > minimum_percent * 2 || percent == 100) - intensity_desc = "" - else if(percent > minimum_percent * 3) - intensity_desc = "the strong flavor of" - if(intensity_desc != "") - out += "[intensity_desc] [taste_desc]" - else - out += "[taste_desc]" - - return english_list(out, "something indescribable") + return generate_reagents_taste_message(reagent_list, taster, minimum_percent) diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 30e766fd369..e1a83156421 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -158,7 +158,7 @@ return UPDATE_MOB_HEALTH /datum/reagent/medicine/c2/probital/on_transfer(atom/A, methods=INGEST, trans_volume) - if(!(methods & INGEST) || (!iscarbon(A) && !istype(A, /obj/item/organ/internal/stomach)) ) + if(!(methods & INGEST) || (!iscarbon(A) && !istype(A, /obj/item/organ/stomach)) ) return A.reagents.remove_reagent(/datum/reagent/medicine/c2/probital, trans_volume * 0.05) @@ -426,7 +426,7 @@ var/mob/living/carbon/C = A if(trans_volume >= 0.4) //prevents cheesing with ultralow doses. C.adjustToxLoss((-3 * min(2, trans_volume) * REM) * normalise_creation_purity(), required_biotype = affected_biotype) //This is to promote iv pole use for that chemotherapy feel. - var/obj/item/organ/internal/liver/L = C.organs_slot[ORGAN_SLOT_LIVER] + var/obj/item/organ/liver/L = C.organs_slot[ORGAN_SLOT_LIVER] if(!L || L.organ_flags & ORGAN_FAILING) return conversion_amount = (trans_volume * (min(100 -C.get_organ_loss(ORGAN_SLOT_LIVER), 80) / 100)*normalise_creation_purity()) //the more damaged the liver the worse we metabolize. diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 138df76c5b6..5483a728b13 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -75,7 +75,7 @@ // Volume, power, and server alcohol rate effect how quickly one gets drunk drinker.adjust_drunk_effect(booze_power * ALCOHOL_RATE * REM * seconds_per_tick) // NOVA EDIT CHANGE - ALCOHOL_PROCESSING - Original: (sqrt(volume) * booze_power * ALCOHOL_RATE * REM * seconds_per_tick) if(boozepwr > 0) - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) var/heavy_drinker_multiplier = (HAS_TRAIT(drinker, TRAIT_HEAVY_DRINKER) ? 0.5 : 1) if (istype(liver)) if(liver.apply_organ_damage(((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/300))) // NOVA EDIT CHANGE - ALCOHOL_PROCESSING - Original: if((((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/150))) @@ -255,7 +255,7 @@ to_chat(drinker, span_notice("[pick("You have a really bad headache.", "Your eyes hurt.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]")) if(SPT_PROB(2.5, seconds_per_tick) && iscarbon(drinker)) - var/obj/item/organ/internal/eyes/eyes = drinker.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = drinker.get_organ_slot(ORGAN_SLOT_EYES) if(eyes && IS_ORGANIC_ORGAN(eyes)) // doesn't affect robotic eyes if(drinker.is_blind()) eyes.Remove(drinker) @@ -662,7 +662,7 @@ /datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) if(HAS_TRAIT(liver, TRAIT_ENGINEER_METABOLISM)) ADD_TRAIT(drinker, TRAIT_HALT_RADIATION_EFFECTS, "[type]") if (HAS_TRAIT(drinker, TRAIT_IRRADIATED)) @@ -780,7 +780,7 @@ if(HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE)) metabolization_rate = 0.8 // if you don't have a liver, or your liver isn't an officer's liver - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) beepsky_hallucination = new() drinker.gain_trauma(beepsky_hallucination, TRAUMA_RESILIENCE_ABSOLUTE) @@ -788,7 +788,7 @@ /datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) . = ..() drinker.set_jitter_if_lower(4 SECONDS) - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) // if you have a liver and that liver is an officer's liver if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) if(drinker.adjustStaminaLoss(-10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)) @@ -805,7 +805,7 @@ /datum/reagent/consumable/ethanol/beepsky_smash/overdose_start(mob/living/carbon/drinker) . = ..() - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) // if you don't have a liver, or your liver isn't an officer's liver if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) drinker.gain_trauma(/datum/brain_trauma/mild/phobia/security, TRAUMA_RESILIENCE_BASIC) @@ -1296,7 +1296,7 @@ /datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(drinker)) if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE)) return UPDATE_MOB_HEALTH @@ -1606,7 +1606,7 @@ /datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) . = ..() //Securidrink in line with the Screwdriver for engineers or Nothing for mimes - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE)) return UPDATE_MOB_HEALTH @@ -1623,7 +1623,7 @@ /datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) . = ..() //Securidrink in line with the Screwdriver for engineers or Nothing for mimes but STRONG.. - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) var/need_mob_update need_mob_update = drinker.heal_bodypart_damage(2 * REM * seconds_per_tick, 2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) @@ -2653,7 +2653,7 @@ return var/mob/living/carbon/exposed_carbon = exposed_mob - var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL) @@ -2673,7 +2673,7 @@ return var/mob/living/carbon/exposed_carbon = exposed_mob - var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) stomach.adjust_charge(reac_volume * 0.05 * ETHEREAL_CHARGE_NORMAL) @@ -2700,7 +2700,7 @@ return var/mob/living/carbon/exposed_carbon = exposed_mob - var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) stomach.adjust_charge(reac_volume * 0.1 * ETHEREAL_CHARGE_NORMAL) diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm index 81af315a119..05a2c984287 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm @@ -113,7 +113,7 @@ /datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(affected_mob)) if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE)) return UPDATE_MOB_HEALTH @@ -181,7 +181,7 @@ /datum/reagent/consumable/pickle/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if((liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM))) if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH @@ -519,7 +519,7 @@ /datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/carbon/affected_atom) . = ..() - var/obj/item/organ/internal/liver/liver = affected_atom.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_atom.get_organ_slot(ORGAN_SLOT_LIVER) if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM)) affected_atom.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high) metabolization_rate *= 0.8 @@ -781,7 +781,7 @@ need_mob_update += affected_mob.adjustToxLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjustOxyLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) if(affected_mob.nutrition && (affected_mob.nutrition - 2 > 0)) - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(!(HAS_TRAIT(liver, TRAIT_MEDICAL_METABOLISM))) // Drains the nutrition of the holder. Not medical doctors though, since it's the Doctor's Delight! affected_mob.adjust_nutrition(-2 * REM * seconds_per_tick) @@ -1295,6 +1295,6 @@ return var/mob/living/carbon/exposed_carbon = exposed_mob - var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index b96020f496c..6f5389e9021 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -333,7 +333,7 @@ /datum/reagent/drug/pumpup/on_mob_metabolize(mob/living/carbon/affected_mob) . = ..() - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM)) affected_mob.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high) metabolization_rate *= 0.8 @@ -380,7 +380,7 @@ return var/mob/living/carbon/carbon_mob = affected_mob - var/obj/item/organ/internal/liver/liver = carbon_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = carbon_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM)) carbon_mob.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high) metabolization_rate *= 0.8 diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index f268d53490d..b3436b99e9f 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -70,6 +70,9 @@ color = "#664330" // rgb: 102, 67, 48 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + /// Whether this reagent should get the tastes of food it's in applied onto it + var/carry_food_tastes = TRUE + var/brute_heal = 1 var/burn_heal = 0 @@ -121,11 +124,14 @@ data = taste_amounts /datum/reagent/consumable/nutriment/get_taste_description(mob/living/taster) - return data + if(length(data)) + return data + return ..() /datum/reagent/consumable/nutriment/vitamin name = "Vitamin" description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." + taste_description = "bitterness" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED brute_heal = 1 @@ -140,6 +146,7 @@ /datum/reagent/consumable/nutriment/protein name = "Protein" description = "A natural polyamide made up of amino acids. An essential constituent of mosts known forms of life." + taste_description = "chalk" brute_heal = 0.8 //Rewards the player for eating a balanced diet. nutriment_factor = 9 //45% as calorie dense as oil. chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -212,6 +219,7 @@ color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil) taste_mult = 0.8 taste_description = "oil" + carry_food_tastes = FALSE nutriment_factor = 7 //Not very healthy on its own metabolization_rate = 10 * REAGENTS_METABOLISM penetrates_skin = NONE @@ -239,9 +247,15 @@ taste_description = "rich earthy pungent" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED +/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining + name = "Stomach Lining" + description = "Natural tissue that keeps your stomach safe." + carry_food_tastes = FALSE // Don't want stomachs to leech the flavours of what they eat + /datum/reagent/consumable/nutriment/cloth_fibers name = "Cloth Fibers" description = "It's not actually a form of nutriment but it does keep Mothpeople going for a short while..." + taste_description = "cloth" nutriment_factor = 30 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED brute_heal = 0 @@ -266,6 +280,7 @@ /datum/reagent/consumable/nutriment/mineral name = "Mineral Slurry" description = "Minerals pounded into a paste, nutritious only if you too are made of rocks." + taste_description = "minerals" color = COLOR_WEBSAFE_DARK_GRAY chemical_flags = NONE brute_heal = 0 @@ -426,7 +441,7 @@ return var/mob/living/carbon/victim = exposed_mob - if(methods & (TOUCH|VAPOR)) + if(methods & (TOUCH|VAPOR|INHALE)) //check for protection //actually handle the pepperspray effects if (!victim.is_pepper_proof()) // you need both eye and mouth protection @@ -547,7 +562,7 @@ affected_mob.Paralyze(10) affected_mob.set_jitter_if_lower(20 SECONDS) else - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_CULINARY_METABOLISM)) if(SPT_PROB(10, seconds_per_tick)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE)) @@ -566,7 +581,7 @@ return var/mob/living/carbon/victim = exposed_mob - if(methods & (TOUCH | VAPOR)) + if(methods & (TOUCH | VAPOR | INHALE)) var/tear_proof = victim.is_eyes_covered() if (!tear_proof) to_chat(exposed_mob, span_warning("Your eyes sting!")) @@ -582,7 +597,7 @@ /datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE)) return UPDATE_MOB_HEALTH @@ -952,11 +967,11 @@ /datum/reagent/consumable/liquidelectricity/enriched/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) //can't be on life because of the way blood works. . = ..() - if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(exposed_mob)) + if(!(methods & (INGEST|INJECT|PATCH|INHALE)) || !iscarbon(exposed_mob)) return var/mob/living/carbon/exposed_carbon = exposed_mob - var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) stomach.adjust_charge(reac_volume * 0.03 * ETHEREAL_CHARGE_NORMAL) diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents.dm index 20cd80d9c5b..b9c0ee0522d 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents.dm @@ -16,7 +16,7 @@ /datum/reagent/impurity/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) var/need_mob_update if(liver)//Though, lets be safe diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm index 1bf91cc898d..eb81359ce58 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm @@ -141,21 +141,21 @@ Basically, we fill the time between now and 2s from now with hands based off the return RegisterSignal(consumer, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ)) RegisterSignal(consumer, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ)) - var/obj/item/organ/internal/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) this_liver.alcohol_tolerance *= 2 /datum/reagent/inverse/libitoil/proc/on_gained_organ(mob/prev_owner, obj/item/organ/organ) SIGNAL_HANDLER - if(!istype(organ, /obj/item/organ/internal/liver)) + if(!istype(organ, /obj/item/organ/liver)) return - var/obj/item/organ/internal/liver/this_liver = organ + var/obj/item/organ/liver/this_liver = organ this_liver.alcohol_tolerance *= 2 /datum/reagent/inverse/libitoil/proc/on_removed_organ(mob/prev_owner, obj/item/organ/organ) SIGNAL_HANDLER - if(!istype(organ, /obj/item/organ/internal/liver)) + if(!istype(organ, /obj/item/organ/liver)) return - var/obj/item/organ/internal/liver/this_liver = organ + var/obj/item/organ/liver/this_liver = organ this_liver.alcohol_tolerance /= 2 /datum/reagent/inverse/libitoil/on_mob_delete(mob/living/affected_mob) @@ -163,7 +163,7 @@ Basically, we fill the time between now and 2s from now with hands based off the var/mob/living/carbon/consumer = affected_mob UnregisterSignal(consumer, COMSIG_CARBON_LOSE_ORGAN) UnregisterSignal(consumer, COMSIG_CARBON_GAIN_ORGAN) - var/obj/item/organ/internal/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER) if(!this_liver) return this_liver.alcohol_tolerance /= 2 @@ -337,19 +337,19 @@ Basically, we fill the time between now and 2s from now with hands based off the . = ..() RegisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ)) RegisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ)) - var/obj/item/organ/internal/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) if(!lungs) return apply_lung_levels(lungs) /datum/reagent/inverse/healing/convermol/proc/on_gained_organ(mob/prev_owner, obj/item/organ/organ) SIGNAL_HANDLER - if(!istype(organ, /obj/item/organ/internal/lungs)) + if(!istype(organ, /obj/item/organ/lungs)) return - var/obj/item/organ/internal/lungs/lungs = organ + var/obj/item/organ/lungs/lungs = organ apply_lung_levels(lungs) -/datum/reagent/inverse/healing/convermol/proc/apply_lung_levels(obj/item/organ/internal/lungs/lungs) +/datum/reagent/inverse/healing/convermol/proc/apply_lung_levels(obj/item/organ/lungs/lungs) cached_heat_level_1 = lungs.heat_level_1_threshold cached_heat_level_2 = lungs.heat_level_2_threshold cached_heat_level_3 = lungs.heat_level_3_threshold @@ -367,12 +367,12 @@ Basically, we fill the time between now and 2s from now with hands based off the /datum/reagent/inverse/healing/convermol/proc/on_removed_organ(mob/prev_owner, obj/item/organ/organ) SIGNAL_HANDLER - if(!istype(organ, /obj/item/organ/internal/lungs)) + if(!istype(organ, /obj/item/organ/lungs)) return - var/obj/item/organ/internal/lungs/lungs = organ + var/obj/item/organ/lungs/lungs = organ restore_lung_levels(lungs) -/datum/reagent/inverse/healing/convermol/proc/restore_lung_levels(obj/item/organ/internal/lungs/lungs) +/datum/reagent/inverse/healing/convermol/proc/restore_lung_levels(obj/item/organ/lungs/lungs) lungs.heat_level_1_threshold = cached_heat_level_1 lungs.heat_level_2_threshold = cached_heat_level_2 lungs.heat_level_3_threshold = cached_heat_level_3 @@ -384,7 +384,7 @@ Basically, we fill the time between now and 2s from now with hands based off the . = ..() UnregisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN) UnregisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN) - var/obj/item/organ/internal/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) if(!lungs) return restore_lung_levels(lungs) @@ -495,7 +495,7 @@ Basically, we fill the time between now and 2s from now with hands based off the /datum/reagent/inverse/penthrite/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick) . = ..() - var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) if(!heart || heart.organ_flags & ORGAN_FAILING) return metabolization_rate = 0.2 * REM @@ -529,7 +529,7 @@ Basically, we fill the time between now and 2s from now with hands based off the affected_mob.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nooartrium) if(affected_mob.health < HEALTH_THRESHOLD_FULLCRIT) affected_mob.add_actionspeed_modifier(/datum/actionspeed_modifier/nooartrium) - var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) if(!heart || heart.organ_flags & ORGAN_FAILING) remove_buffs(affected_mob) if(need_mob_update) @@ -538,7 +538,7 @@ Basically, we fill the time between now and 2s from now with hands based off the /datum/reagent/inverse/penthrite/on_mob_delete(mob/living/carbon/affected_mob) . = ..() remove_buffs(affected_mob) - var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) if(affected_mob.health < -500 || heart.organ_flags & ORGAN_FAILING)//Honestly commendable if you get -500 explosion(affected_mob, light_impact_range = 1, explosion_cause = src) qdel(heart) @@ -548,7 +548,7 @@ Basically, we fill the time between now and 2s from now with hands based off the . = ..() if(!back_from_the_dead) return ..() - var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) if(!heart) //No heart? No life! REMOVE_TRAIT(affected_mob, TRAIT_NODEATH, type) affected_mob.stat = DEAD @@ -634,7 +634,7 @@ Basically, we fill the time between now and 2s from now with hands based off the ) forbiddentraumas += typesof(/datum/brain_trauma/very_special) // NOVA EDIT ADDITION - No very special (lewd) quirks gained by inverse neurine traumalist -= forbiddentraumas - var/obj/item/organ/internal/brain/brain = affected_mob.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = affected_mob.get_organ_slot(ORGAN_SLOT_BRAIN) traumalist = shuffle(traumalist) for(var/trauma in traumalist) if(brain.brain_gain_trauma(trauma, TRAUMA_RESILIENCE_MAGIC)) @@ -666,7 +666,7 @@ Basically, we fill the time between now and 2s from now with hands based off the if(!iscarbon(affected_mob)) return var/mob/living/carbon/carbon_mob = affected_mob - var/obj/item/organ/internal/heart/affected_heart = carbon_mob.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/affected_heart = carbon_mob.get_organ_slot(ORGAN_SLOT_HEART) if(isnull(affected_heart)) return carbon_mob.AddComponent(/datum/component/manual_heart) diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm index 0872fa66588..4e904dcf684 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm @@ -29,7 +29,7 @@ /datum/reagent/impurity/methanol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) if(eyes?.apply_organ_damage(0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)) return UPDATE_MOB_HEALTH @@ -59,7 +59,7 @@ /datum/reagent/impurity/rosenol/on_mob_life(mob/living/carbon/owner, seconds_per_tick) . = ..() - var/obj/item/organ/internal/tongue/tongue = owner.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = owner.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return if(SPT_PROB(4.0, seconds_per_tick)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 8a9095f94d7..d33a73eecd5 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -355,7 +355,7 @@ if(!iscarbon(exposed_mob) || (exposed_mob.stat == DEAD)) return - if(methods & (INGEST|VAPOR|INJECT)) + if(methods & (INGEST|VAPOR|INJECT|INHALE)) exposed_mob.adjust_nutrition(-5) if(show_message) to_chat(exposed_mob, span_warning("Your stomach feels empty and cramps!")) @@ -559,7 +559,7 @@ var/need_mob_update need_mob_update = affected_mob.adjustOxyLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) if(affected_mob.losebreath >= 4) - var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type // use lungs' respiration type or mob_respiration_type if no lungs if(our_respiration_type & affected_respiration_type) affected_mob.losebreath -= 2 * REM * seconds_per_tick @@ -698,33 +698,33 @@ return RegisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ)) RegisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ)) - var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) if(!eyes) return improve_eyesight(affected_mob, eyes) -/datum/reagent/medicine/oculine/proc/improve_eyesight(mob/living/carbon/affected_mob, obj/item/organ/internal/eyes/eyes) +/datum/reagent/medicine/oculine/proc/improve_eyesight(mob/living/carbon/affected_mob, obj/item/organ/eyes/eyes) delta_light = creation_purity*10 eyes.lighting_cutoff += delta_light affected_mob.update_sight() -/datum/reagent/medicine/oculine/proc/restore_eyesight(mob/living/carbon/affected_mob, obj/item/organ/internal/eyes/eyes) +/datum/reagent/medicine/oculine/proc/restore_eyesight(mob/living/carbon/affected_mob, obj/item/organ/eyes/eyes) eyes.lighting_cutoff -= delta_light affected_mob.update_sight() /datum/reagent/medicine/oculine/proc/on_gained_organ(mob/affected_mob, obj/item/organ/organ) SIGNAL_HANDLER - if(!istype(organ, /obj/item/organ/internal/eyes)) + if(!istype(organ, /obj/item/organ/eyes)) return - var/obj/item/organ/internal/eyes/affected_eyes = organ + var/obj/item/organ/eyes/affected_eyes = organ improve_eyesight(affected_mob, affected_eyes) /datum/reagent/medicine/oculine/proc/on_removed_organ(mob/prev_affected_mob, obj/item/organ/organ) SIGNAL_HANDLER - if(!istype(organ, /obj/item/organ/internal/eyes)) + if(!istype(organ, /obj/item/organ/eyes)) return - var/obj/item/organ/internal/eyes/eyes = organ + var/obj/item/organ/eyes/eyes = organ restore_eyesight(prev_affected_mob, eyes) /datum/reagent/medicine/oculine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) @@ -732,7 +732,7 @@ var/normalized_purity = normalise_creation_purity() affected_mob.adjust_temp_blindness(-4 SECONDS * REM * seconds_per_tick * normalized_purity) affected_mob.adjust_eye_blur(-4 SECONDS * REM * seconds_per_tick * normalized_purity) - var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) if(eyes) // Healing eye damage will cure nearsightedness and blindness from ... eye damage if(eyes.apply_organ_damage(-2 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags)) @@ -749,7 +749,7 @@ /datum/reagent/medicine/oculine/on_mob_delete(mob/living/affected_mob) . = ..() - var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES) if(!eyes) return restore_eyesight(affected_mob, eyes) @@ -778,7 +778,7 @@ /datum/reagent/medicine/inacusiate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/ears/ears = affected_mob.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = affected_mob.get_organ_slot(ORGAN_SLOT_EARS) if(!ears) return ears.adjustEarDamage(-4 * REM * seconds_per_tick * normalise_creation_purity(), -4 * REM * seconds_per_tick * normalise_creation_purity()) @@ -813,7 +813,7 @@ need_mob_update += affected_mob.adjustOxyLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) if(need_mob_update) . = UPDATE_MOB_HEALTH - var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type if(our_respiration_type & affected_respiration_type) affected_mob.losebreath = 0 @@ -853,7 +853,7 @@ need_mob_update += affected_mob.adjustFireLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjustOxyLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) if(affected_mob.losebreath >= 4) - var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type if(our_respiration_type & affected_respiration_type) affected_mob.losebreath -= 2 * REM * seconds_per_tick @@ -880,7 +880,7 @@ var/need_mob_update need_mob_update = affected_mob.adjustStaminaLoss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE) need_mob_update += affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) - var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type if(our_respiration_type & affected_respiration_type) affected_mob.losebreath++ @@ -948,7 +948,7 @@ exposed_mob.visible_message(span_warning("[exposed_mob]'s body does not react...")) return - if(iscarbon(exposed_mob) && !(methods & INGEST)) //simplemobs can still be splashed + if(iscarbon(exposed_mob) && !(methods & (INGEST|INHALE))) //simplemobs can still be splashed return ..() if(HAS_TRAIT(exposed_mob, TRAIT_HUSK)) @@ -1708,10 +1708,10 @@ affected_mob.adjustOxyLoss(rand(3, 4) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) if(prob(50)) - var/obj/item/organ/internal/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) our_lungs.apply_organ_damage(1 * REM * seconds_per_tick) else - var/obj/item/organ/internal/heart/our_heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/our_heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) our_heart.apply_organ_damage(1 * REM * seconds_per_tick) return UPDATE_MOB_HEALTH diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 8347c62629c..b18e3fe69eb 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -41,7 +41,7 @@ continue exposed_mob.ForceContractDisease(strain) - else if((methods & VAPOR) && (strain.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS)) + else if((methods & (VAPOR|INHALE)) && (strain.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS)) if(!strain.has_required_infectious_organ(exposed_mob, ORGAN_SLOT_LUNGS)) continue @@ -50,7 +50,7 @@ exposed_mob.ContactContractDisease(strain) if(data && data["resistances"]) - if(methods & (INGEST|INJECT)) //have to inject or ingest it. no curefoam/cheap curesprays + if(methods & (INGEST|INJECT|INHALE)) //have to inject, inhale or ingest it. no curefoam/cheap curesprays for(var/stuff in exposed_mob.diseases) var/datum/disease/infection = stuff if(infection.GetDiseaseID() in data["resistances"]) @@ -1333,7 +1333,7 @@ /datum/reagent/fuel/on_mob_life(mob/living/carbon/victim, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM)) return if(victim.adjustToxLoss(0.5 * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) @@ -1469,10 +1469,10 @@ /datum/reagent/cyborg_mutation_nanomachines/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0) . = ..() - var/obj/item/organ/internal/liver/liver = exposed_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = exposed_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM)) return - if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) + if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) exposed_mob.ForceContractDisease(new /datum/disease/transformation/robot(), FALSE, TRUE) /datum/reagent/xenomicrobes @@ -1484,7 +1484,7 @@ /datum/reagent/xenomicrobes/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0) . = ..() - if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) + if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) exposed_mob.ForceContractDisease(new /datum/disease/transformation/xeno(), FALSE, TRUE) /datum/reagent/fungalspores @@ -1497,7 +1497,7 @@ /datum/reagent/fungalspores/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0) . = ..() - if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) + if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) exposed_mob.ForceContractDisease(new /datum/disease/tuberculosis(), FALSE, TRUE) /datum/reagent/snail @@ -1510,7 +1510,7 @@ /datum/reagent/snail/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0) . = ..() - if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) + if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) exposed_mob.ForceContractDisease(new /datum/disease/gastrolosis(), FALSE, TRUE) /datum/reagent/fluorosurfactant//foam precursor @@ -1606,10 +1606,13 @@ /datum/reagent/nitrous_oxide/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) . = ..() - if(methods & VAPOR) + if(methods & (VAPOR|INHALE)) // apply 2 seconds of drowsiness per unit applied, with a min duration of 4 seconds var/drowsiness_to_apply = max(round(reac_volume, 1) * 2 SECONDS, 4 SECONDS) exposed_mob.adjust_drowsiness(drowsiness_to_apply) + if(methods & INHALE) + exposed_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25 * reac_volume, required_organ_flag = affected_organ_flags) + exposed_mob.adjust_hallucinations(10 SECONDS * reac_volume) /datum/reagent/nitrous_oxide/on_mob_metabolize(mob/living/affected_mob) . = ..() @@ -1965,7 +1968,7 @@ /datum/reagent/carpet/royal/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(liver) // Heads of staff and the captain have a "royal metabolism" if(HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM)) @@ -2459,7 +2462,7 @@ . = ..() // Silently add the zombie infection organ to be activated upon death if(!exposed_mob.get_organ_slot(ORGAN_SLOT_ZOMBIE)) - var/obj/item/organ/internal/zombie_infection/nodamage/ZI = new() + var/obj/item/organ/zombie_infection/nodamage/ZI = new() ZI.Insert(exposed_mob) /datum/reagent/magillitis @@ -2635,7 +2638,7 @@ /datum/reagent/gondola_mutation_toxin/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0) . = ..() - if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) + if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) exposed_mob.ForceContractDisease(new gondola_disease, FALSE, TRUE) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index d00185f4f69..a5d8fdaae18 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -54,7 +54,7 @@ . = ..() if(!exposed_mob.can_mutate()) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - if(((methods & VAPOR) && prob(min(33, reac_volume))) || (methods & (INGEST|PATCH|INJECT))) + if(((methods & VAPOR) && prob(min(33, reac_volume))) || (methods & (INGEST|PATCH|INJECT|INHALE))) exposed_mob.random_mutate_unique_identity() exposed_mob.random_mutate_unique_features() if(prob(98)) @@ -258,7 +258,7 @@ /datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob) . = ..() holder_mob.adjustOxyLoss(0.5*REM, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) - if((data?["method"] & INGEST) && holder_mob.stat != DEAD) + if((data?["method"] & (INGEST|INHALE)) && holder_mob.stat != DEAD) holder_mob.fakedeath(type) /datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/affected_mob) @@ -268,10 +268,10 @@ /datum/reagent/toxin/zombiepowder/on_transfer(atom/target_atom, methods, trans_volume) . = ..() var/datum/reagent/zombiepowder = target_atom.reagents.has_reagent(/datum/reagent/toxin/zombiepowder) - if(!zombiepowder || !(methods & INGEST)) + if(!zombiepowder || !(methods & (INGEST|INHALE))) return LAZYINITLIST(zombiepowder.data) - zombiepowder.data["method"] |= INGEST + zombiepowder.data["method"] |= (INGEST|INHALE) /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/affected_mob, seconds_per_tick, times_fired) . = ..() @@ -655,7 +655,7 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED /datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) - var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)) //mmmm, the forbidden pickle juice if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) //it counteracts its own toxin damage. return UPDATE_MOB_HEALTH @@ -1085,11 +1085,11 @@ . = ..() if(!istype(exposed_carbon)) return - var/obj/item/organ/internal/liver/liver = exposed_carbon.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = exposed_carbon.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM)) return reac_volume = round(reac_volume,0.1) - if(methods & INGEST) + if(methods & (INGEST|INHALE)) exposed_carbon.adjustBruteLoss(min(6*toxpwr, reac_volume * toxpwr), required_bodytype = affected_bodytype) return if(methods & INJECT) @@ -1341,7 +1341,7 @@ if(SPT_PROB(20, seconds_per_tick)) affected_mob.set_jitter_if_lower(rand(2 SECONDS, 3 SECONDS) * REM * seconds_per_tick) if(SPT_PROB(5, seconds_per_tick)) - var/obj/item/organ/internal/tongue/tongue = affected_mob.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = affected_mob.get_organ_slot(ORGAN_SLOT_TONGUE) if(tongue) to_chat(affected_mob, span_warning("Your [tongue.name] feels numb...")) affected_mob.set_slurring_if_lower(5 SECONDS * REM * seconds_per_tick) diff --git a/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm b/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm index 8c093888028..b34461f99b4 100644 --- a/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm +++ b/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm @@ -43,7 +43,7 @@ //This looks rediculous, but expose is usually called from the donor reagents datum - we want to edit the post exposure version present in the mob. var/mob/living/carbon/carby = living_mob //But because carbon mobs have stomachs we have to search in there because we're ingested - var/obj/item/organ/internal/stomach/stomach = carby.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/stomach = carby.get_organ_slot(ORGAN_SLOT_STOMACH) var/datum/reagent/eigenstate/eigen if(stomach) eigen = stomach.reagents.has_reagent(/datum/reagent/eigenstate) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 9e6c9da53a0..acde1703668 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -314,8 +314,8 @@ // Not quite the same if the reaction is in their stomach; they'll throw up // from any explosion, but it'll only make them puke up everything in their // stomach - else if (istype(holder.my_atom, /obj/item/organ/internal/stomach)) - var/obj/item/organ/internal/stomach/indigestion = holder.my_atom + else if (istype(holder.my_atom, /obj/item/organ/stomach)) + var/obj/item/organ/stomach/indigestion = holder.my_atom if(power < 1) return indigestion.owner?.vomit(MOB_VOMIT_MESSAGE | MOB_VOMIT_FORCE, lost_nutrition = 150, distance = 5, purge_ratio = 1) diff --git a/code/modules/reagents/chemistry/taste.dm b/code/modules/reagents/chemistry/taste.dm new file mode 100644 index 00000000000..06cee0bba2d --- /dev/null +++ b/code/modules/reagents/chemistry/taste.dm @@ -0,0 +1,77 @@ + +#define TEXT_NO_TASTE "something indescribable" + +//================================TASTE=================================================== +/** + * Returns what this reagents in our given list taste like + * + * Arguments: + * * list/reagent_list - List of reagents to taste. + * * mob/living/taster - Who is doing the tasting. Some mobs can pick up specific flavours. + * * minimum_percent - The lower the minimum percent, the more sensitive the message is. + * * weight_modifier - Value to multiply each reagent's taste weight with. + */ +/proc/generate_reagents_taste_message(list/reagent_list, mob/living/taster, minimum_percent) + // We can't taste anything + if(minimum_percent > 100) + return TEXT_NO_TASTE + + // Associative list of our tastes, descriptor - strength + var/list/tastes = list() + // Total of our taste strengths so far + var/total_taste = 0 + + for(var/datum/reagent/reagent as anything in reagent_list) + if(!reagent.taste_mult) + continue + + var/list/taste_data = reagent.get_taste_description(taster) + for(var/taste in taste_data) + var/taste_strength = taste_data[taste] * reagent.volume * reagent.taste_mult + if(taste in tastes) + tastes[taste] += taste_strength + else + tastes[taste] = taste_strength + total_taste += taste_strength + + // None of our reagents had any flavour + if(total_taste <= 0) + return TEXT_NO_TASTE + + // If we have exactly one taste, don't bother with relative strengths + if(length(tastes) == 1) + return tastes[1] + + // Sort tastes descending by strength, so strong flavours come first + sortTim(tastes, cmp = GLOBAL_PROC_REF(cmp_numeric_dsc), associative = TRUE) + + // Lazylists for different taste strength categories, no need to initialize if we don't have such flavors + var/list/strong + var/list/mild + var/list/hint + + for(var/taste_desc in tastes) + var/percent = tastes[taste_desc]/total_taste * 100 + if(percent < minimum_percent) + continue + + if(percent <= minimum_percent * 2) + LAZYADD(hint, taste_desc) + else if(percent > minimum_percent * 4) + LAZYADD(strong, taste_desc) + else + LAZYADD(mild, taste_desc) + + var/list/out = list() + + if(LAZYLEN(strong)) + out += "the strong flavor of [english_list(strong, TEXT_NO_TASTE)]" + if(LAZYLEN(mild)) + // Prefix "some " if there are strong flavors to avoid seeming like a strong flavor + out += "[LAZYLEN(strong) ? "some " : ""][english_list(mild, TEXT_NO_TASTE)]" + if(LAZYLEN(hint)) + out += "a hint of [english_list(hint, TEXT_NO_TASTE)]" + + return english_list(out, TEXT_NO_TASTE) + +#undef TEXT_NO_TASTE diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 9e7e0845166..4a61c12a500 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -72,7 +72,7 @@ . += span_notice("Left-click or right-click in-hand to view its transfer amount.") if(isliving(user) && HAS_TRAIT(user, TRAIT_REMOTE_TASTING)) var/mob/living/living_user = user - living_user.taste(reagents) + living_user.taste_container(reagents) /obj/item/reagent_containers/create_reagents(max_vol, flags) . = ..() diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 4c61f7af269..6c3c9c1b118 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -19,6 +19,10 @@ var/gulp_size = 5 ///Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it. var/isGlass = FALSE + ///What kind of chem transfer method does this cup use. Defaults to INGEST + var/reagent_consumption_method = INGEST + ///What sound does our consumption play on consuming from the container? + var/consumption_sound = 'sound/items/drink.ogg' /obj/item/reagent_containers/cup/examine(mob/user) . = ..() @@ -87,9 +91,9 @@ SEND_SIGNAL(src, COMSIG_GLASS_DRANK, target_mob, user) SEND_SIGNAL(target_mob, COMSIG_GLASS_DRANK, src, user) // NOVA EDIT ADDITION - Hemophages can't casually drink what's not going to regenerate their blood var/fraction = min(gulp_size/reagents.total_volume, 1) - reagents.trans_to(target_mob, gulp_size, transferred_by = user, methods = INGEST) + reagents.trans_to(target_mob, gulp_size, transferred_by = user, methods = reagent_consumption_method) checkLiked(fraction, target_mob) - playsound(target_mob.loc,'sound/items/drink.ogg', rand(10,50), TRUE) + playsound(target_mob.loc, consumption_sound, rand(10,50), TRUE) if(!iscarbon(target_mob)) return var/mob/living/carbon/carbon_drinker = target_mob diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index dcf56faec4c..5712d383f0b 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -693,7 +693,7 @@ return //The bonus to success chance that the user gets for being a command role - var/obj/item/organ/internal/liver/liver = user.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = user.get_organ_slot(ORGAN_SLOT_LIVER) var/command_bonus = (!isnull(liver) && HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM)) ? 20 : 0 //The bonus to success chance that the user gets for having a sabrage skillchip installed/otherwise having the trait through other means diff --git a/code/modules/reagents/withdrawal/generic_addictions.dm b/code/modules/reagents/withdrawal/generic_addictions.dm index 8dc10cf0a50..d385078086f 100644 --- a/code/modules/reagents/withdrawal/generic_addictions.dm +++ b/code/modules/reagents/withdrawal/generic_addictions.dm @@ -111,7 +111,7 @@ to_chat(affected_human, span_warning("Your chin itches.")) affected_human.set_facial_hairstyle("Beard (Full)", update = TRUE) //Only like gross food - var/obj/item/organ/internal/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) return tongue.liked_foodtypes = GROSS @@ -124,7 +124,7 @@ return to_chat(affected_carbon, span_warning("You feel yourself adapt to the darkness.")) var/mob/living/carbon/human/affected_human = affected_carbon - var/obj/item/organ/internal/eyes/empowered_eyes = affected_human.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/empowered_eyes = affected_human.get_organ_by_type(/obj/item/organ/eyes) if(empowered_eyes) ADD_TRAIT(affected_human, TRAIT_NIGHT_VISION, "maint_drug_addiction") empowered_eyes?.refresh() @@ -146,7 +146,7 @@ . = ..() affected_carbon.remove_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type) //restore tongue's tastes - var/obj/item/organ/internal/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE) if(tongue) tongue.liked_foodtypes = initial(tongue.liked_foodtypes) tongue.disliked_foodtypes = initial(tongue.disliked_foodtypes) @@ -155,7 +155,7 @@ return var/mob/living/carbon/human/affected_human = affected_carbon REMOVE_TRAIT(affected_human, TRAIT_NIGHT_VISION, "maint_drug_addiction") - var/obj/item/organ/internal/eyes/eyes = affected_human.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes = affected_human.get_organ_by_type(/obj/item/organ/eyes) eyes?.refresh() ///Makes you a hypochondriac - I'd like to call it hypochondria, but "I could use some hypochondria" doesn't work @@ -195,7 +195,7 @@ if(!HAS_TRAIT(affected_carbon, TRAIT_RESISTCOLD)) possibilities += /datum/hallucination/fake_alert/cold - var/obj/item/organ/internal/lungs/lungs = affected_carbon.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/lungs = affected_carbon.get_organ_slot(ORGAN_SLOT_LUNGS) if(lungs) if(lungs.safe_oxygen_min) possibilities += /datum/hallucination/fake_alert/need_oxygen diff --git a/code/modules/religion/burdened/burdened_trauma.dm b/code/modules/religion/burdened/burdened_trauma.dm index 51e763dbcb5..ebdfcda6565 100644 --- a/code/modules/religion/burdened/burdened_trauma.dm +++ b/code/modules/religion/burdened/burdened_trauma.dm @@ -153,8 +153,8 @@ if(!(organ.slot in critical_slots)) return FALSE - else if(istype(organ, /obj/item/organ/internal/eyes)) - var/obj/item/organ/internal/eyes/eyes = organ + else if(istype(organ, /obj/item/organ/eyes)) + var/obj/item/organ/eyes/eyes = organ if(eyes.tint < TINT_BLIND) //unless you were already blinded by them (flashlight eyes), this is adding burden! return TRUE return FALSE diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm index 8352e2c10ab..0fc67738913 100644 --- a/code/modules/religion/burdened/psyker.dm +++ b/code/modules/religion/burdened/psyker.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/brain/psyker +/obj/item/organ/brain/psyker name = "psyker brain" desc = "This brain is blue, split into two hemispheres, and has immense psychic powers. What kind of monstrosity would use that?" icon_state = "brain-psyker" @@ -10,17 +10,17 @@ organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP, TRAIT_ANTIMAGIC_NO_SELFBLOCK) w_class = WEIGHT_CLASS_NORMAL -/obj/item/organ/internal/brain/psyker/on_mob_insert(mob/living/carbon/inserted_into) +/obj/item/organ/brain/psyker/on_mob_insert(mob/living/carbon/inserted_into) . = ..() inserted_into.AddComponent(/datum/component/echolocation, blocking_trait = TRAIT_DUMB, echo_group = "psyker", echo_icon = "psyker", color_path = /datum/client_colour/psyker) inserted_into.AddComponent(/datum/component/anti_magic, antimagic_flags = MAGIC_RESISTANCE_MIND) -/obj/item/organ/internal/brain/psyker/on_mob_remove(mob/living/carbon/removed_from) +/obj/item/organ/brain/psyker/on_mob_remove(mob/living/carbon/removed_from) . = ..() qdel(removed_from.GetComponent(/datum/component/echolocation)) qdel(removed_from.GetComponent(/datum/component/anti_magic)) -/obj/item/organ/internal/brain/psyker/on_life(seconds_per_tick, times_fired) +/obj/item/organ/brain/psyker/on_life(seconds_per_tick, times_fired) . = ..() var/obj/item/bodypart/head/psyker/psyker_head = owner.get_bodypart(zone) if(istype(psyker_head)) @@ -72,15 +72,15 @@ /// Proc with no side effects that turns someone into a psyker. returns FALSE if it could not psykerize. /mob/living/carbon/human/proc/psykerize() var/obj/item/bodypart/head/old_head = get_bodypart(BODY_ZONE_HEAD) - var/obj/item/organ/internal/brain/old_brain = get_organ_slot(ORGAN_SLOT_BRAIN) - var/obj/item/organ/internal/old_eyes = get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/brain/old_brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/old_eyes = get_organ_slot(ORGAN_SLOT_EYES) if(stat == DEAD || !old_head || !old_brain) return FALSE var/obj/item/bodypart/head/psyker/psyker_head = new() if(!psyker_head.replace_limb(src, special = TRUE)) return FALSE qdel(old_head) - var/obj/item/organ/internal/brain/psyker/psyker_brain = new() + var/obj/item/organ/brain/psyker/psyker_brain = new() old_brain.before_organ_replacement(psyker_brain) old_brain.Remove(src, special = TRUE, movement_flags = NO_ID_TRANSFER) qdel(old_brain) diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm index b1c055ec9bd..58209cac74a 100644 --- a/code/modules/religion/religion_sects.dm +++ b/code/modules/religion/religion_sects.dm @@ -169,7 +169,7 @@ //first we determine if we can charge them var/did_we_charge = FALSE - var/obj/item/organ/internal/stomach/ethereal/eth_stomach = blessed.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/ethereal/eth_stomach = blessed.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(eth_stomach)) eth_stomach.adjust_charge(0.06 * STANDARD_CELL_CHARGE) did_we_charge = TRUE diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm index b54c4e09b29..cd0fabba849 100644 --- a/code/modules/religion/rites.dm +++ b/code/modules/religion/rites.dm @@ -132,31 +132,31 @@ list( // Arms list( - /obj/item/organ/internal/cyberimp/arm/combat = 1, - /obj/item/organ/internal/cyberimp/arm/surgery = 1000000, - /obj/item/organ/internal/cyberimp/arm/toolset = 1500000, + /obj/item/organ/cyberimp/arm/combat = 1, + /obj/item/organ/cyberimp/arm/surgery = 1000000, + /obj/item/organ/cyberimp/arm/toolset = 1500000, ) = 15, // Eyes list( - /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic = 1, - /obj/item/organ/internal/cyberimp/eyes/hud/medical = 1, - /obj/item/organ/internal/eyes/robotic/glow = 1, - /obj/item/organ/internal/eyes/robotic/shield = 2, + /obj/item/organ/cyberimp/eyes/hud/diagnostic = 1, + /obj/item/organ/cyberimp/eyes/hud/medical = 1, + /obj/item/organ/eyes/robotic/glow = 1, + /obj/item/organ/eyes/robotic/shield = 2, ) = 15, // Chest list( - /obj/item/organ/internal/cyberimp/chest/reviver = 1, - /obj/item/organ/internal/cyberimp/chest/thrusters = 2, + /obj/item/organ/cyberimp/chest/reviver = 1, + /obj/item/organ/cyberimp/chest/thrusters = 2, ) = 9, // Brain / Head list( - /obj/item/organ/internal/cyberimp/brain/anti_drop = 50, - /obj/item/organ/internal/cyberimp/brain/connector = 50, - /obj/item/organ/internal/cyberimp/brain/anti_stun = 10, + /obj/item/organ/cyberimp/brain/anti_drop = 50, + /obj/item/organ/cyberimp/brain/connector = 50, + /obj/item/organ/cyberimp/brain/anti_stun = 10, ) = 10, // Misc list( - /obj/item/organ/internal/cyberimp/mouth/breathing_tube = 1, + /obj/item/organ/cyberimp/mouth/breathing_tube = 1, ) = 5, ) ) @@ -264,7 +264,7 @@ if(!HAS_TRAIT_FROM(user, TRAIT_HOPELESSLY_ADDICTED, "maint_adaptation")) to_chat(user, span_warning("You need to adapt to maintenance first.")) return FALSE - var/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/adapted = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/night_vision/maintenance_adapted/adapted = user.get_organ_slot(ORGAN_SLOT_EYES) if(adapted && istype(adapted)) to_chat(user, span_warning("Your eyes are already adapted!")) return FALSE @@ -272,12 +272,12 @@ /datum/religion_rites/adapted_eyes/invoke_effect(mob/living/carbon/human/user, atom/movable/religious_tool) ..() - var/obj/item/organ/internal/eyes/oldeyes = user.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/oldeyes = user.get_organ_slot(ORGAN_SLOT_EYES) to_chat(user, span_warning("You feel your eyes adapt to the darkness!")) if(oldeyes) oldeyes.Remove(user, special = TRUE) qdel(oldeyes)//eh - var/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/neweyes = new + var/obj/item/organ/eyes/night_vision/maintenance_adapted/neweyes = new neweyes.Insert(user, special = TRUE) /datum/religion_rites/adapted_food diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index ef8c762acd7..53309d39c7d 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -41,7 +41,7 @@ id = "heart" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 30) - build_path = /obj/item/organ/internal/heart + build_path = /obj/item/organ/heart category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) /datum/design/lungs @@ -49,7 +49,7 @@ id = "lungs" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/internal/lungs + build_path = /obj/item/organ/lungs category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) /datum/design/liver @@ -57,7 +57,7 @@ id = "liver" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/internal/liver + build_path = /obj/item/organ/liver category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) /datum/design/stomach @@ -65,7 +65,7 @@ id = "stomach" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 15) - build_path = /obj/item/organ/internal/stomach + build_path = /obj/item/organ/stomach category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) /datum/design/appendix @@ -73,7 +73,7 @@ id = "appendix" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 5) //why would you need this - build_path = /obj/item/organ/internal/appendix + build_path = /obj/item/organ/appendix category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) /datum/design/eyes @@ -81,7 +81,7 @@ id = "eyes" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) - build_path = /obj/item/organ/internal/eyes + build_path = /obj/item/organ/eyes category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) /datum/design/ears @@ -89,7 +89,7 @@ id = "ears" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) - build_path = /obj/item/organ/internal/ears + build_path = /obj/item/organ/ears category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) /datum/design/tongue @@ -97,7 +97,7 @@ id = "tongue" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) - build_path = /obj/item/organ/internal/tongue + build_path = /obj/item/organ/tongue category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL) // Grows a fake lizard tail - not usable in lizard wine and other similar recipes. @@ -106,7 +106,7 @@ id = "liztail" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/external/tail/lizard/fake + build_path = /obj/item/organ/tail/lizard/fake category = list(SPECIES_LIZARD) /datum/design/lizard_tongue @@ -114,7 +114,7 @@ id = "liztongue" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/internal/tongue/lizard + build_path = /obj/item/organ/tongue/lizard category = list(SPECIES_LIZARD) /datum/design/monkey_tail @@ -122,7 +122,7 @@ id = "monkeytail" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/external/tail/monkey + build_path = /obj/item/organ/tail/monkey category = list(RND_CATEGORY_LIMBS_OTHER, RND_CATEGORY_INITIAL) /datum/design/cat_tail @@ -130,7 +130,7 @@ id = "cattail" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20) - build_path = /obj/item/organ/external/tail/cat + build_path = /obj/item/organ/tail/cat category = list(SPECIES_HUMAN) /datum/design/cat_ears @@ -138,7 +138,7 @@ id = "catears" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10) - build_path = /obj/item/organ/internal/ears/cat + build_path = /obj/item/organ/ears/cat category = list(SPECIES_HUMAN) /datum/design/plasmaman_lungs @@ -146,7 +146,7 @@ id = "plasmamanlungs" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20) - build_path = /obj/item/organ/internal/lungs/plasmaman + build_path = /obj/item/organ/lungs/plasmaman category = list(SPECIES_PLASMAMAN) /datum/design/plasmaman_tongue @@ -154,7 +154,7 @@ id = "plasmamantongue" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20) - build_path = /obj/item/organ/internal/tongue/bone/plasmaman + build_path = /obj/item/organ/tongue/bone/plasmaman category = list(SPECIES_PLASMAMAN) /datum/design/plasmaman_liver @@ -162,7 +162,7 @@ id = "plasmamanliver" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20) - build_path = /obj/item/organ/internal/liver/bone/plasmaman + build_path = /obj/item/organ/liver/bone/plasmaman category = list(SPECIES_PLASMAMAN) /datum/design/plasmaman_stomach @@ -170,7 +170,7 @@ id = "plasmamanstomach" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20) - build_path = /obj/item/organ/internal/stomach/bone/plasmaman + build_path = /obj/item/organ/stomach/bone/plasmaman category = list(SPECIES_PLASMAMAN) /datum/design/ethereal_stomach @@ -178,7 +178,7 @@ id = "etherealstomach" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20) - build_path = /obj/item/organ/internal/stomach/ethereal + build_path = /obj/item/organ/stomach/ethereal category = list(SPECIES_ETHEREAL) /datum/design/ethereal_tongue @@ -186,7 +186,7 @@ id = "etherealtongue" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20) - build_path = /obj/item/organ/internal/tongue/ethereal + build_path = /obj/item/organ/tongue/ethereal category = list(SPECIES_ETHEREAL) /datum/design/ethereal_lungs @@ -194,7 +194,7 @@ id = "ethereallungs" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20) - build_path = /obj/item/organ/internal/lungs/ethereal + build_path = /obj/item/organ/lungs/ethereal category = list(SPECIES_ETHEREAL) // Intentionally not growable by normal means - for balance conerns. @@ -203,7 +203,7 @@ id = "etherealheart" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20) - build_path = /obj/item/organ/internal/heart/ethereal + build_path = /obj/item/organ/heart/ethereal category = list(SPECIES_ETHEREAL) /datum/design/armblade diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index c34411fff61..d55c1a6f243 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -392,7 +392,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 3.5 SECONDS materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass = SMALL_MATERIAL_AMOUNT*2.5) - build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube + build_path = /obj/item/organ/cyberimp/mouth/breathing_tube category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH ) @@ -409,7 +409,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5, ) construction_time = 2 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/surgery + build_path = /obj/item/organ/cyberimp/arm/surgery category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY ) @@ -426,7 +426,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5, ) construction_time = 2 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/toolset + build_path = /obj/item/organ/cyberimp/arm/toolset category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY ) @@ -444,7 +444,7 @@ /datum/material/silver =SMALL_MATERIAL_AMOUNT*5, /datum/material/gold =SMALL_MATERIAL_AMOUNT*5, ) - build_path = /obj/item/organ/internal/cyberimp/eyes/hud/medical + build_path = /obj/item/organ/cyberimp/eyes/hud/medical category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY ) @@ -462,7 +462,7 @@ /datum/material/silver = SMALL_MATERIAL_AMOUNT*7.5, /datum/material/gold = SMALL_MATERIAL_AMOUNT*7.5, ) - build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security + build_path = /obj/item/organ/cyberimp/eyes/hud/security category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY ) @@ -480,7 +480,7 @@ /datum/material/silver = SMALL_MATERIAL_AMOUNT*6, /datum/material/gold = SMALL_MATERIAL_AMOUNT*6, ) - build_path = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic + build_path = /obj/item/organ/cyberimp/eyes/hud/diagnostic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY ) @@ -502,7 +502,7 @@ /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/eyes/robotic/xray + build_path = /obj/item/organ/eyes/robotic/xray category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_COMBAT ) @@ -511,7 +511,7 @@ /datum/design/cyberimp_xray/moth name = "Moth X-ray Eyes" id = "ci-xray-moth" - build_path = /obj/item/organ/internal/eyes/robotic/xray/moth + build_path = /obj/item/organ/eyes/robotic/xray/moth /datum/design/cyberimp_thermals name = "Thermal Eyes" @@ -527,7 +527,7 @@ /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/eyes/robotic/thermals + build_path = /obj/item/organ/eyes/robotic/thermals category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_COMBAT ) @@ -536,7 +536,7 @@ /datum/design/cyberimp_thermals/moth name = "Moth Thermal Eyes" id = "ci-thermals-moth" - build_path = /obj/item/organ/internal/eyes/robotic/thermals/moth + build_path = /obj/item/organ/eyes/robotic/thermals/moth /datum/design/cyberimp_antidrop name = "Anti-Drop Implant" @@ -550,7 +550,7 @@ /datum/material/silver = SMALL_MATERIAL_AMOUNT*4, /datum/material/gold = SMALL_MATERIAL_AMOUNT*4, ) - build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop + build_path = /obj/item/organ/cyberimp/brain/anti_drop category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT ) @@ -568,7 +568,7 @@ /datum/material/silver =SMALL_MATERIAL_AMOUNT*5, /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun + build_path = /obj/item/organ/cyberimp/brain/anti_stun category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT ) @@ -586,7 +586,7 @@ /datum/material/gold=SMALL_MATERIAL_AMOUNT*3, /datum/material/diamond =SMALL_MATERIAL_AMOUNT*5, ) - build_path = /obj/item/organ/internal/cyberimp/chest/spine + build_path = /obj/item/organ/cyberimp/chest/spine category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH ) @@ -603,7 +603,7 @@ /datum/material/glass = SMALL_MATERIAL_AMOUNT*6, /datum/material/titanium = SMALL_MATERIAL_AMOUNT*3, ) - build_path = /obj/item/organ/internal/cyberimp/brain/connector + build_path = /obj/item/organ/cyberimp/brain/connector category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC ) @@ -620,7 +620,7 @@ /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/gold =SMALL_MATERIAL_AMOUNT*5, ) - build_path = /obj/item/organ/internal/cyberimp/chest/nutriment + build_path = /obj/item/organ/cyberimp/chest/nutriment category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH ) @@ -638,7 +638,7 @@ /datum/material/gold =SMALL_MATERIAL_AMOUNT*5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT*7.5, ) - build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus + build_path = /obj/item/organ/cyberimp/chest/nutriment/plus category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH ) @@ -656,7 +656,7 @@ /datum/material/gold =SMALL_MATERIAL_AMOUNT * 3, /datum/material/uranium =SMALL_MATERIAL_AMOUNT*5, ) - build_path = /obj/item/organ/internal/cyberimp/chest/reviver + build_path = /obj/item/organ/cyberimp/chest/reviver category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH ) @@ -674,7 +674,7 @@ /datum/material/silver =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond =HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/cyberimp/chest/thrusters + build_path = /obj/item/organ/cyberimp/chest/thrusters category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY ) @@ -789,7 +789,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 4 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/liver/cybernetic + build_path = /obj/item/organ/liver/cybernetic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1 ) @@ -800,7 +800,7 @@ desc = "A cybernetic liver." id = "cybernetic_liver_tier2" materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/liver/cybernetic/tier2 + build_path = /obj/item/organ/liver/cybernetic/tier2 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2 ) @@ -812,7 +812,7 @@ id = "cybernetic_liver_tier3" construction_time = 5 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/liver/cybernetic/tier3 + build_path = /obj/item/organ/liver/cybernetic/tier3 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -825,7 +825,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 4 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/heart/cybernetic + build_path = /obj/item/organ/heart/cybernetic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1 ) @@ -836,7 +836,7 @@ desc = "A cybernetic heart." id = "cybernetic_heart_tier2" materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/heart/cybernetic/tier2 + build_path = /obj/item/organ/heart/cybernetic/tier2 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2 ) @@ -848,7 +848,7 @@ id = "cybernetic_heart_tier3" construction_time = 5 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/heart/cybernetic/tier3 + build_path = /obj/item/organ/heart/cybernetic/tier3 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -865,7 +865,7 @@ /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/heart/cybernetic/anomalock + build_path = /obj/item/organ/heart/cybernetic/anomalock category = list( RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE ) @@ -878,7 +878,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 4 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/lungs/cybernetic + build_path = /obj/item/organ/lungs/cybernetic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1 ) @@ -889,7 +889,7 @@ desc = "A pair of cybernetic lungs." id = "cybernetic_lungs_tier2" materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/lungs/cybernetic/tier2 + build_path = /obj/item/organ/lungs/cybernetic/tier2 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2 ) @@ -901,7 +901,7 @@ id = "cybernetic_lungs_tier3" construction_time = 5 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/lungs/cybernetic/tier3 + build_path = /obj/item/organ/lungs/cybernetic/tier3 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -914,7 +914,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 4 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/stomach/cybernetic + build_path = /obj/item/organ/stomach/cybernetic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1 ) @@ -925,7 +925,7 @@ desc = "A cybernetic stomach." id = "cybernetic_stomach_tier2" materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/stomach/cybernetic/tier2 + build_path = /obj/item/organ/stomach/cybernetic/tier2 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2 ) @@ -937,7 +937,7 @@ id = "cybernetic_stomach_tier3" construction_time = 5 SECONDS materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/organ/internal/stomach/cybernetic/tier3 + build_path = /obj/item/organ/stomach/cybernetic/tier3 category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -950,7 +950,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 3 SECONDS materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4) - build_path = /obj/item/organ/internal/ears/cybernetic + build_path = /obj/item/organ/ears/cybernetic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1 ) @@ -967,7 +967,7 @@ /datum/material/glass = SMALL_MATERIAL_AMOUNT*5, /datum/material/silver = SMALL_MATERIAL_AMOUNT*5, ) - build_path = /obj/item/organ/internal/ears/cybernetic/upgraded + build_path = /obj/item/organ/ears/cybernetic/upgraded category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2 ) @@ -984,7 +984,7 @@ /datum/material/glass = SMALL_MATERIAL_AMOUNT*5, /datum/material/silver = SMALL_MATERIAL_AMOUNT*5, ) - build_path = /obj/item/organ/internal/ears/cybernetic/whisper + build_path = /obj/item/organ/ears/cybernetic/whisper category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -1001,7 +1001,7 @@ /datum/material/glass = SMALL_MATERIAL_AMOUNT*5, /datum/material/silver = SMALL_MATERIAL_AMOUNT*5, ) - build_path = /obj/item/organ/internal/ears/cybernetic/xray + build_path = /obj/item/organ/ears/cybernetic/xray category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -1014,7 +1014,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 3 SECONDS materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4) - build_path = /obj/item/organ/internal/eyes/robotic/basic + build_path = /obj/item/organ/eyes/robotic/basic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1 ) @@ -1023,13 +1023,13 @@ /datum/design/cybernetic_eyes/moth name = "Basic Cybernetic Moth Eyes" id = "cybernetic_eyes_moth" - build_path = /obj/item/organ/internal/eyes/robotic/basic/moth + build_path = /obj/item/organ/eyes/robotic/basic/moth /datum/design/cybernetic_eyes/improved name = "Cybernetic Eyes" desc = "A pair of cybernetic eyes." id = "cybernetic_eyes_improved" - build_path = /obj/item/organ/internal/eyes/robotic + build_path = /obj/item/organ/eyes/robotic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2 ) @@ -1038,7 +1038,7 @@ /datum/design/cybernetic_eyes/improved/moth name = "Cybernetic Moth Eyes" id = "cybernetic_eyes_improved_moth" - build_path = /obj/item/organ/internal/eyes/robotic/moth + build_path = /obj/item/organ/eyes/robotic/moth /datum/design/cyberimp_welding name = "Welding Shield Eyes" @@ -1047,7 +1047,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 4 SECONDS materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4) - build_path = /obj/item/organ/internal/eyes/robotic/shield + build_path = /obj/item/organ/eyes/robotic/shield category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -1056,7 +1056,7 @@ /datum/design/cyberimp_welding/moth name = "Welding Shield Moth Eyes" id = "ci-welding-moth" - build_path = /obj/item/organ/internal/eyes/robotic/shield/moth + build_path = /obj/item/organ/eyes/robotic/shield/moth /datum/design/cyberimp_gloweyes name = "Luminescent Eyes" @@ -1065,7 +1065,7 @@ build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 4 SECONDS materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/organ/internal/eyes/robotic/glow + build_path = /obj/item/organ/eyes/robotic/glow category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3 ) @@ -1074,7 +1074,7 @@ /datum/design/cyberimp_gloweyes/moth name = "Luminescent Moth Eyes" id = "ci-gloweyes-moth" - build_path = /obj/item/organ/internal/eyes/robotic/glow/moth + build_path = /obj/item/organ/eyes/robotic/glow/moth ///////////////////// ///Surgery Designs/// diff --git a/code/modules/spells/spell_types/self/lichdom.dm b/code/modules/spells/spell_types/self/lichdom.dm index 19ad55d9eee..8aa86d63a1b 100644 --- a/code/modules/spells/spell_types/self/lichdom.dm +++ b/code/modules/spells/spell_types/self/lichdom.dm @@ -62,7 +62,7 @@ if(iscarbon(cast_on)) var/mob/living/carbon/carbon_cast_on = cast_on - var/obj/item/organ/internal/brain/lich_brain = carbon_cast_on.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/lich_brain = carbon_cast_on.get_organ_slot(ORGAN_SLOT_BRAIN) if(lich_brain) // This prevents MMIs being used to stop lich revives lich_brain.organ_flags &= ~ORGAN_VITAL lich_brain.decoy_override = TRUE diff --git a/code/modules/spells/spell_types/self/splattercasting_spell.dm b/code/modules/spells/spell_types/self/splattercasting_spell.dm index 184a2afab7c..e76f8e3c1b9 100644 --- a/code/modules/spells/spell_types/self/splattercasting_spell.dm +++ b/code/modules/spells/spell_types/self/splattercasting_spell.dm @@ -28,7 +28,7 @@ brings unimaginable momentary torment as your heart stops, and your skin grows cold. You are now \ merely a vessel for the arcane flow. Soon, all that is left is not pain, but hunger.")) - cast_on.set_species(/datum/species/vampire) + cast_on.set_species(/datum/species/human/vampire) cast_on.blood_volume = BLOOD_VOLUME_NORMAL ///for predictable blood total amounts when the spell is first cast. cast_on.AddComponent(/datum/component/splattercasting) diff --git a/code/modules/station_goals/vault_mutation.dm b/code/modules/station_goals/vault_mutation.dm index b05bda05db7..33c46054158 100644 --- a/code/modules/station_goals/vault_mutation.dm +++ b/code/modules/station_goals/vault_mutation.dm @@ -109,7 +109,7 @@ /datum/mutation/human/plasmocile/on_acquiring(mob/living/carbon/human/acquirer) . = ..() - var/obj/item/organ/internal/lungs/improved_lungs = acquirer.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/improved_lungs = acquirer.get_organ_slot(ORGAN_SLOT_LUNGS) ADD_TRAIT(owner, TRAIT_VIRUSIMMUNE, GENETIC_MUTATION) if(improved_lungs) apply_buff(improved_lungs) @@ -118,7 +118,7 @@ /datum/mutation/human/plasmocile/on_losing(mob/living/carbon/human/owner) . = ..() - var/obj/item/organ/internal/lungs/improved_lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/improved_lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS) REMOVE_TRAIT(owner, TRAIT_VIRUSIMMUNE, GENETIC_MUTATION) UnregisterSignal(owner, COMSIG_CARBON_LOSE_ORGAN) UnregisterSignal(owner, COMSIG_CARBON_GAIN_ORGAN) @@ -128,19 +128,19 @@ /datum/mutation/human/plasmocile/proc/remove_modification(mob/source, obj/item/organ/old_organ) SIGNAL_HANDLER - if(istype(old_organ, /obj/item/organ/internal/lungs)) + if(istype(old_organ, /obj/item/organ/lungs)) remove_buff(old_organ) /datum/mutation/human/plasmocile/proc/reapply_modification(mob/source, obj/item/organ/new_organ) SIGNAL_HANDLER - if(istype(new_organ, /obj/item/organ/internal/lungs)) + if(istype(new_organ, /obj/item/organ/lungs)) apply_buff(new_organ) -/datum/mutation/human/plasmocile/proc/apply_buff(obj/item/organ/internal/lungs/our_lungs) +/datum/mutation/human/plasmocile/proc/apply_buff(obj/item/organ/lungs/our_lungs) our_lungs.plas_breath_dam_min *= 0 our_lungs.plas_breath_dam_max *= 0 -/datum/mutation/human/plasmocile/proc/remove_buff(obj/item/organ/internal/lungs/our_lungs) +/datum/mutation/human/plasmocile/proc/remove_buff(obj/item/organ/lungs/our_lungs) our_lungs.plas_breath_dam_min = initial(our_lungs.plas_breath_dam_min) our_lungs.plas_breath_dam_max = initial(our_lungs.plas_breath_dam_max) diff --git a/code/modules/surgery/advanced/bioware/cortex_folding.dm b/code/modules/surgery/advanced/bioware/cortex_folding.dm index 2e20f0906ac..cd7d55f664c 100644 --- a/code/modules/surgery/advanced/bioware/cortex_folding.dm +++ b/code/modules/surgery/advanced/bioware/cortex_folding.dm @@ -30,7 +30,7 @@ ) /datum/surgery/advanced/bioware/cortex_folding/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!target_brain) return FALSE return ..() diff --git a/code/modules/surgery/advanced/bioware/cortex_imprint.dm b/code/modules/surgery/advanced/bioware/cortex_imprint.dm index 27a75a26167..4f65f305df3 100644 --- a/code/modules/surgery/advanced/bioware/cortex_imprint.dm +++ b/code/modules/surgery/advanced/bioware/cortex_imprint.dm @@ -31,7 +31,7 @@ ) /datum/surgery/advanced/bioware/cortex_imprint/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!target_brain) return FALSE return ..() diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm index 61a39618d5e..461234fb952 100644 --- a/code/modules/surgery/advanced/brainwashing.dm +++ b/code/modules/surgery/advanced/brainwashing.dm @@ -40,7 +40,7 @@ /datum/surgery/advanced/brainwashing/can_start(mob/user, mob/living/carbon/target) if(!..()) return FALSE - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!target_brain) return FALSE return TRUE diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index 5c528acae52..cd433d55981 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -28,7 +28,7 @@ . = ..() if(!.) return FALSE - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!target_brain) return FALSE return TRUE @@ -102,7 +102,7 @@ return ..() /datum/surgery_step/lobotomize/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(target_brain) display_results( user, diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm index 63350139e07..a4512e9378e 100644 --- a/code/modules/surgery/advanced/necrotic_revival.dm +++ b/code/modules/surgery/advanced/necrotic_revival.dm @@ -13,7 +13,7 @@ /datum/surgery/advanced/necrotic_revival/can_start(mob/user, mob/living/carbon/target) . = ..() - var/obj/item/organ/internal/zombie_infection/z_infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE) + var/obj/item/organ/zombie_infection/z_infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE) if(z_infection) return FALSE @@ -46,6 +46,6 @@ ) display_pain(target, "Your head goes totally numb for a moment, the pain is overwhelming!") if(!target.get_organ_slot(ORGAN_SLOT_ZOMBIE)) - var/obj/item/organ/internal/zombie_infection/z_infection = new() + var/obj/item/organ/zombie_infection/z_infection = new() z_infection.Insert(target) return ..() diff --git a/code/modules/surgery/advanced/pacification.dm b/code/modules/surgery/advanced/pacification.dm index 6c2d990cb96..899bd6a436c 100644 --- a/code/modules/surgery/advanced/pacification.dm +++ b/code/modules/surgery/advanced/pacification.dm @@ -26,7 +26,7 @@ /datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target) . = ..() - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!target_brain) return FALSE diff --git a/code/modules/surgery/advanced/wingreconstruction.dm b/code/modules/surgery/advanced/wingreconstruction.dm index 3234b61e1e0..a3931dd4e5e 100644 --- a/code/modules/surgery/advanced/wingreconstruction.dm +++ b/code/modules/surgery/advanced/wingreconstruction.dm @@ -12,8 +12,8 @@ /datum/surgery/advanced/wing_reconstruction/can_start(mob/user, mob/living/carbon/target) if(!istype(target)) return FALSE - var/obj/item/organ/external/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) - if(!istype(wings, /obj/item/organ/external/wings/moth)) + var/obj/item/organ/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + if(!istype(wings, /obj/item/organ/wings/moth)) return FALSE return ..() && wings?.burnt @@ -48,12 +48,12 @@ span_notice("[user] completes the surgery on [target]'s wings."), ) display_pain(target, "You can feel your wings again!") - var/obj/item/organ/external/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) - if(istype(wings, /obj/item/organ/external/wings/moth)) //make sure we only heal moth wings. + var/obj/item/organ/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + if(istype(wings, /obj/item/organ/wings/moth)) //make sure we only heal moth wings. wings.heal_wings(user, ALL) - var/obj/item/organ/external/antennae/antennae = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_ANTENNAE) //i mean we might aswell heal their antennae too - antennae?.heal_antennae() + var/obj/item/organ/antennae/antennae = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_ANTENNAE) //i mean we might aswell heal their antennae too + antennae?.heal_antennae(user, ALL) human_target.update_body_parts() return ..() diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 7492ad8173f..12a19ae8f22 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -113,7 +113,7 @@ /obj/item/bodypart/head/examine(mob/user) . = ..() if(show_organs_on_examine && IS_ORGANIC_LIMB(src)) - var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in src + var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in src if(!brain) . += span_info("The brain has been removed from [src].") else if(brain.suicided || (brain.brainmob && HAS_TRAIT(brain.brainmob, TRAIT_SUICIDED))) @@ -130,13 +130,13 @@ else . += span_info("It's completely lifeless.") - if(!(locate(/obj/item/organ/internal/eyes) in src)) + if(!(locate(/obj/item/organ/eyes) in src)) . += span_info("[real_name]'s eyes have been removed.") - if(!(locate(/obj/item/organ/internal/ears) in src)) + if(!(locate(/obj/item/organ/ears) in src)) . += span_info("[real_name]'s ears have been removed.") - if(!(locate(/obj/item/organ/internal/tongue) in src)) + if(!(locate(/obj/item/organ/tongue) in src)) . += span_info("[real_name]'s tongue has been removed.") /obj/item/bodypart/head/can_dismember(obj/item/item) @@ -151,7 +151,7 @@ /obj/item/bodypart/head/drop_organs(mob/user, violent_removal) if(user) user.visible_message(span_warning("[user] saws [src] open and pulls out a brain!"), span_notice("You saw [src] open and pull out a brain.")) - var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in src + var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in src if(brain && violent_removal && prob(90)) //ghetto surgery can damage the brain. to_chat(user, span_warning("[brain] was damaged in the process!")) brain.set_organ_damage(brain.maxHealth) @@ -176,7 +176,7 @@ . += get_hair_and_lips_icon(dropped) // We need to get the eyes if we are dropped (ugh) if(dropped) - var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes) in src + var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes) in src // This is a bit of copy/paste code from eyes.dm:generate_body_overlay if(eyes?.eye_icon_state && (head_flags & HEAD_EYESPRITES)) var/image/eye_left = image('icons/mob/human/human_face.dmi', "[eyes.eye_icon_state]_l", -BODY_LAYER, SOUTH) diff --git a/code/modules/surgery/bodyparts/head_hair_and_lips.dm b/code/modules/surgery/bodyparts/head_hair_and_lips.dm index d6eaa3ec731..d553f94076f 100644 --- a/code/modules/surgery/bodyparts/head_hair_and_lips.dm +++ b/code/modules/surgery/bodyparts/head_hair_and_lips.dm @@ -37,12 +37,12 @@ else show_eyeless = FALSE else - if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src) && !istype(src, /obj/item/bodypart/head/synth)) // NOVA EDIT CHANGE - ORIGINAL: if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src)) + if(!hair_hidden && !(locate(/obj/item/organ/brain) in src) && !istype(src, /obj/item/bodypart/head/synth)) // NOVA EDIT CHANGE - ORIGINAL: if(!hair_hidden && !(locate(/obj/item/organ/brain) in src)) show_debrained = TRUE else show_debrained = FALSE - if(!(locate(/obj/item/organ/internal/eyes) in src)) + if(!(locate(/obj/item/organ/eyes) in src)) show_eyeless = TRUE else show_eyeless = FALSE diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index c94bd0db701..25f66f40af9 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -35,7 +35,7 @@ /// Offset to apply to equipment worn on the neck var/datum/worn_feature_offset/worn_neck_offset /// Which functional (i.e. flightpotion) wing types (if any) does this bodypart support? If count is >1 a radial menu is used to choose between all icons in list - var/list/wing_types = list(/obj/item/organ/external/wings/functional/angel) + var/list/wing_types = list(/obj/item/organ/wings/functional/angel) /obj/item/bodypart/chest/forced_removal(dismembered, special, move_to_floor) var/mob/living/carbon/old_owner = owner @@ -74,7 +74,7 @@ if(!ishuman(owner)) return null var/mob/living/carbon/human/human_owner = owner - var/obj/item/organ/external/tail/tail = human_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/tail = human_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(tail) return tail.get_butt_sprite() diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 7bdb2e7e613..c61a3a26169 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -212,7 +212,7 @@ robotic_emp_paralyze_damage_percent_threshold = 0.6 - wing_types = list(/obj/item/organ/external/wings/functional/robotic) + wing_types = list(/obj/item/organ/wings/functional/robotic) var/wired = FALSE var/obj/item/stock_parts/power_store/cell = null diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm index d5fa9d1cfcb..e4477c4c1e5 100644 --- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm @@ -10,7 +10,7 @@ icon_greyscale = 'icons/mob/human/species/lizard/bodyparts.dmi' limb_id = SPECIES_LIZARD is_dimorphic = TRUE - wing_types = list(/obj/item/organ/external/wings/functional/dragon) + wing_types = list(/obj/item/organ/wings/functional/dragon) /obj/item/bodypart/chest/lizard/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_LIZARD) diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index 68aac78cb68..a8746c1cdab 100644 --- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -96,7 +96,7 @@ is_dimorphic = TRUE dmg_overlay_type = null burn_modifier = 0.5 // = 1/2x generic burn damage - wing_types = list(/obj/item/organ/external/wings/functional/slime) + wing_types = list(/obj/item/organ/wings/functional/slime) /obj/item/bodypart/chest/jelly/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME) @@ -260,7 +260,7 @@ limb_id = SPECIES_FLYPERSON is_dimorphic = TRUE should_draw_greyscale = FALSE - wing_types = list(/obj/item/organ/external/wings/functional/fly) + wing_types = list(/obj/item/organ/wings/functional/fly) bodypart_traits = list(TRAIT_TACKLING_FRAIL_ATTACKER) /obj/item/bodypart/arm/left/fly @@ -337,7 +337,7 @@ should_draw_greyscale = FALSE dmg_overlay_type = null bodypart_flags = BODYPART_UNHUSKABLE - wing_types = list(/obj/item/organ/external/wings/functional/skeleton) + wing_types = list(/obj/item/organ/wings/functional/skeleton) /obj/item/bodypart/arm/left/skeleton biological_state = (BIO_BONE|BIO_JOINTED) diff --git a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm index 72e2d478c4a..cf6452a0d01 100644 --- a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm @@ -17,7 +17,7 @@ limb_id = SPECIES_MOTH is_dimorphic = TRUE should_draw_greyscale = FALSE - wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra) + wing_types = list(/obj/item/organ/wings/functional/moth/megamoth, /obj/item/organ/wings/functional/moth/mothra) bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER) /obj/item/bodypart/chest/moth/get_butt_sprite() diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm index 52b0e6099ea..36f70ac931e 100644 --- a/code/modules/surgery/coronary_bypass.dm +++ b/code/modules/surgery/coronary_bypass.dm @@ -26,7 +26,7 @@ ) /datum/surgery/coronary_bypass/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART) if(isnull(target_heart) || target_heart.damage < 60 || target_heart.operated) return FALSE return ..() @@ -134,7 +134,7 @@ /datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) target.setOrganLoss(ORGAN_SLOT_HEART, 60) - var/obj/item/organ/internal/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART) if(target_heart) //slightly worrying if we lost our heart mid-operation, but that's life target_heart.operated = TRUE if(target_heart.organ_flags & ORGAN_EMP) //If our organ is failing due to an EMP, fix that diff --git a/code/modules/surgery/ear_surgery.dm b/code/modules/surgery/ear_surgery.dm index 4333b00913b..9e363e2ae9b 100644 --- a/code/modules/surgery/ear_surgery.dm +++ b/code/modules/surgery/ear_surgery.dm @@ -36,7 +36,7 @@ display_pain(target, "You feel a dizzying pain in your head!") /datum/surgery_step/fix_ears/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/obj/item/organ/internal/ears/target_ears = target.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/target_ears = target.get_organ_slot(ORGAN_SLOT_EARS) display_results( user, target, @@ -50,7 +50,7 @@ return ..() /datum/surgery_step/fix_ears/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(target.get_organ_by_type(/obj/item/organ/internal/brain)) + if(target.get_organ_by_type(/obj/item/organ/brain)) display_results( user, target, diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index fb759baca87..3a0f7140091 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -34,7 +34,7 @@ display_pain(target, "You feel a stabbing pain in your eyes!") /datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES) user.visible_message(span_notice("[user] successfully fixes [target]'s eyes!"), span_notice("You succeed in fixing [target]'s eyes.")) display_results( user, @@ -50,7 +50,7 @@ return ..() /datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(target.get_organ_by_type(/obj/item/organ/internal/brain)) + if(target.get_organ_by_type(/obj/item/organ/brain)) display_results( user, target, diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm index bdcbfc60ac8..41c1141c412 100644 --- a/code/modules/surgery/gastrectomy.dm +++ b/code/modules/surgery/gastrectomy.dm @@ -27,7 +27,7 @@ ) /datum/surgery/gastrectomy/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) if(isnull(target_stomach) || target_stomach.damage < 50 || target_stomach.operated) return FALSE return ..() @@ -70,11 +70,11 @@ /datum/surgery_step/gastrectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) var/mob/living/carbon/human/target_human = target - var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) target_human.setOrganLoss(ORGAN_SLOT_STOMACH, 20) // Stomachs have a threshold for being able to even digest food, so I might tweak this number if(target_stomach) //NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople. - if(istype(target_stomach, /obj/item/organ/internal/stomach/slime)) + if(istype(target_stomach, /obj/item/organ/stomach/slime)) addtimer(VARSET_CALLBACK(target_stomach, operated, FALSE), 30 SECONDS) //NOVA EDIT ADDITION END target_stomach.operated = TRUE diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm index 82b1eb6328f..c7aa986ace7 100644 --- a/code/modules/surgery/hepatectomy.dm +++ b/code/modules/surgery/hepatectomy.dm @@ -26,7 +26,7 @@ ) /datum/surgery/hepatectomy/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER) if(isnull(target_liver) || target_liver.damage < 50 || target_liver.operated) return FALSE return ..() @@ -69,11 +69,11 @@ /datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) var/mob/living/carbon/human/human_target = target - var/obj/item/organ/internal/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER) human_target.setOrganLoss(ORGAN_SLOT_LIVER, 10) //not bad, not great if(target_liver) //NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople. - if(istype(target_liver, /obj/item/organ/internal/liver/slime)) + if(istype(target_liver, /obj/item/organ/liver/slime)) addtimer(VARSET_CALLBACK(target_liver, operated, FALSE), 30 SECONDS) //NOVA EDIT ADDITION END target_liver.operated = TRUE diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index 2876d9763b6..f49491e5d0b 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -24,7 +24,7 @@ ) /datum/surgery/lobectomy/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS) if(isnull(target_lungs) || target_lungs.damage < 60 || target_lungs.operated) return FALSE return ..() @@ -67,11 +67,11 @@ /datum/surgery_step/lobectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) if(ishuman(target)) var/mob/living/carbon/human/human_target = target - var/obj/item/organ/internal/lungs/target_lungs = human_target.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/target_lungs = human_target.get_organ_slot(ORGAN_SLOT_LUNGS) human_target.setOrganLoss(ORGAN_SLOT_LUNGS, 60) if(target_lungs) //NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople. - if(istype(target_lungs, /obj/item/organ/internal/lungs/slime)) + if(istype(target_lungs, /obj/item/organ/lungs/slime)) addtimer(VARSET_CALLBACK(target_lungs, operated, FALSE), 30 SECONDS) //NOVA EDIT ADDITION END target_lungs.operated = TRUE diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index 74f47a948de..9937398872f 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -309,7 +309,7 @@ ///only operate on internal organs /datum/surgery_step/manipulate_organs/internal/can_use_organ(mob/user, obj/item/organ/organ) - return isinternalorgan(organ) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return isinternalorgan(organ) + return !(organ.organ_flags & ORGAN_EXTERNAL) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return !(organ.organ_flags & ORGAN_EXTERNAL) ///prosthetic surgery gives full effectiveness to crowbars (and hemostats) /datum/surgery_step/manipulate_organs/internal/mechanic @@ -323,7 +323,7 @@ ///Only operate on external organs /datum/surgery_step/manipulate_organs/external/can_use_organ(mob/user, obj/item/organ/organ) - return isexternalorgan(organ) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return isexternalorgan(organ) + return (organ.organ_flags & ORGAN_EXTERNAL) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return (organ.organ_flags & ORGAN_EXTERNAL) ///prosthetic surgery gives full effectiveness to crowbars (and hemostats) /datum/surgery_step/manipulate_organs/external/mechanic diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index 4d5114ad88a..e2f05a9ed56 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -249,20 +249,20 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) set_heartattack(FALSE) // Ears have aditional vаr "deaf", need to update it too - var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) ears?.adjustEarDamage(0, -INFINITY) // full heal ears deafness return // Default organ fixing handling // May result in kinda cursed stuff for mobs which don't need these organs - var/obj/item/organ/internal/lungs/lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/lungs = get_organ_slot(ORGAN_SLOT_LUNGS) if(!lungs) lungs = new() lungs.Insert(src) lungs.set_organ_damage(0) - var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) if(heart) set_heartattack(FALSE) else @@ -270,19 +270,19 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) heart.Insert(src) heart.set_organ_damage(0) - var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE) if(!tongue) tongue = new() tongue.Insert(src) tongue.set_organ_damage(0) - var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) if(!eyes) eyes = new() eyes.Insert(src) eyes.set_organ_damage(0) - var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) if(!ears) ears = new() ears.Insert(src) diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index b4a939e9a95..83fb98e4844 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -138,7 +138,7 @@ name = "autosurgeon" desc = "A single use autosurgeon that contains a medical heads-up display augment. A screwdriver can be used to remove it, but implants can't be placed back in." uses = 1 - starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/medical + starting_organ = /obj/item/organ/cyberimp/eyes/hud/medical /obj/item/autosurgeon/syndicate @@ -154,28 +154,28 @@ /obj/item/autosurgeon/syndicate/laser_arm desc = "A single use autosurgeon that contains a combat arms-up laser augment. A screwdriver can be used to remove it, but implants can't be placed back in." uses = 1 - starting_organ = /obj/item/organ/internal/cyberimp/arm/gun/laser + starting_organ = /obj/item/organ/cyberimp/arm/gun/laser /obj/item/autosurgeon/syndicate/thermal_eyes - starting_organ = /obj/item/organ/internal/eyes/robotic/thermals + starting_organ = /obj/item/organ/eyes/robotic/thermals /obj/item/autosurgeon/syndicate/thermal_eyes/single_use uses = 1 /obj/item/autosurgeon/syndicate/xray_eyes - starting_organ = /obj/item/organ/internal/eyes/robotic/xray + starting_organ = /obj/item/organ/eyes/robotic/xray /obj/item/autosurgeon/syndicate/xray_eyes/single_use uses = 1 /obj/item/autosurgeon/syndicate/anti_stun - starting_organ = /obj/item/organ/internal/cyberimp/brain/anti_stun + starting_organ = /obj/item/organ/cyberimp/brain/anti_stun /obj/item/autosurgeon/syndicate/anti_stun/single_use uses = 1 /obj/item/autosurgeon/syndicate/reviver - starting_organ = /obj/item/organ/internal/cyberimp/chest/reviver + starting_organ = /obj/item/organ/cyberimp/chest/reviver /obj/item/autosurgeon/syndicate/reviver/single_use uses = 1 @@ -183,14 +183,14 @@ /obj/item/autosurgeon/syndicate/commsagent desc = "A device that automatically - painfully - inserts an implant. It seems someone's specially \ modified this one to only insert... tongues. Horrifying." - starting_organ = /obj/item/organ/internal/tongue + starting_organ = /obj/item/organ/tongue /obj/item/autosurgeon/syndicate/commsagent/Initialize(mapload) . = ..() - organ_whitelist += /obj/item/organ/internal/tongue + organ_whitelist += /obj/item/organ/tongue /obj/item/autosurgeon/syndicate/emaggedsurgerytoolset - starting_organ = /obj/item/organ/internal/cyberimp/arm/surgery/emagged + starting_organ = /obj/item/organ/cyberimp/arm/surgery/emagged /obj/item/autosurgeon/syndicate/emaggedsurgerytoolset/single_use uses = 1 @@ -198,4 +198,4 @@ /obj/item/autosurgeon/syndicate/contraband_sechud desc = "Contains a contraband SecHUD implant, undetectable by health scanners." uses = 1 - starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate + starting_organ = /obj/item/organ/cyberimp/eyes/hud/security/syndicate diff --git a/code/modules/surgery/organs/external/_visual_organs.dm b/code/modules/surgery/organs/external/_visual_organs.dm index e5f2a40521e..dc143e4b4dc 100644 --- a/code/modules/surgery/organs/external/_visual_organs.dm +++ b/code/modules/surgery/organs/external/_visual_organs.dm @@ -105,7 +105,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times . += bodypart_overlay.get_overlay(external_layer, bodypart_owner) ///The horns of a lizard! -/obj/item/organ/external/horns +/obj/item/organ/horns name = "horns" desc = "Why do lizards even have horns? Well, this one obviously doesn't." icon_state = "horns" @@ -119,9 +119,12 @@ Unlike normal organs, we're actually inside a persons limbs at all times bodypart_overlay = /datum/bodypart_overlay/mutant/horns + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + /datum/bodypart_overlay/mutant/horns layers = EXTERNAL_ADJACENT feature_key = "horns" + dyable = TRUE /datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(mob/living/carbon/human/human) if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR)) @@ -133,7 +136,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times return SSaccessories.sprite_accessories["horns"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.horns_list ///The frills of a lizard (like weird fin ears) -/obj/item/organ/external/frills +/obj/item/organ/frills name = "frills" desc = "Ear-like external organs often seen on aquatic reptillians." icon_state = "frills" @@ -147,6 +150,8 @@ Unlike normal organs, we're actually inside a persons limbs at all times bodypart_overlay = /datum/bodypart_overlay/mutant/frills + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + /datum/bodypart_overlay/mutant/frills layers = EXTERNAL_ADJACENT feature_key = "frills" @@ -160,7 +165,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times return SSaccessories.sprite_accessories["frills"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.frills_list ///Guess what part of the lizard this is? -/obj/item/organ/external/snout +/obj/item/organ/snout name = "snout" // NOVA EDIT - ORIGINAL: name = "lizard snout" desc = "Take a closer look at that snout!" icon_state = "snout" @@ -176,6 +181,8 @@ Unlike normal organs, we're actually inside a persons limbs at all times bodypart_overlay = /datum/bodypart_overlay/mutant/snout + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + /datum/bodypart_overlay/mutant/snout layers = EXTERNAL_ADJACENT feature_key = "snout" @@ -189,7 +196,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times return SSaccessories.sprite_accessories["snout"] // NOVA EDIT - Customization - ORIGINAL : return SSaccessories.snouts_list ///A moth's antennae -/obj/item/organ/external/antennae +/obj/item/organ/antennae name = "moth antennae" desc = "A moths antennae. What is it telling them? What are they sensing?" icon_state = "antennae" @@ -203,24 +210,26 @@ Unlike normal organs, we're actually inside a persons limbs at all times bodypart_overlay = /datum/bodypart_overlay/mutant/antennae + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + ///Are we burned? var/burnt = FALSE ///Store our old datum here for if our antennae are healed var/original_sprite_datum -/obj/item/organ/external/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_antennae)) RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_antennae)) -/obj/item/organ/external/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL)) ///check if our antennae can burn off ;_; -/obj/item/organ/external/antennae/proc/try_burn_antennae(mob/living/carbon/human/human) +/obj/item/organ/antennae/proc/try_burn_antennae(mob/living/carbon/human/human) SIGNAL_HANDLER if(!burnt && human.bodytemperature >= 800 && human.fire_stacks > 0) //do not go into the extremely hot light. you will not survive @@ -230,13 +239,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times human.update_body_parts() ///Burn our antennae off ;_; -/obj/item/organ/external/antennae/proc/burn_antennae() +/obj/item/organ/antennae/proc/burn_antennae() var/datum/bodypart_overlay/mutant/antennae/antennae = bodypart_overlay antennae.burnt = TRUE burnt = TRUE ///heal our antennae back up!! -/obj/item/organ/external/antennae/proc/heal_antennae(datum/source, heal_flags) +/obj/item/organ/antennae/proc/heal_antennae(datum/source, heal_flags) SIGNAL_HANDLER if(!burnt) @@ -251,6 +260,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times /datum/bodypart_overlay/mutant/antennae layers = EXTERNAL_FRONT | EXTERNAL_BEHIND feature_key = "moth_antennae" + dyable = TRUE ///Accessory datum of the burn sprite var/datum/sprite_accessory/burn_datum = /datum/sprite_accessory/moth_antennae/burnt_off ///Are we burned? If so we draw differently @@ -273,7 +283,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times return FALSE ///The leafy hair of a podperson -/obj/item/organ/external/pod_hair +/obj/item/organ/pod_hair name = "podperson hair" desc = "Base for many-o-salads." @@ -288,10 +298,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times bodypart_overlay = /datum/bodypart_overlay/mutant/pod_hair + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + ///Podperson bodypart overlay, with special coloring functionality to render the flowers in the inverse color /datum/bodypart_overlay/mutant/pod_hair layers = EXTERNAL_FRONT|EXTERNAL_ADJACENT feature_key = "pod_hair" + dyable = TRUE ///This layer will be colored differently than the rest of the organ. So we can get differently colored flowers or something var/color_swapped_layer = EXTERNAL_FRONT @@ -305,8 +318,9 @@ Unlike normal organs, we're actually inside a persons limbs at all times if(draw_layer != bitflag_to_layer(color_swapped_layer)) return ..() - if(draw_color) // can someone explain to me why draw_color is allowed to EVER BE AN EMPTY STRING - var/list/rgb_list = rgb2num(draw_color) + var/color_to_use = dye_color || draw_color + if(color_to_use) // can someone explain to me why draw_color is allowed to EVER BE AN EMPTY STRING + var/list/rgb_list = rgb2num(color_to_use) overlay.color = rgb(color_inverse_base - rgb_list[1], color_inverse_base - rgb_list[2], color_inverse_base - rgb_list[3]) //inversa da color else overlay.color = null diff --git a/code/modules/surgery/organs/external/spines.dm b/code/modules/surgery/organs/external/spines.dm index a6653925e5e..2dae21acc12 100644 --- a/code/modules/surgery/organs/external/spines.dm +++ b/code/modules/surgery/organs/external/spines.dm @@ -1,5 +1,5 @@ ///A lizards spines (those things on their back), but also including tail spines (gasp) -/obj/item/organ/external/spines +/obj/item/organ/spines name = "lizard spines" desc = "Not an actual spine, obviously." icon_state = "spines" @@ -14,15 +14,17 @@ bodypart_overlay = /datum/bodypart_overlay/mutant/spines -/obj/item/organ/external/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags) + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + +/obj/item/organ/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags) // If we have a tail, attempt to add a tail spines overlay - var/obj/item/organ/external/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) our_tail?.try_insert_tail_spines(our_tail.bodypart_owner) return ..() -/obj/item/organ/external/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) // If we have a tail, remove any tail spines overlay - var/obj/item/organ/external/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) our_tail?.remove_tail_spines(our_tail.bodypart_owner) return ..() @@ -30,6 +32,7 @@ /datum/bodypart_overlay/mutant/spines layers = EXTERNAL_ADJACENT|EXTERNAL_BEHIND feature_key = "spines" + dyable = TRUE /datum/bodypart_overlay/mutant/spines/get_global_feature_list() return SSaccessories.sprite_accessories["spines"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.spines_list @@ -38,3 +41,8 @@ . = ..() if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT)) return FALSE + +/datum/bodypart_overlay/mutant/spines/set_dye_color(new_color, obj/item/organ/tail/organ) + var/obj/item/organ/tail/tail = organ?.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + tail?.tail_spines_overlay?.set_dye_color(new_color, organ) + return ..() diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm index 4149acc8eba..99856a0b3d8 100644 --- a/code/modules/surgery/organs/external/tails.dm +++ b/code/modules/surgery/organs/external/tails.dm @@ -1,5 +1,5 @@ ///Tail parent, it doesn't do very much. -/obj/item/organ/external/tail +/obj/item/organ/tail name = "tail" desc = "A severed tail. What did you cut this off of?" icon_state = "severedtail" @@ -13,6 +13,8 @@ // defaults to cat, but the parent type shouldn't be created regardless bodypart_overlay = /datum/bodypart_overlay/mutant/tail/cat + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + ///Does this tail have a wagging sprite, and is it currently wagging? var/wag_flags = NONE ///The original owner of this tail @@ -20,7 +22,7 @@ ///The overlay for tail spines, if any var/datum/bodypart_overlay/mutant/tail_spines/tail_spines_overlay -/obj/item/organ/external/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(.) receiver.clear_mood_event("tail_lost") @@ -39,18 +41,18 @@ else receiver.add_mood_event("tail_regained", /datum/mood_event/tail_regained_wrong) -/obj/item/organ/external/tail/on_bodypart_insert(obj/item/bodypart/bodypart) - var/obj/item/organ/external/spines/our_spines = bodypart.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES) +/obj/item/organ/tail/on_bodypart_insert(obj/item/bodypart/bodypart) + var/obj/item/organ/spines/our_spines = bodypart.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES) if(our_spines) try_insert_tail_spines(bodypart) return ..() -/obj/item/organ/external/tail/on_bodypart_remove(obj/item/bodypart/bodypart) +/obj/item/organ/tail/on_bodypart_remove(obj/item/bodypart/bodypart) remove_tail_spines(bodypart) return ..() /// If the owner has spines and an appropriate overlay exists, add a tail spines overlay. -/obj/item/organ/external/tail/proc/try_insert_tail_spines(obj/item/bodypart/bodypart) +/obj/item/organ/tail/proc/try_insert_tail_spines(obj/item/bodypart/bodypart) // Don't insert another overlay if there already is one. if(tail_spines_overlay) return @@ -73,13 +75,13 @@ bodypart.add_bodypart_overlay(tail_spines_overlay) /// If we have a tail spines overlay, delete it -/obj/item/organ/external/tail/proc/remove_tail_spines(obj/item/bodypart/bodypart) +/obj/item/organ/tail/proc/remove_tail_spines(obj/item/bodypart/bodypart) if(!tail_spines_overlay) return bodypart.remove_bodypart_overlay(tail_spines_overlay) QDEL_NULL(tail_spines_overlay) -/obj/item/organ/external/tail/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() if(wag_flags & WAG_WAGGING) @@ -94,7 +96,7 @@ ///We need some special behaviour for accessories, wrapped here so we can easily add more interactions later ///Accepts an optional timeout after which we remove the tail wagging ///Returns false if the wag worked, true otherwise -/obj/item/organ/external/tail/proc/start_wag(mob/living/carbon/organ_owner, stop_after = INFINITY) +/obj/item/organ/tail/proc/start_wag(mob/living/carbon/organ_owner, stop_after = INFINITY) if(wag_flags & WAG_WAGGING || !(wag_flags & WAG_ABLE)) // we are already wagging return FALSE if(organ_owner.stat == DEAD || organ_owner != owner) // no wagging when owner is dead or tail has been disembodied @@ -112,13 +114,13 @@ RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(owner_died)) return TRUE -/obj/item/organ/external/tail/proc/owner_died(mob/living/carbon/organ_owner) // Resisting the urge to replace owner with daddy +/obj/item/organ/tail/proc/owner_died(mob/living/carbon/organ_owner) // Resisting the urge to replace owner with daddy SIGNAL_HANDLER stop_wag(organ_owner) ///We need some special behaviour for accessories, wrapped here so we can easily add more interactions later ///Returns false if the wag stopping worked, true otherwise -/obj/item/organ/external/tail/proc/stop_wag(mob/living/carbon/organ_owner) +/obj/item/organ/tail/proc/stop_wag(mob/living/carbon/organ_owner) if(!(wag_flags & WAG_ABLE)) return FALSE @@ -138,13 +140,13 @@ UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH) return succeeded -/obj/item/organ/external/tail/proc/get_butt_sprite() +/obj/item/organ/tail/proc/get_butt_sprite() return null ///Tail parent type, with wagging functionality /datum/bodypart_overlay/mutant/tail layers = EXTERNAL_FRONT|EXTERNAL_BEHIND - feature_key = "tail" // NOVA EDIT - Customization - ORIGINAL: feature_key = "tail_monkey" + dyable = TRUE var/wagging = FALSE /datum/bodypart_overlay/mutant/tail/get_base_icon_state() @@ -160,7 +162,7 @@ return FALSE return TRUE -/obj/item/organ/external/tail/cat +/obj/item/organ/tail/cat name = "tail" preference = "feature_human_tail" @@ -168,7 +170,7 @@ wag_flags = WAG_ABLE -/obj/item/organ/external/tail/cat/get_butt_sprite() +/obj/item/organ/tail/cat/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_CAT) ///Cat tail bodypart overlay @@ -179,7 +181,7 @@ /datum/bodypart_overlay/mutant/tail/cat/get_global_feature_list() return SSaccessories.sprite_accessories["tail"] // NOVA EDIT CHANGE - ORIGINAL: return SSaccessories.tails_list_felinid -/obj/item/organ/external/tail/monkey +/obj/item/organ/tail/monkey name = "monkey tail" preference = "feature_monkey_tail" @@ -195,7 +197,7 @@ /datum/bodypart_overlay/mutant/tail/monkey/get_global_feature_list() return SSaccessories.tails_list_monkey -/obj/item/organ/external/tail/lizard +/obj/item/organ/tail/lizard name = "lizard tail" desc = "A severed lizard tail. Somewhere, no doubt, a lizard hater is very pleased with themselves." preference = "feature_lizard_tail" @@ -212,7 +214,7 @@ /datum/bodypart_overlay/mutant/tail/lizard/get_global_feature_list() return SSaccessories.sprite_accessories["tail"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.tails_list_lizard -/obj/item/organ/external/tail/lizard/fake +/obj/item/organ/tail/lizard/fake name = "fabricated lizard tail" desc = "A fabricated severed lizard tail. This one's made of synthflesh. Probably not usable for lizard wine." @@ -235,3 +237,6 @@ . = ..() if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT)) return FALSE + +/datum/bodypart_overlay/mutant/tail_spines/set_dye_color(new_color, obj/item/organ/organ) + dye_color = new_color //no update_body_parts() call, tail/set_dye_color will do it. diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm index c90dcd8c8a8..d2725955f20 100644 --- a/code/modules/surgery/organs/external/wings/functional_wings.dm +++ b/code/modules/surgery/organs/external/wings/functional_wings.dm @@ -10,12 +10,12 @@ /datum/action/innate/flight/Activate() var/mob/living/carbon/human/human = owner - var/obj/item/organ/external/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + var/obj/item/organ/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) if(wings?.can_fly(human)) wings.toggle_flight(human) ///The true wings that you can use to fly and shit (you cant actually shit with them) -/obj/item/organ/external/wings/functional +/obj/item/organ/wings/functional ///The flight action object var/datum/action/innate/flight/fly @@ -29,29 +29,29 @@ // grind_results = list(/datum/reagent/flightpotion = 5) food_reagents = list(/datum/reagent/flightpotion = 5) -/obj/item/organ/external/wings/functional/Destroy() +/obj/item/organ/wings/functional/Destroy() QDEL_NULL(fly) return ..() -/obj/item/organ/external/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(QDELETED(fly)) fly = new fly.Grant(receiver) -/obj/item/organ/external/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() fly?.Remove(organ_owner) if(wings_open) toggle_flight(organ_owner) -/obj/item/organ/external/wings/functional/on_life(seconds_per_tick, times_fired) +/obj/item/organ/wings/functional/on_life(seconds_per_tick, times_fired) . = ..() handle_flight(owner) ///Called on_life(). Handle flight code and check if we're still flying -/obj/item/organ/external/wings/functional/proc/handle_flight(mob/living/carbon/human/human) +/obj/item/organ/wings/functional/proc/handle_flight(mob/living/carbon/human/human) if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT)) return FALSE if(!can_fly(human)) @@ -61,7 +61,7 @@ ///Check if we're still eligible for flight (wings covered, atmosphere too thin, etc) -/obj/item/organ/external/wings/functional/proc/can_fly(mob/living/carbon/human/human) +/obj/item/organ/wings/functional/proc/can_fly(mob/living/carbon/human/human) if(human.stat || human.body_position == LYING_DOWN || isnull(human.client)) return FALSE //Jumpsuits have tail holes, so it makes sense they have wing holes too @@ -79,7 +79,7 @@ return TRUE ///Slipping but in the air? -/obj/item/organ/external/wings/functional/proc/fly_slip(mob/living/carbon/human/human) +/obj/item/organ/wings/functional/proc/fly_slip(mob/living/carbon/human/human) var/obj/buckled_obj if(human.buckled) buckled_obj = human.buckled @@ -102,7 +102,7 @@ return TRUE ///UNSAFE PROC, should only be called through the Activate or other sources that check for CanFly -/obj/item/organ/external/wings/functional/proc/toggle_flight(mob/living/carbon/human/human) +/obj/item/organ/wings/functional/proc/toggle_flight(mob/living/carbon/human/human) if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT)) human.physiology.stun_mod *= 2 human.add_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT) @@ -129,7 +129,7 @@ close_wings() human.refresh_gravity() -/obj/item/organ/external/wings/functional/proc/on_client_move(mob/source, list/move_args) +/obj/item/organ/wings/functional/proc/on_client_move(mob/source, list/move_args) SIGNAL_HANDLER if (!can_fly(source)) @@ -139,7 +139,7 @@ source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = FUNCTIONAL_WING_FORCE, controlled_cap = max_drift_force) source.setDir(source.client.intended_direction) -/obj/item/organ/external/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup) +/obj/item/organ/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup) SIGNAL_HANDLER if (get_dir(source, backup) == movement_dir || source.loc == backup.loc) @@ -150,7 +150,7 @@ return COMPONENT_PREVENT_SPACEMOVE_HALT -/obj/item/organ/external/wings/functional/process(seconds_per_tick) +/obj/item/organ/wings/functional/process(seconds_per_tick) if (!owner || !can_fly(owner) || isnull(owner.drift_handler)) return @@ -158,14 +158,14 @@ owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, FUNCTIONAL_WING_STABILIZATION * (seconds_per_tick * 1 SECONDS)) ///SPREAD OUR WINGS AND FLLLLLYYYYYY -/obj/item/organ/external/wings/functional/proc/open_wings() +/obj/item/organ/wings/functional/proc/open_wings() var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay overlay.open_wings() wings_open = TRUE owner.update_body_parts() ///close our wings -/obj/item/organ/external/wings/functional/proc/close_wings() +/obj/item/organ/wings/functional/proc/close_wings() var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay wings_open = FALSE overlay.close_wings() @@ -212,7 +212,7 @@ . += wings_open ? "open" : "closed" ///angel wings, which relate to humans. comes with holiness. -/obj/item/organ/external/wings/functional/angel +/obj/item/organ/wings/functional/angel name = "angel wings" desc = "Holier-than-thou attitude not included." sprite_accessory_override = /datum/sprite_accessory/wings_open/angel @@ -220,47 +220,47 @@ organ_traits = list(TRAIT_HOLY) ///dragon wings, which relate to lizards. -/obj/item/organ/external/wings/functional/dragon +/obj/item/organ/wings/functional/dragon name = "dragon wings" desc = "Hey, HEY- NOT lizard wings. Dragon wings. Mighty dragon wings." sprite_accessory_override = /datum/sprite_accessory/wings/dragon ///robotic wings, which relate to androids. -/obj/item/organ/external/wings/functional/robotic +/obj/item/organ/wings/functional/robotic name = "robotic wings" desc = "Using microscopic hover-engines, or \"microwings,\" as they're known in the trade, these tiny devices are able to lift a few grams at a time. Gathering enough of them, and you can lift impressively large things." organ_flags = ORGAN_ROBOTIC sprite_accessory_override = /datum/sprite_accessory/wings/robotic ///skeletal wings, which relate to skeletal races. -/obj/item/organ/external/wings/functional/skeleton +/obj/item/organ/wings/functional/skeleton name = "skeletal wings" desc = "Powered by pure edgy-teenager-notebook-scribblings. Just kidding. But seriously, how do these keep you flying?!" sprite_accessory_override = /datum/sprite_accessory/wings/skeleton -/obj/item/organ/external/wings/functional/moth/make_flap_sound(mob/living/carbon/wing_owner) +/obj/item/organ/wings/functional/moth/make_flap_sound(mob/living/carbon/wing_owner) playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE) ///mothra wings, which relate to moths. -/obj/item/organ/external/wings/functional/moth/mothra +/obj/item/organ/wings/functional/moth/mothra name = "mothra wings" desc = "Fly like the mighty mothra of legend once did." sprite_accessory_override = /datum/sprite_accessory/wings/mothra ///megamoth wings, which relate to moths as an alternate choice. they're both pretty cool. -/obj/item/organ/external/wings/functional/moth/megamoth +/obj/item/organ/wings/functional/moth/megamoth name = "megamoth wings" desc = "Don't get murderous." sprite_accessory_override = /datum/sprite_accessory/wings/megamoth ///fly wings, which relate to flies. -/obj/item/organ/external/wings/functional/fly +/obj/item/organ/wings/functional/fly name = "fly wings" desc = "Fly as a fly." sprite_accessory_override = /datum/sprite_accessory/wings/fly ///slime wings, which relate to slimes. -/obj/item/organ/external/wings/functional/slime +/obj/item/organ/wings/functional/slime name = "slime wings" desc = "How does something so squishy even fly?" sprite_accessory_override = /datum/sprite_accessory/wings/slime diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm index 4d7074ddefa..f6e20c49699 100644 --- a/code/modules/surgery/organs/external/wings/moth_wings.dm +++ b/code/modules/surgery/organs/external/wings/moth_wings.dm @@ -1,7 +1,7 @@ #define MOTH_WING_FORCE 1 NEWTONS ///Moth wings! They can flutter in low-grav and burn off in heat -/obj/item/organ/external/wings/moth +/obj/item/organ/wings/moth name = "moth wings" desc = "Spread your wings and FLOOOOAAAAAT!" @@ -16,7 +16,7 @@ ///Store our old datum here for if our burned wings are healed var/original_sprite_datum -/obj/item/organ/external/wings/moth/on_mob_insert(mob/living/carbon/receiver) +/obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/receiver) . = ..() RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_wings)) RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_wings)) @@ -24,18 +24,18 @@ RegisterSignal(receiver, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff)) START_PROCESSING(SSnewtonian_movement, src) -/obj/item/organ/external/wings/moth/on_mob_remove(mob/living/carbon/organ_owner) +/obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner) . = ..() UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_MOB_CLIENT_MOVE_NOGRAV, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE)) STOP_PROCESSING(SSnewtonian_movement, src) -/obj/item/organ/external/wings/moth/make_flap_sound(mob/living/carbon/wing_owner) +/obj/item/organ/wings/moth/make_flap_sound(mob/living/carbon/wing_owner) playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE) -/obj/item/organ/external/wings/moth/can_soften_fall() +/obj/item/organ/wings/moth/can_soften_fall() return !burnt -/obj/item/organ/external/wings/moth/proc/allow_flight() +/obj/item/organ/wings/moth/proc/allow_flight() if(!owner || !owner.client) return FALSE if(!isturf(owner.loc)) @@ -59,14 +59,14 @@ return TRUE return FALSE -/obj/item/organ/external/wings/moth/process(seconds_per_tick) +/obj/item/organ/wings/moth/process(seconds_per_tick) if (!owner || !allow_flight() || isnull(owner.drift_handler)) return var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1 owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, MOTH_WING_FORCE * (seconds_per_tick * 1 SECONDS)) -/obj/item/organ/external/wings/moth/proc/on_client_move(mob/source, list/move_args) +/obj/item/organ/wings/moth/proc/on_client_move(mob/source, list/move_args) SIGNAL_HANDLER if (!allow_flight()) @@ -76,7 +76,7 @@ source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = MOTH_WING_FORCE, controlled_cap = max_drift_force) source.setDir(source.client.intended_direction) -/obj/item/organ/external/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup) +/obj/item/organ/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup) SIGNAL_HANDLER if (get_dir(source, backup) == movement_dir || source.loc == backup.loc) @@ -88,7 +88,7 @@ return COMPONENT_PREVENT_SPACEMOVE_HALT ///check if our wings can burn off ;_; -/obj/item/organ/external/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human) +/obj/item/organ/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human) SIGNAL_HANDLER if(!burnt && human.bodytemperature >= 800 && human.fire_stacks > 0) //do not go into the extremely hot light. you will not survive @@ -99,13 +99,13 @@ human.update_body_parts() ///burn the wings off -/obj/item/organ/external/wings/moth/proc/burn_wings() +/obj/item/organ/wings/moth/proc/burn_wings() var/datum/bodypart_overlay/mutant/wings/moth/wings = bodypart_overlay wings.burnt = TRUE burnt = TRUE ///heal our wings back up!! -/obj/item/organ/external/wings/moth/proc/heal_wings(datum/source, heal_flags) +/obj/item/organ/wings/moth/proc/heal_wings(datum/source, heal_flags) SIGNAL_HANDLER if(!burnt) diff --git a/code/modules/surgery/organs/external/wings/wings.dm b/code/modules/surgery/organs/external/wings/wings.dm index 62efd492530..70344326121 100644 --- a/code/modules/surgery/organs/external/wings/wings.dm +++ b/code/modules/surgery/organs/external/wings/wings.dm @@ -1,5 +1,5 @@ ///Wing base type. doesn't really do anything -/obj/item/organ/external/wings +/obj/item/organ/wings name = "wings" desc = "Spread your wings and FLLLLLLLLYYYYY!" @@ -9,12 +9,14 @@ use_mob_sprite_as_obj_sprite = TRUE bodypart_overlay = /datum/bodypart_overlay/mutant/wings + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + ///Checks if the wings can soften short falls -/obj/item/organ/external/wings/proc/can_soften_fall() +/obj/item/organ/wings/proc/can_soften_fall() return TRUE ///Implement as needed to play a sound effect on *flap emote -/obj/item/organ/external/wings/proc/make_flap_sound(mob/living/carbon/wing_owner) +/obj/item/organ/wings/proc/make_flap_sound(mob/living/carbon/wing_owner) return ///Bodypart overlay of default wings. Does not have any wing functionality diff --git a/code/modules/surgery/organs/internal/_internal_organ.dm b/code/modules/surgery/organs/internal/_internal_organ.dm index 2568ca942cd..03ac2c01d45 100644 --- a/code/modules/surgery/organs/internal/_internal_organ.dm +++ b/code/modules/surgery/organs/internal/_internal_organ.dm @@ -1,11 +1,11 @@ -/obj/item/organ/internal +/obj/item/organ name = "organ" -/obj/item/organ/internal/Initialize(mapload) +/obj/item/organ/Initialize(mapload) . = ..() START_PROCESSING(SSobj, src) -/obj/item/organ/internal/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() // organs_slot must ALWAYS be ordered in the same way as organ_process_order @@ -14,7 +14,7 @@ STOP_PROCESSING(SSobj, src) -/obj/item/organ/internal/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE) +/obj/item/organ/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE) . = ..() if((organ_flags & ORGAN_VITAL) && !special && !HAS_TRAIT(organ_owner, TRAIT_GODMODE)) @@ -24,10 +24,10 @@ START_PROCESSING(SSobj, src) -/obj/item/organ/internal/process(seconds_per_tick, times_fired) +/obj/item/organ/process(seconds_per_tick, times_fired) on_death(seconds_per_tick, times_fired) //Kinda hate doing it like this, but I really don't want to call process directly. -/obj/item/organ/internal/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person +/obj/item/organ/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person if(organ_flags & (ORGAN_ROBOTIC | ORGAN_FROZEN)) return @@ -45,7 +45,7 @@ /// NOTE: THIS IS VERY HOT. Be careful what you put in here /// To give you some scale, if there's 100 carbons in the game, they each have maybe 9 organs /// So that's 900 calls to this proc every life process. Please don't be dumb -/obj/item/organ/internal/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing +/obj/item/organ/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing if(organ_flags & ORGAN_FAILING) handle_failing_organs(seconds_per_tick) return @@ -70,16 +70,16 @@ apply_organ_damage(-healing_amount * maxHealth * seconds_per_tick, damage) // pass curent damage incase we are over cap ///Used as callbacks by object pooling -/obj/item/organ/internal/exit_wardrobe() +/obj/item/organ/exit_wardrobe() START_PROCESSING(SSobj, src) //See above -/obj/item/organ/internal/enter_wardrobe() +/obj/item/organ/enter_wardrobe() bodypart_overlay?.imprint_on_next_insertion = TRUE // NOVA EDIT ADDITION - Make sure whoever gets it next gets the right DNA STOP_PROCESSING(SSobj, src) ///Organs don't die instantly, and neither should you when you get fucked up -/obj/item/organ/internal/handle_failing_organs(seconds_per_tick) +/obj/item/organ/handle_failing_organs(seconds_per_tick) if(owner.stat == DEAD) return diff --git a/code/modules/surgery/organs/internal/appendix/_appendix.dm b/code/modules/surgery/organs/internal/appendix/_appendix.dm index 420d4efc118..020d5186af9 100644 --- a/code/modules/surgery/organs/internal/appendix/_appendix.dm +++ b/code/modules/surgery/organs/internal/appendix/_appendix.dm @@ -2,14 +2,14 @@ #define APPENDICITIS_PROB 100 * (0.1 * (1 / 25) / 3600) #define INFLAMATION_ADVANCEMENT_PROB 2 -/obj/item/organ/internal/appendix +/obj/item/organ/appendix name = "appendix" icon_state = "appendix" base_icon_state = "appendix" zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_APPENDIX - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/bad_food = 5) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/bad_food = 5) grind_results = list(/datum/reagent/toxin/bad_food = 5) healing_factor = STANDARD_ORGAN_HEALING decay_factor = STANDARD_ORGAN_DECAY @@ -19,15 +19,15 @@ var/inflamation_stage = 0 -/obj/item/organ/internal/appendix/update_name() +/obj/item/organ/appendix/update_name() . = ..() name = "[inflamation_stage ? "inflamed " : null][initial(name)]" -/obj/item/organ/internal/appendix/update_icon_state() +/obj/item/organ/appendix/update_icon_state() icon_state = "[base_icon_state][inflamation_stage ? "inflamed" : ""]" return ..() -/obj/item/organ/internal/appendix/on_life(seconds_per_tick, times_fired) +/obj/item/organ/appendix/on_life(seconds_per_tick, times_fired) . = ..() if(!owner) return @@ -40,7 +40,7 @@ else if(SPT_PROB(APPENDICITIS_PROB, seconds_per_tick) && !HAS_TRAIT(owner, TRAIT_TEMPORARY_BODY)) become_inflamed() -/obj/item/organ/internal/appendix/proc/become_inflamed() +/obj/item/organ/appendix/proc/become_inflamed() inflamation_stage = 1 update_appearance() if(owner) @@ -52,7 +52,7 @@ header = "Whoa, Sick!", ) -/obj/item/organ/internal/appendix/proc/inflamation(seconds_per_tick) +/obj/item/organ/appendix/proc/inflamation(seconds_per_tick) var/mob/living/carbon/organ_owner = owner if(inflamation_stage < 3 && SPT_PROB(INFLAMATION_ADVANCEMENT_PROB, seconds_per_tick)) inflamation_stage += 1 @@ -73,21 +73,21 @@ organ_owner.adjustOrganLoss(ORGAN_SLOT_APPENDIX, 15) -/obj/item/organ/internal/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob) +/obj/item/organ/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantappendix -/obj/item/organ/internal/appendix/on_mob_remove(mob/living/carbon/organ_owner) +/obj/item/organ/appendix/on_mob_remove(mob/living/carbon/organ_owner) . = ..() REMOVE_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type) organ_owner.med_hud_set_status() -/obj/item/organ/internal/appendix/on_mob_insert(mob/living/carbon/organ_owner) +/obj/item/organ/appendix/on_mob_insert(mob/living/carbon/organ_owner) . = ..() if(inflamation_stage) ADD_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type) organ_owner.med_hud_set_status() -/obj/item/organ/internal/appendix/get_status_text(advanced, add_tooltips) +/obj/item/organ/appendix/get_status_text(advanced, add_tooltips) if(!(organ_flags & ORGAN_FAILING) && inflamation_stage) return conditional_tooltip("Inflamed", "Remove surgically.", add_tooltips) return ..() diff --git a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm index 5510b4bf967..08a53e28f8d 100644 --- a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm +++ b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm @@ -1,5 +1,5 @@ -/obj/item/organ/internal/appendix/golem +/obj/item/organ/appendix/golem name = "internal forge" desc = "This expanded digestive chamber allows golems to smelt minerals, provided that they are immersed in lava." icon_state = "ethereal_heart-off" @@ -8,16 +8,16 @@ /// Action which performs smelting var/datum/action/cooldown/internal_smelting/smelter -/obj/item/organ/internal/appendix/golem/Initialize(mapload) +/obj/item/organ/appendix/golem/Initialize(mapload) . = ..() smelter = new(src) -/obj/item/organ/internal/appendix/golem/on_mob_insert(mob/living/carbon/organ_owner) +/obj/item/organ/appendix/golem/on_mob_insert(mob/living/carbon/organ_owner) . = ..() RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_for_lava)) /// Give the action while in lava -/obj/item/organ/internal/appendix/golem/proc/check_for_lava(mob/living/owner) +/obj/item/organ/appendix/golem/proc/check_for_lava(mob/living/owner) SIGNAL_HANDLER if (!islava(owner.loc)) smelter.Remove(owner) @@ -25,12 +25,12 @@ if (smelter.owner != owner) smelter.Grant(owner) -/obj/item/organ/internal/appendix/golem/on_mob_remove(mob/living/carbon/organ_owner) +/obj/item/organ/appendix/golem/on_mob_remove(mob/living/carbon/organ_owner) UnregisterSignal(organ_owner, COMSIG_MOVABLE_MOVED) smelter?.Remove(organ_owner) // Might have been deleted by Destroy already return ..() -/obj/item/organ/internal/appendix/golem/Destroy() +/obj/item/organ/appendix/golem/Destroy() QDEL_NULL(smelter) return ..() diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index 0946d144103..a07b8caed6c 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/arm +/obj/item/organ/cyberimp/arm name = "arm-mounted implant" desc = "You shouldn't see this! Adminhelp and report this as an issue on github!" zone = BODY_ZONE_R_ARM @@ -22,7 +22,7 @@ /// Organ slot that the implant occupies for the left arm var/left_arm_organ_slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/Initialize(mapload) +/obj/item/organ/cyberimp/arm/Initialize(mapload) . = ..() if(ispath(active_item)) active_item = new active_item(src) @@ -35,7 +35,7 @@ update_appearance() SetSlotFromZone() -/obj/item/organ/internal/cyberimp/arm/Destroy() +/obj/item/organ/cyberimp/arm/Destroy() hand = null active_item = null for(var/datum/weakref/ref in items_list) @@ -49,7 +49,7 @@ /datum/action/item_action/organ_action/toggle/toolkit desc = "You can also activate your empty hand or the tool in your hand to open the tools radial menu." -/obj/item/organ/internal/cyberimp/arm/proc/SetSlotFromZone() +/obj/item/organ/cyberimp/arm/proc/SetSlotFromZone() switch(zone) if(BODY_ZONE_L_ARM) slot = left_arm_organ_slot @@ -58,16 +58,16 @@ else CRASH("Invalid zone for [type]") -/obj/item/organ/internal/cyberimp/arm/update_icon() +/obj/item/organ/cyberimp/arm/update_icon() . = ..() transform = (zone == BODY_ZONE_R_ARM) ? null : matrix(-1, 0, 0, 0, 1, 0) -/obj/item/organ/internal/cyberimp/arm/examine(mob/user) +/obj/item/organ/cyberimp/arm/examine(mob/user) . = ..() if(IS_ROBOTIC_ORGAN(src)) . += span_info("[src] is assembled in the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.") -/obj/item/organ/internal/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/screwtool) +/obj/item/organ/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/screwtool) . = ..() if(.) return TRUE @@ -80,19 +80,19 @@ to_chat(user, span_notice("You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.")) update_appearance() -/obj/item/organ/internal/cyberimp/arm/on_mob_insert(mob/living/carbon/arm_owner) +/obj/item/organ/cyberimp/arm/on_mob_insert(mob/living/carbon/arm_owner) . = ..() RegisterSignal(arm_owner, COMSIG_CARBON_POST_ATTACH_LIMB, PROC_REF(on_limb_attached)) RegisterSignal(arm_owner, COMSIG_KB_MOB_DROPITEM_DOWN, PROC_REF(dropkey)) //We're nodrop, but we'll watch for the drop hotkey anyway and then stow if possible. on_limb_attached(arm_owner, arm_owner.hand_bodyparts[zone == BODY_ZONE_R_ARM ? RIGHT_HANDS : LEFT_HANDS]) -/obj/item/organ/internal/cyberimp/arm/on_mob_remove(mob/living/carbon/arm_owner) +/obj/item/organ/cyberimp/arm/on_mob_remove(mob/living/carbon/arm_owner) . = ..() Retract() UnregisterSignal(arm_owner, list(COMSIG_CARBON_POST_ATTACH_LIMB, COMSIG_KB_MOB_DROPITEM_DOWN)) on_limb_detached(hand) -/obj/item/organ/internal/cyberimp/arm/proc/on_limb_attached(mob/living/carbon/source, obj/item/bodypart/limb) +/obj/item/organ/cyberimp/arm/proc/on_limb_attached(mob/living/carbon/source, obj/item/bodypart/limb) SIGNAL_HANDLER if(!limb || QDELETED(limb) || limb.body_zone != zone) return @@ -102,18 +102,18 @@ RegisterSignal(limb, COMSIG_BODYPART_REMOVED, PROC_REF(on_limb_detached)) hand = limb -/obj/item/organ/internal/cyberimp/arm/proc/on_limb_detached(obj/item/bodypart/source) +/obj/item/organ/cyberimp/arm/proc/on_limb_detached(obj/item/bodypart/source) SIGNAL_HANDLER if(source != hand || QDELETED(hand)) return UnregisterSignal(hand, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_BODYPART_REMOVED)) hand = null -/obj/item/organ/internal/cyberimp/arm/proc/on_item_attack_self() +/obj/item/organ/cyberimp/arm/proc/on_item_attack_self() SIGNAL_HANDLER INVOKE_ASYNC(src, PROC_REF(ui_action_click)) -/obj/item/organ/internal/cyberimp/arm/emp_act(severity) +/obj/item/organ/cyberimp/arm/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF || !IS_ROBOTIC_ORGAN(src)) return @@ -129,7 +129,7 @@ * quick way to store implant items. In this case, we check to make sure the user has the correct arm * selected, and that the item is actually owned by us, and then we'll hand off the rest to Retract() **/ -/obj/item/organ/internal/cyberimp/arm/proc/dropkey(mob/living/carbon/host) +/obj/item/organ/cyberimp/arm/proc/dropkey(mob/living/carbon/host) SIGNAL_HANDLER if(!host) return //How did we even get here @@ -138,7 +138,7 @@ if(Retract()) return COMSIG_KB_ACTIVATED -/obj/item/organ/internal/cyberimp/arm/proc/Retract() +/obj/item/organ/cyberimp/arm/proc/Retract() if(!active_item || (active_item in src)) return FALSE active_item.resistance_flags = active_item::resistance_flags @@ -159,7 +159,7 @@ playsound(get_turf(owner), retract_sound, 50, TRUE) return TRUE -/obj/item/organ/internal/cyberimp/arm/proc/Extend(obj/item/augment) +/obj/item/organ/cyberimp/arm/proc/Extend(obj/item/augment) if(!(augment in src)) return @@ -198,12 +198,12 @@ if(length(items_list) > 1) RegisterSignals(active_item, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_ITEM_ATTACK_SELF_SECONDARY), PROC_REF(swap_tools)) // secondary for welders -/obj/item/organ/internal/cyberimp/arm/proc/swap_tools(active_item) +/obj/item/organ/cyberimp/arm/proc/swap_tools(active_item) SIGNAL_HANDLER Retract(active_item) INVOKE_ASYNC(src, PROC_REF(ui_action_click)) -/obj/item/organ/internal/cyberimp/arm/ui_action_click() +/obj/item/organ/cyberimp/arm/ui_action_click() if((organ_flags & ORGAN_FAILING) || (!active_item && !contents.len)) to_chat(owner, span_warning("The implant doesn't respond. It seems to be broken...")) return @@ -228,7 +228,7 @@ Retract() -/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity) +/obj/item/organ/cyberimp/arm/gun/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return @@ -243,25 +243,25 @@ organ_flags |= ORGAN_FAILING -/obj/item/organ/internal/cyberimp/arm/gun/laser +/obj/item/organ/cyberimp/arm/gun/laser name = "arm-mounted laser implant" desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_laser" items_to_create = list(/obj/item/gun/energy/laser/mounted/augment) -/obj/item/organ/internal/cyberimp/arm/gun/laser/l +/obj/item/organ/cyberimp/arm/gun/laser/l zone = BODY_ZONE_L_ARM -/obj/item/organ/internal/cyberimp/arm/gun/taser +/obj/item/organ/cyberimp/arm/gun/taser name = "arm-mounted taser implant" desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_taser" items_to_create = list(/obj/item/gun/energy/e_gun/advtaser/mounted) -/obj/item/organ/internal/cyberimp/arm/gun/taser/l +/obj/item/organ/cyberimp/arm/gun/taser/l zone = BODY_ZONE_L_ARM -/obj/item/organ/internal/cyberimp/arm/toolset +/obj/item/organ/cyberimp/arm/toolset name = "integrated toolset implant" desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contain advanced versions of every tool." icon_state = "toolkit_engineering" @@ -275,10 +275,10 @@ /obj/item/multitool/cyborg, ) -/obj/item/organ/internal/cyberimp/arm/toolset/l +/obj/item/organ/cyberimp/arm/toolset/l zone = BODY_ZONE_L_ARM -/obj/item/organ/internal/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card) +/obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card) for(var/datum/weakref/created_item in items_list) var/obj/potential_knife = created_item.resolve() if(istype(/obj/item/knife/combat/cyborg, potential_knife)) @@ -288,23 +288,23 @@ items_list += WEAKREF(new /obj/item/knife/combat/cyborg(src)) return TRUE -/obj/item/organ/internal/cyberimp/arm/esword +/obj/item/organ/cyberimp/arm/esword name = "arm-mounted energy blade" desc = "An illegal and highly dangerous cybernetic implant that can project a deadly blade of concentrated energy." items_to_create = list(/obj/item/melee/energy/blade/hardlight) -/obj/item/organ/internal/cyberimp/arm/medibeam +/obj/item/organ/cyberimp/arm/medibeam name = "integrated medical beamgun" desc = "A cybernetic implant that allows the user to project a healing beam from their hand." items_to_create = list(/obj/item/gun/medbeam) -/obj/item/organ/internal/cyberimp/arm/flash +/obj/item/organ/cyberimp/arm/flash name = "integrated high-intensity photon projector" //Why not desc = "An integrated projector mounted onto a user's arm that is able to be used as a powerful flash." items_to_create = list(/obj/item/assembly/flash/armimplant) -/obj/item/organ/internal/cyberimp/arm/flash/Initialize(mapload) +/obj/item/organ/cyberimp/arm/flash/Initialize(mapload) . = ..() for(var/datum/weakref/created_item in items_list) var/obj/potential_flash = created_item.resolve() @@ -313,22 +313,22 @@ var/obj/item/assembly/flash/armimplant/flash = potential_flash flash.arm = WEAKREF(src) -/obj/item/organ/internal/cyberimp/arm/flash/Extend() +/obj/item/organ/cyberimp/arm/flash/Extend() . = ..() active_item.set_light_range(7) active_item.set_light_on(TRUE) -/obj/item/organ/internal/cyberimp/arm/flash/Retract() +/obj/item/organ/cyberimp/arm/flash/Retract() if(active_item) active_item.set_light_on(FALSE) return ..() -/obj/item/organ/internal/cyberimp/arm/baton +/obj/item/organ/cyberimp/arm/baton name = "arm electrification implant" desc = "An illegal combat implant that allows the user to administer disabling shocks from their arm." items_to_create = list(/obj/item/borg/stun) -/obj/item/organ/internal/cyberimp/arm/combat +/obj/item/organ/cyberimp/arm/combat name = "combat cybernetics implant" desc = "A powerful cybernetic implant that contains combat modules built into the user's arm." items_to_create = list( @@ -338,7 +338,7 @@ /obj/item/assembly/flash/armimplant, ) -/obj/item/organ/internal/cyberimp/arm/combat/Initialize(mapload) +/obj/item/organ/cyberimp/arm/combat/Initialize(mapload) . = ..() for(var/datum/weakref/created_item in items_list) var/obj/potential_flash = created_item.resolve() @@ -347,7 +347,7 @@ var/obj/item/assembly/flash/armimplant/flash = potential_flash flash.arm = WEAKREF(src) -/obj/item/organ/internal/cyberimp/arm/surgery +/obj/item/organ/cyberimp/arm/surgery name = "surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." icon_state = "toolkit_surgical" @@ -362,7 +362,7 @@ /obj/item/surgical_drapes, ) -/obj/item/organ/internal/cyberimp/arm/surgery/emagged +/obj/item/organ/cyberimp/arm/surgery/emagged name = "hacked surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm. This one seems to have been tampered with." items_to_create = list( @@ -376,7 +376,7 @@ /obj/item/knife/combat/cyborg, ) -/obj/item/organ/internal/cyberimp/arm/strongarm +/obj/item/organ/cyberimp/arm/strongarm name = "\proper Strong-Arm empowered musculature implant" desc = "When implanted, this cybernetic implant will enhance the muscles of the arm to deliver more power-per-action." icon_state = "muscle_implant" @@ -409,19 +409,19 @@ ///Tracks how soon we can perform another slam attack COOLDOWN_DECLARE(slam_cooldown) -/obj/item/organ/internal/cyberimp/arm/strongarm/l +/obj/item/organ/cyberimp/arm/strongarm/l zone = BODY_ZONE_L_ARM -/obj/item/organ/internal/cyberimp/arm/strongarm/on_mob_insert(mob/living/carbon/arm_owner) +/obj/item/organ/cyberimp/arm/strongarm/on_mob_insert(mob/living/carbon/arm_owner) . = ..() if(ishuman(arm_owner)) //Sorry, only humans RegisterSignal(arm_owner, COMSIG_LIVING_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand)) -/obj/item/organ/internal/cyberimp/arm/strongarm/on_mob_remove(mob/living/carbon/arm_owner) +/obj/item/organ/cyberimp/arm/strongarm/on_mob_remove(mob/living/carbon/arm_owner) . = ..() UnregisterSignal(arm_owner, COMSIG_LIVING_EARLY_UNARMED_ATTACK) -/obj/item/organ/internal/cyberimp/arm/strongarm/emp_act(severity) +/obj/item/organ/cyberimp/arm/strongarm/emp_act(severity) . = ..() if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF) return @@ -429,11 +429,11 @@ organ_flags |= ORGAN_FAILING addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) -/obj/item/organ/internal/cyberimp/arm/strongarm/proc/reboot() +/obj/item/organ/cyberimp/arm/strongarm/proc/reboot() organ_flags &= ~ORGAN_FAILING owner.balloon_alert(owner, "your arm stops spasming!") -/obj/item/organ/internal/cyberimp/arm/strongarm/proc/on_attack_hand(mob/living/carbon/human/source, atom/target, proximity, modifiers) +/obj/item/organ/cyberimp/arm/strongarm/proc/on_attack_hand(mob/living/carbon/human/source, atom/target, proximity, modifiers) SIGNAL_HANDLER if(source.get_active_hand() != hand || !proximity) diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm index c9cbfbe445b..6a1e4272cd5 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm @@ -1,9 +1,9 @@ -/obj/item/organ/internal/cyberimp/chest +/obj/item/organ/cyberimp/chest name = "cybernetic torso implant" desc = "Implants for the organs in your torso." zone = BODY_ZONE_CHEST -/obj/item/organ/internal/cyberimp/chest/nutriment +/obj/item/organ/cyberimp/chest/nutriment name = "nutriment pump implant" desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving." icon_state = "nutriment_implant" @@ -12,7 +12,7 @@ var/poison_amount = 5 slot = ORGAN_SLOT_STOMACH_AID -/obj/item/organ/internal/cyberimp/chest/nutriment/on_life(seconds_per_tick, times_fired) +/obj/item/organ/cyberimp/chest/nutriment/on_life(seconds_per_tick, times_fired) if(synthesizing) return @@ -22,10 +22,10 @@ owner.adjust_nutrition(25 * seconds_per_tick) addtimer(CALLBACK(src, PROC_REF(synth_cool)), 5 SECONDS) -/obj/item/organ/internal/cyberimp/chest/nutriment/proc/synth_cool() +/obj/item/organ/cyberimp/chest/nutriment/proc/synth_cool() synthesizing = FALSE -/obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity) +/obj/item/organ/cyberimp/chest/nutriment/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return @@ -33,14 +33,14 @@ to_chat(owner, span_warning("You feel like your insides are burning.")) -/obj/item/organ/internal/cyberimp/chest/nutriment/plus +/obj/item/organ/cyberimp/chest/nutriment/plus name = "nutriment pump implant PLUS" desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." icon_state = "adv_nutriment_implant" hunger_threshold = NUTRITION_LEVEL_HUNGRY poison_amount = 10 -/obj/item/organ/internal/cyberimp/chest/reviver +/obj/item/organ/cyberimp/chest/reviver name = "reviver implant" desc = "This implant will attempt to revive and heal you if you lose consciousness. For the faint of heart!" icon_state = "reviver_implant" @@ -50,15 +50,15 @@ COOLDOWN_DECLARE(reviver_cooldown) COOLDOWN_DECLARE(defib_cooldown) -/obj/item/organ/internal/cyberimp/chest/reviver/on_death(seconds_per_tick, times_fired) - if(isnull(owner)) // owner can be null, on_death() gets called by /obj/item/organ/internal/process() for decay +/obj/item/organ/cyberimp/chest/reviver/on_death(seconds_per_tick, times_fired) + if(isnull(owner)) // owner can be null, on_death() gets called by /obj/item/organ/process() for decay return try_heal() // Allows implant to work even on dead people -/obj/item/organ/internal/cyberimp/chest/reviver/on_life(seconds_per_tick, times_fired) +/obj/item/organ/cyberimp/chest/reviver/on_life(seconds_per_tick, times_fired) try_heal() -/obj/item/organ/internal/cyberimp/chest/reviver/proc/try_heal() +/obj/item/organ/cyberimp/chest/reviver/proc/try_heal() if(reviving) if(owner.stat == CONSCIOUS) COOLDOWN_START(src, reviver_cooldown, revive_cost) @@ -78,7 +78,7 @@ COOLDOWN_START(src, defib_cooldown, 8 SECONDS) // 5 seconds after heal proc delay -/obj/item/organ/internal/cyberimp/chest/reviver/proc/heal() +/obj/item/organ/cyberimp/chest/reviver/proc/heal() if(COOLDOWN_FINISHED(src, defib_cooldown)) revive_dead() @@ -106,7 +106,7 @@ owner.visible_message(span_warning("[owner]'s body twitches a bit."), span_notice("You feel like something is patching your injured body.")) -/obj/item/organ/internal/cyberimp/chest/reviver/proc/revive_dead() +/obj/item/organ/cyberimp/chest/reviver/proc/revive_dead() if(!COOLDOWN_FINISHED(src, defib_cooldown) || owner.stat != DEAD || owner.can_defib() != DEFIB_POSSIBLE) return owner.notify_revival("You are being revived by [src]!") @@ -126,7 +126,7 @@ log_game("[owner] been revived by [src]") -/obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity) +/obj/item/organ/cyberimp/chest/reviver/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return @@ -143,7 +143,7 @@ to_chat(human_owner, span_userdanger("You feel a horrible agony in your chest!")) addtimer(CALLBACK(src, PROC_REF(undo_heart_attack)), 600 / severity) -/obj/item/organ/internal/cyberimp/chest/reviver/proc/undo_heart_attack() +/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack() var/mob/living/carbon/human/human_owner = owner if(!istype(human_owner)) return @@ -152,7 +152,7 @@ to_chat(human_owner, span_notice("You feel your heart beating again!")) -/obj/item/organ/internal/cyberimp/chest/thrusters +/obj/item/organ/cyberimp/chest/thrusters name = "implantable thrusters set" desc = "An implantable set of thruster ports. They use the gas from environment or subject's internals for propulsion in zero-gravity areas. \ Unlike regular jetpacks, this device has no stabilization system." @@ -164,7 +164,7 @@ w_class = WEIGHT_CLASS_NORMAL var/on = FALSE -/obj/item/organ/internal/cyberimp/chest/thrusters/Initialize(mapload) +/obj/item/organ/cyberimp/chest/thrusters/Initialize(mapload) . = ..() AddComponent( \ /datum/component/jetpack, \ @@ -178,21 +178,21 @@ /datum/effect_system/trail_follow/ion, \ ) -/obj/item/organ/internal/cyberimp/chest/thrusters/Remove(mob/living/carbon/thruster_owner, special, movement_flags) +/obj/item/organ/cyberimp/chest/thrusters/Remove(mob/living/carbon/thruster_owner, special, movement_flags) if(on) deactivate(silent = TRUE) ..() -/obj/item/organ/internal/cyberimp/chest/thrusters/ui_action_click() +/obj/item/organ/cyberimp/chest/thrusters/ui_action_click() toggle() -/obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle(silent = FALSE) +/obj/item/organ/cyberimp/chest/thrusters/proc/toggle(silent = FALSE) if(on) deactivate() else activate() -/obj/item/organ/internal/cyberimp/chest/thrusters/proc/activate(silent = FALSE) +/obj/item/organ/cyberimp/chest/thrusters/proc/activate(silent = FALSE) if(on) return if(organ_flags & ORGAN_FAILING) @@ -208,7 +208,7 @@ to_chat(owner, span_notice("You turn your thrusters set on.")) update_appearance() -/obj/item/organ/internal/cyberimp/chest/thrusters/proc/deactivate(silent = FALSE) +/obj/item/organ/cyberimp/chest/thrusters/proc/deactivate(silent = FALSE) if(!on) return SEND_SIGNAL(src, COMSIG_THRUSTER_DEACTIVATED, owner) @@ -218,11 +218,11 @@ on = FALSE update_appearance() -/obj/item/organ/internal/cyberimp/chest/thrusters/update_icon_state() +/obj/item/organ/cyberimp/chest/thrusters/update_icon_state() icon_state = "[base_icon_state][on ? "-on" : null]" return ..() -/obj/item/organ/internal/cyberimp/chest/thrusters/proc/allow_thrust(num, use_fuel = TRUE) +/obj/item/organ/cyberimp/chest/thrusters/proc/allow_thrust(num, use_fuel = TRUE) if(!owner) return FALSE @@ -257,7 +257,7 @@ deactivate(silent = TRUE) return FALSE -/obj/item/organ/internal/cyberimp/chest/spine +/obj/item/organ/cyberimp/chest/spine name = "\improper Herculean gravitronic spinal implant" desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \ Contains a slot which can be upgraded with a gravity anomaly core, improving its performance." @@ -265,8 +265,10 @@ slot = ORGAN_SLOT_SPINE /// How much faster does the spinal implant improve our lifting speed, workout ability, reducing falling damage and improving climbing and standing speed var/athletics_boost_multiplier = 0.8 + /// How much additional throwing speed does our spinal implant grant us. + var/added_throw_speed = 1 /// How much additional throwing range does our spinal implant grant us. - var/added_throw_range = 2 + var/added_throw_range = 4 /// How much additional boxing damage and tackling power do we add? var/strength_bonus = 4 /// Whether or not a gravity anomaly core has been installed, improving the effectiveness of the spinal implant. @@ -274,29 +276,33 @@ /// The overlay for our implant to indicate that, yes, this person has an implant inserted. var/mutable_appearance/stone_overlay -/obj/item/organ/internal/cyberimp/chest/spine/emp_act(severity) +/obj/item/organ/cyberimp/chest/spine/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return to_chat(owner, span_warning("You feel sheering pain as your body is crushed like a soda can!")) owner.apply_damage(20/severity, BRUTE, def_zone = BODY_ZONE_CHEST) -/obj/item/organ/internal/cyberimp/chest/spine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/cyberimp/chest/spine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() stone_overlay = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "stone") organ_owner.add_overlay(stone_overlay) + add_organ_trait(TRAIT_BOULDER_BREAKER) if(core_applied) organ_owner.AddElement(/datum/element/forced_gravity, 1) + add_organ_trait(TRAIT_STURDY_FRAME) -/obj/item/organ/internal/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() + remove_organ_trait(TRAIT_BOULDER_BREAKER) if(stone_overlay) organ_owner.cut_overlay(stone_overlay) stone_overlay = null if(core_applied) organ_owner.RemoveElement(/datum/element/forced_gravity, 1) + remove_organ_trait(TRAIT_STURDY_FRAME) -/obj/item/organ/internal/cyberimp/chest/spine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/item/organ/cyberimp/chest/spine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) . = ..() if(core_applied) user.balloon_alert(user, "core already installed!") @@ -304,14 +310,26 @@ if(istype(tool, /obj/item/assembly/signaler/anomaly/grav)) user.balloon_alert(user, "core installed.") - athletics_boost_multiplier = 0.25 - added_throw_range += 2 - strength_bonus += 4 + name = /obj/item/organ/cyberimp/chest/spine/atlas::name + desc = /obj/item/organ/cyberimp/chest/spine/atlas::desc + athletics_boost_multiplier = /obj/item/organ/cyberimp/chest/spine/atlas::athletics_boost_multiplier + added_throw_range = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_range + added_throw_speed = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_speed + strength_bonus = /obj/item/organ/cyberimp/chest/spine/atlas::strength_bonus core_applied = TRUE - name = "\improper Atlas gravitonic spinal implant" - desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \ - This one has been improved through the installation of a gravity anomaly core, allowing for personal gravity manipulation." - icon_state = "herculean_implant_core" update_appearance() qdel(tool) return ITEM_INTERACT_SUCCESS + +/obj/item/organ/cyberimp/chest/spine/atlas + name = "\improper Atlas gravitonic spinal implant" + desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \ + This one has been improved through the installation of a gravity anomaly core, allowing for personal gravity manipulation. \ + Not only can you walk with your feet planted firmly on the ground even during a loss of enviromental gravity, but you also \ + carry heavier loads with relative ease." + icon_state = "herculean_implant_core" + athletics_boost_multiplier = 0.25 + added_throw_speed = 6 + added_throw_range = 8 + strength_bonus = 8 + core_applied = TRUE diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm index aa67fe0c08d..d720953a24c 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/eyes +/obj/item/organ/cyberimp/eyes name = "cybernetic eye implant" desc = "Implants for your eyes." icon_state = "eye_implant" @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_TINY // HUD implants -/obj/item/organ/internal/cyberimp/eyes/hud +/obj/item/organ/cyberimp/eyes/hud name = "HUD implant" desc = "These cybernetic eyes will display a HUD over everything you see. Maybe." slot = ORGAN_SLOT_HUD @@ -17,7 +17,7 @@ var/toggled_on = TRUE -/obj/item/organ/internal/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/eye_owner) +/obj/item/organ/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/eye_owner) if(toggled_on) toggled_on = FALSE eye_owner.add_traits(HUD_traits, ORGAN_TRAIT) @@ -27,36 +27,36 @@ eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT) balloon_alert(eye_owner, "hud enabled") -/obj/item/organ/internal/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags) +/obj/item/organ/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags) . = ..() eye_owner.add_traits(HUD_traits, ORGAN_TRAIT) toggled_on = TRUE -/obj/item/organ/internal/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags) +/obj/item/organ/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags) . = ..() eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT) toggled_on = FALSE -/obj/item/organ/internal/cyberimp/eyes/hud/medical +/obj/item/organ/cyberimp/eyes/hud/medical name = "medical HUD implant" desc = "These cybernetic eye implants will display a medical HUD over everything you see." icon_state = "eye_implant_medical" HUD_traits = list(TRAIT_MEDICAL_HUD) -/obj/item/organ/internal/cyberimp/eyes/hud/security +/obj/item/organ/cyberimp/eyes/hud/security name = "security HUD implant" desc = "These cybernetic eye implants will display a security HUD over everything you see." icon_state = "eye_implant_security" HUD_traits = list(TRAIT_SECURITY_HUD) -/obj/item/organ/internal/cyberimp/eyes/hud/diagnostic +/obj/item/organ/cyberimp/eyes/hud/diagnostic name = "diagnostic HUD implant" desc = "These cybernetic eye implants will display a diagnostic HUD over everything you see." icon_state = "eye_implant_diagnostic" HUD_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD) -/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate +/obj/item/organ/cyberimp/eyes/hud/security/syndicate name = "contraband security HUD implant" desc = "A Cybersun Industries brand Security HUD Implant. These illicit cybernetic eye implants will display a security HUD over everything you see." icon_state = "eye_implant_syndicate" diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm index 334c8941f6b..42f0e5ac7b2 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm @@ -1,5 +1,5 @@ -/obj/item/organ/internal/cyberimp +/obj/item/organ/cyberimp name = "cybernetic implant" desc = "A state-of-the-art implant that improves a baseline's functionality." @@ -8,7 +8,7 @@ var/implant_color = COLOR_WHITE var/implant_overlay -/obj/item/organ/internal/cyberimp/New(mob/implanted_mob = null) +/obj/item/organ/cyberimp/New(mob/implanted_mob = null) if(iscarbon(implanted_mob)) src.Insert(implanted_mob) if(implant_overlay) @@ -19,13 +19,13 @@ //[[[[BRAIN]]]] -/obj/item/organ/internal/cyberimp/brain +/obj/item/organ/cyberimp/brain name = "cybernetic brain implant" desc = "Injectors of extra sub-routines for the brain." zone = BODY_ZONE_HEAD w_class = WEIGHT_CLASS_TINY -/obj/item/organ/internal/cyberimp/brain/emp_act(severity) +/obj/item/organ/cyberimp/brain/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return @@ -34,7 +34,7 @@ to_chat(owner, span_warning("Your body seizes up!")) -/obj/item/organ/internal/cyberimp/brain/anti_drop +/obj/item/organ/cyberimp/brain/anti_drop name = "anti-drop implant" desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." icon_state = "brain_implant_antidrop" @@ -43,7 +43,7 @@ slot = ORGAN_SLOT_BRAIN_CEREBELLUM actions_types = list(/datum/action/item_action/organ_action/toggle) -/obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click() +/obj/item/organ/cyberimp/brain/anti_drop/ui_action_click() active = !active if(active) var/list/hold_list = owner.get_empty_held_indexes() @@ -63,7 +63,7 @@ to_chat(owner, span_notice("Your hands relax...")) -/obj/item/organ/internal/cyberimp/brain/anti_drop/emp_act(severity) +/obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return @@ -78,25 +78,25 @@ stored_items = list() -/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/release_items() +/obj/item/organ/cyberimp/brain/anti_drop/proc/release_items() for(var/obj/item/stored_item as anything in stored_items) REMOVE_TRAIT(stored_item, TRAIT_NODROP, IMPLANT_TRAIT) UnregisterSignal(stored_item, COMSIG_ITEM_DROPPED) stored_items = list() -/obj/item/organ/internal/cyberimp/brain/anti_drop/Remove(mob/living/carbon/implant_owner, special, movement_flags) +/obj/item/organ/cyberimp/brain/anti_drop/Remove(mob/living/carbon/implant_owner, special, movement_flags) if(active) ui_action_click() ..() -/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/on_held_item_dropped(obj/item/source, mob/user) +/obj/item/organ/cyberimp/brain/anti_drop/proc/on_held_item_dropped(obj/item/source, mob/user) SIGNAL_HANDLER REMOVE_TRAIT(source, TRAIT_NODROP, IMPLANT_TRAIT) UnregisterSignal(source, COMSIG_ITEM_DROPPED) stored_items -= source -/obj/item/organ/internal/cyberimp/brain/anti_stun +/obj/item/organ/cyberimp/brain/anti_stun name = "CNS rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." icon_state = "brain_implant_rebooter" @@ -114,28 +114,28 @@ var/stun_resistance_time = 6 SECONDS COOLDOWN_DECLARE(implant_cooldown) -/obj/item/organ/internal/cyberimp/brain/anti_stun/on_mob_remove(mob/living/carbon/implant_owner) +/obj/item/organ/cyberimp/brain/anti_stun/on_mob_remove(mob/living/carbon/implant_owner) . = ..() UnregisterSignal(implant_owner, signalCache) UnregisterSignal(implant_owner, COMSIG_LIVING_ENTER_STAMCRIT) remove_stun_buffs(implant_owner) -/obj/item/organ/internal/cyberimp/brain/anti_stun/on_mob_insert(mob/living/carbon/receiver) +/obj/item/organ/cyberimp/brain/anti_stun/on_mob_insert(mob/living/carbon/receiver) . = ..() RegisterSignals(receiver, signalCache, PROC_REF(on_signal)) RegisterSignal(receiver, COMSIG_LIVING_ENTER_STAMCRIT, PROC_REF(on_stamcrit)) -/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount) +/obj/item/organ/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount) SIGNAL_HANDLER if(!(organ_flags & ORGAN_FAILING) && amount > 0) addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE) -/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/on_stamcrit(datum/source) +/obj/item/organ/cyberimp/brain/anti_stun/proc/on_stamcrit(datum/source) SIGNAL_HANDLER if(!(organ_flags & ORGAN_FAILING)) addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE) -/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/clear_stuns() +/obj/item/organ/cyberimp/brain/anti_stun/proc/clear_stuns() if(isnull(owner) || (organ_flags & ORGAN_FAILING) || !COOLDOWN_FINISHED(src, implant_cooldown)) return @@ -156,37 +156,37 @@ COOLDOWN_START(src, implant_cooldown, 60 SECONDS) addtimer(CALLBACK(src, PROC_REF(implant_ready)),60 SECONDS) -/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/implant_ready() +/obj/item/organ/cyberimp/brain/anti_stun/proc/implant_ready() if(owner) to_chat(owner, span_purple("Your rebooter implant is ready.")) -/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/give_stun_buffs(mob/living/give_to = owner) +/obj/item/organ/cyberimp/brain/anti_stun/proc/give_stun_buffs(mob/living/give_to = owner) give_to.add_traits(list(TRAIT_STUNIMMUNE, TRAIT_BATON_RESISTANCE), REF(src)) give_to.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown) -/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/remove_stun_buffs(mob/living/remove_from = owner) +/obj/item/organ/cyberimp/brain/anti_stun/proc/remove_stun_buffs(mob/living/remove_from = owner) remove_from.remove_traits(list(TRAIT_STUNIMMUNE, TRAIT_BATON_RESISTANCE), REF(src)) remove_from.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown) -/obj/item/organ/internal/cyberimp/brain/anti_stun/emp_act(severity) +/obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity) . = ..() if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF) return organ_flags |= ORGAN_FAILING addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) -/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/reboot() +/obj/item/organ/cyberimp/brain/anti_stun/proc/reboot() organ_flags &= ~ORGAN_FAILING implant_ready() -/obj/item/organ/internal/cyberimp/brain/connector +/obj/item/organ/cyberimp/brain/connector name = "CNS skillchip connector implant" desc = "This cybernetic adds a port to the back of your head, where you can remove or add skillchips at will." icon_state = "brain_implant_connector" slot = ORGAN_SLOT_BRAIN_CNS actions_types = list(/datum/action/item_action/organ_action/use) -/obj/item/organ/internal/cyberimp/brain/connector/ui_action_click() +/obj/item/organ/cyberimp/brain/connector/ui_action_click() to_chat(owner, span_warning("You start fiddling around with [src]...")) playsound(owner, 'sound/items/taperecorder/tape_flip.ogg', 20, vary = TRUE) // asmr @@ -208,12 +208,12 @@ else to_chat(owner, span_warning("You try to insert [owner.get_active_held_item()] into [src], but it won't fit!")) // make it kill you if you shove a crayon inside or something else // no inhand item, assume removal - var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/brain) if(!chippy_brain) CRASH("we using a brain implant wit no brain") remove_skillchip(chippy_brain) -/obj/item/organ/internal/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip) +/obj/item/organ/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip) var/fail_string = owner.implant_skillchip(skillchip, force = FALSE) if(fail_string) to_chat(owner, span_warning(fail_string)) @@ -229,7 +229,7 @@ // success! playsound(owner, 'sound/machines/chime.ogg', 10, vary = TRUE) -/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/internal/brain/chippy_brain) +/obj/item/organ/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/brain/chippy_brain) var/obj/item/skillchip/skillchip = show_radial_menu(owner, owner, chippy_brain.skillchips) if(skillchip) owner.remove_skillchip(skillchip, silent = FALSE) @@ -241,7 +241,7 @@ to_chat(owner, span_warning("Your brain is empty!")) // heh -/obj/item/organ/internal/cyberimp/brain/connector/emp_act(severity) +/obj/item/organ/cyberimp/brain/connector/emp_act(severity) . = ..() if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF) return @@ -253,7 +253,7 @@ // you either lose a chip or a bit of your brain owner.visible_message(span_warning("Something falls to the ground from behind [owner]'s head."),\ span_boldwarning("You feel something fall off from behind your head.")) - var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN) var/obj/item/skillchip/skillchip = chippy_brain?.skillchips[1] if(skillchip) owner.remove_skillchip(skillchip, silent = TRUE) @@ -263,7 +263,7 @@ remove_brain() addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) -/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/internal/brain/chippy_brain, severity = 1) +/obj/item/organ/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/brain/chippy_brain, severity = 1) playsound(owner, 'sound/effects/meatslap.ogg', 25, TRUE) if(!chippy_brain) return @@ -277,21 +277,21 @@ new /obj/effect/decal/cleanable/blood/gibs/up(get_turf(owner)) return FALSE -/obj/item/organ/internal/cyberimp/brain/connector/proc/reboot() +/obj/item/organ/cyberimp/brain/connector/proc/reboot() organ_flags &= ~ORGAN_FAILING //[[[[MOUTH]]]] -/obj/item/organ/internal/cyberimp/mouth +/obj/item/organ/cyberimp/mouth zone = BODY_ZONE_PRECISE_MOUTH -/obj/item/organ/internal/cyberimp/mouth/breathing_tube +/obj/item/organ/cyberimp/mouth/breathing_tube name = "breathing tube implant" desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked." icon_state = "implant_mask" slot = ORGAN_SLOT_BREATHING_TUBE w_class = WEIGHT_CLASS_TINY -/obj/item/organ/internal/cyberimp/mouth/breathing_tube/emp_act(severity) +/obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm index b4a0ac79d33..e10dbbf2593 100644 --- a/code/modules/surgery/organs/internal/ears/_ears.dm +++ b/code/modules/surgery/organs/internal/ears/_ears.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/ears +/obj/item/organ/ears name = "ears" icon_state = "ears" desc = "There are three parts to the ear. Inner, middle and outer. Only one of these parts should be normally visible." @@ -26,7 +26,7 @@ /// Multiplier for both long term and short term ear damage var/damage_multiplier = 1 -/obj/item/organ/internal/ears/on_life(seconds_per_tick, times_fired) +/obj/item/organ/ears/on_life(seconds_per_tick, times_fired) // only inform when things got worse, needs to happen before we heal if((damage > low_threshold && prev_damage < low_threshold) || (damage > high_threshold && prev_damage < high_threshold)) to_chat(owner, span_warning("The ringing in your ears grows louder, blocking out any external noises for a moment.")) @@ -44,20 +44,20 @@ adjustEarDamage(0, 4) SEND_SOUND(owner, sound('sound/items/weapons/flash_ring.ogg')) -/obj/item/organ/internal/ears/apply_organ_damage(damage_amount, maximum, required_organ_flag) +/obj/item/organ/ears/apply_organ_damage(damage_amount, maximum, required_organ_flag) . = ..() update_temp_deafness() -/obj/item/organ/internal/ears/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/ears/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() update_temp_deafness() -/obj/item/organ/internal/ears/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/ears/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_MOB_SAY) REMOVE_TRAIT(organ_owner, TRAIT_DEAF, EAR_DAMAGE) -/obj/item/organ/internal/ears/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/ears/get_status_appendix(advanced, add_tooltips) if(owner.stat == DEAD || !HAS_TRAIT(owner, TRAIT_DEAF)) return if(advanced) @@ -69,7 +69,7 @@ return conditional_tooltip("Subject is [(organ_flags & ORGAN_FAILING) ? "permanently": "temporarily"] deaf from ear damage.", "Repair surgically, use medication such as [/datum/reagent/medicine/inacusiate::name], or protect ears with earmuffs.", add_tooltips) return "Subject is deaf." -/obj/item/organ/internal/ears/show_on_condensed_scans() +/obj/item/organ/ears/show_on_condensed_scans() // Always show if we have an appendix return ..() || (owner.stat != DEAD && HAS_TRAIT(owner, TRAIT_DEAF)) @@ -79,7 +79,7 @@ * * ddmg: Handles normal organ damage * * ddeaf: Handles temporary deafness, 1 ddeaf = 2 seconds of deafness, by default (with no multiplier) */ -/obj/item/organ/internal/ears/proc/adjustEarDamage(ddmg = 0, ddeaf = 0) +/obj/item/organ/ears/proc/adjustEarDamage(ddmg = 0, ddeaf = 0) if(HAS_TRAIT(owner, TRAIT_GODMODE)) update_temp_deafness() return @@ -93,7 +93,7 @@ update_temp_deafness() /// Updates status of deafness -/obj/item/organ/internal/ears/proc/update_temp_deafness() +/obj/item/organ/ears/proc/update_temp_deafness() // if we're failing we always have at least some deaf stacks (and thus deafness) if(organ_flags & ORGAN_FAILING) deaf = max(deaf, 1 * damage_multiplier) @@ -113,7 +113,7 @@ UnregisterSignal(owner, COMSIG_MOB_SAY) /// Being deafened by loud noises makes you shout -/obj/item/organ/internal/ears/proc/adjust_speech(datum/source, list/speech_args) +/obj/item/organ/ears/proc/adjust_speech(datum/source, list/speech_args) SIGNAL_HANDLER if(HAS_TRAIT_NOT_FROM(source, TRAIT_DEAF, EAR_DAMAGE)) @@ -141,11 +141,11 @@ speech_args[SPEECH_MESSAGE] = message return COMPONENT_UPPERCASE_SPEECH -/obj/item/organ/internal/ears/invincible +/obj/item/organ/ears/invincible damage_multiplier = 0 -/obj/item/organ/internal/ears/cat +/obj/item/organ/ears/cat name = "cat ears" icon = 'icons/obj/clothing/head/costume.dmi' worn_icon = 'icons/mob/clothing/head/costume.dmi' @@ -164,6 +164,7 @@ layers = EXTERNAL_FRONT | EXTERNAL_BEHIND color_source = ORGAN_COLOR_HAIR feature_key = "ears" + dyable = TRUE /// Layer upon which we add the inner ears overlay var/inner_layer = EXTERNAL_FRONT @@ -192,21 +193,21 @@ base_ears.overlays += inner_ears return base_ears -/obj/item/organ/internal/ears/penguin +/obj/item/organ/ears/penguin name = "penguin ears" desc = "The source of a penguin's happy feet." -/obj/item/organ/internal/ears/penguin/on_mob_insert(mob/living/carbon/human/ear_owner) +/obj/item/organ/ears/penguin/on_mob_insert(mob/living/carbon/human/ear_owner) . = ..() to_chat(ear_owner, span_notice("You suddenly feel like you've lost your balance.")) ear_owner.AddElementTrait(TRAIT_WADDLING, ORGAN_TRAIT, /datum/element/waddling) -/obj/item/organ/internal/ears/penguin/on_mob_remove(mob/living/carbon/human/ear_owner) +/obj/item/organ/ears/penguin/on_mob_remove(mob/living/carbon/human/ear_owner) . = ..() to_chat(ear_owner, span_notice("Your sense of balance comes back to you.")) REMOVE_TRAIT(ear_owner, TRAIT_WADDLING, ORGAN_TRAIT) -/obj/item/organ/internal/ears/cybernetic +/obj/item/organ/ears/cybernetic name = "basic cybernetic ears" icon_state = "ears-c" desc = "A basic cybernetic organ designed to mimic the operation of ears." @@ -214,13 +215,13 @@ organ_flags = ORGAN_ROBOTIC failing_desc = "seems to be broken." -/obj/item/organ/internal/ears/cybernetic/upgraded +/obj/item/organ/ears/cybernetic/upgraded name = "cybernetic ears" icon_state = "ears-c-u" desc = "An advanced cybernetic ear, surpassing the performance of organic ears." damage_multiplier = 0.5 -/obj/item/organ/internal/ears/cybernetic/whisper +/obj/item/organ/ears/cybernetic/whisper name = "whisper-sensitive cybernetic ears" icon_state = "ears-c-u" desc = "Allows the user to more easily hear whispers. The user becomes extra vulnerable to loud noises, however" @@ -229,31 +230,31 @@ // The original idea was to use signals to do this not traits. Unfortunately, the star effect used for whispers applies before any relevant signals // This seems like the least invasive solution -/obj/item/organ/internal/ears/cybernetic/whisper/on_mob_insert(mob/living/carbon/ear_owner) +/obj/item/organ/ears/cybernetic/whisper/on_mob_insert(mob/living/carbon/ear_owner) . = ..() ADD_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) -/obj/item/organ/internal/ears/cybernetic/whisper/on_mob_remove(mob/living/carbon/ear_owner) +/obj/item/organ/ears/cybernetic/whisper/on_mob_remove(mob/living/carbon/ear_owner) . = ..() REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) // "X-ray ears" that let you hear through walls -/obj/item/organ/internal/ears/cybernetic/xray +/obj/item/organ/ears/cybernetic/xray name = "wall-penetrating cybernetic ears" icon_state = "ears-c-u" desc = "Through the power of modern engineering, allows the user to hear speech through walls. The user becomes extra vulnerable to loud noises, however" // Same sensitivity as felinid ears damage_multiplier = 2 -/obj/item/organ/internal/ears/cybernetic/xray/on_mob_insert(mob/living/carbon/ear_owner) +/obj/item/organ/ears/cybernetic/xray/on_mob_insert(mob/living/carbon/ear_owner) . = ..() ADD_TRAIT(ear_owner, TRAIT_XRAY_HEARING, ORGAN_TRAIT) -/obj/item/organ/internal/ears/cybernetic/xray/on_mob_remove(mob/living/carbon/ear_owner) +/obj/item/organ/ears/cybernetic/xray/on_mob_remove(mob/living/carbon/ear_owner) . = ..() REMOVE_TRAIT(ear_owner, TRAIT_XRAY_HEARING, ORGAN_TRAIT) -/obj/item/organ/internal/ears/cybernetic/emp_act(severity) +/obj/item/organ/ears/cybernetic/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index 781949aa422..69a35d0c5e7 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/eyes +/obj/item/organ/eyes name = BODY_ZONE_PRECISE_EYES icon_state = "eyes" desc = "I see you!" @@ -40,10 +40,6 @@ var/eye_color_left = "" //set to a hex code to override a mob's left eye color var/eye_color_right = "" //set to a hex code to override a mob's right eye color var/eye_icon_state = "eyes" - /// The color of the previous left eye before this one was inserted - var/old_eye_color_left = "fff" - /// The color of the previous right eye before this one was inserted - var/old_eye_color_right = "fff" /// Glasses cannot be worn over these eyes. Currently unused var/no_glasses = FALSE @@ -54,15 +50,8 @@ /// Scarring on this organ var/scarring = NONE -/obj/item/organ/internal/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags) - // If we don't do this before everything else, heterochromia will be reset leading to eye_color_right no longer being accurate - if(ishuman(receiver)) - var/mob/living/carbon/human/human_recipient = receiver - old_eye_color_left = human_recipient.eye_color_left - old_eye_color_right = human_recipient.eye_color_right - +/obj/item/organ/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() - receiver.cure_blind(NO_EYES) apply_damaged_eye_effects() refresh(receiver, call_update = TRUE) @@ -70,7 +59,7 @@ /// Refreshes the visuals of the eyes /// If call_update is TRUE, we also will call update_body -/obj/item/organ/internal/eyes/proc/refresh(mob/living/carbon/eye_owner = owner, call_update = TRUE) +/obj/item/organ/eyes/proc/refresh(mob/living/carbon/eye_owner = owner, call_update = TRUE) owner.update_sight() owner.update_tint() @@ -78,14 +67,11 @@ return var/mob/living/carbon/human/affected_human = eye_owner - if(initial(eye_color_left)) - affected_human.eye_color_left = eye_color_left - else - eye_color_left = affected_human.eye_color_left - if(initial(eye_color_right)) - affected_human.eye_color_right = eye_color_right - else - eye_color_right = affected_human.eye_color_right + if(eye_color_left) + affected_human.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) + if(eye_color_right) + affected_human.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) + if(HAS_TRAIT(affected_human, TRAIT_NIGHT_VISION)) // NOVA EDIT CHANGE - ORIGINAL: if(HAS_TRAIT(affected_human, TRAIT_NIGHT_VISION) && !lighting_cutoff) //lighting_cutoff = LIGHTING_CUTOFF_REAL_LOW // NOVA EDIT REMOVAL // NOVA EDIT ADDITION START - NIGHT VISION ADJUSTMENT - adjusts color cutoffs based on chosen quirk color, or left eye colour if not available @@ -104,15 +90,12 @@ if(call_update) affected_human.update_body() -/obj/item/organ/internal/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(ishuman(organ_owner)) var/mob/living/carbon/human/human_owner = organ_owner - if(initial(eye_color_left)) - human_owner.eye_color_left = old_eye_color_left - if(initial(eye_color_right)) - human_owner.eye_color_right = old_eye_color_right + human_owner.remove_eye_color(EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) if(native_fov) organ_owner.remove_fov_trait(type) if(!special) @@ -133,7 +116,7 @@ is_emissive = FALSE // NOVA EDIT ADDITION UnregisterSignal(organ_owner, COMSIG_ATOM_BULLET_ACT) -/obj/item/organ/internal/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone) +/obj/item/organ/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone) SIGNAL_HANDLER // Once-a-dozen-rounds level of rare @@ -165,7 +148,7 @@ #define OFFSET_Y 2 /// Similar to get_status_text, but appends the text after the damage report, for additional status info -/obj/item/organ/internal/eyes/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/eyes/get_status_appendix(advanced, add_tooltips) if(owner.stat == DEAD || HAS_TRAIT(owner, TRAIT_KNOCKEDOUT)) return if(owner.is_blind()) @@ -194,13 +177,13 @@ return "Subject is nearsighted." return "" -/obj/item/organ/internal/eyes/show_on_condensed_scans() +/obj/item/organ/eyes/show_on_condensed_scans() // Always show if we have an appendix return ..() || (owner.stat != DEAD && !HAS_TRAIT(owner, TRAIT_KNOCKEDOUT) && (owner.is_blind() || owner.is_nearsighted())) /// This proc generates a list of overlays that the eye should be displayed using for the given parent -/obj/item/organ/internal/eyes/proc/generate_body_overlay(mob/living/carbon/human/parent) - if(!istype(parent) || parent.get_organ_by_type(/obj/item/organ/internal/eyes) != src) +/obj/item/organ/eyes/proc/generate_body_overlay(mob/living/carbon/human/parent) + if(!istype(parent) || parent.get_organ_by_type(/obj/item/organ/eyes) != src) CRASH("Generating a body overlay for [src] targeting an invalid parent '[parent]'.") if(isnull(eye_icon_state)) @@ -226,8 +209,8 @@ if(my_head.head_flags & HEAD_EYECOLOR) if(IS_ROBOTIC_ORGAN(src) || !my_head.draw_color || (parent.appears_alive() && !HAS_TRAIT(parent, TRAIT_KNOCKEDOUT))) // show the eyes as open - eye_right.color = eye_color_right - eye_left.color = eye_color_left + eye_right.color = parent.get_right_eye_color() + eye_left.color = parent.get_left_eye_color() else // show the eyes as closed, and as such color them like eyelids wound be colored var/list/base_color = rgb2num(my_head.draw_color, COLORSPACE_HSL) @@ -271,14 +254,14 @@ return overlays -/obj/item/organ/internal/eyes/update_overlays() +/obj/item/organ/eyes/update_overlays() . = ..() if (scarring & RIGHT_EYE_SCAR) . += mutable_appearance('icons/obj/medical/organs/organs.dmi', "eye_scar_right") if (scarring & LEFT_EYE_SCAR) . += mutable_appearance('icons/obj/medical/organs/organs.dmi', "eye_scar_left") -/obj/item/organ/internal/eyes/proc/apply_scar(side) +/obj/item/organ/eyes/proc/apply_scar(side) if (scarring & side) return scarring |= side @@ -286,7 +269,7 @@ update_appearance() apply_scarring_effects() -/obj/item/organ/internal/eyes/proc/apply_scarring_effects() +/obj/item/organ/eyes/proc/apply_scarring_effects() if (!owner) return var/datum/status_effect/grouped/nearsighted/nearsightedness = owner.is_nearsighted() @@ -302,7 +285,7 @@ owner.become_blind(EYE_SCARRING_TRAIT) owner.update_body() -/obj/item/organ/internal/eyes/proc/fix_scar(side) +/obj/item/organ/eyes/proc/fix_scar(side) if (!(scarring & side)) return scarring &= ~side @@ -314,12 +297,12 @@ owner.cure_blind(EYE_SCARRING_TRAIT) owner.update_body() -/obj/item/organ/internal/eyes/on_mob_insert(mob/living/carbon/eye_owner) +/obj/item/organ/eyes/on_mob_insert(mob/living/carbon/eye_owner) . = ..() if (scarring) apply_scarring_effects() -/obj/item/organ/internal/eyes/on_mob_remove(mob/living/carbon/eye_owner) +/obj/item/organ/eyes/on_mob_remove(mob/living/carbon/eye_owner) . = ..() if (scarring) eye_owner.cure_nearsighted(TRAIT_RIGHT_EYE_SCAR) @@ -330,19 +313,19 @@ #undef OFFSET_Y //Gotta reset the eye color, because that persists -/obj/item/organ/internal/eyes/enter_wardrobe() +/obj/item/organ/eyes/enter_wardrobe() . = ..() eye_color_left = initial(eye_color_left) eye_color_right = initial(eye_color_right) -/obj/item/organ/internal/eyes/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag) +/obj/item/organ/eyes/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag) . = ..() if(!owner) return FALSE apply_damaged_eye_effects() /// Applies effects to our owner based on how damaged our eyes are -/obj/item/organ/internal/eyes/proc/apply_damaged_eye_effects() +/obj/item/organ/eyes/proc/apply_damaged_eye_effects() // we're in healthy threshold, either try to heal (if damaged) or do nothing if(damage <= low_threshold) if(damaged) @@ -379,7 +362,7 @@ #define NIGHTVISION_LIGHT_MID 2 #define NIGHTVISION_LIGHT_HIG 3 -/obj/item/organ/internal/eyes/night_vision +/obj/item/organ/eyes/night_vision actions_types = list(/datum/action/item_action/organ_action/use) // These lists are used as the color cutoff for the eye @@ -389,16 +372,16 @@ var/list/high_light_cutoff var/light_level = NIGHTVISION_LIGHT_OFF -/obj/item/organ/internal/eyes/night_vision/Initialize(mapload) +/obj/item/organ/eyes/night_vision/Initialize(mapload) . = ..() - if (PERFORM_ALL_TESTS(focus_only/nightvision_color_cutoffs) && type != /obj/item/organ/internal/eyes/night_vision) + if (PERFORM_ALL_TESTS(focus_only/nightvision_color_cutoffs) && type != /obj/item/organ/eyes/night_vision) if(length(low_light_cutoff) != 3 || length(medium_light_cutoff) != 3 || length(high_light_cutoff) != 3) stack_trace("[type] did not have fully filled out color cutoff lists") if(low_light_cutoff) color_cutoffs = low_light_cutoff.Copy() light_level = NIGHTVISION_LIGHT_LOW -/obj/item/organ/internal/eyes/night_vision/ui_action_click() +/obj/item/organ/eyes/night_vision/ui_action_click() sight_flags = initial(sight_flags) switch(light_level) if (NIGHTVISION_LIGHT_OFF) @@ -420,25 +403,25 @@ #undef NIGHTVISION_LIGHT_MID #undef NIGHTVISION_LIGHT_HIG -/obj/item/organ/internal/eyes/night_vision/mushroom +/obj/item/organ/eyes/night_vision/mushroom name = "fung-eye" desc = "While on the outside they look inert and dead, the eyes of mushroom people are actually very advanced." low_light_cutoff = list(0, 15, 20) medium_light_cutoff = list(0, 20, 35) high_light_cutoff = list(0, 40, 50) -/obj/item/organ/internal/eyes/zombie +/obj/item/organ/eyes/zombie name = "undead eyes" desc = "Somewhat counterintuitively, these half-rotten eyes actually have superior vision to those of a living human." color_cutoffs = list(25, 35, 5) -/obj/item/organ/internal/eyes/alien +/obj/item/organ/eyes/alien name = "alien eyes" desc = "It turned out they had them after all!" sight_flags = SEE_MOBS color_cutoffs = list(25, 5, 42) -/obj/item/organ/internal/eyes/golem +/obj/item/organ/eyes/golem name = "resonating crystal" icon_state = "adamantine_cords" eye_icon_state = null @@ -464,14 +447,14 @@ ///Robotic -/obj/item/organ/internal/eyes/robotic +/obj/item/organ/eyes/robotic name = "robotic eyes" icon_state = "cybernetic_eyeballs" desc = "Your vision is augmented." organ_flags = ORGAN_ROBOTIC failing_desc = "seems to be broken." -/obj/item/organ/internal/eyes/robotic/emp_act(severity) +/obj/item/organ/eyes/robotic/emp_act(severity) . = ..() if((. & EMP_PROTECT_SELF) || !owner) return @@ -480,14 +463,14 @@ to_chat(owner, span_warning("Static obfuscates your vision!")) owner.flash_act(visual = 1) -/obj/item/organ/internal/eyes/robotic/basic +/obj/item/organ/eyes/robotic/basic name = "basic robotic eyes" desc = "A pair of basic cybernetic eyes that restore vision, but at some vulnerability to light." eye_color_left = "5500ff" eye_color_right = "5500ff" flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/eyes/robotic/basic/emp_act(severity) +/obj/item/organ/eyes/robotic/basic/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return @@ -497,22 +480,22 @@ do_sparks(2, TRUE, owner) owner.emote("scream") -/obj/item/organ/internal/eyes/robotic/xray +/obj/item/organ/eyes/robotic/xray name = "\improper X-ray eyes" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." eye_color_left = "000" eye_color_right = "000" sight_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS -/obj/item/organ/internal/eyes/robotic/xray/on_mob_insert(mob/living/carbon/eye_owner) +/obj/item/organ/eyes/robotic/xray/on_mob_insert(mob/living/carbon/eye_owner) . = ..() ADD_TRAIT(eye_owner, TRAIT_XRAY_VISION, ORGAN_TRAIT) -/obj/item/organ/internal/eyes/robotic/xray/on_mob_remove(mob/living/carbon/eye_owner) +/obj/item/organ/eyes/robotic/xray/on_mob_remove(mob/living/carbon/eye_owner) . = ..() REMOVE_TRAIT(eye_owner, TRAIT_XRAY_VISION, ORGAN_TRAIT) -/obj/item/organ/internal/eyes/robotic/thermals +/obj/item/organ/eyes/robotic/thermals name = "thermal eyes" desc = "These cybernetic eye implants will give you thermal vision. Vertical slit pupil included." eye_color_left = "FC0" @@ -522,7 +505,7 @@ sight_flags = SEE_MOBS flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/eyes/robotic/flashlight +/obj/item/organ/eyes/robotic/flashlight name = "flashlight eyes" desc = "It's two flashlights rigged together with some wire. Why would you put these in someone's head?" eye_color_left ="fee5a3" @@ -533,11 +516,11 @@ tint = INFINITY var/obj/item/flashlight/eyelight/eye -/obj/item/organ/internal/eyes/robotic/flashlight/Initialize(mapload) +/obj/item/organ/eyes/robotic/flashlight/Initialize(mapload) . = ..() AddElement(/datum/element/empprotection, EMP_PROTECT_ALL) -/obj/item/organ/internal/eyes/robotic/flashlight/on_mob_insert(mob/living/carbon/victim) +/obj/item/organ/eyes/robotic/flashlight/on_mob_insert(mob/living/carbon/victim) . = ..() if(!eye) eye = new /obj/item/flashlight/eyelight() @@ -546,7 +529,7 @@ eye.update_brightness(victim) victim.become_blind(FLASHLIGHT_EYES) -/obj/item/organ/internal/eyes/robotic/flashlight/on_mob_remove(mob/living/carbon/victim) +/obj/item/organ/eyes/robotic/flashlight/on_mob_remove(mob/living/carbon/victim) . = ..() eye.set_light_on(FALSE) eye.update_brightness(victim) @@ -554,12 +537,12 @@ victim.cure_blind(FLASHLIGHT_EYES) // Welding shield implant -/obj/item/organ/internal/eyes/robotic/shield +/obj/item/organ/eyes/robotic/shield name = "shielded robotic eyes" desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision." flash_protect = FLASH_PROTECTION_WELDER -/obj/item/organ/internal/eyes/robotic/shield/Initialize(mapload) +/obj/item/organ/eyes/robotic/shield/Initialize(mapload) . = ..() AddElement(/datum/element/empprotection, EMP_PROTECT_ALL) @@ -569,7 +552,7 @@ #define UPDATE_EYES_LEFT 1 #define UPDATE_EYES_RIGHT 2 -/obj/item/organ/internal/eyes/robotic/glow +/obj/item/organ/eyes/robotic/glow name = "High Luminosity Eyes" desc = "Special glowing eyes, used by snowflakes who want to be special." eye_color_left = "000" @@ -588,43 +571,43 @@ /// The custom selected eye color for the right eye. Defaults to the mob's natural eye color var/right_eye_color_string -/obj/item/organ/internal/eyes/robotic/glow/Initialize(mapload) +/obj/item/organ/eyes/robotic/glow/Initialize(mapload) . = ..() eye = new /obj/item/flashlight/eyelight/glow -/obj/item/organ/internal/eyes/robotic/glow/Destroy() +/obj/item/organ/eyes/robotic/glow/Destroy() . = ..() deactivate(close_ui = TRUE) QDEL_NULL(eye) -/obj/item/organ/internal/eyes/robotic/glow/emp_act(severity) +/obj/item/organ/eyes/robotic/glow/emp_act(severity) . = ..() if(!eye.light_on || . & EMP_PROTECT_SELF) return deactivate(close_ui = TRUE) /// Set the initial color of the eyes on insert to be the mob's previous eye color. -/obj/item/organ/internal/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() - left_eye_color_string = old_eye_color_left - right_eye_color_string = old_eye_color_right + left_eye_color_string = eye_color_left + right_eye_color_string = eye_color_right update_mob_eye_color(eye_recipient) -/obj/item/organ/internal/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient) +/obj/item/organ/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient) . = ..() deactivate(close_ui = TRUE) eye.forceMove(eye_recipient) -/obj/item/organ/internal/eyes/robotic/glow/on_mob_remove(mob/living/carbon/eye_owner) +/obj/item/organ/eyes/robotic/glow/on_mob_remove(mob/living/carbon/eye_owner) deactivate(eye_owner, close_ui = TRUE) if(!QDELETED(eye)) eye.forceMove(src) return ..() -/obj/item/organ/internal/eyes/robotic/glow/ui_state(mob/user) +/obj/item/organ/eyes/robotic/glow/ui_state(mob/user) return GLOB.default_state -/obj/item/organ/internal/eyes/robotic/glow/ui_status(mob/user, datum/ui_state/state) +/obj/item/organ/eyes/robotic/glow/ui_status(mob/user, datum/ui_state/state) if(!QDELETED(owner)) if(owner == user) return min( @@ -634,14 +617,14 @@ else return UI_CLOSE return ..() -/obj/item/organ/internal/eyes/robotic/glow/ui_interact(mob/user, datum/tgui/ui) +/obj/item/organ/eyes/robotic/glow/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "HighLuminosityEyesMenu") ui.autoupdate = FALSE ui.open() -/obj/item/organ/internal/eyes/robotic/glow/ui_data(mob/user) +/obj/item/organ/eyes/robotic/glow/ui_data(mob/user) var/list/data = list() data["eyeColor"] = list( @@ -655,7 +638,7 @@ return data -/obj/item/organ/internal/eyes/robotic/glow/ui_act(action, list/params, datum/tgui/ui) +/obj/item/organ/eyes/robotic/glow/ui_act(action, list/params, datum/tgui/ui) . = ..() if(.) return @@ -689,7 +672,7 @@ toggle_eye_color_mode() return TRUE -/obj/item/organ/internal/eyes/robotic/glow/ui_action_click(mob/user, action) +/obj/item/organ/eyes/robotic/glow/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/organ_action/toggle)) toggle_active() else if(istype(action, /datum/action/item_action/organ_action/use)) @@ -700,7 +683,7 @@ * * Turns on the attached flashlight object, updates the mob overlay to be added. */ -/obj/item/organ/internal/eyes/robotic/glow/proc/activate() +/obj/item/organ/eyes/robotic/glow/proc/activate() if(eye.light_range) eye.set_light_on(TRUE) else @@ -715,7 +698,7 @@ * * mob/living/carbon/eye_owner - the mob who the eyes belong to * * close_ui - whether or not to close the ui */ -/obj/item/organ/internal/eyes/robotic/glow/proc/deactivate(mob/living/carbon/eye_owner = owner, close_ui = FALSE) +/obj/item/organ/eyes/robotic/glow/proc/deactivate(mob/living/carbon/eye_owner = owner, close_ui = FALSE) if(close_ui) SStgui.close_uis(src) eye.set_light_on(FALSE) @@ -728,7 +711,7 @@ * Arguments: * * to_update - whether we are setting the color for the light beam itself, or the individual eyes */ -/obj/item/organ/internal/eyes/robotic/glow/proc/randomize_color(to_update = UPDATE_LIGHT) +/obj/item/organ/eyes/robotic/glow/proc/randomize_color(to_update = UPDATE_LIGHT) var/new_color = "#" for(var/i in 1 to 3) new_color += num2hex(rand(0, 255), 2) @@ -742,7 +725,7 @@ * Arguments: * * new_range - the new range to set */ -/obj/item/organ/internal/eyes/robotic/glow/proc/set_beam_range(new_range) +/obj/item/organ/eyes/robotic/glow/proc/set_beam_range(new_range) var/old_light_range = eye.light_range if(old_light_range == 0 && new_range > 0 && eye.light_on) // turn bring back the light overlay if we were previously at 0 (aka emissive eyes only) eye.light_on = FALSE // this is stupid, but this has to be FALSE for set_light_on() to work. @@ -758,7 +741,7 @@ * * to_update - whether we are setting the color for the light beam itself, or the individual eyes * * sanitize - whether the hex string should be sanitized */ -/obj/item/organ/internal/eyes/robotic/glow/proc/set_beam_color(newcolor, to_update = UPDATE_LIGHT, sanitize = FALSE) +/obj/item/organ/eyes/robotic/glow/proc/set_beam_color(newcolor, to_update = UPDATE_LIGHT, sanitize = FALSE) var/newcolor_string if(sanitize) newcolor_string = sanitize_hexcolor(newcolor) @@ -778,7 +761,7 @@ /** * Toggle the attached flashlight object on or off */ -/obj/item/organ/internal/eyes/robotic/glow/proc/toggle_active() +/obj/item/organ/eyes/robotic/glow/proc/toggle_active() if(eye.light_on) deactivate() else @@ -789,7 +772,7 @@ * * Toggles the eye color mode on or off and then calls an update on the mob's eye color */ -/obj/item/organ/internal/eyes/robotic/glow/proc/toggle_eye_color_mode() +/obj/item/organ/eyes/robotic/glow/proc/toggle_eye_color_mode() eye_color_mode = !eye_color_mode update_mob_eye_color() @@ -800,7 +783,7 @@ * Arguments: * * mob/living/carbon/eye_owner - the mob to update the eye color appearance of */ -/obj/item/organ/internal/eyes/robotic/glow/proc/update_mob_eye_color(mob/living/carbon/eye_owner = owner) +/obj/item/organ/eyes/robotic/glow/proc/update_mob_eye_color(mob/living/carbon/eye_owner = owner) switch(eye_color_mode) if(MATCH_LIGHT_COLOR) eye_color_left = light_color_string @@ -831,39 +814,39 @@ #undef UPDATE_EYES_LEFT #undef UPDATE_EYES_RIGHT -/obj/item/organ/internal/eyes/moth +/obj/item/organ/eyes/moth name = "moth eyes" desc = "These eyes seem to have increased sensitivity to bright light, with no improvement to low light vision." eye_icon_state = "motheyes" icon_state = "eyeballs-moth" flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/eyes/robotic/moth +/obj/item/organ/eyes/robotic/moth name = "robotic moth eyes" eye_icon_state = "motheyes" icon_state = "eyeballs-cybermoth" desc = "Your vision is augmented. Much like actual moth eyes, very sensitive to bright lights." flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/eyes/robotic/basic/moth +/obj/item/organ/eyes/robotic/basic/moth name = "basic robotic moth eyes" eye_icon_state = "motheyes" icon_state = "eyeballs-cybermoth" flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/eyes/robotic/xray/moth +/obj/item/organ/eyes/robotic/xray/moth name = "robotic eyes" eye_icon_state = "motheyes" icon_state = "eyeballs-cybermoth" desc = "These cybernetic imitation moth eyes will give you X-ray vision. Blinking is futile. Much like actual moth eyes, very sensitive to bright lights." flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/eyes/robotic/shield/moth +/obj/item/organ/eyes/robotic/shield/moth name = "shielded robotic moth eyes" eye_icon_state = "motheyes" icon_state = "eyeballs-cybermoth" -/obj/item/organ/internal/eyes/robotic/glow/moth +/obj/item/organ/eyes/robotic/glow/moth name = "High Luminosity Moth Eyes" eye_icon_state = "motheyes" base_eye_state = "eyes_mothglow" @@ -871,25 +854,25 @@ desc = "Special glowing eyes, to be one with the lamp. Much like actual moth eyes, very sensitive to bright lights." flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/eyes/robotic/thermals/moth //we inherit flash weakness from thermals +/obj/item/organ/eyes/robotic/thermals/moth //we inherit flash weakness from thermals name = "thermal moth eyes" eye_icon_state = "motheyes" icon_state = "eyeballs-cybermoth" -/obj/item/organ/internal/eyes/snail +/obj/item/organ/eyes/snail name = "snail eyes" desc = "These eyes seem to have a large range, but might be cumbersome with glasses." eye_icon_state = "snail_eyes" icon_state = "snail_eyeballs" eyes_layer = ABOVE_BODY_FRONT_HEAD_LAYER //NOVA EDIT - Roundstart Snails -/obj/item/organ/internal/eyes/jelly +/obj/item/organ/eyes/jelly name = "jelly eyes" desc = "These eyes are made of a soft jelly. Unlike all other eyes, though, there are three of them." eye_icon_state = "jelleyes" icon_state = "eyeballs-jelly" -/obj/item/organ/internal/eyes/night_vision/maintenance_adapted +/obj/item/organ/eyes/night_vision/maintenance_adapted name = "adapted eyes" desc = "These red eyes look like two foggy marbles. They give off a particularly worrying glow in the dark." flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE @@ -902,11 +885,11 @@ medium_light_cutoff = list(15, 20, 30) high_light_cutoff = list(30, 35, 50) -/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_mob_insert(mob/living/carbon/eye_owner) +/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_insert(mob/living/carbon/eye_owner) . = ..() ADD_TRAIT(eye_owner, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT) -/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_life(seconds_per_tick, times_fired) +/obj/item/organ/eyes/night_vision/maintenance_adapted/on_life(seconds_per_tick, times_fired) if(!owner.is_blind() && isturf(owner.loc) && owner.has_light_nearby(light_amount=0.5)) //we allow a little more than usual so we can produce light from the adapted eyes to_chat(owner, span_danger("Your eyes! They burn in the light!")) apply_organ_damage(10) //blind quickly @@ -915,6 +898,6 @@ apply_organ_damage(-10) //heal quickly . = ..() -/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE) +/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE) REMOVE_TRAIT(unadapted, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT) return ..() diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm index 36eb9c7bf99..20ad378529f 100644 --- a/code/modules/surgery/organs/internal/heart/_heart.dm +++ b/code/modules/surgery/organs/internal/heart/_heart.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart +/obj/item/organ/heart name = "heart" desc = "I feel bad for the heartless bastard who lost this." icon_state = "heart-on" @@ -19,7 +19,7 @@ attack_verb_simple = list("beat", "thump") // Love is stored in the heart. - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/love = 2.5) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/love = 2.5) // Heart attack code is in code/modules/mob/living/carbon/human/life.dm @@ -32,18 +32,18 @@ /// whether the heart's been operated on to fix some of its damages var/operated = FALSE -/obj/item/organ/internal/heart/update_icon_state() +/obj/item/organ/heart/update_icon_state() . = ..() icon_state = "[base_icon_state]-[beating ? "on" : "off"]" -/obj/item/organ/internal/heart/Remove(mob/living/carbon/heartless, special, movement_flags) +/obj/item/organ/heart/Remove(mob/living/carbon/heartless, special, movement_flags) . = ..() if(!special) addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 12 SECONDS) beat = BEAT_NONE owner?.stop_sound_channel(CHANNEL_HEARTBEAT) -/obj/item/organ/internal/heart/proc/stop_if_unowned() +/obj/item/organ/heart/proc/stop_if_unowned() if(QDELETED(src)) return if(IS_ROBOTIC_ORGAN(src)) @@ -51,7 +51,7 @@ if(isnull(owner)) Stop() -/obj/item/organ/internal/heart/attack_self(mob/user) +/obj/item/organ/heart/attack_self(mob/user) . = ..() if(.) return @@ -65,7 +65,7 @@ addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 8 SECONDS) return TRUE -/obj/item/organ/internal/heart/proc/Stop() +/obj/item/organ/heart/proc/Stop() if(!beating) return FALSE @@ -75,7 +75,7 @@ owner?.stop_sound_channel(CHANNEL_HEARTBEAT) return TRUE -/obj/item/organ/internal/heart/proc/Restart() +/obj/item/organ/heart/proc/Restart() if(beating) return FALSE @@ -83,25 +83,25 @@ update_appearance() return TRUE -/obj/item/organ/internal/heart/OnEatFrom(eater, feeder) +/obj/item/organ/heart/OnEatFrom(eater, feeder) . = ..() Stop() /// Checks if the heart is beating. /// Can be overridden to add more conditions for more complex hearts. -/obj/item/organ/internal/heart/proc/is_beating() +/obj/item/organ/heart/proc/is_beating() return beating -/obj/item/organ/internal/heart/get_status_text(advanced, add_tooltips) +/obj/item/organ/heart/get_status_text(advanced, add_tooltips) if(!beating && !(organ_flags & ORGAN_FAILING) && owner.needs_heart() && owner.stat != DEAD) return conditional_tooltip("Cardiac Arrest", "Apply defibrillation immediately. Similar electric shocks may work in emergencies.", add_tooltips) return ..() -/obj/item/organ/internal/heart/show_on_condensed_scans() +/obj/item/organ/heart/show_on_condensed_scans() // Always show if the guy needs a heart (so its status can be monitored) return ..() || owner.needs_heart() -/obj/item/organ/internal/heart/on_life(seconds_per_tick, times_fired) +/obj/item/organ/heart/on_life(seconds_per_tick, times_fired) ..() // If the owner doesn't need a heart, we don't need to do anything with it. @@ -135,10 +135,10 @@ owner.stop_sound_channel(CHANNEL_HEARTBEAT) beat = BEAT_NONE -/obj/item/organ/internal/heart/get_availability(datum/species/owner_species, mob/living/owner_mob) +/obj/item/organ/heart/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantheart -/obj/item/organ/internal/heart/cursed +/obj/item/organ/heart/cursed name = "cursed heart" desc = "A heart that, when inserted, will force you to pump it manually." icon_state = "cursedheart-off" @@ -150,7 +150,7 @@ var/heal_burn = 0 var/heal_oxy = 0 -/obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/accursed, mob/living/carbon/human/user, obj/target) +/obj/item/organ/heart/cursed/attack(mob/living/carbon/human/accursed, mob/living/carbon/human/user, obj/target) if(accursed == user && istype(accursed)) playsound(user,'sound/effects/singlebeat.ogg',40,TRUE) user.temporarilyRemoveItemFromInventory(src, TRUE) @@ -158,17 +158,17 @@ else return ..() -/obj/item/organ/internal/heart/cursed/on_mob_insert(mob/living/carbon/accursed) +/obj/item/organ/heart/cursed/on_mob_insert(mob/living/carbon/accursed) . = ..() accursed.AddComponent(/datum/component/manual_heart, pump_delay = pump_delay, blood_loss = blood_loss, heal_brute = heal_brute, heal_burn = heal_burn, heal_oxy = heal_oxy) -/obj/item/organ/internal/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE) +/obj/item/organ/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE) . = ..() qdel(accursed.GetComponent(/datum/component/manual_heart)) -/obj/item/organ/internal/heart/cybernetic +/obj/item/organ/heart/cybernetic name = "basic cybernetic heart" desc = "A basic electronic device designed to mimic the functions of an organic human heart." icon_state = "heart-c-on" @@ -192,7 +192,7 @@ /// Chance of permanent effects if emp-ed. var/emp_vulnerability = 80 -/obj/item/organ/internal/heart/cybernetic/emp_act(severity) +/obj/item/organ/heart/cybernetic/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return @@ -214,7 +214,7 @@ span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!"), ) -/obj/item/organ/internal/heart/cybernetic/on_life(seconds_per_tick, times_fired) +/obj/item/organ/heart/cybernetic/on_life(seconds_per_tick, times_fired) . = ..() if(organ_flags & ORGAN_EMP) @@ -238,7 +238,7 @@ if(bloodiest_wound) bloodiest_wound.adjust_blood_flow(-1 * seconds_per_tick) -/obj/item/organ/internal/heart/cybernetic/proc/stabilize_heart() +/obj/item/organ/heart/cybernetic/proc/stabilize_heart() ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT) stabilization_available = FALSE @@ -247,12 +247,12 @@ addtimer(VARSET_CALLBACK(src, stabilization_available, TRUE), 5 MINUTES, TIMER_DELETE_ME) // Largely a sanity check -/obj/item/organ/internal/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE) +/obj/item/organ/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE) . = ..() if(HAS_TRAIT_FROM(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT)) REMOVE_TRAIT(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT) -/obj/item/organ/internal/heart/cybernetic/tier2 +/obj/item/organ/heart/cybernetic/tier2 name = "cybernetic heart" desc = "An electronic device designed to mimic the functions of an organic human heart. In case of lacerations or haemorrhaging, the heart rapidly begins self-replicating \ artificial blood. However, this can cause toxins to build up in the bloodstream to the imperfect replication process." @@ -262,7 +262,7 @@ bleed_prevention = TRUE emp_vulnerability = 40 -/obj/item/organ/internal/heart/cybernetic/tier3 +/obj/item/organ/heart/cybernetic/tier3 name = "upgraded cybernetic heart" desc = "An electronic device designed to mimic the functions of an organic human heart. In case of physical trauma, the heart has temporary failsafes to maintain patient stability \ and mobility for a brief moment. In addition, the heart is able to safely self-replicate blood without risk of toxin buildup." @@ -273,7 +273,7 @@ toxification_probability = 0 emp_vulnerability = 20 -/obj/item/organ/internal/heart/cybernetic/surplus +/obj/item/organ/heart/cybernetic/surplus name = "surplus prosthetic heart" desc = "A fragile mockery of a human heart that resembles a water pump more than an actual heart. \ Offers no protection against EMPs." @@ -283,18 +283,18 @@ emp_vulnerability = 100 //surplus organs are so awful that they explode when removed, unless failing -/obj/item/organ/internal/heart/cybernetic/surplus/Initialize(mapload) +/obj/item/organ/heart/cybernetic/surplus/Initialize(mapload) . = ..() AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE) -/obj/item/organ/internal/heart/freedom +/obj/item/organ/heart/freedom name = "heart of freedom" desc = "This heart pumps with the passion to give... something freedom." organ_flags = ORGAN_ROBOTIC //the power of freedom prevents heart attacks /// The cooldown until the next time this heart can give the host an adrenaline boost. COOLDOWN_DECLARE(adrenaline_cooldown) -/obj/item/organ/internal/heart/freedom/on_life(seconds_per_tick, times_fired) +/obj/item/organ/heart/freedom/on_life(seconds_per_tick, times_fired) . = ..() if(owner.health < 5 && COOLDOWN_FINISHED(src, adrenaline_cooldown)) COOLDOWN_START(src, adrenaline_cooldown, rand(25 SECONDS, 1 MINUTES)) diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm index 31e9e64750c..df60b8243ef 100644 --- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm +++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm @@ -3,7 +3,7 @@ */ #define DOAFTER_IMPLANTING_HEART "implanting" -/obj/item/organ/internal/heart/cybernetic/anomalock +/obj/item/organ/heart/cybernetic/anomalock name = "voltaic combat cyberheart" desc = "A cutting-edge cyberheart, originally designed for Nanotrasen killsquad usage but later declassified for normal research. Voltaic technology allows the heart to keep the body upright in dire circumstances, alongside redirecting anomalous flux energy to fully shield the user from shocks and electro-magnetic pulses. Requires a refined Flux core as a power source." icon_state = "anomalock_heart" @@ -28,7 +28,7 @@ ///If the core is removable once socketed. var/core_removable = TRUE -/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(!core) return @@ -39,7 +39,7 @@ RegisterSignal(organ_owner, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(activate_survival)) RegisterSignal(organ_owner, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act)) -/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() if(!core) return @@ -49,7 +49,7 @@ tesla_zap(source = organ_owner, zap_range = 20, power = 2.5e5, cutoff = 1e3) qdel(src) -/obj/item/organ/internal/heart/cybernetic/anomalock/attack(mob/living/target_mob, mob/living/user, params) +/obj/item/organ/heart/cybernetic/anomalock/attack(mob/living/target_mob, mob/living/user, params) if(target_mob != user || !istype(target_mob) || !core) return ..() @@ -66,11 +66,11 @@ user.emote("scream") return TRUE -/obj/item/organ/internal/heart/cybernetic/anomalock/proc/on_emp_act(severity) +/obj/item/organ/heart/cybernetic/anomalock/proc/on_emp_act(severity) SIGNAL_HANDLER add_lightning_overlay(10 SECONDS) -/obj/item/organ/internal/heart/cybernetic/anomalock/proc/add_lightning_overlay(time_to_last = 10 SECONDS) +/obj/item/organ/heart/cybernetic/anomalock/proc/add_lightning_overlay(time_to_last = 10 SECONDS) if(lightning_overlay) lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE)) return @@ -78,11 +78,11 @@ owner.add_overlay(lightning_overlay) lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE)) -/obj/item/organ/internal/heart/cybernetic/anomalock/proc/clear_lightning_overlay() +/obj/item/organ/heart/cybernetic/anomalock/proc/clear_lightning_overlay() owner.cut_overlay(lightning_overlay) lightning_overlay = null -/obj/item/organ/internal/heart/cybernetic/anomalock/attack_self(mob/user, modifiers) +/obj/item/organ/heart/cybernetic/anomalock/attack_self(mob/user, modifiers) . = ..() if(.) return @@ -90,7 +90,7 @@ if(core) return attack(user, user, modifiers) -/obj/item/organ/internal/heart/cybernetic/anomalock/on_life(seconds_per_tick, times_fired) +/obj/item/organ/heart/cybernetic/anomalock/on_life(seconds_per_tick, times_fired) . = ..() if(owner.blood_volume <= BLOOD_VOLUME_NORMAL) owner.blood_volume += 5 * seconds_per_tick @@ -98,7 +98,7 @@ activate_survival(owner) ///Does a few things to try to help you live whatever you may be going through -/obj/item/organ/internal/heart/cybernetic/anomalock/proc/activate_survival(mob/living/carbon/organ_owner) +/obj/item/organ/heart/cybernetic/anomalock/proc/activate_survival(mob/living/carbon/organ_owner) if(!COOLDOWN_FINISHED(src, survival_cooldown)) return @@ -108,15 +108,15 @@ addtimer(CALLBACK(src, PROC_REF(notify_cooldown), organ_owner), COOLDOWN_TIMELEFT(src, survival_cooldown)) ///Alerts our owner that the organ is ready to do its thing again -/obj/item/organ/internal/heart/cybernetic/anomalock/proc/notify_cooldown(mob/living/carbon/organ_owner) +/obj/item/organ/heart/cybernetic/anomalock/proc/notify_cooldown(mob/living/carbon/organ_owner) balloon_alert(organ_owner, "your heart strenghtens") playsound(organ_owner, 'sound/items/eshield_recharge.ogg', 40) ///Returns the mob we are implanted in so that the electricity effect doesn't runtime -/obj/item/organ/internal/heart/cybernetic/anomalock/proc/get_held_mob() +/obj/item/organ/heart/cybernetic/anomalock/proc/get_held_mob() return owner -/obj/item/organ/internal/heart/cybernetic/anomalock/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/item/organ/heart/cybernetic/anomalock/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(!istype(tool, required_anomaly)) return NONE if(core) @@ -131,7 +131,7 @@ update_icon_state() return ITEM_INTERACT_SUCCESS -/obj/item/organ/internal/heart/cybernetic/anomalock/screwdriver_act(mob/living/user, obj/item/tool) +/obj/item/organ/heart/cybernetic/anomalock/screwdriver_act(mob/living/user, obj/item/tool) . = ..() if(!core) balloon_alert(user, "no core!") @@ -151,11 +151,11 @@ remove_organ_trait(TRAIT_SHOCKIMMUNE) update_icon_state() -/obj/item/organ/internal/heart/cybernetic/anomalock/update_icon_state() +/obj/item/organ/heart/cybernetic/anomalock/update_icon_state() . = ..() icon_state = initial(icon_state) + (core ? "-core" : "") -/obj/item/organ/internal/heart/cybernetic/anomalock/prebuilt/Initialize(mapload) +/obj/item/organ/heart/cybernetic/anomalock/prebuilt/Initialize(mapload) . = ..() core = new /obj/item/assembly/signaler/anomaly/flux(src) update_icon_state() diff --git a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm index 17c2292bdeb..58cfd697e5d 100644 --- a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm +++ b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/ethereal +/obj/item/organ/heart/ethereal name = "crystal core" icon_state = "ethereal_heart-on" base_icon_state = "ethereal_heart" @@ -16,38 +16,38 @@ ///Color of the heart, is set by the species on gain var/ethereal_color = "#9c3030" -/obj/item/organ/internal/heart/ethereal/Initialize(mapload) +/obj/item/organ/heart/ethereal/Initialize(mapload) . = ..() add_atom_colour(ethereal_color, FIXED_COLOUR_PRIORITY) update_appearance() -/obj/item/organ/internal/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags) +/obj/item/organ/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags) . = ..() RegisterSignal(heart_owner, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change)) RegisterSignal(heart_owner, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(on_owner_fully_heal)) RegisterSignal(heart_owner, COMSIG_QDELETING, PROC_REF(owner_deleted)) -/obj/item/organ/internal/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags) +/obj/item/organ/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags) UnregisterSignal(heart_owner, list(COMSIG_MOB_STATCHANGE, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_QDELETING)) REMOVE_TRAIT(heart_owner, TRAIT_CORPSELOCKED, SPECIES_TRAIT) stop_crystalization_process(heart_owner) QDEL_NULL(current_crystal) return ..() -/obj/item/organ/internal/heart/ethereal/update_overlays() +/obj/item/organ/heart/ethereal/update_overlays() . = ..() var/mutable_appearance/shine = mutable_appearance(icon, icon_state = "[base_icon_state]_overlay-[beating ? "on" : "off"]") shine.appearance_flags = RESET_COLOR //No color on this, just pure white . += shine -/obj/item/organ/internal/heart/ethereal/proc/on_owner_fully_heal(mob/living/carbon/healed, heal_flags) +/obj/item/organ/heart/ethereal/proc/on_owner_fully_heal(mob/living/carbon/healed, heal_flags) SIGNAL_HANDLER QDEL_NULL(current_crystal) //Kicks out the ethereal ///Ran when examined while crystalizing, gives info about the amount of time left -/obj/item/organ/internal/heart/ethereal/proc/on_examine(mob/living/carbon/human/examined_human, mob/user, list/examine_list) +/obj/item/organ/heart/ethereal/proc/on_examine(mob/living/carbon/human/examined_human, mob/user, list/examine_list) SIGNAL_HANDLER if(!crystalize_timer_id) @@ -62,7 +62,7 @@ examine_list += span_notice("Some crystals are coming out of [examined_human]. ") ///On stat changes, if the victim is no longer dead but they're crystalizing, cancel it, if they become dead, start the crystalizing process if possible -/obj/item/organ/internal/heart/ethereal/proc/on_stat_change(mob/living/victim, new_stat) +/obj/item/organ/heart/ethereal/proc/on_stat_change(mob/living/victim, new_stat) SIGNAL_HANDLER if(new_stat != DEAD) @@ -92,7 +92,7 @@ RegisterSignal(victim, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_take_damage)) ///Ran when disarmed, prevents the ethereal from reviving -/obj/item/organ/internal/heart/ethereal/proc/reset_crystalizing(mob/living/defender, mob/living/attacker, zone, obj/item/weapon) +/obj/item/organ/heart/ethereal/proc/reset_crystalizing(mob/living/defender, mob/living/attacker, zone, obj/item/weapon) SIGNAL_HANDLER defender.visible_message( span_notice("The crystals on [defender] are gently broken off."), @@ -102,7 +102,7 @@ crystalize_timer_id = addtimer(CALLBACK(src, PROC_REF(crystalize), defender), CRYSTALIZE_DISARM_WAIT_TIME, TIMER_STOPPABLE) //Lets us restart the timer on disarm ///Actually spawns the crystal which puts the ethereal in it. -/obj/item/organ/internal/heart/ethereal/proc/crystalize(mob/living/ethereal) +/obj/item/organ/heart/ethereal/proc/crystalize(mob/living/ethereal) var/location = ethereal.loc @@ -118,7 +118,7 @@ stop_crystalization_process(ethereal, TRUE) ///Stop the crystalization process, unregistering any signals and resetting any variables. -/obj/item/organ/internal/heart/ethereal/proc/stop_crystalization_process(mob/living/ethereal, succesful = FALSE) +/obj/item/organ/heart/ethereal/proc/stop_crystalization_process(mob/living/ethereal, succesful = FALSE) UnregisterSignal(ethereal, COMSIG_LIVING_DISARM_HIT) UnregisterSignal(ethereal, COMSIG_ATOM_EXAMINE) UnregisterSignal(ethereal, COMSIG_MOB_APPLY_DAMAGE) @@ -133,14 +133,14 @@ deltimer(crystalize_timer_id) crystalize_timer_id = null -/obj/item/organ/internal/heart/ethereal/proc/owner_deleted(datum/source) +/obj/item/organ/heart/ethereal/proc/owner_deleted(datum/source) SIGNAL_HANDLER stop_crystalization_process(owner) return ///Lets you stop the process with enough brute damage -/obj/item/organ/internal/heart/ethereal/proc/on_take_damage(datum/source, damage, damagetype, def_zone, ...) +/obj/item/organ/heart/ethereal/proc/on_take_damage(datum/source, damage, damagetype, def_zone, ...) SIGNAL_HANDLER if(damagetype != BRUTE) return @@ -170,7 +170,7 @@ density = TRUE anchored = TRUE ///The organ this crystal belongs to - var/obj/item/organ/internal/heart/ethereal/ethereal_heart + var/obj/item/organ/heart/ethereal/ethereal_heart ///Timer for the healing process. Stops if destroyed. var/crystal_heal_timer ///Is the crystal still being built? True by default, gets changed after a timer. @@ -179,7 +179,7 @@ /obj/structure/ethereal_crystal/relaymove() return -/obj/structure/ethereal_crystal/Initialize(mapload, obj/item/organ/internal/heart/ethereal/ethereal_heart) +/obj/structure/ethereal_crystal/Initialize(mapload, obj/item/organ/heart/ethereal/ethereal_heart) . = ..() if(!ethereal_heart) stack_trace("Our crystal has no related heart") diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm index 78792e45ed5..81b71e51b0c 100644 --- a/code/modules/surgery/organs/internal/liver/_liver.dm +++ b/code/modules/surgery/organs/internal/liver/_liver.dm @@ -2,7 +2,7 @@ #define LIVER_DEFAULT_TOX_RESISTANCE 1 //lower values lower how harmful toxins are to the liver #define LIVER_FAILURE_STAGE_SECONDS 180 //amount of seconds before liver failure reaches a new stage // NOVA EDIT CHANGE - Original: 60 -/obj/item/organ/internal/liver +/obj/item/organ/liver name = "liver" desc = "Pairing suggestion: chianti and fava beans." icon_state = "liver" @@ -15,7 +15,7 @@ healing_factor = STANDARD_ORGAN_HEALING decay_factor = STANDARD_ORGAN_DECAY // smack in the middle of decay times - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/iron = 5) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/iron = 5) grind_results = list(/datum/reagent/consumable/nutriment/peptides = 5) /// Affects how much damage the liver takes from alcohol @@ -27,7 +27,7 @@ var/filterToxins = TRUE //whether to filter toxins var/operated = FALSE //whether the liver's been repaired with surgery and can be fixed again or not -/obj/item/organ/internal/liver/Initialize(mapload) +/obj/item/organ/liver/Initialize(mapload) . = ..() // If the liver handles foods like a clown, it honks like a bike horn // Don't think about it too much. @@ -43,7 +43,7 @@ * The removal of the component, if this liver loses that trait, is handled * by the component itself. */ -/obj/item/organ/internal/liver/proc/on_add_comedy_metabolism() +/obj/item/organ/liver/proc/on_add_comedy_metabolism() SIGNAL_HANDLER // Are clown "bike" horns made from the livers of ex-clowns? @@ -54,18 +54,18 @@ * * Basically just removes squeak component */ -/obj/item/organ/internal/liver/proc/on_remove_comedy_metabolism() +/obj/item/organ/liver/proc/on_remove_comedy_metabolism() SIGNAL_HANDLER qdel(GetComponent(/datum/component/squeak)) /// Registers COMSIG_SPECIES_HANDLE_CHEMICAL from owner -/obj/item/organ/internal/liver/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() RegisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL, PROC_REF(handle_chemical)) /// Unregisters COMSIG_SPECIES_HANDLE_CHEMICAL from owner -/obj/item/organ/internal/liver/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL) @@ -76,10 +76,10 @@ * * NOTE: If you return COMSIG_MOB_STOP_REAGENT_CHECK, that reagent will not be removed like normal! You must handle it manually. **/ -/obj/item/organ/internal/liver/proc/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) +/obj/item/organ/liver/proc/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) SIGNAL_HANDLER -/obj/item/organ/internal/liver/examine(mob/user) +/obj/item/organ/liver/examine(mob/user) . = ..() if(HAS_MIND_TRAIT(user, TRAIT_ENTRAILS_READER) || isobserver(user)) @@ -108,7 +108,7 @@ else if(HAS_TRAIT(src, TRAIT_PRETENDER_ROYAL_METABOLISM)) . += span_info("A diet of imitation caviar, and signs of insomnia, implies that this is the liver of someone who wants to be a head of staff.") -/obj/item/organ/internal/liver/before_organ_replacement(obj/item/organ/replacement) +/obj/item/organ/liver/before_organ_replacement(obj/item/organ/replacement) . = ..() if(!istype(replacement, type)) return @@ -123,7 +123,7 @@ continue ADD_TRAIT(replacement, readded_trait, JOB_TRAIT) -/obj/item/organ/internal/liver/on_life(seconds_per_tick, times_fired) +/obj/item/organ/liver/on_life(seconds_per_tick, times_fired) . = ..() //If your liver is failing, then we use the liverless version of metabolize if((organ_flags & ORGAN_FAILING) || HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM)) @@ -133,12 +133,12 @@ owner.reagents?.metabolize(owner, seconds_per_tick, times_fired, can_overdose = TRUE) -/obj/item/organ/internal/liver/handle_failing_organs(seconds_per_tick) +/obj/item/organ/liver/handle_failing_organs(seconds_per_tick) if(HAS_TRAIT(owner, TRAIT_STABLELIVER) || HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM)) return return ..() -/obj/item/organ/internal/liver/organ_failure(seconds_per_tick) +/obj/item/organ/liver/organ_failure(seconds_per_tick) switch(failure_time/LIVER_FAILURE_STAGE_SECONDS) if(1) to_chat(owner, span_userdanger("You feel stabbing pain in your abdomen!")) @@ -188,7 +188,7 @@ if(SPT_PROB(3, seconds_per_tick)) owner.emote("drool") -/obj/item/organ/internal/liver/on_owner_examine(datum/source, mob/user, list/examine_list) +/obj/item/organ/liver/on_owner_examine(datum/source, mob/user, list/examine_list) if(!ishuman(owner) || !(organ_flags & ORGAN_FAILING)) return @@ -203,18 +203,18 @@ if(4 * LIVER_FAILURE_STAGE_SECONDS to INFINITY) examine_list += span_danger("[owner]'s eyes are completely yellow and swelling with pus. [owner.p_They()] [owner.p_do()]n't look like [owner.p_they()] will be alive for much longer.") -/obj/item/organ/internal/liver/get_availability(datum/species/owner_species, mob/living/owner_mob) +/obj/item/organ/liver/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantliver // alien livers can ignore up to 15u of toxins, but they take x3 liver damage -/obj/item/organ/internal/liver/alien +/obj/item/organ/liver/alien name = "alien liver" // doesnt matter for actual aliens because they dont take toxin damage desc = "A liver that used to belong to a killer alien, who knows what it used to eat." icon_state = "liver-x" // Same sprite as fly-person liver. liver_resistance = 0.333 * LIVER_DEFAULT_TOX_RESISTANCE // -66% toxTolerance = 15 // complete toxin immunity like xenos have would be too powerful -/obj/item/organ/internal/liver/cybernetic +/obj/item/organ/liver/cybernetic name = "basic cybernetic liver" desc = "A very basic device designed to mimic the functions of a human liver. Handles toxins slightly worse than an organic liver." failing_desc = "seems to be broken." @@ -225,7 +225,7 @@ liver_resistance = 0.9 * LIVER_DEFAULT_TOX_RESISTANCE // -10% var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed. -/obj/item/organ/internal/liver/cybernetic/emp_act(severity) +/obj/item/organ/liver/cybernetic/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return @@ -235,7 +235,7 @@ if(prob(emp_vulnerability/severity)) //Chance of permanent effects organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon. -/obj/item/organ/internal/liver/cybernetic/tier2 +/obj/item/organ/liver/cybernetic/tier2 name = "cybernetic liver" desc = "An electronic device designed to mimic the functions of a human liver. Handles toxins slightly better than an organic liver." icon_state = "liver-c-u" @@ -244,7 +244,7 @@ liver_resistance = 1.2 * LIVER_DEFAULT_TOX_RESISTANCE // +20% emp_vulnerability = 40 -/obj/item/organ/internal/liver/cybernetic/tier3 +/obj/item/organ/liver/cybernetic/tier3 name = "upgraded cybernetic liver" desc = "An upgraded version of the cybernetic liver, designed to improve further upon organic livers. It is resistant to alcohol poisoning and is very robust at filtering toxins." icon_state = "liver-c-u2" @@ -254,7 +254,7 @@ liver_resistance = 1.5 * LIVER_DEFAULT_TOX_RESISTANCE // +50% emp_vulnerability = 20 -/obj/item/organ/internal/liver/cybernetic/surplus +/obj/item/organ/liver/cybernetic/surplus name = "surplus prosthetic liver" desc = "A very cheap prosthetic liver, mass produced for low-functioning alcoholics... It looks more like a water filter than \ an actual liver. \ @@ -268,7 +268,7 @@ emp_vulnerability = 100 //surplus organs are so awful that they explode when removed, unless failing -/obj/item/organ/internal/liver/cybernetic/surplus/Initialize(mapload) +/obj/item/organ/liver/cybernetic/surplus/Initialize(mapload) . = ..() AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE) diff --git a/code/modules/surgery/organs/internal/liver/liver_golem.dm b/code/modules/surgery/organs/internal/liver/liver_golem.dm index 1ab3eabcd9c..d9c3d4632cf 100644 --- a/code/modules/surgery/organs/internal/liver/liver_golem.dm +++ b/code/modules/surgery/organs/internal/liver/liver_golem.dm @@ -3,16 +3,16 @@ * Basically only exists to remove the nutriment factor from consumables, * so golems can only consume minerals even when injecting reagents. * - * Actually consuming golem food is handled by /obj/item/organ/internal/stomach/golem! + * Actually consuming golem food is handled by /obj/item/organ/stomach/golem! **/ -/obj/item/organ/internal/liver/golem +/obj/item/organ/liver/golem name = "porous rock" desc = "A spongy rock capable of absorbing chemicals." icon_state = "liver-p" organ_flags = ORGAN_MINERAL color = COLOR_GOLEM_GRAY -/obj/item/organ/internal/liver/golem/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) +/obj/item/organ/liver/golem/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) . = ..() // parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING)) diff --git a/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm b/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm index be21968d659..714916d183e 100644 --- a/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm +++ b/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm @@ -2,7 +2,7 @@ * Plasmaman liver * Makes plasma and hot ice heal wounds, also makes gunpowder a hallucinogen. **/ -/obj/item/organ/internal/liver/bone/plasmaman +/obj/item/organ/liver/bone/plasmaman name = "reagent processing crystal" desc = "A large crystal that is somehow capable of metabolizing chemicals, these are found in plasmamen." icon_state = "liver-p" @@ -10,7 +10,7 @@ organ_traits = list(TRAIT_PLASMA_LOVER_METABOLISM) milk_burn_healing = 0 -/obj/item/organ/internal/liver/bone/plasmaman/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) +/obj/item/organ/liver/bone/plasmaman/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) . = ..() // parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING)) diff --git a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm index b57afd245f5..8ff1f0c3cf3 100644 --- a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm +++ b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm @@ -3,7 +3,7 @@ * Gives the owner liverless metabolism, makes them vulnerable to bone hurting juice and * makes milk heal them through meme magic. **/ -/obj/item/organ/internal/liver/bone +/obj/item/organ/liver/bone name = "mass of bones" desc = "You have no idea what this strange ball of bones does." icon_state = "liver-bone" @@ -13,7 +13,7 @@ ///Var for burn healing via milk var/milk_burn_healing = 2.5 -/obj/item/organ/internal/liver/bone/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) +/obj/item/organ/liver/bone/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired) . = ..() // parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING)) diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm index 203b542e631..3e6c2fdec48 100644 --- a/code/modules/surgery/organs/internal/lungs/_lungs.dm +++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/lungs +/obj/item/organ/lungs name = "lungs" icon_state = "lungs" @@ -21,7 +21,7 @@ var/failed = FALSE var/operated = FALSE //whether we can still have our damages fixed through surgery - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/salbutamol = 5) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/medicine/salbutamol = 5) /// Our previous breath's partial pressures, in the form gas id -> partial pressure var/list/last_partial_pressures = list() @@ -105,7 +105,7 @@ var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine // assign the respiration_type -/obj/item/organ/internal/lungs/Initialize(mapload) +/obj/item/organ/lungs/Initialize(mapload) . = ..() breath_out = new(BREATH_VOLUME) @@ -154,7 +154,7 @@ add_gas_reaction(/datum/gas/zauker, while_present = PROC_REF(too_much_zauker)) ///Simply exists so that you don't keep any alerts from your previous lack of lungs. -/obj/item/organ/internal/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags) +/obj/item/organ/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags) . = ..() receiver.clear_alert(ALERT_NOT_ENOUGH_OXYGEN) @@ -163,7 +163,7 @@ receiver.clear_alert(ALERT_NOT_ENOUGH_PLASMA) receiver.clear_alert(ALERT_NOT_ENOUGH_N2O) -/obj/item/organ/internal/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() // This is very "manual" I realize, but it's useful to ensure cleanup for gases we're removing happens // Avoids stuck alerts and such @@ -188,7 +188,7 @@ * while_present and always get the same arguments (mob/living/carbon/breather, datum/gas_mixture/breath, pp, old_pp) * on_loss is almost exactly the same, except it doesn't pass in a current partial pressure, since one isn't avalible */ -/obj/item/organ/internal/lungs/proc/add_gas_reaction(gas_type, while_present = null, on_loss = null, always = null) +/obj/item/organ/lungs/proc/add_gas_reaction(gas_type, while_present = null, on_loss = null, always = null) if(always) breathe_always[gas_type] = always @@ -208,7 +208,7 @@ * Takes the gas to check for as an argument, alongside the gas to convert and the multiplier to use * These act in the order of insertion, use that how you will */ -/obj/item/organ/internal/lungs/proc/add_gas_relationship(gas_type, convert_to, multiplier) +/obj/item/organ/lungs/proc/add_gas_relationship(gas_type, convert_to, multiplier) if(isnull(gas_type) || isnull(convert_to) || multiplier == 0) return @@ -219,7 +219,7 @@ treat_as += list(add) /// Clears away a gas relationship. Takes the same args as the initial addition -/obj/item/organ/internal/lungs/proc/remove_gas_relationship(gas_type, convert_to, multiplier) +/obj/item/organ/lungs/proc/remove_gas_relationship(gas_type, convert_to, multiplier) if(isnull(gas_type) || isnull(convert_to) || multiplier == 0) return @@ -234,7 +234,7 @@ return /// Handles oxygen breathing. Always called by things that need o2, no matter what -/obj/item/organ/internal/lungs/proc/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp) +/obj/item/organ/lungs/proc/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp) if(o2_pp < safe_oxygen_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING)) // Not safe to check the old pp because of can_breath_vacuum breather.throw_alert(ALERT_NOT_ENOUGH_OXYGEN, /atom/movable/screen/alert/not_enough_oxy) @@ -256,7 +256,7 @@ breather.adjustOxyLoss(-5) /// Maximum Oxygen effects. "Too much O2!" -/obj/item/organ/internal/lungs/proc/too_much_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp) +/obj/item/organ/lungs/proc/too_much_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp) // If too much Oxygen is poisonous. if(o2_pp <= safe_oxygen_max) if(old_o2_pp > safe_oxygen_max) @@ -269,11 +269,11 @@ breather.throw_alert(ALERT_TOO_MUCH_OXYGEN, /atom/movable/screen/alert/too_much_oxy) /// Handles NOT having too much o2. only relevant if safe_oxygen_max has a value -/obj/item/organ/internal/lungs/proc/safe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, old_o2_pp) +/obj/item/organ/lungs/proc/safe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, old_o2_pp) breather.clear_alert(ALERT_TOO_MUCH_OXYGEN) /// Behaves like Oxygen with 8X efficacy, but metabolizes into a reagent. -/obj/item/organ/internal/lungs/proc/consume_pluoxium(mob/living/carbon/breather, datum/gas_mixture/breath, pluoxium_pp, old_pluoxium_pp) +/obj/item/organ/lungs/proc/consume_pluoxium(mob/living/carbon/breather, datum/gas_mixture/breath, pluoxium_pp, old_pluoxium_pp) breathe_gas_volume(breath, /datum/gas/pluoxium) // Metabolize to reagent. if(pluoxium_pp > gas_stimulation_min) @@ -281,7 +281,7 @@ breather.reagents.add_reagent(/datum/reagent/pluoxium, max(0, 1 - existing)) /// If the lungs need Nitrogen to breathe properly, N2 is exchanged with CO2. -/obj/item/organ/internal/lungs/proc/breathe_nitro(mob/living/carbon/breather, datum/gas_mixture/breath, nitro_pp, old_nitro_pp) +/obj/item/organ/lungs/proc/breathe_nitro(mob/living/carbon/breather, datum/gas_mixture/breath, nitro_pp, old_nitro_pp) if(nitro_pp < safe_nitro_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING)) // Suffocation side-effects. // Not safe to check the old pp because of can_breath_vacuum @@ -303,7 +303,7 @@ breather.adjustOxyLoss(-5) /// Maximum CO2 effects. "Too much CO2!" -/obj/item/organ/internal/lungs/proc/too_much_co2(mob/living/carbon/breather, datum/gas_mixture/breath, co2_pp, old_co2_pp) +/obj/item/organ/lungs/proc/too_much_co2(mob/living/carbon/breather, datum/gas_mixture/breath, co2_pp, old_co2_pp) if(co2_pp <= safe_co2_max) if(old_co2_pp > safe_co2_max) return BREATH_LOST @@ -329,13 +329,13 @@ breather.apply_damage(8, co2_damage_type, spread_damage = TRUE) /// Handles NOT having too much co2. only relevant if safe_co2_max has a value -/obj/item/organ/internal/lungs/proc/safe_co2(mob/living/carbon/breather, datum/gas_mixture/breath, old_co2_pp) +/obj/item/organ/lungs/proc/safe_co2(mob/living/carbon/breather, datum/gas_mixture/breath, old_co2_pp) // Reset side-effects. breather.co2overloadtime = 0 breather.clear_alert(ALERT_TOO_MUCH_CO2) /// If the lungs need Plasma to breathe properly, Plasma is exchanged with CO2. -/obj/item/organ/internal/lungs/proc/breathe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp) +/obj/item/organ/lungs/proc/breathe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp) // Suffocation side-effects. if(plasma_pp < safe_plasma_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING)) // Could check old_plasma_pp but vacuum breathing hates me @@ -357,7 +357,7 @@ breather.adjustOxyLoss(-5) /// Maximum Plasma effects. "Too much Plasma!" -/obj/item/organ/internal/lungs/proc/too_much_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp) +/obj/item/organ/lungs/proc/too_much_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp) if(plasma_pp <= safe_plasma_max) if(old_plasma_pp > safe_plasma_max) return BREATH_LOST @@ -372,11 +372,11 @@ breather.apply_damage(clamp(ratio, plas_breath_dam_min, plas_breath_dam_max), plas_damage_type, spread_damage = TRUE) /// Resets plasma side effects -/obj/item/organ/internal/lungs/proc/safe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_plasma_pp) +/obj/item/organ/lungs/proc/safe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_plasma_pp) breather.clear_alert(ALERT_TOO_MUCH_PLASMA) /// Too much funny gas, time to get brain damage -/obj/item/organ/internal/lungs/proc/too_much_bz(mob/living/carbon/breather, datum/gas_mixture/breath, bz_pp, old_bz_pp) +/obj/item/organ/lungs/proc/too_much_bz(mob/living/carbon/breather, datum/gas_mixture/breath, bz_pp, old_bz_pp) if(bz_pp > BZ_trip_balls_min) breather.adjust_hallucinations(20 SECONDS) breather.reagents.add_reagent(/datum/reagent/bz_metabolites, 5) @@ -384,7 +384,7 @@ breather.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150, ORGAN_ORGANIC) /// Breathing in refridgerator coolent, shit's caustic -/obj/item/organ/internal/lungs/proc/too_much_freon(mob/living/carbon/breather, datum/gas_mixture/breath, freon_pp, old_freon_pp) +/obj/item/organ/lungs/proc/too_much_freon(mob/living/carbon/breather, datum/gas_mixture/breath, freon_pp, old_freon_pp) // Inhale Freon. Exhale nothing. breathe_gas_volume(breath, /datum/gas/freon) if (freon_pp > gas_stimulation_min) @@ -401,7 +401,7 @@ breather.adjustFireLoss(freon_pp / 4) /// Breathing in halon, convert it to a reagent -/obj/item/organ/internal/lungs/proc/too_much_halon(mob/living/carbon/breather, datum/gas_mixture/breath, halon_pp, old_halon_pp) +/obj/item/organ/lungs/proc/too_much_halon(mob/living/carbon/breather, datum/gas_mixture/breath, halon_pp, old_halon_pp) // Inhale Halon. Exhale nothing. breathe_gas_volume(breath, /datum/gas/halon) // Metabolize to reagent. @@ -410,7 +410,7 @@ breather.reagents.add_reagent(/datum/reagent/halon, max(0, 1 - breather.reagents.get_reagent_amount(/datum/reagent/halon))) /// Sleeping gas with healing properties. -/obj/item/organ/internal/lungs/proc/consume_healium(mob/living/carbon/breather, datum/gas_mixture/breath, healium_pp, old_healium_pp) +/obj/item/organ/lungs/proc/consume_healium(mob/living/carbon/breather, datum/gas_mixture/breath, healium_pp, old_healium_pp) breathe_gas_volume(breath, /datum/gas/healium) // Euphoria side-effect. if(healium_pp > gas_stimulation_min) @@ -428,11 +428,11 @@ breather.reagents.add_reagent(/datum/reagent/healium, max(0, 1 - breather.reagents.get_reagent_amount(/datum/reagent/healium))) /// Lose healium side effects -/obj/item/organ/internal/lungs/proc/lose_healium(mob/living/carbon/breather, datum/gas_mixture/breath, old_healium_pp) +/obj/item/organ/lungs/proc/lose_healium(mob/living/carbon/breather, datum/gas_mixture/breath, old_healium_pp) healium_euphoria = EUPHORIA_INACTIVE /// Activates helium speech when partial pressure gets high enough -/obj/item/organ/internal/lungs/proc/consume_helium(mob/living/carbon/breather, datum/gas_mixture/breath, helium_pp, old_helium_pp) +/obj/item/organ/lungs/proc/consume_helium(mob/living/carbon/breather, datum/gas_mixture/breath, helium_pp, old_helium_pp) breathe_gas_volume(breath, /datum/gas/helium) if(helium_pp > helium_speech_min) if(old_helium_pp <= helium_speech_min) @@ -442,23 +442,23 @@ UnregisterSignal(breather, COMSIG_MOB_SAY) /// Lose helium high pitched voice -/obj/item/organ/internal/lungs/proc/lose_helium(mob/living/carbon/breather, datum/gas_mixture/breath, old_helium_pp) +/obj/item/organ/lungs/proc/lose_helium(mob/living/carbon/breather, datum/gas_mixture/breath, old_helium_pp) UnregisterSignal(breather, COMSIG_MOB_SAY) /// React to speach while hopped up on the high pitched voice juice -/obj/item/organ/internal/lungs/proc/handle_helium_speech(mob/living/carbon/breather, list/speech_args) +/obj/item/organ/lungs/proc/handle_helium_speech(mob/living/carbon/breather, list/speech_args) SIGNAL_HANDLER speech_args[SPEECH_SPANS] |= SPAN_SMALL_VOICE /// Gain hypernob effects if we have enough of the stuff -/obj/item/organ/internal/lungs/proc/consume_hypernoblium(mob/living/carbon/breather, datum/gas_mixture/breath, hypernob_pp, old_hypernob_pp) +/obj/item/organ/lungs/proc/consume_hypernoblium(mob/living/carbon/breather, datum/gas_mixture/breath, hypernob_pp, old_hypernob_pp) breathe_gas_volume(breath, /datum/gas/hypernoblium) if (hypernob_pp > gas_stimulation_min) var/existing = breather.reagents.get_reagent_amount(/datum/reagent/hypernoblium) breather.reagents.add_reagent(/datum/reagent/hypernoblium,max(0, 1 - existing)) /// Breathing in the stink gas -/obj/item/organ/internal/lungs/proc/too_much_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, miasma_pp, old_miasma_pp) +/obj/item/organ/lungs/proc/too_much_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, miasma_pp, old_miasma_pp) // Inhale Miasma. Exhale nothing. breathe_gas_volume(breath, /datum/gas/miasma) // Miasma side effects @@ -494,12 +494,12 @@ breather.adjust_disgust(0.1 * miasma_pp) /// We're free from the stick, clear out its impacts -/obj/item/organ/internal/lungs/proc/safe_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_miasma_pp) +/obj/item/organ/lungs/proc/safe_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_miasma_pp) // Clear out moods when immune to miasma, or if there's no miasma at all. breather.clear_mood_event("smell") /// Causes random euphoria and giggling. Large amounts knock you down -/obj/item/organ/internal/lungs/proc/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp) +/obj/item/organ/lungs/proc/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp) if(n2o_pp < n2o_para_min) // Small amount of N2O, small side-effects. if(n2o_pp <= n2o_detect_min) @@ -532,12 +532,12 @@ breather.Sleeping(min(breather.AmountSleeping() + 100, 200)) /// N2O side-effects. "Too much N2O!" -/obj/item/organ/internal/lungs/proc/safe_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, old_n2o_pp) +/obj/item/organ/lungs/proc/safe_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, old_n2o_pp) n2o_euphoria = EUPHORIA_INACTIVE breather.clear_alert(ALERT_TOO_MUCH_N2O) // Breathe in nitrium. It's helpful, but has nasty side effects -/obj/item/organ/internal/lungs/proc/too_much_nitrium(mob/living/carbon/breather, datum/gas_mixture/breath, nitrium_pp, old_nitrium_pp) +/obj/item/organ/lungs/proc/too_much_nitrium(mob/living/carbon/breather, datum/gas_mixture/breath, nitrium_pp, old_nitrium_pp) breathe_gas_volume(breath, /datum/gas/nitrium) if(prob(20)) @@ -557,7 +557,7 @@ breather.reagents.add_reagent(/datum/reagent/nitrium_high_metabolization, max(0, 1 - existing)) /// Radioactive, green gas. Toxin damage, and a radiation chance -/obj/item/organ/internal/lungs/proc/too_much_tritium(mob/living/carbon/breather, datum/gas_mixture/breath, trit_pp, old_trit_pp) +/obj/item/organ/lungs/proc/too_much_tritium(mob/living/carbon/breather, datum/gas_mixture/breath, trit_pp, old_trit_pp) var/gas_breathed = breathe_gas_volume(breath, /datum/gas/tritium) var/moles_visible = GLOB.meta_gas_info[/datum/gas/tritium][META_GAS_MOLES_VISIBLE] * BREATH_PERCENTAGE // Tritium side-effects. @@ -572,7 +572,7 @@ breather.AddComponent(/datum/component/irradiated) /// Really toxic stuff, very much trying to kill you -/obj/item/organ/internal/lungs/proc/too_much_zauker(mob/living/carbon/breather, datum/gas_mixture/breath, zauker_pp, old_zauker_pp) +/obj/item/organ/lungs/proc/too_much_zauker(mob/living/carbon/breather, datum/gas_mixture/breath, zauker_pp, old_zauker_pp) breathe_gas_volume(breath, /datum/gas/zauker) // Metabolize to reagent. if(zauker_pp > gas_stimulation_min) @@ -591,7 +591,7 @@ * * breath: A gas mixture to test, or null. * * breather: A carbon mob that is using the lungs to breathe. */ -/obj/item/organ/internal/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather) +/obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather) if(HAS_TRAIT(breather, TRAIT_GODMODE)) breather.failed_last_breath = FALSE breather.clear_alert(ALERT_NOT_ENOUGH_OXYGEN) @@ -717,7 +717,7 @@ /// Remove gas from breath. If output_gas is given, transfers the removed gas to the lung's gas_mixture. /// Removes 100% of the given gas type unless given a volume argument. /// Returns the amount of gas theoretically removed. -/obj/item/organ/internal/lungs/proc/breathe_gas_volume(datum/gas_mixture/breath, remove_id, exchange_id = null, volume = INFINITY) +/obj/item/organ/lungs/proc/breathe_gas_volume(datum/gas_mixture/breath, remove_id, exchange_id = null, volume = INFINITY) var/list/breath_gases = breath.gases volume = min(volume, breath_gases[remove_id][MOLES]) breath_gases[remove_id][MOLES] -= volume @@ -728,7 +728,7 @@ /// Applies suffocation side-effects to a given Human, scaling based on ratio of required pressure VS "true" pressure. /// If pressure is greater than 0, the return value will represent the amount of gas successfully breathed. -/obj/item/organ/internal/lungs/proc/handle_suffocation(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, mole_count = 0) +/obj/item/organ/lungs/proc/handle_suffocation(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, mole_count = 0) . = 0 // Can't suffocate without a Human, or without minimum breath pressure. if(!suffocator || !safe_breath_min) @@ -758,7 +758,7 @@ suffocator.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) -/obj/item/organ/internal/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures +/obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures var/breath_temperature = breath.temperature if(!HAS_TRAIT(breather, TRAIT_RESISTCOLD)) // COLD DAMAGE @@ -807,7 +807,7 @@ breath.temperature = breather.bodytemperature /// Creates a particle effect off the mouth of the passed mob. -/obj/item/organ/internal/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type) +/obj/item/organ/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type) ASSERT(ispath(particle_type, /particles)) var/obj/effect/abstract/particle_holder/holder = new(breather, particle_type) @@ -842,7 +842,7 @@ QDEL_IN(holder, breath_particle.lifespan) -/obj/item/organ/internal/lungs/on_life(seconds_per_tick, times_fired) +/obj/item/organ/lungs/on_life(seconds_per_tick, times_fired) . = ..() if(failed && !(organ_flags & ORGAN_FAILING)) failed = FALSE @@ -855,13 +855,13 @@ owner.visible_message(span_danger("[owner] grabs [owner.p_their()] throat, struggling for breath!"), span_userdanger("You suddenly feel like you can't breathe!")) failed = TRUE -/obj/item/organ/internal/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob) +/obj/item/organ/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantlungs #define SMOKER_ORGAN_HEALTH (STANDARD_ORGAN_THRESHOLD * 0.75) #define SMOKER_LUNG_HEALING (STANDARD_ORGAN_HEALING * 0.75) -/obj/item/organ/internal/lungs/plasmaman +/obj/item/organ/lungs/plasmaman name = "plasma filter" desc = "A spongy rib-shaped mass for filtering plasma from the air." icon_state = "lungs-plasma" @@ -871,7 +871,7 @@ safe_plasma_min = 4 //We breathe THIS! safe_plasma_max = 0 -/obj/item/organ/internal/lungs/plasmaman/plasmaman_smoker +/obj/item/organ/lungs/plasmaman/plasmaman_smoker name = "smoker plasma filter" desc = "A plasma filter that look discolored, a result from smoking a lot." icon_state = "lungs_plasma_smoker" @@ -879,19 +879,19 @@ maxHealth = SMOKER_ORGAN_HEALTH healing_factor = SMOKER_LUNG_HEALING -/obj/item/organ/internal/lungs/slime +/obj/item/organ/lungs/slime name = "vacuole" desc = "A large organelle designed to store oxygen and other important gasses." safe_plasma_max = 0 //We breathe this to gain POWER. -/obj/item/organ/internal/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather_slime) +/obj/item/organ/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather_slime) . = ..() if (breath?.gases[/datum/gas/plasma]) var/plasma_pp = breath.get_breath_partial_pressure(breath.gases[/datum/gas/plasma][MOLES]) breather_slime.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you. -/obj/item/organ/internal/lungs/smoker_lungs +/obj/item/organ/lungs/smoker_lungs name = "smoker lungs" desc = "A pair of lungs that look sickly, a result from smoking a lot." icon_state = "lungs_smoker" @@ -899,7 +899,7 @@ maxHealth = SMOKER_ORGAN_HEALTH healing_factor = SMOKER_LUNG_HEALING -/obj/item/organ/internal/lungs/cybernetic +/obj/item/organ/lungs/cybernetic name = "basic cybernetic lungs" desc = "A basic cybernetic version of the lungs found in traditional humanoid entities." failing_desc = "seems to be broken." @@ -908,7 +908,7 @@ maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5 var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed. -/obj/item/organ/internal/lungs/cybernetic/emp_act(severity) +/obj/item/organ/lungs/cybernetic/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return @@ -918,7 +918,7 @@ if(prob(emp_vulnerability/severity)) //Chance of permanent effects organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon. -/obj/item/organ/internal/lungs/cybernetic/tier2 +/obj/item/organ/lungs/cybernetic/tier2 name = "cybernetic lungs" desc = "A cybernetic version of the lungs found in traditional humanoid entities. Allows for greater intakes of oxygen than organic lungs, requiring slightly less pressure." icon_state = "lungs-c-u" @@ -926,7 +926,7 @@ safe_oxygen_min = 13 emp_vulnerability = 40 -/obj/item/organ/internal/lungs/cybernetic/tier3 +/obj/item/organ/lungs/cybernetic/tier3 name = "upgraded cybernetic lungs" desc = "A more advanced version of the stock cybernetic lungs. Features the ability to filter out lower levels of plasma and carbon dioxide." icon_state = "lungs-c-u2" @@ -940,7 +940,7 @@ cold_level_2_threshold = 140 cold_level_3_threshold = 100 -/obj/item/organ/internal/lungs/cybernetic/surplus +/obj/item/organ/lungs/cybernetic/surplus name = "surplus prosthetic lungs" desc = "Two fragile, inflatable sacks of air that only barely mimic the function of human lungs. \ Offer no protection against EMPs." @@ -949,11 +949,11 @@ emp_vulnerability = 100 //surplus organs are so awful that they explode when removed, unless failing -/obj/item/organ/internal/lungs/cybernetic/surplus/Initialize(mapload) +/obj/item/organ/lungs/cybernetic/surplus/Initialize(mapload) . = ..() AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE) -/obj/item/organ/internal/lungs/lavaland +/obj/item/organ/lungs/lavaland name = "blackened frilled lungs" // blackened from necropolis exposure desc = "Exposure to the necropolis has mutated these lungs to breathe the air of Indecipheres, the lava-covered moon." icon_state = "lungs-ashwalker" @@ -962,7 +962,7 @@ // to 16 kPa. So it follows that ashwalkers, as humanoids, follow the same rules. #define GAS_TOLERANCE 5 -/obj/item/organ/internal/lungs/lavaland/Initialize(mapload) +/obj/item/organ/lungs/lavaland/Initialize(mapload) var/datum/gas_mixture/immutable/planetary/mix = SSair.planetary[LAVALAND_DEFAULT_ATMOS] if(!mix?.total_moles()) // this typically means we didn't load lavaland, like if we're using the LOWMEMORYMODE define @@ -1013,7 +1013,7 @@ #undef GAS_TOLERANCE -/obj/item/organ/internal/lungs/ethereal +/obj/item/organ/lungs/ethereal name = "aeration reticulum" desc = "These exotic lungs seem crunchier than most." icon_state = "lungs_ethereal" @@ -1021,7 +1021,7 @@ heat_level_2_threshold = 473 heat_level_3_threshold = 1073 -/obj/item/organ/internal/lungs/ethereal/ethereal_smoker +/obj/item/organ/lungs/ethereal/ethereal_smoker name = "smoker aeration reticulum" desc = "A pair of exotic lungs that look pale and sickly, a result from smoking a lot." icon_state = "lungs_ethereal_smoker" @@ -1029,12 +1029,12 @@ maxHealth = SMOKER_ORGAN_HEALTH healing_factor = SMOKER_LUNG_HEALING -/obj/item/organ/internal/lungs/ethereal/Initialize(mapload) +/obj/item/organ/lungs/ethereal/Initialize(mapload) . = ..() add_gas_reaction(/datum/gas/water_vapor, while_present = PROC_REF(consume_water)) /// H2O electrolysis -/obj/item/organ/internal/lungs/ethereal/proc/consume_water(mob/living/carbon/breather, datum/gas_mixture/breath, h2o_pp, old_h2o_pp) +/obj/item/organ/lungs/ethereal/proc/consume_water(mob/living/carbon/breather, datum/gas_mixture/breath, h2o_pp, old_h2o_pp) var/gas_breathed = breath.gases[/datum/gas/water_vapor][MOLES] breath.gases[/datum/gas/water_vapor][MOLES] -= gas_breathed breath_out.assert_gases(/datum/gas/oxygen, /datum/gas/hydrogen) diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm index 45cc12fc32b..4d6ef0cbc40 100644 --- a/code/modules/surgery/organs/internal/stomach/_stomach.dm +++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm @@ -1,7 +1,7 @@ //The contant in the rate of reagent transfer on life ticks #define STOMACH_METABOLISM_CONSTANT 0.25 -/obj/item/organ/internal/stomach +/obj/item/organ/stomach name = "stomach" desc = "Onaka ga suite imasu." icon_state = "stomach" @@ -20,7 +20,7 @@ high_threshold_cleared = span_info("The pain in your stomach dies down for now, but food still seems unappealing.") low_threshold_cleared = span_info("The last bouts of pain in your stomach have died out.") - food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5) + food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining = 5) //This is a reagent user and needs more then the 10u from edible component reagent_vol = 1000 @@ -35,7 +35,7 @@ var/operated = FALSE //whether the stomach's been repaired with surgery and can be fixed again or not -/obj/item/organ/internal/stomach/Initialize(mapload) +/obj/item/organ/stomach/Initialize(mapload) . = ..() //None edible organs do not get a reagent holder by default if(!reagents) @@ -43,7 +43,7 @@ else reagents.flags |= REAGENT_HOLDER_ALIVE -/obj/item/organ/internal/stomach/on_life(seconds_per_tick, times_fired) +/obj/item/organ/stomach/on_life(seconds_per_tick, times_fired) . = ..() //Manage species digestion @@ -119,7 +119,7 @@ body.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = damage) to_chat(body, span_warning("Your stomach reels in pain as you're incapable of holding down all that food!")) -/obj/item/organ/internal/stomach/proc/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired) +/obj/item/organ/stomach/proc/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired) if(HAS_TRAIT(human, TRAIT_NOHUNGER)) return //hunger is for BABIES @@ -185,22 +185,22 @@ handle_hunger_slowdown(human) ///for when mood is disabled and hunger should handle slowdowns -/obj/item/organ/internal/stomach/proc/handle_hunger_slowdown(mob/living/carbon/human/human) +/obj/item/organ/stomach/proc/handle_hunger_slowdown(mob/living/carbon/human/human) var/hungry = (500 - human.nutrition) / 5 //So overeat would be 100 and default level would be 80 if(hungry >= 70) human.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (hungry / 50)) else human.remove_movespeed_modifier(/datum/movespeed_modifier/hunger) -/obj/item/organ/internal/stomach/get_availability(datum/species/owner_species, mob/living/owner_mob) +/obj/item/organ/stomach/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantstomach ///This gets called after the owner takes a bite of food -/obj/item/organ/internal/stomach/proc/after_eat(atom/edible) +/obj/item/organ/stomach/proc/after_eat(atom/edible) SEND_SIGNAL(src, COMSIG_STOMACH_AFTER_EAT, edible) // NOVA EDIT ADDITION - Hemophage Organs return -/obj/item/organ/internal/stomach/proc/handle_disgust(mob/living/carbon/human/disgusted, seconds_per_tick, times_fired) +/obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/disgusted, seconds_per_tick, times_fired) var/old_disgust = disgusted.old_disgust var/disgust = disgusted.disgust @@ -247,11 +247,11 @@ disgusted.throw_alert(ALERT_DISGUST, /atom/movable/screen/alert/disgusted) disgusted.add_mood_event("disgust", /datum/mood_event/disgusted) -/obj/item/organ/internal/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() receiver.hud_used?.hunger?.update_appearance() -/obj/item/organ/internal/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) +/obj/item/organ/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) if(ishuman(stomach_owner)) var/mob/living/carbon/human/human_owner = owner human_owner.clear_alert(ALERT_DISGUST) @@ -259,21 +259,21 @@ stomach_owner.hud_used?.hunger?.update_appearance() return ..() -/obj/item/organ/internal/stomach/bone +/obj/item/organ/stomach/bone name = "mass of bones" desc = "You have no idea what this strange ball of bones does." icon_state = "stomach-bone" metabolism_efficiency = 0.025 //very bad organ_traits = list(TRAIT_NOHUNGER) -/obj/item/organ/internal/stomach/bone/plasmaman +/obj/item/organ/stomach/bone/plasmaman name = "digestive crystal" desc = "A strange crystal that is responsible for metabolizing the unseen energy force that feeds plasmamen." icon_state = "stomach-p" metabolism_efficiency = 0.06 organ_traits = null -/obj/item/organ/internal/stomach/cybernetic +/obj/item/organ/stomach/cybernetic name = "basic cybernetic stomach" desc = "A basic device designed to mimic the functions of a human stomach" failing_desc = "seems to be broken." @@ -283,7 +283,7 @@ metabolism_efficiency = 0.035 // not as good at digestion var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed. -/obj/item/organ/internal/stomach/cybernetic/emp_act(severity) +/obj/item/organ/stomach/cybernetic/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return @@ -293,7 +293,7 @@ if(prob(emp_vulnerability/severity)) //Chance of permanent effects organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon. -/obj/item/organ/internal/stomach/cybernetic/tier2 +/obj/item/organ/stomach/cybernetic/tier2 name = "cybernetic stomach" desc = "An electronic device designed to mimic the functions of a human stomach. Handles disgusting food a bit better." icon_state = "stomach-c-u" @@ -302,7 +302,7 @@ emp_vulnerability = 40 metabolism_efficiency = 0.07 -/obj/item/organ/internal/stomach/cybernetic/tier3 +/obj/item/organ/stomach/cybernetic/tier3 name = "upgraded cybernetic stomach" desc = "An upgraded version of the cybernetic stomach, designed to improve further upon organic stomachs. Handles disgusting food very well." icon_state = "stomach-c-u2" @@ -311,7 +311,7 @@ emp_vulnerability = 20 metabolism_efficiency = 0.1 -/obj/item/organ/internal/stomach/cybernetic/surplus +/obj/item/organ/stomach/cybernetic/surplus name = "surplus prosthetic stomach" desc = "A mechanical plastic oval that utilizes sulfuric acid instead of stomach acid. \ Very fragile, with painfully slow metabolism.\ @@ -322,7 +322,7 @@ metabolism_efficiency = 0.025 //surplus organs are so awful that they explode when removed, unless failing -/obj/item/organ/internal/stomach/cybernetic/surplus/Initialize(mapload) +/obj/item/organ/stomach/cybernetic/surplus/Initialize(mapload) . = ..() AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE) diff --git a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm index ff2c0697f79..0a409d3b531 100644 --- a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm +++ b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/stomach/ethereal +/obj/item/organ/stomach/ethereal name = "biological battery" icon_state = "stomach-p" //Welp. At least it's more unique in functionaliy. desc = "A crystal-like organ that stores the electric charge of ethereals." @@ -8,25 +8,25 @@ ///used to keep ethereals from spam draining power sources var/drain_time = 0 -/obj/item/organ/internal/stomach/ethereal/Initialize(mapload) +/obj/item/organ/stomach/ethereal/Initialize(mapload) . = ..() cell = new /obj/item/stock_parts/power_store/cell/ethereal(src) -/obj/item/organ/internal/stomach/ethereal/Destroy() +/obj/item/organ/stomach/ethereal/Destroy() QDEL_NULL(cell) return ..() -/obj/item/organ/internal/stomach/ethereal/on_life(seconds_per_tick, times_fired) +/obj/item/organ/stomach/ethereal/on_life(seconds_per_tick, times_fired) . = ..() adjust_charge(-ETHEREAL_DISCHARGE_RATE * seconds_per_tick) handle_charge(owner, seconds_per_tick, times_fired) -/obj/item/organ/internal/stomach/ethereal/on_mob_insert(mob/living/carbon/stomach_owner) +/obj/item/organ/stomach/ethereal/on_mob_insert(mob/living/carbon/stomach_owner) . = ..() RegisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge)) RegisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_electrocute)) -/obj/item/organ/internal/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner) +/obj/item/organ/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner) . = ..() UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT) UnregisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT) @@ -34,15 +34,15 @@ stomach_owner.clear_alert(ALERT_ETHEREAL_CHARGE) stomach_owner.clear_alert(ALERT_ETHEREAL_OVERCHARGE) -/obj/item/organ/internal/stomach/ethereal/handle_hunger_slowdown(mob/living/carbon/human/human) +/obj/item/organ/stomach/ethereal/handle_hunger_slowdown(mob/living/carbon/human/human) human.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (1.5 * (1 - cell.charge() / 100))) -/obj/item/organ/internal/stomach/ethereal/proc/charge(datum/source, datum/callback/charge_cell, seconds_per_tick) +/obj/item/organ/stomach/ethereal/proc/charge(datum/source, datum/callback/charge_cell, seconds_per_tick) SIGNAL_HANDLER charge_cell.Invoke(cell, seconds_per_tick / 3.5) // Ethereals don't have NT designed charging ports, so they charge slower. -/obj/item/organ/internal/stomach/ethereal/proc/on_electrocute(datum/source, shock_damage, shock_source, siemens_coeff = 1, flags = NONE) +/obj/item/organ/stomach/ethereal/proc/on_electrocute(datum/source, shock_damage, shock_source, siemens_coeff = 1, flags = NONE) SIGNAL_HANDLER if(flags & SHOCK_ILLUSION) return @@ -55,11 +55,11 @@ * - amount: The change of the energy, in joules. * Returns: The amount of energy that actually got changed in joules. **/ -/obj/item/organ/internal/stomach/ethereal/proc/adjust_charge(amount) +/obj/item/organ/stomach/ethereal/proc/adjust_charge(amount) var/amount_changed = clamp(amount, ETHEREAL_CHARGE_NONE - cell.charge(), ETHEREAL_CHARGE_DANGEROUS - cell.charge()) return cell.change(amount_changed) -/obj/item/organ/internal/stomach/ethereal/proc/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired) +/obj/item/organ/stomach/ethereal/proc/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired) switch(cell.charge()) if(-INFINITY to ETHEREAL_CHARGE_NONE) carbon.add_mood_event("charge", /datum/mood_event/decharged) @@ -97,7 +97,7 @@ carbon.clear_alert(ALERT_ETHEREAL_CHARGE) carbon.clear_alert(ALERT_ETHEREAL_OVERCHARGE) -/obj/item/organ/internal/stomach/ethereal/proc/discharge_process(mob/living/carbon/carbon) +/obj/item/organ/stomach/ethereal/proc/discharge_process(mob/living/carbon/carbon) to_chat(carbon, span_warning("You begin to lose control over your charge!")) carbon.visible_message(span_danger("[carbon] begins to spark violently!")) diff --git a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm index a1f5ce6c70e..c4fa888f6cb 100644 --- a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm +++ b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/stomach/golem +/obj/item/organ/stomach/golem name = "silicate grinder" icon_state = "stomach-p" desc = "A rocklike organ which grinds and processes nutrition from minerals." @@ -11,18 +11,18 @@ /// How slow are you if you have absolutely nothing in the tank? var/max_hunger_slowdown = 4 -/obj/item/organ/internal/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() RegisterSignal(owner, COMSIG_CARBON_ATTEMPT_EAT, PROC_REF(try_eating)) -/obj/item/organ/internal/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_CARBON_ATTEMPT_EAT) organ_owner.remove_movespeed_modifier(/datum/movespeed_modifier/golem_hunger) organ_owner.remove_status_effect(/datum/status_effect/golem_statued) /// Reject food, rocks only -/obj/item/organ/internal/stomach/golem/proc/try_eating(mob/living/carbon/source, atom/eating) +/obj/item/organ/stomach/golem/proc/try_eating(mob/living/carbon/source, atom/eating) SIGNAL_HANDLER if(istype(eating, /obj/item/food/golem_food)) return @@ -30,7 +30,7 @@ return COMSIG_CARBON_BLOCK_EAT /// Golem stomach cannot process nutriment except from minerals -/obj/item/organ/internal/stomach/golem/on_life(delta_time, times_fired) +/obj/item/organ/stomach/golem/on_life(delta_time, times_fired) for(var/datum/reagent/consumable/food in reagents.reagent_list) if (istype(food, /datum/reagent/consumable/nutriment/mineral)) continue @@ -38,7 +38,7 @@ return ..() /// Slow down based on how full you are -/obj/item/organ/internal/stomach/golem/handle_hunger(mob/living/carbon/human/human, delta_time, times_fired) +/obj/item/organ/stomach/golem/handle_hunger(mob/living/carbon/human/human, delta_time, times_fired) // the effects are all negative, so just don't run them if you have the trait . = ..() if(HAS_TRAIT(human, TRAIT_NOHUNGER)) diff --git a/code/modules/surgery/organs/internal/tongue/_tongue.dm b/code/modules/surgery/organs/internal/tongue/_tongue.dm index 86b29de817e..cf547b027f4 100644 --- a/code/modules/surgery/organs/internal/tongue/_tongue.dm +++ b/code/modules/surgery/organs/internal/tongue/_tongue.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/tongue +/obj/item/organ/tongue name = "tongue" desc = "A fleshy muscle mostly used for lying." icon_state = "tongue" @@ -14,7 +14,7 @@ * Relates to a mob's ability to speak a language - a mob must be able to speak the language * and have a tongue able to speak the language (or omnitongue) in order to actually speak said language * - * To modify this list for subtypes, see [/obj/item/organ/internal/tongue/proc/get_possible_languages]. Do not modify directly. + * To modify this list for subtypes, see [/obj/item/organ/tongue/proc/get_possible_languages]. Do not modify directly. */ VAR_PRIVATE/list/languages_possible /** @@ -44,7 +44,7 @@ /// Whether this tongue modifies speech via signal var/modifies_speech = FALSE -/obj/item/organ/internal/tongue/Initialize(mapload) +/obj/item/organ/tongue/Initialize(mapload) . = ..() // Setup the possible languages list // - get_possible_languages gives us a list of language paths @@ -52,7 +52,7 @@ // this results in tongues with identical possible languages sharing a cached list instance languages_possible = string_list(get_possible_languages()) -/obj/item/organ/internal/tongue/examine(mob/user) +/obj/item/organ/tongue/examine(mob/user) . = ..() if(HAS_MIND_TRAIT(user, TRAIT_ENTRAILS_READER)|| isobserver(user)) if(liked_foodtypes) @@ -71,7 +71,7 @@ * While a user may be theoretically capable of speaking a language, they cannot physically speak it * UNLESS they have a tongue with that language possible, UNLESS UNLESS they have omnitongue enabled. */ -/obj/item/organ/internal/tongue/proc/get_possible_languages() +/obj/item/organ/tongue/proc/get_possible_languages() RETURN_TYPE(/list) // This is the default list of languages most humans should be capable of speaking return list( @@ -91,13 +91,13 @@ /datum/language/nekomimetic, ) -/obj/item/organ/internal/tongue/proc/handle_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/proc/handle_speech(datum/source, list/speech_args) SIGNAL_HANDLER if(should_modify_speech(source, speech_args)) modify_speech(source, speech_args) -/obj/item/organ/internal/tongue/proc/should_modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/proc/should_modify_speech(datum/source, list/speech_args) if(speech_args[SPEECH_LANGUAGE] in languages_native) // Speaking a native language? return FALSE // Don't modify speech if(HAS_TRAIT(source, TRAIT_SIGN_LANG)) // No modifiers for signers - I hate this but I simply cannot get these to combine into one statement @@ -108,7 +108,7 @@ // FLUFFY FRONTIER EDIT END. return TRUE -/obj/item/organ/internal/tongue/proc/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/proc/modify_speech(datum/source, list/speech_args) return speech_args[SPEECH_MESSAGE] /** @@ -118,7 +118,7 @@ * Can be overriden by subtypes for more complex behavior. * Does not get called if the owner has ageusia. **/ -/obj/item/organ/internal/tongue/proc/get_food_taste_reaction(obj/item/food, foodtypes = NONE) +/obj/item/organ/tongue/proc/get_food_taste_reaction(obj/item/food, foodtypes = NONE) var/food_taste_reaction if(foodtypes & toxic_foodtypes) food_taste_reaction = FOOD_TOXIC @@ -128,7 +128,7 @@ food_taste_reaction = FOOD_LIKED return food_taste_reaction -/obj/item/organ/internal/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(modifies_speech) @@ -144,7 +144,7 @@ REMOVE_TRAIT(receiver, TRAIT_AGEUSIA, NO_TONGUE_TRAIT) apply_tongue_effects() -/obj/item/organ/internal/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() temp_say_mod = "" @@ -156,14 +156,14 @@ ADD_TRAIT(organ_owner, TRAIT_AGEUSIA, NO_TONGUE_TRAIT) organ_owner.voice_filter = initial(organ_owner.voice_filter) -/obj/item/organ/internal/tongue/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag) +/obj/item/organ/tongue/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag) . = ..() if(!owner) return FALSE apply_tongue_effects() /// Applies effects to our owner based on how damaged our tongue is -/obj/item/organ/internal/tongue/proc/apply_tongue_effects() +/obj/item/organ/tongue/proc/apply_tongue_effects() if(sense_of_taste) //tongues can't taste food when they are failing if(organ_flags & ORGAN_FAILING) @@ -178,13 +178,13 @@ else ADD_TRAIT(owner, TRAIT_SPEAKS_CLEARLY, SPEAKING_FROM_TONGUE) -/obj/item/organ/internal/tongue/could_speak_language(datum/language/language_path) +/obj/item/organ/tongue/could_speak_language(datum/language/language_path) return (language_path in languages_possible) -/obj/item/organ/internal/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob) +/obj/item/organ/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutanttongue -/obj/item/organ/internal/tongue/lizard +/obj/item/organ/tongue/lizard name = "forked tongue" desc = "A thin and long muscle typically found in reptilian races, apparently moonlights as a nose." icon_state = "tonguelizard" @@ -219,11 +219,11 @@ ) // NOVA EDIT ADDITION END -/obj/item/organ/internal/tongue/lizard/New(class, timer, datum/mutation/human/copymut) +/obj/item/organ/tongue/lizard/New(class, timer, datum/mutation/human/copymut) . = ..() AddComponent(/datum/component/speechmod, replacements = CONFIG_GET(flag/russian_text_formation) ? russian_speech_replacements : speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) // NOVA EDIT CHANGE - ORIGINAL: AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) -/obj/item/organ/internal/tongue/lizard/silver +/obj/item/organ/tongue/lizard/silver name = "silver tongue" desc = "A genetic branch of the high society Silver Scales that gives them their silverizing properties. To them, it is everything, and society traitors have their tongue forcibly revoked. Oddly enough, it itself is just blue." icon_state = "silvertongue" @@ -243,7 +243,7 @@ /datum/action/cooldown/turn_to_statue/New(Target) . = ..() - if(!istype(Target, /obj/item/organ/internal/tongue/lizard/silver)) + if(!istype(Target, /obj/item/organ/tongue/lizard/silver)) stack_trace("Non-silverscale tongue initialized a turn to statue action.") qdel(src) return @@ -261,7 +261,7 @@ if(!isliving(owner)) return FALSE - var/obj/item/organ/internal/tongue/lizard/silver/tongue_target = target + var/obj/item/organ/tongue/lizard/silver/tongue_target = target if(tongue_target.owner != owner) return FALSE @@ -372,7 +372,7 @@ bomb = 50 fire = 100 -/obj/item/organ/internal/tongue/abductor +/obj/item/organ/tongue/abductor name = "superlingual matrix" desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something." icon_state = "tongueayylmao" @@ -381,11 +381,11 @@ modifies_speech = TRUE var/mothership -/obj/item/organ/internal/tongue/abductor/attack_self(mob/living/carbon/human/tongue_holder) +/obj/item/organ/tongue/abductor/attack_self(mob/living/carbon/human/tongue_holder) if(!istype(tongue_holder)) return - var/obj/item/organ/internal/tongue/abductor/tongue = tongue_holder.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/abductor/tongue = tongue_holder.get_organ_slot(ORGAN_SLOT_TONGUE) if(!istype(tongue)) return @@ -397,7 +397,7 @@ to_chat(tongue_holder, span_notice("You attune [src] to your own channel.")) mothership = tongue.mothership -/obj/item/organ/internal/tongue/abductor/examine(mob/examining_mob) +/obj/item/organ/tongue/abductor/examine(mob/examining_mob) . = ..() if(HAS_MIND_TRAIT(examining_mob, TRAIT_ABDUCTOR_TRAINING) || isobserver(examining_mob)) . += span_notice("It can be attuned to a different channel by using it inhand.") @@ -406,14 +406,14 @@ else . += span_notice("It is attuned to [mothership].") -/obj/item/organ/internal/tongue/abductor/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/abductor/modify_speech(datum/source, list/speech_args) //Hacks var/message = speech_args[SPEECH_MESSAGE] var/mob/living/carbon/human/user = source var/rendered = span_abductor("[user.real_name]: [message]") user.log_talk(message, LOG_SAY, tag="abductor") for(var/mob/living/carbon/human/living_mob in GLOB.alive_mob_list) - var/obj/item/organ/internal/tongue/abductor/tongue = living_mob.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/abductor/tongue = living_mob.get_organ_slot(ORGAN_SLOT_TONGUE) if(!istype(tongue)) continue if(mothership == tongue.mothership) @@ -425,7 +425,7 @@ speech_args[SPEECH_MESSAGE] = "" -/obj/item/organ/internal/tongue/zombie +/obj/item/organ/tongue/zombie name = "rotting tongue" desc = "Between the decay and the fact that it's just lying there you doubt a tongue has ever seemed less sexy." icon_state = "tonguezombie" @@ -438,14 +438,14 @@ // List of english words that translate to zombie phrases GLOBAL_LIST_INIT(english_to_zombie, list()) -/obj/item/organ/internal/tongue/zombie/proc/add_word_to_translations(english_word, zombie_word) +/obj/item/organ/tongue/zombie/proc/add_word_to_translations(english_word, zombie_word) GLOB.english_to_zombie[english_word] = zombie_word // zombies don't care about grammar (any tense or form is all translated to the same word) GLOB.english_to_zombie[english_word + plural_s(english_word)] = zombie_word GLOB.english_to_zombie[english_word + "ing"] = zombie_word GLOB.english_to_zombie[english_word + "ed"] = zombie_word -/obj/item/organ/internal/tongue/zombie/proc/load_zombie_translations() +/obj/item/organ/tongue/zombie/proc/load_zombie_translations() var/list/zombie_translation = strings("zombie_replacement.json", "zombie") for(var/zombie_word in zombie_translation) // since zombie words are a reverse list, we gotta do this backwards @@ -454,7 +454,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) add_word_to_translations(english_word, zombie_word) GLOB.english_to_zombie = sort_list(GLOB.english_to_zombie) // Alphabetizes the list (for debugging) -/obj/item/organ/internal/tongue/zombie/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/zombie/modify_speech(datum/source, list/speech_args) var/message = speech_args[SPEECH_MESSAGE] if(message[1] != "*") // setup the global list for translation if it hasn't already been done @@ -492,7 +492,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) message = capitalize(message) speech_args[SPEECH_MESSAGE] = message -/obj/item/organ/internal/tongue/alien +/obj/item/organ/tongue/alien name = "alien tongue" desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"." icon_state = "tonguexeno" @@ -501,7 +501,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) modifies_speech = TRUE // not really, they just hiss voice_filter = @{"[0:a] asplit [out0][out2]; [out0] asetrate=%SAMPLE_RATE%*0.8,aresample=%SAMPLE_RATE%,atempo=1/0.8,aformat=channel_layouts=mono [p0]; [out2] asetrate=%SAMPLE_RATE%*1.2,aresample=%SAMPLE_RATE%,atempo=1/1.2,aformat=channel_layouts=mono[p2]; [p0][0][p2] amix=inputs=3"} // Aliens can only speak alien and a few other languages. -/obj/item/organ/internal/tongue/alien/get_possible_languages() +/obj/item/organ/tongue/alien/get_possible_languages() return list( /datum/language/xenocommon, /datum/language/common, @@ -510,14 +510,14 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) /datum/language/monkey, ) -/obj/item/organ/internal/tongue/alien/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/alien/modify_speech(datum/source, list/speech_args) var/datum/saymode/xeno/hivemind = speech_args[SPEECH_SAYMODE] if(hivemind) return playsound(owner, SFX_HISS, 25, TRUE, TRUE) -/obj/item/organ/internal/tongue/bone +/obj/item/organ/tongue/bone name = "bone \"tongue\"" desc = "Apparently skeletons alter the sounds they produce through oscillation of their teeth, hence their characteristic rattling." icon_state = "tonguebone" @@ -532,15 +532,15 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) var/phomeme_type = "sans" var/list/phomeme_types = list("sans", "papyrus") -/obj/item/organ/internal/tongue/bone/Initialize(mapload) +/obj/item/organ/tongue/bone/Initialize(mapload) . = ..() phomeme_type = pick(phomeme_types) // Bone tongues can speak all default + calcic -/obj/item/organ/internal/tongue/bone/get_possible_languages() +/obj/item/organ/tongue/bone/get_possible_languages() return ..() + /datum/language/calcic -/obj/item/organ/internal/tongue/bone/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/bone/modify_speech(datum/source, list/speech_args) if (chattering) chatter(speech_args[SPEECH_MESSAGE], phomeme_type, source) switch(phomeme_type) @@ -549,7 +549,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) if("papyrus") speech_args[SPEECH_SPANS] |= SPAN_PAPYRUS -/obj/item/organ/internal/tongue/bone/plasmaman +/obj/item/organ/tongue/bone/plasmaman name = "plasma bone \"tongue\"" desc = "Like animated skeletons, Plasmamen vibrate their teeth in order to produce speech." icon_state = "tongueplasma" @@ -557,7 +557,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) liked_foodtypes = VEGETABLES disliked_foodtypes = FRUIT | CLOTH -/obj/item/organ/internal/tongue/robot +/obj/item/organ/tongue/robot name = "robotic voicebox" desc = "A voice synthesizer that can interface with organic lifeforms." failing_desc = "seems to be broken." @@ -571,13 +571,13 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED) voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" -/obj/item/organ/internal/tongue/robot/could_speak_language(datum/language/language_path) +/obj/item/organ/tongue/robot/could_speak_language(datum/language/language_path) return TRUE // THE MAGIC OF ELECTRONICS -/obj/item/organ/internal/tongue/robot/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/robot/modify_speech(datum/source, list/speech_args) speech_args[SPEECH_SPANS] |= SPAN_ROBOT -/obj/item/organ/internal/tongue/snail +/obj/item/organ/tongue/snail name = "radula" desc = "A minutely toothed, chitious ribbon, which as a side effect, makes all snails talk IINNCCRREEDDIIBBLLYY SSLLOOWWLLYY." color = "#96DB00" // TODO proper sprite, rather than recoloured pink tongue @@ -587,7 +587,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) disliked_foodtypes = DAIRY | ORANGES | SUGAR //NOVA EDIT: Roundstart Snails - As it turns out, you can't give a snail processed sugar or citrus. /* NOVA EDIT START - Roundstart Snails: Less annoying speech. -/obj/item/organ/internal/tongue/snail/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/snail/modify_speech(datum/source, list/speech_args) var/new_message var/message = speech_args[SPEECH_MESSAGE] for(var/i in 1 to length(message)) @@ -598,7 +598,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) speech_args[SPEECH_MESSAGE] = new_message */ // NOVA EDIT END -/obj/item/organ/internal/tongue/ethereal +/obj/item/organ/tongue/ethereal name = "electric discharger" desc = "A sophisticated ethereal organ, capable of synthesising speech via electrical discharge." icon_state = "electrotongue" @@ -612,10 +612,10 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) voice_filter = @{"[0:a] asplit [out0][out2]; [out0] asetrate=%SAMPLE_RATE%*0.99,aresample=%SAMPLE_RATE%,volume=0.3 [p0]; [p0][out2] amix=inputs=2"} // Ethereal tongues can speak all default + voltaic -/obj/item/organ/internal/tongue/ethereal/get_possible_languages() +/obj/item/organ/tongue/ethereal/get_possible_languages() return ..() + /datum/language/voltaic -/obj/item/organ/internal/tongue/cat +/obj/item/organ/tongue/cat name = "felinid tongue" desc = "A fleshy muscle mostly used for meowing." say_mod = "meows" @@ -623,7 +623,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) disliked_foodtypes = GROSS | CLOTH | RAW organ_traits = list(TRAIT_WOUND_LICKER, TRAIT_FISH_EATER) -/obj/item/organ/internal/tongue/jelly +/obj/item/organ/tongue/jelly name = "jelly tongue" desc = "Ah... That's not the sound I expected it to make. Sounds like a Space Autumn Bird." say_mod = "chirps" @@ -631,20 +631,20 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) disliked_foodtypes = GROSS toxic_foodtypes = NONE -/obj/item/organ/internal/tongue/jelly/get_food_taste_reaction(obj/item/food, foodtypes = NONE) +/obj/item/organ/tongue/jelly/get_food_taste_reaction(obj/item/food, foodtypes = NONE) // a silver slime created this? what a delicacy! if(HAS_TRAIT(food, TRAIT_FOOD_SILVER)) return FOOD_LIKED return ..() -/obj/item/organ/internal/tongue/monkey +/obj/item/organ/tongue/monkey name = "primitive tongue" desc = "For aggressively chimpering. And consuming bananas." say_mod = "chimpers" liked_foodtypes = MEAT | FRUIT | BUGS disliked_foodtypes = CLOTH -/obj/item/organ/internal/tongue/moth +/obj/item/organ/tongue/moth name = "moth tongue" desc = "Moths don't have tongues. Someone get god on the phone, tell them I'm not happy." say_mod = "flutters" @@ -652,26 +652,26 @@ GLOBAL_LIST_INIT(english_to_zombie, list()) disliked_foodtypes = FRUIT | GROSS | BUGS | GORE toxic_foodtypes = MEAT | RAW | SEAFOOD -/obj/item/organ/internal/tongue/zombie +/obj/item/organ/tongue/zombie name = "rotting tongue" desc = "Makes you speak like you're at the dentist and you just absolutely refuse to spit because you forgot to mention you were allergic to space shellfish." say_mod = "moans" -/obj/item/organ/internal/tongue/mush +/obj/item/organ/tongue/mush name = "mush-tongue-room" desc = "You poof with this. Got it?" icon = 'icons/obj/service/hydroponics/seeds.dmi' icon_state = "mycelium-angel" say_mod = "poofs" -/obj/item/organ/internal/tongue/pod +/obj/item/organ/tongue/pod name = "pod tongue" desc = "A plant-like organ used for speaking and eating." say_mod = "whistles" liked_foodtypes = VEGETABLES | FRUIT | GRAIN disliked_foodtypes = GORE | MEAT | DAIRY | SEAFOOD | BUGS -/obj/item/organ/internal/tongue/golem +/obj/item/organ/tongue/golem name = "golem tongue" desc = "This silicate plate doesn't seem particularly mobile, but golems use it to form sounds." color = COLOR_WEBSAFE_DARK_GRAY diff --git a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm index f6fed86a90d..8dfee796937 100644 --- a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm +++ b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/vocal_cords //organs that are activated through speech with the :x/MODE_KEY_VOCALCORDS channel +/obj/item/organ/vocal_cords //organs that are activated through speech with the :x/MODE_KEY_VOCALCORDS channel name = "vocal cords" icon_state = "appendix" zone = BODY_ZONE_PRECISE_MOUTH @@ -8,17 +8,17 @@ healing_factor = 0 var/list/spans = null -/obj/item/organ/internal/vocal_cords/proc/can_speak_with() //if there is any limitation to speaking with these cords +/obj/item/organ/vocal_cords/proc/can_speak_with() //if there is any limitation to speaking with these cords return TRUE -/obj/item/organ/internal/vocal_cords/proc/speak_with(message) //do what the organ does +/obj/item/organ/vocal_cords/proc/speak_with(message) //do what the organ does return -/obj/item/organ/internal/vocal_cords/proc/handle_speech(message) //actually say the message +/obj/item/organ/vocal_cords/proc/handle_speech(message) //actually say the message owner.say(message, spans = spans, sanitize = FALSE) //Colossus drop, forces the listeners to obey certain commands -/obj/item/organ/internal/vocal_cords/colossus +/obj/item/organ/vocal_cords/colossus name = "divine vocal cords" desc = "They carry the voice of an ancient god." icon_state = "voice_of_god" @@ -30,7 +30,7 @@ /datum/action/item_action/organ_action/colossus name = "Voice of God" - var/obj/item/organ/internal/vocal_cords/colossus/cords = null + var/obj/item/organ/vocal_cords/colossus/cords = null /datum/action/item_action/organ_action/colossus/New() ..() @@ -67,7 +67,7 @@ return owner.say(".x[command]") -/obj/item/organ/internal/vocal_cords/colossus/can_speak_with() +/obj/item/organ/vocal_cords/colossus/can_speak_with() if(!owner) return FALSE @@ -77,22 +77,22 @@ return owner.can_speak() -/obj/item/organ/internal/vocal_cords/colossus/handle_speech(message) +/obj/item/organ/vocal_cords/colossus/handle_speech(message) playsound(get_turf(owner), 'sound/effects/magic/clockwork/invoke_general.ogg', 300, TRUE, 5) return //voice of god speaks for us -/obj/item/organ/internal/vocal_cords/colossus/speak_with(message) +/obj/item/organ/vocal_cords/colossus/speak_with(message) var/cooldown = voice_of_god(uppertext(message), owner, spans, base_multiplier) next_command = world.time + (cooldown * cooldown_mod) -/obj/item/organ/internal/adamantine_resonator +/obj/item/organ/adamantine_resonator name = "adamantine resonator" desc = "Fragments of adamantine exist in all golems, stemming from their origins as purely magical constructs. These are used to \"hear\" messages from their leaders." zone = BODY_ZONE_HEAD slot = ORGAN_SLOT_ADAMANTINE_RESONATOR icon_state = "adamantine_resonator" -/obj/item/organ/internal/vocal_cords/adamantine +/obj/item/organ/vocal_cords/adamantine name = "adamantine vocal cords" desc = "When adamantine resonates, it causes all nearby pieces of adamantine to resonate as well. Golems containing these formations use this to broadcast messages to nearby golems." actions_types = list(/datum/action/item_action/organ_action/use/adamantine_vocal_cords) @@ -108,7 +108,7 @@ return owner.say(".x[message]") -/obj/item/organ/internal/vocal_cords/adamantine/handle_speech(message) +/obj/item/organ/vocal_cords/adamantine/handle_speech(message) var/msg = span_resonate("[span_name("[owner.real_name]")] resonates, \"[message]\"") for(var/player in GLOB.player_list) if(iscarbon(player)) diff --git a/code/modules/surgery/revival.dm b/code/modules/surgery/revival.dm index 3a8ddcf1421..575f94d7bfb 100644 --- a/code/modules/surgery/revival.dm +++ b/code/modules/surgery/revival.dm @@ -153,7 +153,7 @@ surgery_flags = parent_type::surgery_flags | SURGERY_REQUIRE_LIMB /datum/surgery/revival/carbon/is_valid_target(mob/living/carbon/patient) - var/obj/item/organ/internal/brain/target_brain = patient.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = patient.get_organ_slot(ORGAN_SLOT_BRAIN) return !isnull(target_brain) /datum/surgery_step/revive/carbon diff --git a/code/modules/surgery/sleeper_protocol.dm b/code/modules/surgery/sleeper_protocol.dm index 23b02aeda80..fd697240eed 100644 --- a/code/modules/surgery/sleeper_protocol.dm +++ b/code/modules/surgery/sleeper_protocol.dm @@ -37,7 +37,7 @@ . = ..() if(!.) return FALSE - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!target_brain) return FALSE return TRUE diff --git a/code/modules/surgery/stomachpump.dm b/code/modules/surgery/stomachpump.dm index 4880f932964..47f25074c3a 100644 --- a/code/modules/surgery/stomachpump.dm +++ b/code/modules/surgery/stomachpump.dm @@ -23,7 +23,7 @@ ) /datum/surgery/stomach_pump/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) if(HAS_TRAIT(target, TRAIT_HUSK)) return FALSE if(!target_stomach) diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index e6d75cd8d89..2f14388fd49 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -535,7 +535,7 @@ return var/candidate_name - var/obj/item/organ/external/tail_snip_candidate + var/obj/item/organ/tail_snip_candidate var/obj/item/bodypart/limb_snip_candidate if(user.zone_selected == BODY_ZONE_PRECISE_GROIN) diff --git a/code/modules/unit_tests/blindness.dm b/code/modules/unit_tests/blindness.dm index 88f5eece575..1d1093b7581 100644 --- a/code/modules/unit_tests/blindness.dm +++ b/code/modules/unit_tests/blindness.dm @@ -105,7 +105,7 @@ /datum/unit_test/eye_damage/Run() var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) - var/obj/item/organ/internal/eyes/eyes = dummy.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = dummy.get_organ_slot(ORGAN_SLOT_EYES) TEST_ASSERT_NOTNULL(eyes, "Eye damage unit test spawned a dummy without eyes!") // Test blindness due to eye damage diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm index 8ed2b999e7f..e21b3fec4c0 100644 --- a/code/modules/unit_tests/fish_unit_tests.dm +++ b/code/modules/unit_tests/fish_unit_tests.dm @@ -455,7 +455,7 @@ TEST_ASSERT_EQUAL(fish.status, FISH_DEAD, "The fish is not dead, despite having sustained enough damage that it should. health: [fish.health]") - var/obj/item/organ/internal/stomach/belly = gourmet.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = gourmet.get_organ_slot(ORGAN_SLOT_STOMACH) belly.reagents.clear_reagents() fish.set_status(FISH_ALIVE) diff --git a/code/modules/unit_tests/full_heal.dm b/code/modules/unit_tests/full_heal.dm index f5d247d7a10..7449d2aeb4c 100644 --- a/code/modules/unit_tests/full_heal.dm +++ b/code/modules/unit_tests/full_heal.dm @@ -4,12 +4,12 @@ /datum/unit_test/full_heal_heals_organs/Run() var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) - for(var/obj/item/organ/internal/organ in dummy.organs) + for(var/obj/item/organ/organ in dummy.organs) organ.apply_organ_damage(50) dummy.fully_heal(HEAL_ORGANS) - for(var/obj/item/organ/internal/organ in dummy.organs) + for(var/obj/item/organ/organ in dummy.organs) if(organ.damage <= 0) continue TEST_FAIL("Organ [organ] did not get healed by fullyheal flag HEAL_ORGANS.") @@ -22,7 +22,7 @@ var/list/we_started_with = list() - for(var/obj/item/organ/internal/organ in dummy.organs) + for(var/obj/item/organ/organ in dummy.organs) if(organ.organ_flags & ORGAN_VITAL) // leave this for now continue we_started_with += organ.type diff --git a/code/modules/unit_tests/ling_decap.dm b/code/modules/unit_tests/ling_decap.dm index 4c8c7e4e031..d6c8d244a8d 100644 --- a/code/modules/unit_tests/ling_decap.dm +++ b/code/modules/unit_tests/ling_decap.dm @@ -9,12 +9,12 @@ var/obj/item/bodypart/head/noggin = ling.get_bodypart(BODY_ZONE_HEAD) noggin.dismember() TEST_ASSERT_NULL(ling.get_bodypart(BODY_ZONE_HEAD), "Changeling failed to be decapitated.") - var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin + var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in noggin TEST_ASSERT_NULL(brain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation, but it should have remained in their body.") - var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin + var/obj/item/organ/brain/oldbrain = locate(/obj/item/organ/brain) in noggin noggin.drop_organs() - TEST_ASSERT_NULL(locate(/obj/item/organ/internal/brain) in noggin, "Changeling's head failed to drop its brain.") + TEST_ASSERT_NULL(locate(/obj/item/organ/brain) in noggin, "Changeling's head failed to drop its brain.") TEST_ASSERT_NULL(oldbrain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation and organ dropping, but it should have remained in their body.") TEST_ASSERT_EQUAL(ling.stat, CONSCIOUS, "Changeling was not conscious after losing their head.") @@ -34,10 +34,10 @@ var/obj/item/bodypart/head/noggin = normal_guy.get_bodypart(BODY_ZONE_HEAD) noggin.dismember() - var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin + var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in noggin TEST_ASSERT_EQUAL(brain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after decapitation.") - var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin + var/obj/item/organ/brain/oldbrain = locate(/obj/item/organ/brain) in noggin noggin.drop_organs() TEST_ASSERT_EQUAL(oldbrain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after being removed from their head.") diff --git a/code/modules/unit_tests/liver.dm b/code/modules/unit_tests/liver.dm index 80c3ecf35b9..f2f5dcfd00f 100644 --- a/code/modules/unit_tests/liver.dm +++ b/code/modules/unit_tests/liver.dm @@ -12,7 +12,7 @@ var/datum/reagent/toxin/bonehurtingjuice/bonehurting = /datum/reagent/toxin/bonehurtingjuice var/datum/reagent/consumable/milk/calcium = /datum/reagent/consumable/milk - TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/internal/liver/bone)), "Skeleton does not have a bone liver") + TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/liver/bone)), "Skeleton does not have a bone liver") TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/toxin/bonehurtingjuice), FALSE, "Skeleton somehow has bone hurting juice before drinking") TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/consumable/milk), FALSE, "Skeleton somehow has milk before drinking") @@ -67,7 +67,7 @@ // Testing plasma/hot ice healing on wounds - TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/internal/liver/bone/plasmaman)), "Plasmaman does not have a plasmaman bone liver") + TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/liver/bone/plasmaman)), "Plasmaman does not have a plasmaman bone liver") TEST_ASSERT_EQUAL(mrbones.has_reagent(plasma), FALSE, "Plasmaman somehow has plasma before drinking") TEST_ASSERT_EQUAL(mrbones.has_reagent(hot_ice), FALSE, "Plasmaman somehow has hot ice before drinking") diff --git a/code/modules/unit_tests/lungs.dm b/code/modules/unit_tests/lungs.dm index 4f9b7ceb442..c8338b6dec8 100644 --- a/code/modules/unit_tests/lungs.dm +++ b/code/modules/unit_tests/lungs.dm @@ -13,27 +13,27 @@ // 2500 Litres of O2/N2 gas mix, ideal for life. var/datum/gas_mixture/test_mix = create_standard_mix() var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent) - var/obj/item/organ/internal/lungs/test_lungs = allocate(/obj/item/organ/internal/lungs) + var/obj/item/organ/lungs/test_lungs = allocate(/obj/item/organ/lungs) // Test one breath of O2/N2 mix. lungs_test_check_breath("standard gas mixture", lab_rat, test_lungs, test_mix) // Suffocation with an empty gas mix. var/datum/gas_mixture/empty_test_mix = allocate(/datum/gas_mixture) lab_rat = allocate(/mob/living/carbon/human/consistent) - test_lungs = allocate(/obj/item/organ/internal/lungs) + test_lungs = allocate(/obj/item/organ/lungs) // Test one breath of nothing. Suffocate due to the breath being empty. lungs_test_check_breath("empty gas mixture", lab_rat, test_lungs, empty_test_mix, expect_failure = TRUE) // Suffocation with null. This does indeed happen normally. lab_rat = allocate(/mob/living/carbon/human/consistent) - test_lungs = allocate(/obj/item/organ/internal/lungs) + test_lungs = allocate(/obj/item/organ/lungs) // Test one breath of nothing. Suffocate due to the breath being null. lungs_test_check_breath("null", lab_rat, test_lungs, null, expect_failure = TRUE) // Suffocation with Nitrogen. var/datum/gas_mixture/nitro_test_mix = create_nitrogen_mix() lab_rat = allocate(/mob/living/carbon/human/consistent) - test_lungs = allocate(/obj/item/organ/internal/lungs) + test_lungs = allocate(/obj/item/organ/lungs) // Test one breath of Nitrogen. Suffocate due to the breath being 100% N2. lungs_test_check_breath("pure Nitrogen", lab_rat, test_lungs, nitro_test_mix, expect_failure = TRUE) @@ -44,14 +44,14 @@ // 2500 Litres of pure Plasma. var/datum/gas_mixture/plasma_test_mix = create_plasma_mix() var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent) - var/obj/item/organ/internal/lungs/plasmaman/test_lungs = allocate(/obj/item/organ/internal/lungs/plasmaman) + var/obj/item/organ/lungs/plasmaman/test_lungs = allocate(/obj/item/organ/lungs/plasmaman) // Test one breath of Plasma on Plasmaman lungs. lungs_test_check_breath("pure Plasma", lab_rat, test_lungs, plasma_test_mix) // Tests suffocation with Nitrogen. var/datum/gas_mixture/nitro_test_mix = create_nitrogen_mix() lab_rat = allocate(/mob/living/carbon/human/consistent) - test_lungs = allocate(/obj/item/organ/internal/lungs/plasmaman) + test_lungs = allocate(/obj/item/organ/lungs/plasmaman) // Test one breath of Nitrogen on Plasmaman lungs. lungs_test_check_breath("pure Nitrogen", lab_rat, test_lungs, nitro_test_mix, expect_failure = TRUE) @@ -62,15 +62,15 @@ /datum/unit_test/lungs/lungs_sanity_ashwalker/Run() // Gas mix resembling one cell of lavaland's atmosphere. var/datum/gas_mixture/lavaland_test_mix = create_lavaland_mix() - var/obj/item/organ/internal/lungs/lavaland/test_lungs = allocate(/obj/item/organ/internal/lungs/lavaland) + var/obj/item/organ/lungs/lavaland/test_lungs = allocate(/obj/item/organ/lungs/lavaland) var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent) // Test one breath of Lavaland gas mix on Ashwalker lungs. lungs_test_check_breath("Lavaland air mixture", lab_rat, test_lungs, lavaland_test_mix) -/// Comprehensive unit test for [/obj/item/organ/internal/lungs/proc/check_breath()] +/// Comprehensive unit test for [/obj/item/organ/lungs/proc/check_breath()] /// If "expect_failure" is set to TRUE, the test ensures the given Human suffocated. /// A "test_name" string is required to contextualize test logs. Describe the gas you're testing. -/datum/unit_test/lungs/proc/lungs_test_check_breath(test_name, mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, datum/gas_mixture/test_mix, expect_failure = FALSE) +/datum/unit_test/lungs/proc/lungs_test_check_breath(test_name, mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, datum/gas_mixture/test_mix, expect_failure = FALSE) // Setup a small volume of gas which represents one "breath" from test_mix. var/datum/gas_mixture/test_breath @@ -155,14 +155,14 @@ TEST_ASSERT(molar_cmp_equals(GET_MOLES(test_breath, /datum/gas/carbon_dioxide), expected_co2), TEST_CHECK_BREATH_MESSAGE(test_lungs, "should convert Plasma into an equivalent volume of CO2.")) /// Tests minimum gas alerts by comparing gas pressure. -/datum/unit_test/lungs/proc/lungs_test_alert_min(mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, alert_name, min_pressure, pressure) +/datum/unit_test/lungs/proc/lungs_test_alert_min(mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, alert_name, min_pressure, pressure) var/alert_thrown = lab_rat.has_alert(alert_name) var/pressure_safe = (pressure >= min_pressure) || (min_pressure == 0) TEST_ASSERT(!pressure_safe && alert_thrown || pressure_safe, TEST_ALERT_THROW_MESSAGE(test_lungs, alert_name)) TEST_ASSERT(pressure_safe && !alert_thrown || !pressure_safe, TEST_ALERT_INHIBIT_MESSAGE(test_lungs, alert_name)) /// Tests maximum gas alerts by comparing gas pressure. -/datum/unit_test/lungs/proc/lungs_test_alert_max(mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, alert_name, max_pressure, pressure) +/datum/unit_test/lungs/proc/lungs_test_alert_max(mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, alert_name, max_pressure, pressure) var/alert_thrown = lab_rat.has_alert(alert_name) var/pressure_safe = (pressure <= max_pressure) || (max_pressure == 0) TEST_ASSERT(!pressure_safe && alert_thrown || pressure_safe, TEST_ALERT_THROW_MESSAGE(test_lungs, alert_name)) diff --git a/code/modules/unit_tests/metabolizing.dm b/code/modules/unit_tests/metabolizing.dm index 53250def309..53bd3277dc4 100644 --- a/code/modules/unit_tests/metabolizing.dm +++ b/code/modules/unit_tests/metabolizing.dm @@ -80,7 +80,7 @@ pill.attack(pill_user, pill_user) // Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go. - var/obj/item/organ/internal/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH) pill_belly.metabolism_efficiency = 1 pill_user.Life() diff --git a/code/modules/unit_tests/organs.dm b/code/modules/unit_tests/organs.dm index 1da3808ba39..8f05a284058 100644 --- a/code/modules/unit_tests/organs.dm +++ b/code/modules/unit_tests/organs.dm @@ -8,20 +8,20 @@ // List of organ typepaths which cause species change. // Species change swaps out all the organs, making test_organ un-usable after insertion. var/static/list/species_changing_organs = typecacheof(list( - /obj/item/organ/internal/brain/shadow/nightmare, + /obj/item/organ/brain/shadow/nightmare, )) // List of organ typepaths which are not test-able, such as certain class prototypes. var/static/list/test_organ_blacklist = typecacheof(list( - /obj/item/organ/internal, - /obj/item/organ/external, - /obj/item/organ/external/wings, - /obj/item/organ/internal/cyberimp, - /obj/item/organ/internal/cyberimp/brain, - /obj/item/organ/internal/cyberimp/mouth, - /obj/item/organ/internal/cyberimp/arm, - /obj/item/organ/internal/cyberimp/chest, - /obj/item/organ/internal/cyberimp/eyes, - /obj/item/organ/internal/alien, + /obj/item/organ, + /obj/item/organ, + /obj/item/organ/wings, + /obj/item/organ/cyberimp, + /obj/item/organ/cyberimp/brain, + /obj/item/organ/cyberimp/mouth, + /obj/item/organ/cyberimp/arm, + /obj/item/organ/cyberimp/chest, + /obj/item/organ/cyberimp/eyes, + /obj/item/organ/alien, )) /datum/unit_test/organ_sanity/Run() @@ -85,10 +85,10 @@ /datum/unit_test/organ_damage/Run() var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) - for(var/obj/item/organ/internal/organ_to_test in dummy.organs) + for(var/obj/item/organ/organ_to_test in dummy.organs) test_organ(dummy, organ_to_test) -/datum/unit_test/organ_damage/proc/test_organ(mob/living/carbon/human/dummy, obj/item/organ/internal/test_organ) +/datum/unit_test/organ_damage/proc/test_organ(mob/living/carbon/human/dummy, obj/item/organ/test_organ) var/slot_to_use = test_organ.slot // Tests [mob/living/proc/adjustOrganLoss] diff --git a/code/modules/unit_tests/reagent_mob_expose.dm b/code/modules/unit_tests/reagent_mob_expose.dm index 844b863c037..d6ed81292a9 100644 --- a/code/modules/unit_tests/reagent_mob_expose.dm +++ b/code/modules/unit_tests/reagent_mob_expose.dm @@ -58,6 +58,13 @@ syringe.melee_attack_chain(human, human) TEST_ASSERT_EQUAL(human.health, 80, "Human health did not update after injection from syringe") + // INHALE + TEST_ASSERT_NULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is drowsy at the start of testing") + drink.reagents.clear_reagents() + drink.reagents.add_reagent(/datum/reagent/nitrous_oxide, 10) + drink.reagents.trans_to(human, 10, methods = INHALE) + TEST_ASSERT_NOTNULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is not drowsy after exposure to vapors") + /datum/unit_test/reagent_mob_expose/Destroy() SSmobs.ignite() return ..() diff --git a/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm b/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm index 1e2c10c2f29..85c557b1810 100644 --- a/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm +++ b/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm @@ -4,7 +4,7 @@ /// Tests to make sure no punks have broken high luminosity eyes /datum/unit_test/screenshot_high_luminosity_eyes var/mob/living/carbon/human/test_subject - var/obj/item/organ/internal/eyes/robotic/glow/test_eyes + var/obj/item/organ/eyes/robotic/glow/test_eyes /datum/unit_test/screenshot_high_luminosity_eyes/Run() // Create a mob with red and blue eyes. This is to test that high luminosity eyes properly default to the old eye color. @@ -14,7 +14,7 @@ test_subject.eye_color_right = COLOR_BLUE // Create our eyes, and insert them into the mob - test_eyes = allocate(/obj/item/organ/internal/eyes/robotic/glow) + test_eyes = allocate(/obj/item/organ/eyes/robotic/glow) test_eyes.Insert(test_subject) // This should be 4, but just in case it ever changes in the future diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png similarity index 100% rename from code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png rename to code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png diff --git a/code/modules/unit_tests/species_change_organs.dm b/code/modules/unit_tests/species_change_organs.dm index 41d55047f03..96ade09bf62 100644 --- a/code/modules/unit_tests/species_change_organs.dm +++ b/code/modules/unit_tests/species_change_organs.dm @@ -11,10 +11,10 @@ // Give a trauma dummy.gain_trauma(/datum/brain_trauma/severe/blindness) // Give a cyber heart - var/obj/item/organ/internal/heart/cybernetic/cyber_heart = allocate(/obj/item/organ/internal/heart/cybernetic) + var/obj/item/organ/heart/cybernetic/cyber_heart = allocate(/obj/item/organ/heart/cybernetic) cyber_heart.Insert(dummy, special = TRUE, movement_flags = DELETE_IF_REPLACED) // Give one of their organs a bit of damage - var/obj/item/organ/internal/appendix/existing_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX) + var/obj/item/organ/appendix/existing_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX) existing_appendix.set_organ_damage(25) // Changing species should @@ -36,7 +36,7 @@ // Grab the lizard's appendix for comparison later // They should've been given a new one, but our damage should also have transferred over - var/obj/item/organ/internal/appendix/lizard_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX) + var/obj/item/organ/appendix/lizard_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX) // They should have the trauma still TEST_ASSERT(dummy.has_trauma_type(/datum/brain_trauma/severe/blindness), "Dummy, upon changing species, did not carry over their brain trauma!") diff --git a/code/modules/unit_tests/stomach.dm b/code/modules/unit_tests/stomach.dm index 782e74788a6..5d2b948e82b 100644 --- a/code/modules/unit_tests/stomach.dm +++ b/code/modules/unit_tests/stomach.dm @@ -5,7 +5,7 @@ var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human/consistent) var/obj/item/food/hotdog/debug/fooditem = allocate(/obj/item/food/hotdog/debug) - var/obj/item/organ/internal/stomach/belly = human.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/belly = human.get_organ_slot(ORGAN_SLOT_STOMACH) var/obj/item/reagent_containers/pill/pill = allocate(/obj/item/reagent_containers/pill) var/datum/reagent/drug/methamphetamine/meth = /datum/reagent/drug/methamphetamine diff --git a/code/modules/unit_tests/tail_wag.dm b/code/modules/unit_tests/tail_wag.dm index cd82dfdfd50..595e3189521 100644 --- a/code/modules/unit_tests/tail_wag.dm +++ b/code/modules/unit_tests/tail_wag.dm @@ -5,7 +5,7 @@ /datum/unit_test/tail_wag/Run() var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) - var/obj/item/organ/external/tail/cat/dummy_tail = allocate(/obj/item/organ/external/tail/cat) + var/obj/item/organ/tail/cat/dummy_tail = allocate(/obj/item/organ/tail/cat) dummy_tail.Insert(dummy, special = TRUE, movement_flags = DELETE_IF_REPLACED) // SANITY TEST diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index eca29e8d008..be7815b749f 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -253,9 +253,8 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) /obj/merge_conflict_marker, //briefcase launchpads erroring /obj/machinery/launchpad/briefcase, - //Both are abstract types meant to scream bloody murder if spawned in raw - /obj/item/organ/external, - /obj/item/organ/external/wings, + //Wings abstract path + /obj/item/organ/wings, //Not meant to spawn without the machine wand /obj/effect/bug_moving, ) @@ -349,10 +348,10 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) //Baseturf editors can only go up to ten, stop this. returnable_list += typesof(/obj/effect/baseturf_helper) // It's the abstract base type, it shouldn't be spawned. - returnable_list += /obj/item/organ/external/genital + returnable_list += /obj/item/organ/genital // These two are locked to one type only, and shouldn't be widely available, hence why they runtime otherwise. // Can't be bothered adding more to them. - returnable_list += list(/obj/item/organ/external/neck_accessory, /obj/item/organ/external/head_accessory) + returnable_list += list(/obj/item/organ/neck_accessory, /obj/item/organ/head_accessory) //NOVA EDIT ADDITION END return returnable_list diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm index 287c9e3cf0e..b29c5501a79 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm @@ -211,7 +211,7 @@ to_chat(M, "HONK") M.SetSleeping(0) M.adjust_stutter(40 SECONDS) - var/obj/item/organ/internal/ears/ears = M.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = M.get_organ_slot(ORGAN_SLOT_EARS) if(ears) ears.adjustEarDamage(0, 30) M.Paralyze(60) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 58373ef2c74..4b71e629be3 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -243,7 +243,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) contraband = list( /obj/item/clothing/under/costume/mech_suit = 2, /obj/item/clothing/suit/hooded/techpriest = 2, - /obj/item/organ/internal/tongue/robot = 2, + /obj/item/organ/tongue/robot = 2, ) refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe extra_price = PAYCHECK_COMMAND * 1.2 diff --git a/code/modules/wiremod/components/action/equpiment_action.dm b/code/modules/wiremod/components/action/equpiment_action.dm index 641722c595b..f313d1f4870 100644 --- a/code/modules/wiremod/components/action/equpiment_action.dm +++ b/code/modules/wiremod/components/action/equpiment_action.dm @@ -1,7 +1,7 @@ /obj/item/circuit_component/equipment_action display_name = "Equipment Action" desc = "Represents an action the user can take when using supported shells." - required_shells = list(/obj/item/organ/internal/cyberimp/bci, /obj/item/mod/module/circuit) + required_shells = list(/obj/item/organ/cyberimp/bci, /obj/item/mod/module/circuit) /// The icon of the button var/datum/port/input/option/icon_options diff --git a/code/modules/wiremod/components/atom/remotecam.dm b/code/modules/wiremod/components/atom/remotecam.dm index d5a8506c5cf..bbbab6043af 100644 --- a/code/modules/wiremod/components/atom/remotecam.dm +++ b/code/modules/wiremod/components/atom/remotecam.dm @@ -281,7 +281,7 @@ desc = "Digitizes user's sight for surveillance-on-the-go. User must have fully functional eyes for digitizer to work. Camera range input is either 0 (near) or 1 (far). Network field is used for camera network." category = "BCI" camera_prefix = "BCI" - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) /// BCIs are organs, and thus the signal must be assigned ONLY when the shell has been installed in a mob - otherwise the camera will never update position camera_signal_move_override = TRUE @@ -314,13 +314,13 @@ /obj/item/circuit_component/remotecam/bci/register_shell(atom/movable/shell) . = ..() - if(!istype(shell_parent, /obj/item/organ/internal/cyberimp/bci)) + if(!istype(shell_parent, /obj/item/organ/cyberimp/bci)) return shell_camera = new /obj/machinery/camera (shell_parent) init_camera() RegisterSignal(shell_parent, COMSIG_ORGAN_IMPLANTED, PROC_REF(on_organ_implanted)) RegisterSignal(shell_parent, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed)) - var/obj/item/organ/internal/cyberimp/bci/bci = shell_parent + var/obj/item/organ/cyberimp/bci/bci = shell_parent if(bci.owner) //If somehow the camera was added while shell is already installed inside a mob, assign signals if(bciuser) //This should never happen... But if it does, unassign move signal from old mob UnregisterSignal(bciuser, COMSIG_MOVABLE_MOVED, PROC_REF(update_camera_location)) @@ -388,7 +388,7 @@ if (current_camera_emp) close_camera() return - var/obj/item/organ/internal/cyberimp/bci/bci = shell_parent + var/obj/item/organ/cyberimp/bci/bci = shell_parent //If shell is not currently inside a head, or user is currently blind, or user is dead if(!bci.owner || bci.owner.is_blind() || bci.owner.stat >= UNCONSCIOUS) close_camera() diff --git a/code/modules/wiremod/components/bci/hud/counter_overlay.dm b/code/modules/wiremod/components/bci/hud/counter_overlay.dm index a0f83b6f72e..aaf70826f4b 100644 --- a/code/modules/wiremod/components/bci/hud/counter_overlay.dm +++ b/code/modules/wiremod/components/bci/hud/counter_overlay.dm @@ -10,7 +10,7 @@ desc = "A component that shows an three digit counter. Requires a BCI shell." category = "BCI" - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) var/datum/port/input/counter_number @@ -19,7 +19,7 @@ var/datum/port/input/signal_update - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci var/list/numbers = list() var/datum/weakref/counter_appearance @@ -32,7 +32,7 @@ image_pixel_y = add_input_port("Y-Axis Shift", PORT_TYPE_NUMBER) /obj/item/circuit_component/counter_overlay/register_shell(atom/movable/shell) - if(istype(shell, /obj/item/organ/internal/cyberimp/bci)) + if(istype(shell, /obj/item/organ/cyberimp/bci)) bci = shell RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed)) diff --git a/code/modules/wiremod/components/bci/hud/object_overlay.dm b/code/modules/wiremod/components/bci/hud/object_overlay.dm index 07e0f76761e..4f09a4d9fab 100644 --- a/code/modules/wiremod/components/bci/hud/object_overlay.dm +++ b/code/modules/wiremod/components/bci/hud/object_overlay.dm @@ -12,7 +12,7 @@ desc = "Requires a BCI shell. A component that shows an overlay on top of an object." category = "BCI" - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) var/datum/port/input/option/object_overlay_options @@ -28,7 +28,7 @@ var/datum/port/input/signal_off /// Reference to the BCI we're implanted inside - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci /// Assoc list of REF to the target atom to the overlay alt appearance it is using var/list/active_overlays = list() @@ -66,7 +66,7 @@ options_map = component_options /obj/item/circuit_component/object_overlay/register_shell(atom/movable/shell) - if(istype(shell, /obj/item/organ/internal/cyberimp/bci)) + if(istype(shell, /obj/item/organ/cyberimp/bci)) bci = shell RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed)) diff --git a/code/modules/wiremod/components/bci/hud/target_intercept.dm b/code/modules/wiremod/components/bci/hud/target_intercept.dm index 2ee37e8ff4f..016f677f10e 100644 --- a/code/modules/wiremod/components/bci/hud/target_intercept.dm +++ b/code/modules/wiremod/components/bci/hud/target_intercept.dm @@ -10,11 +10,11 @@ desc = "Requires a BCI shell. When activated, this component will allow user to target an object using their brain and will output the reference to said object." category = "BCI" - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) var/datum/port/output/clicked_atom - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci var/intercept_cooldown = 1 SECONDS /obj/item/circuit_component/target_intercept/populate_ports() @@ -23,7 +23,7 @@ clicked_atom = add_output_port("Targeted Object", PORT_TYPE_ATOM) /obj/item/circuit_component/target_intercept/register_shell(atom/movable/shell) - if(istype(shell, /obj/item/organ/internal/cyberimp/bci)) + if(istype(shell, /obj/item/organ/cyberimp/bci)) bci = shell RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed)) diff --git a/code/modules/wiremod/components/bci/install_detector.dm b/code/modules/wiremod/components/bci/install_detector.dm index 0d39e01214e..123ff9d5162 100644 --- a/code/modules/wiremod/components/bci/install_detector.dm +++ b/code/modules/wiremod/components/bci/install_detector.dm @@ -10,13 +10,13 @@ desc = "A component that detects when a BCI is installed or removed from its user." category = "BCI" - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) var/datum/port/output/implanted var/datum/port/output/removed var/datum/port/output/current_state - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci /obj/item/circuit_component/install_detector/populate_ports() . = ..() @@ -26,7 +26,7 @@ /obj/item/circuit_component/install_detector/register_shell(atom/movable/shell) . = ..() - if(istype(shell, /obj/item/organ/internal/cyberimp/bci)) + if(istype(shell, /obj/item/organ/cyberimp/bci)) bci = shell RegisterSignal(shell, COMSIG_ORGAN_IMPLANTED, PROC_REF(on_organ_implanted)) RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed)) diff --git a/code/modules/wiremod/components/bci/reagent_injector.dm b/code/modules/wiremod/components/bci/reagent_injector.dm index ef9188d7bdc..73b685a39db 100644 --- a/code/modules/wiremod/components/bci/reagent_injector.dm +++ b/code/modules/wiremod/components/bci/reagent_injector.dm @@ -11,12 +11,12 @@ category = "BCI" circuit_flags = CIRCUIT_NO_DUPLICATES - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) var/datum/port/input/inject var/datum/port/output/injected - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci /obj/item/circuit_component/reagent_injector/Initialize(mapload) . = ..() @@ -41,7 +41,7 @@ /obj/item/circuit_component/reagent_injector/register_shell(atom/movable/shell) . = ..() - if(istype(shell, /obj/item/organ/internal/cyberimp/bci)) + if(istype(shell, /obj/item/organ/cyberimp/bci)) bci = shell bci.create_reagents(15, OPENCONTAINER) if(reagents.total_volume) diff --git a/code/modules/wiremod/components/bci/thought_listener.dm b/code/modules/wiremod/components/bci/thought_listener.dm index ed6226a4e49..f76f53b6ba2 100644 --- a/code/modules/wiremod/components/bci/thought_listener.dm +++ b/code/modules/wiremod/components/bci/thought_listener.dm @@ -10,7 +10,7 @@ desc = "A component that allows the user to input a string using their mind. Requires a BCI shell." category = "BCI" - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) var/datum/port/input/input_name var/datum/port/input/input_desc @@ -20,7 +20,7 @@ circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci var/ready = TRUE /obj/item/circuit_component/thought_listener/populate_ports() @@ -31,7 +31,7 @@ failure = add_output_port("On Failure", PORT_TYPE_SIGNAL) /obj/item/circuit_component/thought_listener/register_shell(atom/movable/shell) - if(istype(shell, /obj/item/organ/internal/cyberimp/bci)) + if(istype(shell, /obj/item/organ/cyberimp/bci)) bci = shell /obj/item/circuit_component/thought_listener/unregister_shell(atom/movable/shell) diff --git a/code/modules/wiremod/components/bci/vox.dm b/code/modules/wiremod/components/bci/vox.dm index 420140a7fde..8749d1b72b6 100644 --- a/code/modules/wiremod/components/bci/vox.dm +++ b/code/modules/wiremod/components/bci/vox.dm @@ -10,7 +10,7 @@ desc = "A component that plays a local VOX Announcement for the user. Requires a BCI shell." category = "BCI" - required_shells = list(/obj/item/organ/internal/cyberimp/bci) + required_shells = list(/obj/item/organ/cyberimp/bci) var/datum/port/input/option/type_option var/current_type @@ -19,7 +19,7 @@ circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci /obj/item/circuit_component/vox/populate_options() type_option = add_option_port("VOX Type", list(PORT_TYPE_LIST(PORT_TYPE_STRING), PORT_TYPE_STRING)) @@ -28,7 +28,7 @@ word_list = add_input_port("Word List", PORT_TYPE_LIST(PORT_TYPE_STRING)) /obj/item/circuit_component/vox/register_shell(atom/movable/shell) - if(istype(shell, /obj/item/organ/internal/cyberimp/bci)) + if(istype(shell, /obj/item/organ/cyberimp/bci)) bci = shell /obj/item/circuit_component/vox/unregister_shell(atom/movable/shell) diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm index e3ddf54135a..29147aefa94 100644 --- a/code/modules/wiremod/shell/brain_computer_interface.dm +++ b/code/modules/wiremod/shell/brain_computer_interface.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/bci +/obj/item/organ/cyberimp/bci name = "brain-computer interface" desc = "An implant that can be placed in a user's head to control circuits using their brain." icon = 'icons/obj/science/circuits.dmi' @@ -6,7 +6,7 @@ zone = BODY_ZONE_HEAD w_class = WEIGHT_CLASS_TINY -/obj/item/organ/internal/cyberimp/bci/Initialize(mapload) +/obj/item/organ/cyberimp/bci/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_CIRCUIT_ACTION_COMPONENT_REGISTERED, PROC_REF(action_comp_registered)) @@ -19,7 +19,7 @@ new /obj/item/circuit_component/bci_core, ), SHELL_CAPACITY_SMALL, starting_circuit = circuit) -/obj/item/organ/internal/cyberimp/bci/say( +/obj/item/organ/cyberimp/bci/say( message, bubble_type, list/spans = list(), @@ -43,11 +43,11 @@ return ..() -/obj/item/organ/internal/cyberimp/bci/proc/action_comp_registered(datum/source, obj/item/circuit_component/equipment_action/action_comp) +/obj/item/organ/cyberimp/bci/proc/action_comp_registered(datum/source, obj/item/circuit_component/equipment_action/action_comp) SIGNAL_HANDLER LAZYADD(actions, new/datum/action/innate/bci_action(src, action_comp)) -/obj/item/organ/internal/cyberimp/bci/proc/action_comp_unregistered(datum/source, obj/item/circuit_component/equipment_action/action_comp) +/obj/item/organ/cyberimp/bci/proc/action_comp_unregistered(datum/source, obj/item/circuit_component/equipment_action/action_comp) SIGNAL_HANDLER var/datum/action/innate/bci_action/action = action_comp.granted_to[REF(src)] if(!istype(action)) @@ -61,10 +61,10 @@ check_flags = AB_CHECK_CONSCIOUS button_icon_state = "bci_power" - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci var/obj/item/circuit_component/equipment_action/circuit_component -/datum/action/innate/bci_action/New(obj/item/organ/internal/cyberimp/bci/_bci, obj/item/circuit_component/equipment_action/circuit_component) +/datum/action/innate/bci_action/New(obj/item/organ/cyberimp/bci/_bci, obj/item/circuit_component/equipment_action/circuit_component) ..() bci = _bci circuit_component.granted_to[REF(_bci)] = src @@ -95,7 +95,7 @@ var/datum/weakref/user - var/obj/item/organ/internal/cyberimp/bci/bci + var/obj/item/organ/cyberimp/bci/bci /obj/item/circuit_component/bci_core/populate_ports() @@ -290,7 +290,7 @@ var/busy_icon_state var/locked = FALSE - var/obj/item/organ/internal/cyberimp/bci/bci_to_implant + var/obj/item/organ/cyberimp/bci/bci_to_implant COOLDOWN_DECLARE(message_cooldown) @@ -365,13 +365,13 @@ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/machinery/bci_implanter/attackby(obj/item/weapon, mob/user, params) - var/obj/item/organ/internal/cyberimp/bci/new_bci = weapon + var/obj/item/organ/cyberimp/bci/new_bci = weapon if (istype(new_bci)) if (!(locate(/obj/item/integrated_circuit) in new_bci)) balloon_alert(user, "bci has no circuit!") return - var/obj/item/organ/internal/cyberimp/bci/previous_bci_to_implant = bci_to_implant + var/obj/item/organ/cyberimp/bci/previous_bci_to_implant = bci_to_implant user.transferItemToLoc(weapon, src) bci_to_implant = weapon @@ -428,7 +428,7 @@ playsound(loc, 'sound/machines/ping.ogg', 30, FALSE) - var/obj/item/organ/internal/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/internal/cyberimp/bci) + var/obj/item/organ/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/cyberimp/bci) if (bci_organ) bci_organ.Remove(carbon_occupant) @@ -460,7 +460,7 @@ var/mob/living/carbon/carbon_occupant = occupant if (istype(occupant)) - var/obj/item/organ/internal/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/internal/cyberimp/bci) + var/obj/item/organ/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/cyberimp/bci) if (isnull(bci_organ) && isnull(bci_to_implant)) say("No brain-computer interface inserted, and occupant does not have one. Insert a BCI to implant one.") playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE) diff --git a/code/modules/wiremod/shell/shell_items.dm b/code/modules/wiremod/shell/shell_items.dm index bad787033f9..0db08ab7bb8 100644 --- a/code/modules/wiremod/shell/shell_items.dm +++ b/code/modules/wiremod/shell/shell_items.dm @@ -63,7 +63,7 @@ /obj/item/shell/bci name = "brain-computer interface assembly" icon_state = "bci-open" - shell_to_spawn = /obj/item/organ/internal/cyberimp/bci + shell_to_spawn = /obj/item/organ/cyberimp/bci w_class = WEIGHT_CLASS_TINY /obj/item/shell/scanner_gate diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index 894eeeeeb21..db7257dc957 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -51,7 +51,7 @@ if(limb_armor > limb_damage) return - var/obj/item/organ/internal/zombie_infection/infection + var/obj/item/organ/zombie_infection/infection infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE) if(!infection) infection = new() diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index bd8646ccb78..f6f21b7e1ee 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/zombie_infection +/obj/item/organ/zombie_infection name = "festering ooze" desc = "A black web of pus and viscera." zone = BODY_ZONE_HEAD @@ -13,22 +13,22 @@ var/revive_time_max = 700 var/timer_id -/obj/item/organ/internal/zombie_infection/Initialize(mapload) +/obj/item/organ/zombie_infection/Initialize(mapload) . = ..() if(iscarbon(loc)) Insert(loc) GLOB.zombie_infection_list += src -/obj/item/organ/internal/zombie_infection/Destroy() +/obj/item/organ/zombie_infection/Destroy() GLOB.zombie_infection_list -= src . = ..() -/obj/item/organ/internal/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags) +/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags) . = ..() START_PROCESSING(SSobj, src) -/obj/item/organ/internal/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE) +/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE) . = ..() STOP_PROCESSING(SSobj, src) if(iszombie(M) && old_species && !special) @@ -36,25 +36,25 @@ if(timer_id) deltimer(timer_id) -/obj/item/organ/internal/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died)) -/obj/item/organ/internal/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH) -/obj/item/organ/internal/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed) +/obj/item/organ/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed) SIGNAL_HANDLER if(iszombie(source)) qdel(src) // Congrats you somehow died so hard you stopped being a zombie -/obj/item/organ/internal/zombie_infection/on_find(mob/living/finder) +/obj/item/organ/zombie_infection/on_find(mob/living/finder) to_chat(finder, span_warning("Inside the head is a disgusting black \ web of pus and viscera, bound tightly around the brain like some \ biological harness.")) -/obj/item/organ/internal/zombie_infection/process(seconds_per_tick, times_fired) +/obj/item/organ/zombie_infection/process(seconds_per_tick, times_fired) if(!owner) return if(!(src in owner.organs)) @@ -65,7 +65,7 @@ owner.adjustToxLoss(0.5 * seconds_per_tick) if (SPT_PROB(5, seconds_per_tick)) to_chat(owner, span_danger("You feel sick...")) - if(timer_id || HAS_TRAIT(owner, TRAIT_SUICIDED) || !owner.get_organ_by_type(/obj/item/organ/internal/brain)) + if(timer_id || HAS_TRAIT(owner, TRAIT_SUICIDED) || !owner.get_organ_by_type(/obj/item/organ/brain)) return if(owner.stat != DEAD && !converts_living) return @@ -77,7 +77,7 @@ var/flags = TIMER_STOPPABLE timer_id = addtimer(CALLBACK(src, PROC_REF(zombify), owner), revive_time, flags) -/obj/item/organ/internal/zombie_infection/proc/zombify(mob/living/carbon/target) +/obj/item/organ/zombie_infection/proc/zombify(mob/living/carbon/target) timer_id = null if(!converts_living && owner.stat != DEAD) @@ -99,5 +99,5 @@ target.do_jitter_animation(living_transformation_time) target.Stun(living_transformation_time) -/obj/item/organ/internal/zombie_infection/nodamage +/obj/item/organ/zombie_infection/nodamage causes_damage = FALSE diff --git a/html/changelogs/AutoChangeLog-pr-87306.yml b/html/changelogs/AutoChangeLog-pr-87306.yml new file mode 100644 index 00000000000..5117e29fac8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87306.yml @@ -0,0 +1,5 @@ +author: "necromanceranne" +delete-after: True +changes: + - code_imp: "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." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87329.yml b/html/changelogs/AutoChangeLog-pr-87329.yml new file mode 100644 index 00000000000..703c0b9fdb9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87329.yml @@ -0,0 +1,16 @@ +author: "00-Steven" +delete-after: True +changes: + - refactor: "Refactored tasting code. Please report any jank tasting behaviours." + - bugfix: "You taste what you eat instead of the contents of your own stomach." + - bugfix: "Other basic nutriment subtypes also carry food flavours, instead of outweighing the food flavours with their lack of flavour." + - bugfix: "Basic nutriment subtypes have a flavour they default to, in case of not carrying any food flavours." + - bugfix: "Oils taste like oil instead of tasting indescribable." + - bugfix: "Clothing eaten by moths actually carries its flavours instead of tasting indescribable." + - bugfix: "Organs use organ tissue instead of nutriment." + - bugfix: "You can actually taste organ tissue." + - qol: "Mineral slurry tastes like minerals instead of tasting indescribable." + - bugfix: "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\"." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87434.yml b/html/changelogs/AutoChangeLog-pr-87434.yml new file mode 100644 index 00000000000..a59dd32cdf1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87434.yml @@ -0,0 +1,7 @@ +author: "Ghommie" +delete-after: True +changes: + - code_imp: "Removed internal/external pathing from organs in favor of a bit flag. Hopefully this shouldn't break anything about organs." + - bugfix: "Fixed invisible fox ears." + - bugfix: "Fixed mushpeople caps not being colored red by default." + - rscadd: "You can now dye most tails, podpeople hair, mushpeople caps etc. with a hair dye spray." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87622.yml b/html/changelogs/AutoChangeLog-pr-87622.yml new file mode 100644 index 00000000000..03a06eab36c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87622.yml @@ -0,0 +1,4 @@ +author: "carlarctg" +delete-after: True +changes: + - bugfix: "vampires are a human subtype & have stomachs/lungs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87726.yml b/html/changelogs/AutoChangeLog-pr-87726.yml new file mode 100644 index 00000000000..a61ff714127 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87726.yml @@ -0,0 +1,10 @@ +author: "Fikou" +delete-after: True +changes: + - bugfix: "a modsuit being deleted will delete its parts correctly" + - bugfix: "a modsuit needs its boots out to be moved by an AI" + - qol: "you can extend or retract a modsuits parts from the ui panel" + - qol: "modsuit cores have colorcoded charge bars in the ui panel" + - qol: "weapon recall module makes you pick up the weapon if its on your tile" + - code_imp: "tether module has its own button for cutting tethers instead of stealing it from pins" + - bugfix: "armor booster doesnt protect from head injury without the helmet on" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87782.yml b/html/changelogs/AutoChangeLog-pr-87782.yml new file mode 100644 index 00000000000..1e83a98093d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87782.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - refactor: "Eye color effects are now controlled via a new overrides system, which should prevent conflicts between different sources." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87789.yml b/html/changelogs/AutoChangeLog-pr-87789.yml new file mode 100644 index 00000000000..062e7ea55b1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87789.yml @@ -0,0 +1,4 @@ +author: "larentoun" +delete-after: True +changes: + - bugfix: "Fixes a runtime when wingless creature flaps their wings" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87792.yml b/html/changelogs/AutoChangeLog-pr-87792.yml new file mode 100644 index 00000000000..e8ff0af1935 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87792.yml @@ -0,0 +1,4 @@ +author: "GremlinSeeker" +delete-after: True +changes: + - bugfix: "Syndicate Biodome fixes" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87869.yml b/html/changelogs/AutoChangeLog-pr-87869.yml new file mode 100644 index 00000000000..41532da0005 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87869.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - bugfix: "Fixed ayylmao's brain examine lines" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87898.yml b/html/changelogs/AutoChangeLog-pr-87898.yml new file mode 100644 index 00000000000..aa4f5a81aa9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-87898.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - bugfix: "fixed brains turning invisible after being washed" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-88326.yml b/html/changelogs/AutoChangeLog-pr-88326.yml new file mode 100644 index 00000000000..7059d4747e1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-88326.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - sound: "Modsuits no longer horrifically screech when taken off" \ No newline at end of file diff --git a/modular_nova/master_files/code/datums/components/damage_tracker.dm b/modular_nova/master_files/code/datums/components/damage_tracker.dm index 58538f5ebfc..3012a1b1413 100644 --- a/modular_nova/master_files/code/datums/components/damage_tracker.dm +++ b/modular_nova/master_files/code/datums/components/damage_tracker.dm @@ -86,13 +86,13 @@ if(length(current_trauma_list)) trauma_list = current_trauma_list.Copy() - heart_damage = human_parent.check_organ_damage(/obj/item/organ/internal/heart) - liver_damage = human_parent.check_organ_damage(/obj/item/organ/internal/liver) - lung_damage = human_parent.check_organ_damage(/obj/item/organ/internal/lungs) - stomach_damage = human_parent.check_organ_damage(/obj/item/organ/internal/stomach) - brain_damage = human_parent.check_organ_damage(/obj/item/organ/internal/brain) - eye_damage = human_parent.check_organ_damage(/obj/item/organ/internal/eyes) - ear_damage = human_parent.check_organ_damage(/obj/item/organ/internal/ears) + heart_damage = human_parent.check_organ_damage(/obj/item/organ/heart) + liver_damage = human_parent.check_organ_damage(/obj/item/organ/liver) + lung_damage = human_parent.check_organ_damage(/obj/item/organ/lungs) + stomach_damage = human_parent.check_organ_damage(/obj/item/organ/stomach) + brain_damage = human_parent.check_organ_damage(/obj/item/organ/brain) + eye_damage = human_parent.check_organ_damage(/obj/item/organ/eyes) + ear_damage = human_parent.check_organ_damage(/obj/item/organ/ears) return TRUE @@ -110,7 +110,7 @@ human_parent.setOrganLoss(ORGAN_SLOT_EARS, ear_damage) human_parent.setOrganLoss(ORGAN_SLOT_BRAIN, brain_damage) - var/obj/item/organ/internal/brain/human_brain = human_parent.get_organ_by_type(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/human_brain = human_parent.get_organ_by_type(/obj/item/organ/brain) if(!human_brain) return FALSE diff --git a/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm b/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm index a4224b926a7..6591bddd8cf 100644 --- a/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm +++ b/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm @@ -10,7 +10,7 @@ severity = 2 if ("Sensitive") severity = 1 - var/obj/item/organ/internal/eyes/holder_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/holder_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) restore_eyes(holder_eyes) // add_unique() happens after add() so we need to jank reset this to ensure sensitivity is properly applied at roundstart check_eyes(holder_eyes) diff --git a/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm b/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm index a0f3a8536c6..aed6524f27d 100644 --- a/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm +++ b/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm @@ -1,9 +1,9 @@ /datum/quirk/equipping/lungs abstract_parent_type = /datum/quirk/equipping/lungs icon = FA_ICON_LUNGS - var/obj/item/organ/internal/lungs/lungs_holding - var/obj/item/organ/internal/lungs/lungs_added - var/lungs_typepath = /obj/item/organ/internal/lungs + var/obj/item/organ/lungs/lungs_holding + var/obj/item/organ/lungs/lungs_added + var/lungs_typepath = /obj/item/organ/lungs items = list(/obj/item/clothing/accessory/breathing = list(ITEM_SLOT_BACKPACK)) var/breath_type = "oxygen" @@ -26,7 +26,7 @@ var/mob/living/carbon/carbon_holder = quirk_holder if (!istype(carbon_holder) || !istype(lungs_holding)) return - var/obj/item/organ/internal/lungs/lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS) if (lungs != lungs_added && lungs != lungs_holding) qdel(lungs_holding) return @@ -80,7 +80,7 @@ forced_items = list( /obj/item/clothing/mask/breath = list(ITEM_SLOT_MASK), /obj/item/tank/internals/nitrogen/belt/full = list(ITEM_SLOT_HANDS, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET)) - lungs_typepath = /obj/item/organ/internal/lungs/nitrogen + lungs_typepath = /obj/item/organ/lungs/nitrogen breath_type = "nitrogen" /datum/quirk/equipping/lungs/nitrogen/on_equip_item(obj/item/equipped, success) diff --git a/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm b/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm index 2c3d0e06766..1fe14205615 100644 --- a/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm +++ b/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm @@ -21,7 +21,7 @@ var/mob/living/carbon/human/target = quirk_holder // if we have more sensitive eyes, increase the power - var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES) if (!istype(target_eyes)) return var/infravision_multiplier = max(0, (-(target_eyes.flash_protect) * NOVA_NIGHT_VISION_SENSITIVITY_MULT)) + 1 diff --git a/modular_nova/master_files/code/datums/traits/good.dm b/modular_nova/master_files/code/datums/traits/good.dm index e201c61710f..6574c220540 100644 --- a/modular_nova/master_files/code/datums/traits/good.dm +++ b/modular_nova/master_files/code/datums/traits/good.dm @@ -138,7 +138,7 @@ lose_text = span_danger("Your appendix has magically.. regrown?") medical_record_text = "Patient had appendicitis in the past and has had their appendix surgically removed." /// The mob's original appendix - var/obj/item/organ/internal/appendix/old_appendix + var/obj/item/organ/appendix/old_appendix /datum/quirk/no_appendix/post_add() var/mob/living/carbon/carbon_quirk_holder = quirk_holder @@ -158,7 +158,7 @@ if(isnull(old_appendix)) return - var/obj/item/organ/internal/appendix/current_appendix = carbon_quirk_holder.get_organ_slot(ORGAN_SLOT_APPENDIX) + var/obj/item/organ/appendix/current_appendix = carbon_quirk_holder.get_organ_slot(ORGAN_SLOT_APPENDIX) // if we have not gained an appendix already, put the old one back if(isnull(current_appendix)) diff --git a/modular_nova/master_files/code/datums/traits/neutral.dm b/modular_nova/master_files/code/datums/traits/neutral.dm index 4609bc80997..3e3365dd259 100644 --- a/modular_nova/master_files/code/datums/traits/neutral.dm +++ b/modular_nova/master_files/code/datums/traits/neutral.dm @@ -238,7 +238,7 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay()) /datum/quirk/feline_aspect/add_unique(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder - var/obj/item/organ/internal/tongue/cat/new_tongue = new(get_turf(human_holder)) + var/obj/item/organ/tongue/cat/new_tongue = new(get_turf(human_holder)) ADD_TRAIT(human_holder, TRAIT_WATER_HATER, QUIRK_TRAIT) @@ -247,7 +247,7 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay()) /datum/quirk/feline_aspect/remove() var/mob/living/carbon/human/human_holder = quirk_holder - var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue + var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue REMOVE_TRAIT(human_holder, TRAIT_WATER_HATER, QUIRK_TRAIT) @@ -266,14 +266,14 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay()) /datum/quirk/canine_aspect/add_unique(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder - var/obj/item/organ/internal/tongue/dog/new_tongue = new(get_turf(human_holder)) + var/obj/item/organ/tongue/dog/new_tongue = new(get_turf(human_holder)) new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE)) new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) /datum/quirk/canine_aspect/remove() var/mob/living/carbon/human/human_holder = quirk_holder - var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue + var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE)) new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) @@ -290,14 +290,14 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay()) /datum/quirk/avian_aspect/add_unique(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder - var/obj/item/organ/internal/tongue/avian/new_tongue = new(get_turf(human_holder)) + var/obj/item/organ/tongue/avian/new_tongue = new(get_turf(human_holder)) new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE)) new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) /datum/quirk/avian_aspect/remove() var/mob/living/carbon/human/human_holder = quirk_holder - var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue + var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE)) new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) diff --git a/modular_nova/master_files/code/modules/client/preferences/brain.dm b/modular_nova/master_files/code/modules/client/preferences/brain.dm index 5f515577c8a..3a83bd0b191 100644 --- a/modular_nova/master_files/code/modules/client/preferences/brain.dm +++ b/modular_nova/master_files/code/modules/client/preferences/brain.dm @@ -14,8 +14,8 @@ if(!issynthetic(target)) return - var/obj/item/organ/internal/brain/new_brain = target.prefs_get_brain_to_use(value) - var/obj/item/organ/internal/brain/old_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/new_brain = target.prefs_get_brain_to_use(value) + var/obj/item/organ/brain/old_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!new_brain || new_brain == old_brain.type) return diff --git a/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm b/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm index 39e9193fe3e..bfd2876ffe7 100644 --- a/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm +++ b/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm @@ -26,7 +26,7 @@ GLOBAL_DATUM_INIT(food_prefs_menu, /datum/food_prefs_menu, new) to_chat(preferences.parent, span_announce("Your food preferences can't be set because of [fail_reason] choices! Please check your preferences!")) // Sorry, but I don't want folk sleeping on this. return - var/obj/item/organ/internal/tongue/target_tongue = target.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/target_tongue = target.get_organ_slot(ORGAN_SLOT_TONGUE) if(isnull(target_tongue) || !preferences.food_preferences["enabled"]) return diff --git a/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm b/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm index b6cc2339a1e..607a22e95ae 100644 --- a/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm +++ b/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm @@ -64,7 +64,7 @@ /datum/preference/toggle/eye_emissives/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) value = value && preferences && is_allowed(preferences) - var/obj/item/organ/internal/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/eyes) target.emissive_eyes = value if (istype(eyes_organ)) eyes_organ.is_emissive = value diff --git a/modular_nova/master_files/code/modules/client/preferences_savefile.dm b/modular_nova/master_files/code/modules/client/preferences_savefile.dm index 772dfbd2c56..9a0ef4002b7 100644 --- a/modular_nova/master_files/code/modules/client/preferences_savefile.dm +++ b/modular_nova/master_files/code/modules/client/preferences_savefile.dm @@ -3,7 +3,7 @@ * You can't really use the non-modular version, least you eventually want asinine merge * conflicts and/or potentially disastrous issues to arise, so here's your own. */ -#define MODULAR_SAVEFILE_VERSION_MAX 6 +#define MODULAR_SAVEFILE_VERSION_MAX 7 #define MODULAR_SAVEFILE_UP_TO_DATE -1 @@ -13,6 +13,7 @@ #define VERSION_UNDERSHIRT_BRA_SPLIT 4 #define VERSION_CHRONOLOGICAL_AGE 5 #define VERSION_TG_LOADOUT 6 +#define VERSION_INTERNAL_EXTERNAL_ORGANS 7 #define INDEX_UNDERWEAR 1 #define INDEX_BRA 2 @@ -35,18 +36,7 @@ if(!save_data) save_data = list() - var/list/save_augments = SANITIZE_LIST(save_data["augments"]) - for(var/aug_slot in save_augments) - var/aug_entry = save_augments[aug_slot] - save_augments -= aug_slot - - if(istext(aug_entry)) - aug_entry = _text2path(aug_entry) - - var/datum/augment_item/aug = GLOB.augment_items[aug_entry] - if(aug) - save_augments[aug_slot] = aug_entry - augments = save_augments + load_augments(SANITIZE_LIST(save_data["augments"])) augment_limb_styles = SANITIZE_LIST(save_data["augment_limb_styles"]) for(var/key in augment_limb_styles) @@ -260,12 +250,24 @@ if(istext(loadout)) loadout = _text2path(loadout) save_loadout[loadout] = entry - var/loadout_list = sanitize_loadout_list(save_loadout) if (length(loadout_list)) // We only want to write these changes down if we're certain that there was anything in that. write_preference(GLOB.preference_entries[/datum/preference/loadout], loadout_list) + if(current_version < VERSION_INTERNAL_EXTERNAL_ORGANS) + var/list/save_augments = SANITIZE_LIST(save_data["augments"]) + var/prefix_length = length("/obj/item/organ/internal") // Shouldn't be any external augments, but if there are, it's the same length + for(var/augment_name in save_augments) + var/augment_path_string = save_augments[augment_name] + if(!(findtext(augment_path_string, "/obj/item/organ/internal") || findtext(augment_path_string, "/obj/item/organ/external"))) + continue // Make sure we don't strip something that isn't there + var/augment_path_string_stripped = copytext(save_augments[augment_name], prefix_length + 1) + save_augments[augment_name] = "/obj/item/organ[augment_path_string_stripped]" + load_augments(save_augments) + + + /datum/preferences/proc/check_migration() if(!tgui_prefs_migration) @@ -324,6 +326,20 @@ markings[marking][title] = list(sanitize_hexcolor(markings[marking][title]), FALSE) return markings +/datum/preferences/proc/load_augments(list/augments_prefs) + var/list/augments_sanitized = list() + for(var/aug_slot in augments_prefs) + var/aug_entry = augments_prefs[aug_slot] + + if(istext(aug_entry)) + aug_entry = _text2path(aug_entry) + + var/datum/augment_item/aug = GLOB.augment_items[aug_entry] + if(aug) + augments_sanitized[aug_slot] = aug_entry + augments = augments_sanitized + + #undef MODULAR_SAVEFILE_VERSION_MAX #undef MODULAR_SAVEFILE_UP_TO_DATE @@ -333,3 +349,5 @@ #undef VERSION_SYNTH_REFACTOR #undef VERSION_UNDERSHIRT_BRA_SPLIT #undef VERSION_CHRONOLOGICAL_AGE +#undef VERSION_TG_LOADOUT +#undef VERSION_INTERNAL_EXTERNAL_ORGANS diff --git a/modular_nova/master_files/code/modules/jobs/prisoner.dm b/modular_nova/master_files/code/modules/jobs/prisoner.dm index 0b9a4c40bd2..a6b29a39e3c 100644 --- a/modular_nova/master_files/code/modules/jobs/prisoner.dm +++ b/modular_nova/master_files/code/modules/jobs/prisoner.dm @@ -4,7 +4,7 @@ var/implants_removed = 0 var/implants_total = 0 - for(var/obj/item/organ/internal/cyberimp/cybernetic in new_prisoner.organs) + for(var/obj/item/organ/cyberimp/cybernetic in new_prisoner.organs) implants_total += 1 if (cybernetic.cannot_confiscate) continue diff --git a/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm b/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm index 08995e8be21..266f525dc98 100644 --- a/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm +++ b/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/monster_core/try_apply(atom/target, mob/user) +/obj/item/organ/monster_core/try_apply(atom/target, mob/user) if (istype(target, /obj/structure/lavaland/ash_walker)) target.attackby(src, user) return diff --git a/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm b/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm index 85028e2a910..b605cae46d0 100644 --- a/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm @@ -34,7 +34,7 @@ if(PREVIEW_PREF_NAKED) mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS | UNDERWEAR_HIDE_BRA for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS)) - var/obj/item/organ/external/genital/gent = mannequin.get_organ_slot(organ_key) + var/obj/item/organ/genital/gent = mannequin.get_organ_slot(organ_key) if(gent) gent.aroused = AROUSAL_NONE gent.update_sprite_suffix() @@ -42,7 +42,7 @@ if(PREVIEW_PREF_NAKED_AROUSED) mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS | UNDERWEAR_HIDE_BRA for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS)) - var/obj/item/organ/external/genital/gent = mannequin.get_organ_slot(organ_key) + var/obj/item/organ/genital/gent = mannequin.get_organ_slot(organ_key) if(gent) gent.aroused = AROUSAL_FULL gent.update_sprite_suffix() diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/death.dm b/modular_nova/master_files/code/modules/mob/living/carbon/death.dm index b96b7ce57c3..6e31008fec3 100644 --- a/modular_nova/master_files/code/modules/mob/living/carbon/death.dm +++ b/modular_nova/master_files/code/modules/mob/living/carbon/death.dm @@ -7,7 +7,7 @@ organs.Remove(organ) // synth brains always drop when gibbed, by default - var/obj/item/organ/internal/brain/synth/synth_brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/synth/synth_brain = get_organ_slot(ORGAN_SLOT_BRAIN) if(istype(synth_brain)) drop_bitflags |= DROP_BRAIN diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm b/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm index 92412c82785..7e416865a7a 100644 --- a/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm +++ b/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm @@ -1,8 +1,8 @@ #define SHELL_TRANSPARENCY_ALPHA 90 /datum/species/snail - mutantliver = /obj/item/organ/internal/liver/snail //This is just a better liver to deal with toxins, it's a thematic thing. - mutantheart = /obj/item/organ/internal/heart/snail //This gives them the shell buff where they take less damage from behind, and their heart's more durable. + mutantliver = /obj/item/organ/liver/snail //This is just a better liver to deal with toxins, it's a thematic thing. + mutantheart = /obj/item/organ/heart/snail //This gives them the shell buff where they take less damage from behind, and their heart's more durable. exotic_blood = null /datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load) diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm b/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm index d7b16d45d49..1e787fdfc15 100644 --- a/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm +++ b/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm @@ -4,7 +4,7 @@ var/t_He = p_They() var/t_is = p_are() //This checks to see if the body is revivable - if((key || !get_organ_by_type(/obj/item/organ/internal/brain) || ghost?.can_reenter_corpse) && (!HAS_TRAIT(src, TRAIT_DNR))) + if((key || !get_organ_by_type(/obj/item/organ/brain) || ghost?.can_reenter_corpse) && (!HAS_TRAIT(src, TRAIT_DNR))) return span_deadsay("[t_He] [t_is] limp and unresponsive; they're still twitching on occasion, perhaps [p_they()] can still be saved..!") else return span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life and they've degraded beyond revival...") diff --git a/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm b/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm index 9a3dd0e95a3..bab02052a8f 100644 --- a/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm +++ b/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm @@ -17,7 +17,7 @@ /datum/design/tongue/snail name = "Snail Tongue" id = "snailtongue" - build_path = /obj/item/organ/internal/tongue/snail + build_path = /obj/item/organ/tongue/snail category = list( SPECIES_SNAIL, RND_CATEGORY_INITIAL, @@ -26,7 +26,7 @@ /datum/design/liver/snail name = "Snail Liver" id = "snailliver" - build_path = /obj/item/organ/internal/liver/snail + build_path = /obj/item/organ/liver/snail category = list( SPECIES_SNAIL, RND_CATEGORY_INITIAL, @@ -35,7 +35,7 @@ /datum/design/heart/snail name = "Snail Heart" id = "snailheart" - build_path = /obj/item/organ/internal/heart/snail + build_path = /obj/item/organ/heart/snail category = list( SPECIES_SNAIL, RND_CATEGORY_INITIAL, diff --git a/modular_nova/master_files/code/modules/research/designs/medical_designs.dm b/modular_nova/master_files/code/modules/research/designs/medical_designs.dm index c2beb545386..ad1d985ef18 100644 --- a/modular_nova/master_files/code/modules/research/designs/medical_designs.dm +++ b/modular_nova/master_files/code/modules/research/designs/medical_designs.dm @@ -9,7 +9,7 @@ /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, ) - build_path = /obj/item/organ/internal/tongue/cybernetic + build_path = /obj/item/organ/tongue/cybernetic category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1, ) @@ -19,4 +19,4 @@ name = "Forked Cybernetic Tongue" desc = "A forked cybernetic tongue." id = "cybernetic_tongue_lizard" - build_path = /obj/item/organ/internal/tongue/lizard/cybernetic + build_path = /obj/item/organ/tongue/lizard/cybernetic diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm b/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm index 61851d2eba1..c6cfcda79c7 100644 --- a/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm +++ b/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm @@ -1,11 +1,11 @@ -/obj/item/organ/external/antennae +/obj/item/organ/antennae -/obj/item/organ/external/antennae/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/antennae/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(ismoth(organ_owner)) ADD_TRAIT(organ_owner, TRAIT_REAGENT_SCANNER, ORGAN_TRAIT) -/obj/item/organ/external/antennae/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/antennae/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() REMOVE_TRAIT(organ_owner, TRAIT_REAGENT_SCANNER, ORGAN_TRAIT) diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm b/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm index 49d2bf5c752..1fe2fce11f4 100644 --- a/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm +++ b/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm @@ -1,3 +1,3 @@ // No free fall softening for everyone - but functional wings get it -/obj/item/organ/external/wings/functional/can_soften_fall() +/obj/item/organ/wings/functional/can_soften_fall() return TRUE diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm b/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm index b975cac1d6b..0f6afee5ae9 100644 --- a/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm +++ b/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm @@ -1,3 +1,3 @@ // No free fall softening for everyone -/obj/item/organ/external/wings/functional/can_soften_fall() +/obj/item/organ/wings/functional/can_soften_fall() return FALSE diff --git a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm index 0e82f86e4d0..a078228dcff 100644 --- a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm +++ b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/appendix/become_inflamed() +/obj/item/organ/appendix/become_inflamed() if(!engaged_role_play_check(owner, station = TRUE, dorms = TRUE)) return diff --git a/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm index c17bd25da42..239f2155d30 100644 --- a/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm +++ b/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm @@ -1,3 +1,3 @@ -/obj/item/organ/internal/cyberimp +/obj/item/organ/cyberimp /// If TRUE, this augment cannot be confiscated at roundstart for roles like prisoner, etc. var/cannot_confiscate diff --git a/modular_nova/master_files/code/modules/surgery/organs/tongue.dm b/modular_nova/master_files/code/modules/surgery/organs/tongue.dm index 301247b5e51..b749c42433c 100644 --- a/modular_nova/master_files/code/modules/surgery/organs/tongue.dm +++ b/modular_nova/master_files/code/modules/surgery/organs/tongue.dm @@ -1,3 +1,3 @@ // Remove the could_speak_language check from the tongue code. This is a much better solution than trying to grant omnitongue on prefs load, and prevents any funny breakages. -/obj/item/organ/internal/tongue/could_speak_language(datum/language/language_path) +/obj/item/organ/tongue/could_speak_language(datum/language/language_path) return TRUE diff --git a/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm b/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm index 1ade5dc4be4..97bdb284f0f 100644 --- a/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm +++ b/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm @@ -3,14 +3,14 @@ //this is for revitalizing/preserving regen cores /obj/structure/lavaland/ash_walker/attackby(obj/item/attacking_item, mob/living/user, params) - if(!istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core)) + if(!istype(attacking_item, /obj/item/organ/monster_core/regenerative_core)) return ..() if(!user.mind.has_antag_datum(/datum/antagonist/ashwalker)) balloon_alert(user, "must be an ashwalker!") return - var/obj/item/organ/internal/monster_core/regenerative_core/regen_core = attacking_item + var/obj/item/organ/monster_core/regenerative_core/regen_core = attacking_item if(!regen_core.decay_timer) balloon_alert(user, "organ already revitalized!") diff --git a/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm b/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm index 284e052bfc5..5a71966fb0e 100644 --- a/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm +++ b/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm @@ -96,11 +96,11 @@ desc = "Summon a staff that is imbued with the power of the tendril. Requires permission from the mother tendril." required_components = list( "north" = /obj/item/stack/sheet/mineral/wood, - "south" = /obj/item/organ/internal/monster_core/regenerative_core, + "south" = /obj/item/organ/monster_core/regenerative_core, ) consumed_components = list( /obj/item/stack/sheet/mineral/wood, - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, ) ritual_success_items = list( /obj/item/ash_staff, @@ -112,13 +112,13 @@ desc = "Summons a necklace that imbues the wearer with the knowledge of our tongue." required_components = list( "north" = /obj/item/stack/sheet/bone, - "south" = /obj/item/organ/internal/monster_core/regenerative_core, + "south" = /obj/item/organ/monster_core/regenerative_core, "east" = /obj/item/stack/sheet/sinew, "west" = /obj/item/stack/sheet/sinew, ) consumed_components = list( /obj/item/stack/sheet/bone, - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /obj/item/stack/sheet/sinew, ) ritual_success_items = list( @@ -147,13 +147,13 @@ name = "Summon Cursed Ash Knife" desc = "Summons a knife that places a tracking curse on unsuspecting miners who destroy our marked tendrils." required_components = list( - "north" = /obj/item/organ/internal/monster_core/regenerative_core, + "north" = /obj/item/organ/monster_core/regenerative_core, "south" = /obj/item/forging/reagent_weapon/dagger, "east" = /obj/item/stack/sheet/bone, "west" = /obj/item/stack/sheet/sinew, ) consumed_components = list( - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /obj/item/forging/reagent_weapon/dagger, /obj/item/stack/sheet/bone, /obj/item/stack/sheet/sinew, @@ -167,13 +167,13 @@ name = "Summon Tendril Seed" desc = "Summons a seed that, when used in the hand, will cause a tendril to come through at your location." required_components = list( - "north" = /obj/item/organ/internal/monster_core/regenerative_core, + "north" = /obj/item/organ/monster_core/regenerative_core, "south" = /obj/item/cursed_dagger, "east" = /obj/item/crusher_trophy/goliath_tentacle, "west" = /obj/item/crusher_trophy/watcher_wing, ) consumed_components = list( - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /obj/item/cursed_dagger, /obj/item/crusher_trophy/goliath_tentacle, /obj/item/crusher_trophy/watcher_wing, @@ -237,13 +237,13 @@ desc = "Those who partake in the ceremony and are ready will age, increasing their value to the kin." required_components = list( "north" = /mob/living/carbon/human, - "south" = /obj/item/organ/internal/monster_core/regenerative_core, + "south" = /obj/item/organ/monster_core/regenerative_core, "east" = /obj/item/stack/sheet/bone, "west" = /obj/item/stack/sheet/sinew, ) consumed_components = list( /mob/living/carbon/human, - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /obj/item/stack/sheet/bone, /obj/item/stack/sheet/sinew, ) @@ -258,13 +258,13 @@ name = "Summon Lavaland Creature" desc = "Summons a random, wild monster from another region in space." required_components = list( - "north" = /obj/item/organ/internal/monster_core/regenerative_core, + "north" = /obj/item/organ/monster_core/regenerative_core, "south" = /mob/living/basic/mining/ice_whelp, "east" = /obj/item/stack/ore/bluespace_crystal, "west" = /obj/item/stack/ore/bluespace_crystal, ) consumed_components = list( - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /mob/living/basic/mining/ice_whelp, /obj/item/stack/ore/bluespace_crystal, ) @@ -285,13 +285,13 @@ name = "Summon Icemoon Creature" desc = "Summons a random, wild monster from another region in space." required_components = list( - "north" = /obj/item/organ/internal/monster_core/regenerative_core, + "north" = /obj/item/organ/monster_core/regenerative_core, "south" = /obj/item/food/grown/surik, "east" = /obj/item/stack/ore/bluespace_crystal, "west" = /obj/item/stack/ore/bluespace_crystal, ) consumed_components = list( - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /obj/item/food/grown/surik, /obj/item/stack/ore/bluespace_crystal, ) @@ -422,13 +422,13 @@ name = "Revive Animal" desc = "Revives a simple animal that will then become friendly." required_components = list( - "north" = /obj/item/organ/internal/monster_core/regenerative_core, - "south" = /obj/item/organ/internal/monster_core/regenerative_core, + "north" = /obj/item/organ/monster_core/regenerative_core, + "south" = /obj/item/organ/monster_core/regenerative_core, "east" = /obj/item/stack/sheet/bone, "west" = /obj/item/stack/sheet/sinew, ) consumed_components = list( - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /obj/item/stack/sheet/bone, /obj/item/stack/sheet/sinew, ) @@ -486,13 +486,13 @@ desc = "Pacifies creatures in the wastes to come to your aide instead, the tradeoff being your ability to fight." required_components = list( "north" = /obj/item/food/grown/ash_flora/fireblossom, - "south" = /obj/item/organ/internal/monster_core/regenerative_core, + "south" = /obj/item/organ/monster_core/regenerative_core, "east" = /obj/item/stack/sheet/sinew, "west" = /obj/item/stack/sheet/sinew, ) consumed_components = list( /obj/item/food/grown/ash_flora/fireblossom, - /obj/item/organ/internal/monster_core/regenerative_core, + /obj/item/organ/monster_core/regenerative_core, /obj/item/stack/sheet/sinew, ) diff --git a/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm b/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm index 88c255a8f2d..aa76162c67d 100644 --- a/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm +++ b/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm @@ -1,5 +1,5 @@ /datum/species/lizard/ashwalker - mutanteyes = /obj/item/organ/internal/eyes/night_vision/ashwalker + mutanteyes = /obj/item/organ/eyes/night_vision/ashwalker bodypart_overrides = list( BODY_ZONE_HEAD = /obj/item/bodypart/head/lizard/ashwalker, BODY_ZONE_CHEST = /obj/item/bodypart/chest/lizard/ashwalker, diff --git a/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm b/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm index 24395e3e0f1..1b4f6d2c87c 100644 --- a/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm +++ b/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm @@ -41,10 +41,10 @@ /obj/effect/spawner/random/astrum/agent_loot name = "abductor agent loot" - loot = list(/obj/item/organ/internal/heart/cybernetic/tier3 = 10, + loot = list(/obj/item/organ/heart/cybernetic/tier3 = 10, /obj/item/clothing/suit/armor/abductor/astrum = 10, /obj/item/clothing/head/helmet/astrum = 10, - /obj/item/organ/internal/cyberimp/arm/armblade = 5, + /obj/item/organ/cyberimp/arm/armblade = 5, /obj/effect/gibspawner/generic = 10, - /obj/item/organ/internal/eyes/alien = 5, + /obj/item/organ/eyes/alien = 5, ) diff --git a/modular_nova/modules/better_vox/code/vox_species.dm b/modular_nova/modules/better_vox/code/vox_species.dm index 7c708b68616..bdc2f510041 100644 --- a/modular_nova/modules/better_vox/code/vox_species.dm +++ b/modular_nova/modules/better_vox/code/vox_species.dm @@ -11,11 +11,11 @@ TRAIT_MUTANT_COLORS, ) inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID - mutantlungs = /obj/item/organ/internal/lungs/nitrogen/vox - mutantbrain = /obj/item/organ/internal/brain/vox + mutantlungs = /obj/item/organ/lungs/nitrogen/vox + mutantbrain = /obj/item/organ/brain/vox breathid = "n2" mutant_bodyparts = list() - mutanttongue = /obj/item/organ/internal/tongue/vox + mutanttongue = /obj/item/organ/tongue/vox payday_modifier = 1.0 outfit_important_for_life = /datum/outfit/vox species_language_holder = /datum/language_holder/vox diff --git a/modular_nova/modules/bodyparts/code/moth_bodyparts.dm b/modular_nova/modules/bodyparts/code/moth_bodyparts.dm index 6fff98d0a7d..1f870b0a9d2 100644 --- a/modular_nova/modules/bodyparts/code/moth_bodyparts.dm +++ b/modular_nova/modules/bodyparts/code/moth_bodyparts.dm @@ -14,7 +14,7 @@ icon_state = "moth_chest_m" limb_id = SPECIES_MOTH is_dimorphic = TRUE - wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra) + wing_types = list(/obj/item/organ/wings/functional/moth/megamoth, /obj/item/organ/wings/functional/moth/mothra) bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER) /obj/item/bodypart/chest/moth/get_butt_sprite() diff --git a/modular_nova/modules/cargo/code/goodies.dm b/modular_nova/modules/cargo/code/goodies.dm index 96ac565db88..43e19cdfbde 100644 --- a/modular_nova/modules/cargo/code/goodies.dm +++ b/modular_nova/modules/cargo/code/goodies.dm @@ -142,7 +142,7 @@ desc = "Contains a single standard NIF by itself, surgery is required." cost = CARGO_CRATE_VALUE * 15 contains = list( - /obj/item/organ/internal/cyberimp/brain/nif/standard, + /obj/item/organ/cyberimp/brain/nif/standard, ) /datum/supply_pack/goody/cheap_nif @@ -150,7 +150,7 @@ desc = "Contains a single Econo-Deck NIF by itself, surgery is required." cost = CARGO_CRATE_VALUE * 7.5 contains = list( - /obj/item/organ/internal/cyberimp/brain/nif/roleplay_model, + /obj/item/organ/cyberimp/brain/nif/roleplay_model, ) /datum/supply_pack/goody/nif_repair_kit diff --git a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm index e165fd476cd..bc6d28aea04 100644 --- a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm +++ b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm @@ -253,20 +253,20 @@ /datum/armament_entry/company_import/deforest/cyber_implants/razorwire name = "Razorwire Spool Implant" - item_type = /obj/item/organ/internal/cyberimp/arm/razorwire + item_type = /obj/item/organ/cyberimp/arm/razorwire /datum/armament_entry/company_import/deforest/cyber_implants/shell_launcher name = "Shell Launch System Implant" - item_type = /obj/item/organ/internal/cyberimp/arm/shell_launcher + item_type = /obj/item/organ/cyberimp/arm/shell_launcher /datum/armament_entry/company_import/deforest/cyber_implants/sandy name = "Qani-Laaca Sensory Computer Implant" - item_type = /obj/item/organ/internal/cyberimp/sensory_enhancer + item_type = /obj/item/organ/cyberimp/sensory_enhancer cost = PAYCHECK_COMMAND * 5 /datum/armament_entry/company_import/deforest/cyber_implants/hackerman name = "Binyat Wireless Hacking System Implant" - item_type = /obj/item/organ/internal/cyberimp/hackerman_deck + item_type = /obj/item/organ/cyberimp/hackerman_deck cost = PAYCHECK_COMMAND * 10 // Modsuit Modules from the medical category, here instead of in Nakamura because nobody buys from this company diff --git a/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm b/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm index 0298696b7ef..7dfffbc3394 100644 --- a/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm +++ b/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm @@ -1,29 +1,29 @@ /obj/item/storage/organbox/advanced_cyber_eyes /obj/item/storage/organbox/advanced_cyber_eyes/PopulateContents() - new /obj/item/organ/internal/eyes/robotic/shield(src) + new /obj/item/organ/eyes/robotic/shield(src) /obj/item/storage/organbox/advanced_cyber_ears /obj/item/storage/organbox/advanced_cyber_ears/PopulateContents() - new /obj/item/organ/internal/ears/cybernetic/upgraded(src) + new /obj/item/organ/ears/cybernetic/upgraded(src) /obj/item/storage/organbox/advanced_cyber_heart /obj/item/storage/organbox/advanced_cyber_heart/PopulateContents() - new /obj/item/organ/internal/heart/cybernetic/tier3(src) + new /obj/item/organ/heart/cybernetic/tier3(src) /obj/item/storage/organbox/advanced_cyber_liver /obj/item/storage/organbox/advanced_cyber_liver/PopulateContents() - new /obj/item/organ/internal/liver/cybernetic/tier3(src) + new /obj/item/organ/liver/cybernetic/tier3(src) /obj/item/storage/organbox/advanced_cyber_lungs /obj/item/storage/organbox/advanced_cyber_lungs/PopulateContents() - new /obj/item/organ/internal/lungs/cybernetic/tier3(src) + new /obj/item/organ/lungs/cybernetic/tier3(src) /obj/item/storage/organbox/advanced_cyber_stomach /obj/item/storage/organbox/advanced_cyber_stomach/PopulateContents() - new /obj/item/organ/internal/stomach/cybernetic/tier3(src) + new /obj/item/organ/stomach/cybernetic/tier3(src) diff --git a/modular_nova/modules/cortical_borer/code/cortical_borer.dm b/modular_nova/modules/cortical_borer/code/cortical_borer.dm index f754f62de3b..c88aa15e135 100644 --- a/modular_nova/modules/cortical_borer/code/cortical_borer.dm +++ b/modular_nova/modules/cortical_borer/code/cortical_borer.dm @@ -32,27 +32,27 @@ GLOBAL_LIST_EMPTY(cortical_borers) return FALSE //so if a person is debrained, the borer is removed -/obj/item/organ/internal/brain/Remove(mob/living/carbon/target, special = FALSE, movement_flags) +/obj/item/organ/brain/Remove(mob/living/carbon/target, special = FALSE, movement_flags) . = ..() var/mob/living/basic/cortical_borer/cb_inside = target.has_borer() if(cb_inside) cb_inside.leave_host() //borers also create an organ, so you dont need to debrain someone -/obj/item/organ/internal/borer_body +/obj/item/organ/borer_body name = "engorged cortical borer" desc = "the body of a cortical borer, full of human viscera, blood, and more." zone = BODY_ZONE_HEAD /// Ref to the borer who this organ belongs to var/mob/living/basic/cortical_borer/borer -/obj/item/organ/internal/borer_body/Destroy() +/obj/item/organ/borer_body/Destroy() borer = null if(owner && HAS_TRAIT_FROM(owner, TRAIT_WEATHER_IMMUNE, "borer_in_host")) REMOVE_TRAIT(owner, TRAIT_WEATHER_IMMUNE, "borer_in_host") return ..() -/obj/item/organ/internal/borer_body/mob_insert(mob/living/carbon/carbon_target, special, movement_flags) +/obj/item/organ/borer_body/mob_insert(mob/living/carbon/carbon_target, special, movement_flags) . = ..() for(var/datum/borer_focus/body_focus as anything in borer.body_focuses) body_focus.on_add() @@ -60,7 +60,7 @@ GLOBAL_LIST_EMPTY(cortical_borers) ADD_TRAIT(carbon_target, TRAIT_WEATHER_IMMUNE, "borer_in_host") //on removal, force the borer out -/obj/item/organ/internal/borer_body/mob_remove(mob/living/carbon/carbon_target, special) +/obj/item/organ/borer_body/mob_remove(mob/living/carbon/carbon_target, special) . = ..() var/mob/living/basic/cortical_borer/cb_inside = carbon_target.has_borer() for(var/datum/borer_focus/body_focus as anything in cb_inside.body_focuses) @@ -251,7 +251,7 @@ GLOBAL_LIST_EMPTY(cortical_borers) /mob/living/basic/cortical_borer/Destroy() if(human_host) if(human_host.organs) - var/obj/item/organ/internal/borer_body/borer_organ = locate() in human_host.organs + var/obj/item/organ/borer_body/borer_organ = locate() in human_host.organs borer_organ.Remove(human_host) if(HAS_TRAIT_FROM(human_host, TRAIT_WEATHER_IMMUNE, "borer_in_host")) REMOVE_TRAIT(human_host, TRAIT_WEATHER_IMMUNE, "borer_in_host") @@ -378,7 +378,7 @@ GLOBAL_LIST_EMPTY(cortical_borers) /mob/living/basic/cortical_borer/proc/leave_host() if(!human_host) return - var/obj/item/organ/internal/borer_body/borer_organ = locate() in human_host.organs + var/obj/item/organ/borer_body/borer_organ = locate() in human_host.organs if(borer_organ) borer_organ.Remove(human_host) var/turf/human_turf = get_turf(human_host) diff --git a/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm b/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm index 96eeba9e478..4006e93c13b 100644 --- a/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm +++ b/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm @@ -298,7 +298,7 @@ cortical_owner.chemical_evolution -= chemical_evo_points cortical_owner.known_chemicals += reagent_choice.type cortical_owner.blood_chems_learned++ - var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) if(victim_brain) cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5 * cortical_owner.host_harm_multiplier) if(cortical_owner.blood_chems_learned == BLOOD_CHEM_OBJECTIVE) @@ -335,7 +335,7 @@ cortical_owner.chemical_evolution -= chemical_evo_points cortical_owner.known_chemicals += reagent_choice cortical_owner.potential_chemicals -= reagent_choice - var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) if(victim_brain) cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5 * cortical_owner.host_harm_multiplier) owner.balloon_alert(owner, "[initial(reagent_choice.name)] learned") @@ -366,7 +366,7 @@ cortical_owner.max_chemical_storage += cortical_owner.chem_storage_per_level cortical_owner.chemical_regen += cortical_owner.chem_regen_per_level cortical_owner.level += 1 - var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) if(victim_brain) cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10 * cortical_owner.host_harm_multiplier) cortical_owner.human_host.adjust_eye_blur(6 SECONDS * cortical_owner.host_harm_multiplier) //about 12 seconds' worth by default @@ -499,7 +499,7 @@ owner.balloon_alert(owner, "detached from host") if(!(cortical_owner.upgrade_flags & BORER_STEALTH_MODE)) to_chat(cortical_owner.human_host, span_notice("Something carefully tickles your inner ear...")) - var/obj/item/organ/internal/borer_body/borer_organ = locate() in cortical_owner.human_host.organs + var/obj/item/organ/borer_body/borer_organ = locate() in cortical_owner.human_host.organs //log the interaction var/turf/human_turfone = get_turf(cortical_owner.human_host) var/logging_text = "[key_name(cortical_owner)] left [key_name(cortical_owner.human_host)] at [loc_name(human_turfone)]" @@ -567,7 +567,7 @@ if(!(cortical_owner.upgrade_flags & BORER_STEALTH_MODE)) to_chat(cortical_owner.human_host, span_notice("A chilling sensation goes down your spine...")) cortical_owner.copy_languages(cortical_owner.human_host) - var/obj/item/organ/internal/borer_body/borer_organ = new(cortical_owner.human_host) + var/obj/item/organ/borer_body/borer_organ = new(cortical_owner.human_host) borer_organ.borer = owner borer_organ.Insert(cortical_owner.human_host) var/turf/human_turftwo = get_turf(cortical_owner.human_host) @@ -615,7 +615,7 @@ borer_message = sanitize(borer_message) var/mob/living/carbon/human/cortical_host = cortical_owner.human_host to_chat(cortical_host, span_boldwarning("Your voice moves without your permission!")) - var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) if(victim_brain) cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * cortical_owner.host_harm_multiplier) cortical_host.say(message = borer_message, forced = TRUE) @@ -646,7 +646,7 @@ StartCooldown() return produce_egg() - var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN) if(victim_brain) cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 25 * cortical_owner.host_harm_multiplier) var/eggroll = rand(1,100) @@ -718,8 +718,9 @@ cortical_owner.human_host.adjustOxyLoss(-(cortical_owner.human_host.getOxyLoss()*0.5)) if(cortical_owner.human_host.blood_volume < BLOOD_VOLUME_BAD) cortical_owner.human_host.blood_volume = BLOOD_VOLUME_BAD - for(var/obj/item/organ/internal/internal_target in cortical_owner.human_host.organs) - internal_target.apply_organ_damage(-internal_target.damage * 0.5) + for(var/obj/item/organ/internal_target in cortical_owner.human_host.organs) + if(!(internal_target.organ_flags & ORGAN_EXTERNAL)) + internal_target.apply_organ_damage(-internal_target.damage * 0.5) cortical_owner.human_host.revive() to_chat(cortical_owner.human_host, span_boldwarning("Your heart jumpstarts!")) owner.balloon_alert(owner, "host revived") @@ -813,8 +814,8 @@ cortical_owner.chemical_storage -= chemical_cost var/turf/borer_turf = get_turf(cortical_owner) var/obj/item/bodypart/chest/chest = cortical_owner.human_host.get_bodypart(BODY_ZONE_CHEST) - if((!chest || IS_ORGANIC_LIMB(chest)) && !cortical_owner.human_host.get_organ_by_type(/obj/item/organ/internal/empowered_borer_egg)) - var/obj/item/organ/internal/empowered_borer_egg/spawned_egg = new(cortical_owner.human_host) + if((!chest || IS_ORGANIC_LIMB(chest)) && !cortical_owner.human_host.get_organ_by_type(/obj/item/organ/empowered_borer_egg)) + var/obj/item/organ/empowered_borer_egg/spawned_egg = new(cortical_owner.human_host) spawned_egg.generation = (cortical_owner.generation + 1) cortical_owner.children_produced += 1 diff --git a/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm b/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm index 25f8bae9f0e..03fb02548e5 100644 --- a/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm +++ b/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/empowered_borer_egg +/obj/item/organ/empowered_borer_egg name = "strange egg" desc = "All slimy and yuck." icon_state = "innards" // not like you'll be seeing this anyway @@ -10,26 +10,26 @@ /// What generation the egg will be var/generation = 1 -/obj/item/organ/internal/empowered_borer_egg/on_find(mob/living/finder) +/obj/item/organ/empowered_borer_egg/on_find(mob/living/finder) ..() to_chat(finder, span_warning("You found an unknown egg in [owner]'s [zone]!")) -/obj/item/organ/internal/empowered_borer_egg/Initialize(mapload) +/obj/item/organ/empowered_borer_egg/Initialize(mapload) . = ..() if(iscarbon(loc)) Insert(loc) -/obj/item/organ/internal/empowered_borer_egg/mob_insert(mob/living/carbon/M, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/empowered_borer_egg/mob_insert(mob/living/carbon/M, special = FALSE, movement_flags = DELETE_IF_REPLACED) ..() addtimer(CALLBACK(src, PROC_REF(try_burst)), burst_time) -/obj/item/organ/internal/empowered_borer_egg/mob_remove(mob/living/carbon/M, special = FALSE) +/obj/item/organ/empowered_borer_egg/mob_remove(mob/living/carbon/M, special = FALSE) . = ..() visible_message(span_warning(span_italics("As [src] is cut out of [M], it quickly vibrates and shatters, leaving nothing but some goop!"))) new/obj/effect/decal/cleanable/food/egg_smudge(get_turf(src)) qdel(src) -/obj/item/organ/internal/empowered_borer_egg/proc/try_burst() +/obj/item/organ/empowered_borer_egg/proc/try_burst() if(!owner) qdel(src) return diff --git a/modular_nova/modules/cryosleep/code/cryopod.dm b/modular_nova/modules/cryosleep/code/cryopod.dm index 410b01fa061..84fb9f562b2 100644 --- a/modular_nova/modules/cryosleep/code/cryopod.dm +++ b/modular_nova/modules/cryosleep/code/cryopod.dm @@ -415,7 +415,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod, 32) // Allows players to cryo others. Checks if they have been AFK for 30 minutes. if(target.key && user != target) - if (target.get_organ_by_type(/obj/item/organ/internal/brain) ) //Target the Brain + if (target.get_organ_by_type(/obj/item/organ/brain) ) //Target the Brain if(!target.mind || target.ssd_indicator ) // Is the character empty / AI Controlled if(target.lastclienttime + ssd_time >= world.time) to_chat(user, span_notice("You can't put [target] into [src] for another [round(((ssd_time - (world.time - target.lastclienttime)) / (1 MINUTES)), 1)] minutes.")) diff --git a/modular_nova/modules/customization/datums/components/crafting/recipes.dm b/modular_nova/modules/customization/datums/components/crafting/recipes.dm index 9d88e61442a..fcc9f2665c2 100644 --- a/modular_nova/modules/customization/datums/components/crafting/recipes.dm +++ b/modular_nova/modules/customization/datums/components/crafting/recipes.dm @@ -1,10 +1,10 @@ /datum/crafting_recipe/food/haggis name = "Haggis" reqs = list( - /obj/item/organ/internal/heart = 1, - /obj/item/organ/internal/liver = 1, - /obj/item/organ/internal/lungs = 1, - /obj/item/organ/internal/stomach = 1, + /obj/item/organ/heart = 1, + /obj/item/organ/liver = 1, + /obj/item/organ/lungs = 1, + /obj/item/organ/stomach = 1, /obj/item/food/grown/onion = 1, /obj/item/food/grown/oat = 1, /datum/reagent/consumable/salt = 1, diff --git a/modular_nova/modules/customization/datums/dna.dm b/modular_nova/modules/customization/datums/dna.dm index f504fa1ced6..8882b93ebd6 100644 --- a/modular_nova/modules/customization/datums/dna.dm +++ b/modular_nova/modules/customization/datums/dna.dm @@ -201,11 +201,8 @@ GLOBAL_LIST_EMPTY(total_uf_len_by_block) set_facial_haircolor(sanitize_hexcolor(get_uni_identity_block(structure, DNA_FACIAL_HAIR_COLOR_BLOCK)), update = FALSE) if(eyeorgancolor_update) - var/obj/item/organ/internal/eyes/eye_organ = get_organ_slot(ORGAN_SLOT_EYES) - eye_organ.eye_color_left = eye_color_left - eye_organ.eye_color_right = eye_color_right - eye_organ.old_eye_color_left = eye_color_left - eye_organ.old_eye_color_right = eye_color_right + add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) + add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) if(HAS_TRAIT(src, TRAIT_SHAVED)) set_facial_hairstyle("Shaved", update = FALSE) diff --git a/modular_nova/modules/customization/modules/client/augment/implants.dm b/modular_nova/modules/customization/modules/client/augment/implants.dm index 2f9db87a664..3ae6450845a 100644 --- a/modular_nova/modules/customization/modules/client/augment/implants.dm +++ b/modular_nova/modules/customization/modules/client/augment/implants.dm @@ -18,7 +18,7 @@ /datum/augment_item/implant/chest/nutriment_pump name = "Nutriment Pump" cost = 4 - path = /obj/item/organ/internal/cyberimp/chest/nutriment + path = /obj/item/organ/cyberimp/chest/nutriment //LEFT ARM IMPLANTS /datum/augment_item/implant/l_arm @@ -26,62 +26,62 @@ /datum/augment_item/implant/l_arm/charging_implant name = "Left Charging Cord Implant" - path = /obj/item/organ/internal/cyberimp/arm/power_cord/left_arm + path = /obj/item/organ/cyberimp/arm/power_cord/left_arm /datum/augment_item/implant/l_arm/civilian_lighter name = "Left Thumbtip Lighter" cost = 2 - path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm + path = /obj/item/organ/cyberimp/arm/civilian_lighter/left_arm /datum/augment_item/implant/l_arm/razor_claws name = "Left Razor Claws (Knife + Wirecutters)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm + path = /obj/item/organ/cyberimp/arm/razor_claws/left_arm /datum/augment_item/implant/l_arm/adjuster name = "Left Adjuster Implant (Screwdriver + Wrench)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/adjuster/left_arm + path = /obj/item/organ/cyberimp/arm/adjuster/left_arm /datum/augment_item/implant/l_arm/bureaucracy name = "Left Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm + path = /obj/item/organ/cyberimp/arm/bureaucracy/left_arm /datum/augment_item/implant/l_arm/cargo name = "Left FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/cargo/left_arm + path = /obj/item/organ/cyberimp/arm/cargo/left_arm /datum/augment_item/implant/l_arm/civilian_barstaff name = "Left Waitstaff's Toolset Implant (Serving Tray + Rag)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm + path = /obj/item/organ/cyberimp/arm/civilian_barstaff/left_arm /datum/augment_item/implant/l_arm/emt_triage name = "Left Triage Actuator Implant (Drapes + Retractor + Hemostat)" cost = 6 - path = /obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm + path = /obj/item/organ/cyberimp/arm/emt_triage/left_arm /datum/augment_item/implant/l_arm/blacksteel_forging name = "Left Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)" cost = 6 - path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm + path = /obj/item/organ/cyberimp/arm/blacksteel_forging/left_arm /datum/augment_item/implant/l_arm/arc_welder name = "Left Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)" cost = 6 - path = /obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm + path = /obj/item/organ/cyberimp/arm/arc_welder/left_arm /datum/augment_item/implant/l_arm/electrical_toolset name = "Left Electrical Toolset Implant (Screwdriver + Multitool + Wirecutters)" cost = 8 - path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm + path = /obj/item/organ/cyberimp/arm/electrical_toolset/left_arm /datum/augment_item/implant/l_arm/mining_drill name = "Left Daiba Masterworks 'Burrower' Drill" cost = 8 - path = /obj/item/organ/internal/cyberimp/arm/mining_drill/left_arm + path = /obj/item/organ/cyberimp/arm/mining_drill/left_arm //RIGHT ARM IMPLANTS /datum/augment_item/implant/r_arm @@ -89,62 +89,62 @@ /datum/augment_item/implant/r_arm/charging_implant name = "Right Charging Cord Implant" - path = /obj/item/organ/internal/cyberimp/arm/power_cord/right_arm + path = /obj/item/organ/cyberimp/arm/power_cord/right_arm /datum/augment_item/implant/r_arm/civilian_lighter name = "Right Thumbtip Lighter" cost = 2 - path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm + path = /obj/item/organ/cyberimp/arm/civilian_lighter/right_arm /datum/augment_item/implant/r_arm/razor_claws name = "Right Razor Claws (Knife + Wirecutters)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm + path = /obj/item/organ/cyberimp/arm/razor_claws/right_arm /datum/augment_item/implant/r_arm/adjuster name = "Right Adjuster Implant (Screwdriver + Wrench)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/adjuster/right_arm + path = /obj/item/organ/cyberimp/arm/adjuster/right_arm /datum/augment_item/implant/r_arm/bureaucracy name = "Right Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm + path = /obj/item/organ/cyberimp/arm/bureaucracy/right_arm /datum/augment_item/implant/r_arm/cargo name = "Right FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/cargo/right_arm + path = /obj/item/organ/cyberimp/arm/cargo/right_arm /datum/augment_item/implant/r_arm/civilian_barstaff name = "Right Waitstaff's Toolset Implant (Serving Tray + Rag)" cost = 4 - path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm + path = /obj/item/organ/cyberimp/arm/civilian_barstaff/right_arm /datum/augment_item/implant/r_arm/emt_triage name = "Right Triage Actuator Implant (Drapes + Retractor + Hemostat)" cost = 6 - path = /obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm + path = /obj/item/organ/cyberimp/arm/emt_triage/right_arm /datum/augment_item/implant/r_arm/blacksteel_forging name = "Right Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)" cost = 6 - path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm + path = /obj/item/organ/cyberimp/arm/blacksteel_forging/right_arm /datum/augment_item/implant/r_arm/arc_welder name = "Right Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)" cost = 6 - path = /obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm + path = /obj/item/organ/cyberimp/arm/arc_welder/right_arm /datum/augment_item/implant/r_arm/electrical_toolset name = "Right Electrical Toolset Implant (Screwdriver + Multitool + Wirecutters)" cost = 8 - path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm + path = /obj/item/organ/cyberimp/arm/electrical_toolset/right_arm /datum/augment_item/implant/r_arm/mining_drill name = "Right Daiba Masterworks 'Burrower' Drill" cost = 8 - path = /obj/item/organ/internal/cyberimp/arm/mining_drill/right_arm + path = /obj/item/organ/cyberimp/arm/mining_drill/right_arm //EYES IMPLANTS /datum/augment_item/implant/eyes @@ -157,4 +157,4 @@ /datum/augment_item/implant/mouth/breathing_tube name = "Breathing Tube" cost = 2 - path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube + path = /obj/item/organ/cyberimp/mouth/breathing_tube diff --git a/modular_nova/modules/customization/modules/client/augment/organs.dm b/modular_nova/modules/customization/modules/client/augment/organs.dm index f36feeca16a..ad90326d9bd 100644 --- a/modular_nova/modules/customization/modules/client/augment/organs.dm +++ b/modular_nova/modules/customization/modules/client/augment/organs.dm @@ -17,15 +17,15 @@ /datum/augment_item/organ/heart/normal name = "Organic heart" - path = /obj/item/organ/internal/heart + path = /obj/item/organ/heart /datum/augment_item/organ/heart/cybernetic name = "Cybernetic heart" - path = /obj/item/organ/internal/heart/cybernetic + path = /obj/item/organ/heart/cybernetic /datum/augment_item/organ/heart/synth name = "Hydraulic pump engine" - path =/obj/item/organ/internal/heart/synth + path =/obj/item/organ/heart/synth //LUNGS /datum/augment_item/organ/lungs @@ -34,28 +34,28 @@ /datum/augment_item/organ/lungs/normal name = "Organic lungs" - path = /obj/item/organ/internal/lungs + path = /obj/item/organ/lungs /datum/augment_item/organ/lungs/hot name = "Lungs Adapted to Heat" - path = /obj/item/organ/internal/lungs/hot + path = /obj/item/organ/lungs/hot cost = 1 /datum/augment_item/organ/lungs/cold name = "Cold-Adapted Lungs" - path = /obj/item/organ/internal/lungs/cold + path = /obj/item/organ/lungs/cold cost = 1 /datum/augment_item/organ/lungs/toxin name = "Lungs Adapted to Toxins" - path = /obj/item/organ/internal/lungs/toxin + path = /obj/item/organ/lungs/toxin cost = 1 /datum/augment_item/organ/lungs/oxy name = "Low-Pressure Adapted Lungs" - path = /obj/item/organ/internal/lungs/oxy + path = /obj/item/organ/lungs/oxy cost = 1 /datum/augment_item/organ/lungs/cybernetic name = "Cybernetic lungs" - path = /obj/item/organ/internal/lungs/cybernetic + path = /obj/item/organ/lungs/cybernetic //LIVERS /datum/augment_item/organ/liver @@ -64,15 +64,15 @@ /datum/augment_item/organ/liver/normal name = "Organic Liver" - path = /obj/item/organ/internal/liver + path = /obj/item/organ/liver /datum/augment_item/organ/liver/cybernetic name = "Cybernetic liver" - path = /obj/item/organ/internal/liver/cybernetic + path = /obj/item/organ/liver/cybernetic /datum/augment_item/organ/liver/synth name = "Reagent processing unit" - path = /obj/item/organ/internal/liver/synth + path = /obj/item/organ/liver/synth //STOMACHES /datum/augment_item/organ/stomach @@ -81,19 +81,19 @@ /datum/augment_item/organ/stomach/normal name = "Organic stomach" - path = /obj/item/organ/internal/stomach + path = /obj/item/organ/stomach /datum/augment_item/organ/stomach/cybernetic name = "Cybernetic stomach" - path = /obj/item/organ/internal/stomach/cybernetic + path = /obj/item/organ/stomach/cybernetic /datum/augment_item/organ/stomach/lithovore name = "Lithovore Stomach" - path = /obj/item/organ/internal/stomach/lithovore + path = /obj/item/organ/stomach/lithovore /datum/augment_item/organ/stomach/lithovore/apply(mob/living/carbon/human/H, character_setup = FALSE, datum/preferences/prefs) if(prefs && ("Oversized" in prefs.all_quirks)) - path = /obj/item/organ/internal/stomach/lithovore/oversized + path = /obj/item/organ/stomach/lithovore/oversized return ..() //EYES @@ -103,30 +103,30 @@ /datum/augment_item/organ/eyes/normal name = "Organic eyes" - path = /obj/item/organ/internal/eyes + path = /obj/item/organ/eyes /datum/augment_item/organ/eyes/cybernetic name = "Cybernetic eyes" - path = /obj/item/organ/internal/eyes/robotic + path = /obj/item/organ/eyes/robotic /datum/augment_item/organ/eyes/cybernetic/moth name = "Cybernetic moth eyes" - path = /obj/item/organ/internal/eyes/robotic/moth + path = /obj/item/organ/eyes/robotic/moth /datum/augment_item/organ/eyes/highlumi name = "High-luminosity eyes" - path = /obj/item/organ/internal/eyes/robotic/glow + path = /obj/item/organ/eyes/robotic/glow cost = 1 /datum/augment_item/organ/eyes/highlumi/moth name = "High Luminosity Moth Eyes" - path = /obj/item/organ/internal/eyes/robotic/glow/moth + path = /obj/item/organ/eyes/robotic/glow/moth cost = 1 /datum/augment_item/organ/eyes/binoculars name = "Digital Magnification Optics (x3)" cost = 4 - path = /obj/item/organ/internal/eyes/robotic/binoculars + path = /obj/item/organ/eyes/robotic/binoculars //TONGUES /datum/augment_item/organ/tongue @@ -135,31 +135,31 @@ /datum/augment_item/organ/tongue/normal name = "Organic tongue" - path = /obj/item/organ/internal/tongue/human + path = /obj/item/organ/tongue/human /datum/augment_item/organ/tongue/robo name = "Robotic voicebox" - path = /obj/item/organ/internal/tongue/robot + path = /obj/item/organ/tongue/robot /datum/augment_item/organ/tongue/robo/forked name = "Robotic lizard voicebox" - path = /obj/item/organ/internal/tongue/lizard/robot + path = /obj/item/organ/tongue/lizard/robot /datum/augment_item/organ/tongue/cybernetic name = "Cybernetic tongue" - path = /obj/item/organ/internal/tongue/cybernetic + path = /obj/item/organ/tongue/cybernetic /datum/augment_item/organ/tongue/cybernetic/forked name = "Forked cybernetic tongue" - path = /obj/item/organ/internal/tongue/lizard/cybernetic + path = /obj/item/organ/tongue/lizard/cybernetic /datum/augment_item/organ/tongue/forked name = "Forked tongue" - path = /obj/item/organ/internal/tongue/lizard + path = /obj/item/organ/tongue/lizard /datum/augment_item/organ/tongue/forked/filterless name = "Forked tongue (Without TTS Filter)" - path = /obj/item/organ/internal/tongue/lizard/filterless + path = /obj/item/organ/tongue/lizard/filterless //FF add, for auto-accent for anthropomorphs /datum/augment_item/organ/tongue/cat @@ -178,8 +178,8 @@ /datum/augment_item/organ/ears/normal name = "Organic ears" - path = /obj/item/organ/internal/ears + path = /obj/item/organ/ears /datum/augment_item/organ/ears/cybernetic name = "Cybernetic ears" - path = /obj/item/organ/internal/ears/cybernetic + path = /obj/item/organ/ears/cybernetic diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm index a4a198bad7a..cc8df2056ff 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm @@ -119,7 +119,7 @@ /datum/sprite_accessory/moth_markings key = "moth_markings" generic = "Moth markings" - // organ_type = /obj/item/organ/external/moth_markings // UNCOMMENT THIS IF THEY EVER FIX IT UPSTREAM, CAN'T BE BOTHERED TO FIX IT MYSELF + // organ_type = /obj/item/organ/moth_markings // UNCOMMENT THIS IF THEY EVER FIX IT UPSTREAM, CAN'T BE BOTHERED TO FIX IT MYSELF /datum/sprite_accessory/moth_markings/is_hidden(mob/living/carbon/human/owner) return FALSE @@ -132,7 +132,7 @@ icon = 'modular_nova/master_files/icons/mob/species/podperson_hair.dmi' key = "pod_hair" recommended_species = list(SPECIES_PODPERSON, SPECIES_PODPERSON_WEAK) - organ_type = /obj/item/organ/external/pod_hair + organ_type = /obj/item/organ/pod_hair /datum/sprite_accessory/pod_hair/none name = SPRITE_ACCESSORY_NONE @@ -145,7 +145,7 @@ icon = 'icons/mob/human/species/mush_cap.dmi' relevent_layers = list(BODY_ADJ_LAYER) color_src = USE_ONE_COLOR - organ_type = /obj/item/organ/external/mushroom_cap + organ_type = /obj/item/organ/mushroom_cap genetic = TRUE /datum/sprite_accessory/caps/is_hidden(mob/living/carbon/human/human) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm index 912387a2406..0331162d5a4 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -1,7 +1,7 @@ /datum/sprite_accessory/ears key = "ears" generic = "Ears" - organ_type = /obj/item/organ/internal/ears/mutant + organ_type = /obj/item/organ/ears/mutant relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) color_src = USE_MATRIXED_COLORS genetic = TRUE @@ -42,7 +42,7 @@ /datum/sprite_accessory/ears/mutant icon = 'modular_nova/master_files/icons/mob/sprite_accessory/ears.dmi' - organ_type = /obj/item/organ/internal/ears/mutant + organ_type = /obj/item/organ/ears/mutant color_src = USE_MATRIXED_COLORS recommended_species = list(SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_HUMANOID, SPECIES_GHOUL) uses_emissives = TRUE diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm index cc1ca739b28..657041a02c8 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm @@ -6,7 +6,7 @@ recommended_species = list(SPECIES_MOTH, SPECIES_MAMMAL, SPECIES_INSECT) relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/fluff + organ_type = /obj/item/organ/fluff /datum/sprite_accessory/fluff/moth/none name = SPRITE_ACCESSORY_NONE diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm index eebdc5cf6aa..5e4d7333a4f 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm @@ -4,7 +4,7 @@ default_color = DEFAULT_SECONDARY relevent_layers = list(BODY_ADJ_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/frills + organ_type = /obj/item/organ/frills /datum/sprite_accessory/frills/is_hidden(mob/living/carbon/human/human) if((human.head?.flags_inv & HIDEEARS) || (key in human.try_hide_mutant_parts)) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm index 901cb572bd3..cef6945101b 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm @@ -9,7 +9,7 @@ var/genital_location = GROIN /datum/sprite_accessory/genital/is_hidden(mob/living/carbon/human/target_mob) - var/obj/item/organ/external/genital/badonkers = target_mob?.get_organ_slot(associated_organ_slot) + var/obj/item/organ/genital/badonkers = target_mob?.get_organ_slot(associated_organ_slot) if(!badonkers) return TRUE switch(badonkers.visibility_preference) @@ -57,7 +57,7 @@ /datum/sprite_accessory/genital/penis icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/penis_onmob.dmi' - organ_type = /obj/item/organ/external/genital/penis + organ_type = /obj/item/organ/genital/penis associated_organ_slot = ORGAN_SLOT_PENIS key = ORGAN_SLOT_PENIS color_src = USE_MATRIXED_COLORS @@ -133,7 +133,7 @@ /datum/sprite_accessory/genital/testicles icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/testicles_onmob.dmi' - organ_type = /obj/item/organ/external/genital/testicles + organ_type = /obj/item/organ/genital/testicles associated_organ_slot = ORGAN_SLOT_TESTICLES key = ORGAN_SLOT_TESTICLES always_color_customizable = TRUE @@ -178,7 +178,7 @@ /datum/sprite_accessory/genital/vagina icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/vagina_onmob.dmi' - organ_type = /obj/item/organ/external/genital/vagina + organ_type = /obj/item/organ/genital/vagina associated_organ_slot = ORGAN_SLOT_VAGINA key = ORGAN_SLOT_VAGINA always_color_customizable = TRUE @@ -229,7 +229,7 @@ name = "Cloaca" /datum/sprite_accessory/genital/womb - organ_type = /obj/item/organ/external/genital/womb + organ_type = /obj/item/organ/genital/womb associated_organ_slot = ORGAN_SLOT_WOMB key = ORGAN_SLOT_WOMB genetic = TRUE @@ -246,7 +246,7 @@ color_src = null /datum/sprite_accessory/genital/anus - organ_type = /obj/item/organ/external/genital/anus + organ_type = /obj/item/organ/genital/anus associated_organ_slot = ORGAN_SLOT_ANUS key = ORGAN_SLOT_ANUS genetic = TRUE @@ -264,7 +264,7 @@ /datum/sprite_accessory/genital/breasts icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/breasts_onmob.dmi' - organ_type = /obj/item/organ/external/genital/breasts + organ_type = /obj/item/organ/genital/breasts associated_organ_slot = ORGAN_SLOT_BREASTS key = ORGAN_SLOT_BREASTS always_color_customizable = TRUE diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm index bbf4187fe16..b3d2be38f42 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm @@ -4,7 +4,7 @@ generic = "Head Accessory" relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/head_accessory + organ_type = /obj/item/organ/head_accessory /datum/sprite_accessory/head_accessory/none name = SPRITE_ACCESSORY_NONE diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm index eeea4204e80..6e460d035d9 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm @@ -5,7 +5,7 @@ icon = 'modular_nova/master_files/icons/mob/sprite_accessory/horns.dmi' default_color = "#555555" genetic = TRUE - organ_type = /obj/item/organ/external/horns + organ_type = /obj/item/organ/horns /datum/sprite_accessory/horns/is_hidden(mob/living/carbon/human/wearer) if(!wearer.head && !wearer.wear_mask) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm index e75940fb25b..fc5551307bd 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm @@ -8,7 +8,7 @@ key = MUTANT_SYNTH_SCREEN generic = "Screen" relevent_layers = list(BODY_FRONT_UNDER_CLOTHES) - organ_type = /obj/item/organ/external/synth_screen + organ_type = /obj/item/organ/synth_screen /datum/sprite_accessory/screen/none name = SPRITE_ACCESSORY_NONE @@ -151,7 +151,7 @@ generic = "Antenna" relevent_layers = list(BODY_ADJ_LAYER) genetic = FALSE - organ_type = /obj/item/organ/external/synth_antenna + organ_type = /obj/item/organ/synth_antenna /datum/sprite_accessory/antenna/is_hidden(mob/living/carbon/human/wearer) if(!wearer.head) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm index 9d0102a7ece..823be356de3 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm @@ -3,7 +3,7 @@ key = "moth_antennae" relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/antennae + organ_type = /obj/item/organ/antennae /datum/sprite_accessory/moth_antennae/is_hidden(mob/living/carbon/human/wearer) if(!wearer.head) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm index 4d8a2168b63..9ca2eb48970 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm @@ -4,7 +4,7 @@ generic = "Neck Accessory" relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/neck_accessory + organ_type = /obj/item/organ/neck_accessory /datum/sprite_accessory/neck_accessory/none name = SPRITE_ACCESSORY_NONE diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm index 37d2f3d78a5..d56ec101489 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm @@ -5,7 +5,7 @@ color_src = USE_ONE_COLOR relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/skrell_hair + organ_type = /obj/item/organ/skrell_hair /datum/sprite_accessory/skrell_hair/is_hidden(mob/living/carbon/human/wearer) if((wearer.head?.flags_inv & HIDEHAIR) || (wearer.wear_mask?.flags_inv & HIDEHAIR)) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm index f71a65adb36..937d515399b 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm @@ -3,7 +3,7 @@ generic = "Snout" icon = 'modular_nova/master_files/icons/mob/sprite_accessory/lizard_snouts.dmi' flags_for_organ = SPRITE_ACCESSORY_USE_MUZZLED_SPRITE - organ_type = /obj/item/organ/external/snout + organ_type = /obj/item/organ/snout recommended_species = list(SPECIES_MAMMAL, SPECIES_LIZARD, SPECIES_UNATHI, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER) relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) genetic = TRUE @@ -14,7 +14,7 @@ return FALSE -/obj/item/organ/external/snout +/obj/item/organ/snout mutantpart_key = "snout" mutantpart_info = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF")) external_bodyshapes = NONE // We don't actually want this to have by default, since some of them don't apply that. @@ -30,7 +30,7 @@ return !sprite_datum.is_hidden(human) -/obj/item/organ/external/snout/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/snout/mob_insert(mob/living/carbon/receiver, special, movement_flags) if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_MUZZLED_SPRITE) external_bodyshapes |= BODYSHAPE_SNOUTED if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_ALT_FACEWEAR_LAYER) @@ -38,14 +38,14 @@ return ..() -/obj/item/organ/external/snout/top +/obj/item/organ/snout/top bodypart_overlay = /datum/bodypart_overlay/mutant/snout/top /datum/bodypart_overlay/mutant/snout/top layers = EXTERNAL_FRONT -/obj/item/organ/external/snout/top_adj +/obj/item/organ/snout/top_adj bodypart_overlay = /datum/bodypart_overlay/mutant/snout/top_adj /datum/bodypart_overlay/mutant/snout/top_adj @@ -117,28 +117,28 @@ icon_state = "bug" flags_for_organ = NONE color_src = USE_MATRIXED_COLORS - organ_type = /obj/item/organ/external/snout/top_adj + organ_type = /obj/item/organ/snout/top_adj /datum/sprite_accessory/snouts/mammal/bug_low_eyes name = "Bug (Eyes Below Hair)" icon_state = "bug_low_eyes" flags_for_organ = NONE color_src = USE_MATRIXED_COLORS - organ_type = /obj/item/organ/external/snout/top_adj + organ_type = /obj/item/organ/snout/top_adj /datum/sprite_accessory/snouts/mammal/bug_no_ant name = "Bug (No Antennae, Below Hair)" icon_state = "bug_no_ant" flags_for_organ = NONE color_src = USE_MATRIXED_COLORS - organ_type = /obj/item/organ/external/snout/top_adj + organ_type = /obj/item/organ/snout/top_adj /datum/sprite_accessory/snouts/mammal/bug_no_ant_low_eyes name = "Bug (No Antennae, Below Hair, Eyes Below Hair)" icon_state = "bug_no_ant_low_eyes" flags_for_organ = NONE color_src = USE_MATRIXED_COLORS - organ_type = /obj/item/organ/external/snout/top_adj + organ_type = /obj/item/organ/snout/top_adj /datum/sprite_accessory/snouts/mammal/bug_no_eyes name = "Bug (No eyes)" @@ -288,7 +288,7 @@ /datum/sprite_accessory/snouts/mammal/top flags_for_organ = SPRITE_ACCESSORY_USE_MUZZLED_SPRITE | SPRITE_ACCESSORY_USE_ALT_FACEWEAR_LAYER - organ_type = /obj/item/organ/external/snout/top + organ_type = /obj/item/organ/snout/top relevent_layers = list(BODY_FRONT_LAYER) /datum/sprite_accessory/snouts/mammal/top/fbird @@ -304,7 +304,7 @@ icon_state = "fbug" flags_for_organ = NONE color_src = USE_MATRIXED_COLORS - organ_type = /obj/item/organ/external/snout/top_adj + organ_type = /obj/item/organ/snout/top_adj relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) /datum/sprite_accessory/snouts/mammal/top/bug_no_ant @@ -312,7 +312,7 @@ icon_state = "fbug_no_ant" flags_for_organ = NONE color_src = USE_MATRIXED_COLORS - organ_type = /obj/item/organ/external/snout/top_adj + organ_type = /obj/item/organ/snout/top_adj relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) /datum/sprite_accessory/snouts/mammal/top/fdragonfly @@ -320,7 +320,7 @@ icon_state = "fdragonfly" flags_for_organ = NONE color_src = USE_MATRIXED_COLORS - organ_type = /obj/item/organ/external/snout/top_adj + organ_type = /obj/item/organ/snout/top_adj relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) /datum/sprite_accessory/snouts/mammal/top/felephant diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm index fb2cf49ad70..e78b1e19ffe 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm @@ -5,7 +5,7 @@ recommended_species = list(SPECIES_LIZARD, SPECIES_UNATHI, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER) relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/spines + organ_type = /obj/item/organ/spines /datum/sprite_accessory/spines/is_hidden(mob/living/carbon/human/wearer) if(wearer.w_uniform) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm index 986e9886cf9..4e8dfc4392f 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm @@ -146,7 +146,7 @@ taur_mode = STYLE_TAUR_PAW recommended_species = list() genetic = FALSE - organ_type = /obj/item/organ/external/taur_body/horselike/synth + organ_type = /obj/item/organ/taur_body/horselike/synth /datum/sprite_accessory/taur/synthliz/inv name = "Cybernetic Lizard (Inverted)" @@ -182,4 +182,4 @@ name = "Cybernetic Naga" icon_state = "synthnaga" taur_mode = STYLE_TAUR_SNAKE - organ_type = /obj/item/organ/external/taur_body/serpentine/synth + organ_type = /obj/item/organ/taur_body/serpentine/synth diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm index 99a98131306..ff75a21e44e 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -1,7 +1,7 @@ /datum/sprite_accessory/tails key = "tail" generic = "Tail" - organ_type = /obj/item/organ/external/tail + organ_type = /obj/item/organ/tail icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi' relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) genetic = TRUE @@ -37,7 +37,7 @@ /datum/sprite_accessory/tails/lizard icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi' recommended_species = list(SPECIES_LIZARD, SPECIES_LIZARD_ASH, SPECIES_MAMMAL, SPECIES_UNATHI, SPECIES_LIZARD_SILVER) - organ_type = /obj/item/organ/external/tail/lizard + organ_type = /obj/item/organ/tail/lizard /datum/sprite_accessory/tails/lizard/short/twotone name = "Short (Two-Tone)" @@ -46,14 +46,14 @@ /datum/sprite_accessory/tails/human recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_GHOUL) - organ_type = /obj/item/organ/external/tail/cat + organ_type = /obj/item/organ/tail/cat /datum/sprite_accessory/tails/felinid/cat icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi' icon_state = "cat" color_src = USE_ONE_COLOR recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_GHOUL) - organ_type = /obj/item/organ/external/tail/cat + organ_type = /obj/item/organ/tail/cat /datum/sprite_accessory/tails/human/monkeyColorable icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi' @@ -66,16 +66,16 @@ icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi' icon_state = "monkey" recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_MONKEY, SPECIES_GHOUL) - organ_type = /obj/item/organ/external/tail/monkey + organ_type = /obj/item/organ/tail/monkey /datum/sprite_accessory/tails/mammal icon_state = "none" recommended_species = list(SPECIES_MAMMAL,SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_HUMANOID, SPECIES_GHOUL) - organ_type = /obj/item/organ/external/tail/fluffy/no_wag + organ_type = /obj/item/organ/tail/fluffy/no_wag color_src = USE_MATRIXED_COLORS /datum/sprite_accessory/tails/mammal/wagging - organ_type = /obj/item/organ/external/tail/fluffy + organ_type = /obj/item/organ/tail/fluffy flags_for_organ = SPRITE_ACCESSORY_WAG_ABLE /datum/sprite_accessory/tails/mammal/wagging/akula diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm index 86f9ebba93b..9d9fbf1d948 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm @@ -24,7 +24,7 @@ center = TRUE relevent_layers = list(BODY_FRONT_LAYER, BODY_ADJ_LAYER, BODY_FRONT_UNDER_CLOTHES, ABOVE_BODY_FRONT_HEAD_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/taur_body/horselike // horselike by default, dont forget to override if you make another bodytype + organ_type = /obj/item/organ/taur_body/horselike // horselike by default, dont forget to override if you make another bodytype flags_for_organ = SPRITE_ACCESSORY_HIDE_SHOES /// Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2 var/taur_mode = NONE @@ -32,7 +32,7 @@ var/alt_taur_mode = NONE /datum/sprite_accessory/taur/is_hidden(mob/living/carbon/human/target) - var/obj/item/organ/external/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) if (taur_body?.hide_self) return TRUE @@ -86,7 +86,7 @@ icon_state = "deer" taur_mode = STYLE_TAUR_HOOF alt_taur_mode = STYLE_TAUR_PAW - organ_type = /obj/item/organ/external/taur_body/horselike/deer + organ_type = /obj/item/organ/taur_body/horselike/deer /datum/sprite_accessory/taur/drake name = "Drake" @@ -100,12 +100,12 @@ /datum/sprite_accessory/taur/tarantula name = "Tarantula" icon_state = "tarantula" - organ_type = /obj/item/organ/external/taur_body/spider + organ_type = /obj/item/organ/taur_body/spider /datum/sprite_accessory/taur/drider name = "Drider" icon_state = "drider" - organ_type = /obj/item/organ/external/taur_body/spider + organ_type = /obj/item/organ/taur_body/spider /datum/sprite_accessory/taur/eevee name = "Eevee" @@ -122,7 +122,7 @@ name = "Naga" icon_state = "naga" taur_mode = STYLE_TAUR_SNAKE - organ_type = /obj/item/organ/external/taur_body/serpentine + organ_type = /obj/item/organ/taur_body/serpentine /datum/sprite_accessory/taur/naga/striped name = "Naga, Striped" @@ -149,7 +149,7 @@ icon_state = "tentacle" taur_mode = STYLE_TAUR_SNAKE color_src = USE_ONE_COLOR - organ_type = /obj/item/organ/external/taur_body/tentacle + organ_type = /obj/item/organ/taur_body/tentacle /datum/sprite_accessory/taur/tentacle/alt name = "Tentacle, Alt" @@ -172,20 +172,20 @@ icon_state = "goop" taur_mode = STYLE_TAUR_SNAKE color_src = USE_ONE_COLOR - organ_type = /obj/item/organ/external/taur_body/blob + organ_type = /obj/item/organ/taur_body/blob /datum/sprite_accessory/taur/slime name = "Slime" icon_state = "slime" taur_mode = STYLE_TAUR_SNAKE color_src = USE_ONE_COLOR - organ_type = /obj/item/organ/external/taur_body/blob + organ_type = /obj/item/organ/taur_body/blob /datum/sprite_accessory/taur/biglegs name = "Big Legs" icon_state = "biglegs" taur_mode = STYLE_TAUR_PAW - organ_type = /obj/item/organ/external/taur_body/anthro + organ_type = /obj/item/organ/taur_body/anthro /datum/sprite_accessory/taur/biglegs/stanced name = "Big Legs, Stanced" diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm index 6459c622c4f..04d74e3cd6a 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm @@ -122,7 +122,7 @@ name = "Vox Tail" icon_state = "vox" recommended_species = list(SPECIES_VOX) - organ_type = /obj/item/organ/external/tail/lizard + organ_type = /obj/item/organ/tail/lizard spine_key = SPINE_KEY_VOX //The tail markings diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm index cee2890791b..ea7575bafcf 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -11,7 +11,7 @@ key = "wings" color_src = USE_ONE_COLOR recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_LIZARD, SPECIES_MAMMAL) - organ_type = /obj/item/organ/external/wings + organ_type = /obj/item/organ/wings relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER, BODY_ADJ_LAYER) genetic = TRUE @@ -308,7 +308,7 @@ icon = 'modular_nova/master_files/icons/mob/sprite_accessory/moth_wings.dmi' // Needs new icon to suit new naming convention default_color = "#FFFFFF" recommended_species = list(SPECIES_MOTH, SPECIES_MAMMAL, SPECIES_INSECT) // Mammals too, I guess. They wont get flight though, see the wing organs for that logic - organ_type = /obj/item/organ/external/wings/moth + organ_type = /obj/item/organ/wings/moth relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) /datum/sprite_accessory/wings/moth/none diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm index 21dd660baf1..e4385cd5e9b 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm @@ -5,7 +5,7 @@ color_src = USE_ONE_COLOR relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/xenodorsal + organ_type = /obj/item/organ/xenodorsal /datum/sprite_accessory/xenodorsal/none name = SPRITE_ACCESSORY_NONE @@ -48,7 +48,7 @@ key = "xenohead" relevent_layers = list(BODY_ADJ_LAYER) genetic = TRUE - organ_type = /obj/item/organ/external/xenohead + organ_type = /obj/item/organ/xenohead /datum/sprite_accessory/xenohead/none name = SPRITE_ACCESSORY_NONE diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm index a6706df18f7..a8fa6841838 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm @@ -14,12 +14,12 @@ update_external_organs_modsuit_status(is_on) wearer.update_body_parts(TRUE) -/obj/item/mod/control/deploy(mob/user, obj/item/part) +/obj/item/mod/control/deploy(mob/user, obj/item/part, instant = FALSE) . = ..() update_external_organs_modsuit_status(active) wearer.update_body_parts(TRUE) -/obj/item/mod/control/retract(mob/user, obj/item/part) +/obj/item/mod/control/retract(mob/user, obj/item/part, instant = FALSE) . = ..() update_external_organs_modsuit_status(FALSE) wearer.update_body_parts(TRUE) @@ -30,8 +30,9 @@ if(!wearer?.organs) return - for(var/obj/item/organ/external/to_update in wearer.organs) - to_update.bodypart_overlay.set_modsuit_status(status) + for(var/obj/item/organ/to_update in wearer.organs) + if(to_update.organ_flags & ORGAN_EXTERNAL) + to_update.bodypart_overlay.set_modsuit_status(status) // Tail hardlight diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm index 79f1ec74d45..c173040f884 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm @@ -16,7 +16,7 @@ continue if(G.is_hidden(src)) continue - var/obj/item/organ/external/genital/ORG = get_organ_slot(G.associated_organ_slot) + var/obj/item/organ/genital/ORG = get_organ_slot(G.associated_organ_slot) if(!ORG) continue line += ORG.get_description_string(G) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm index b38ab3038a4..3fa84861eff 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm @@ -43,11 +43,11 @@ GLOBAL_LIST_EMPTY(customizable_races) /datum/species/proc/gain_oversized_organs(mob/living/carbon/human/human_holder, datum/quirk/oversized/oversized_quirk) if(isnull(human_holder.loc)) return // preview characters don't need funny organs, prevents a runtime - var/obj/item/organ/internal/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) if(old_stomach?.is_oversized) // don't override augments that are already oversized. Need to do this because augments get applied first, so quirks will overwrite them. TODO: Maybe the augments middleware should be renamed so it gets applied last. return - var/obj/item/organ/internal/stomach/oversized/new_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE GUTS! RIP AND TEAR YOUR HUGE GUTS! + var/obj/item/organ/stomach/oversized/new_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE GUTS! RIP AND TEAR YOUR HUGE GUTS! oversized_quirk.old_organs += list(old_stomach) new_stomach.Insert(human_holder, special = TRUE) @@ -81,7 +81,7 @@ GLOBAL_LIST_EMPTY(customizable_races) /datum/species/mush mutant_bodyparts = list() -/datum/species/vampire +/datum/species/human/vampire mutant_bodyparts = list() /datum/species/plasmaman @@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(customizable_races) if(noggin && !(HAS_TRAIT(species_human, TRAIT_HUSK))) if(noggin.head_flags & HEAD_EYESPRITES) - var/obj/item/organ/internal/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES) if(eye_organ) eye_organ.refresh(call_update = FALSE) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm index 7ed4bbfb863..a6005291c50 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm @@ -16,11 +16,11 @@ OFFSET_HEAD = list(0, 2), OFFSET_HAIR = list(0, 1), ) - mutantbrain = /obj/item/organ/internal/brain/carp/akula - mutantheart = /obj/item/organ/internal/heart/carp/akula - mutantlungs = /obj/item/organ/internal/lungs/carp/akula - mutanttongue = /obj/item/organ/internal/tongue/carp/akula - mutanteyes = /obj/item/organ/internal/eyes/akula + mutantbrain = /obj/item/organ/brain/carp/akula + mutantheart = /obj/item/organ/heart/carp/akula + mutantlungs = /obj/item/organ/lungs/carp/akula + mutanttongue = /obj/item/organ/tongue/carp/akula + mutanteyes = /obj/item/organ/eyes/akula inherent_traits = list( TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, @@ -169,42 +169,42 @@ limb_overlay = null // no carpskin //Eyes -/obj/item/organ/internal/eyes/akula +/obj/item/organ/eyes/akula // Eyes over hair as bandaid for the low amounts of head matching hair eyes_layer = HAIR_LAYER-0.1 //Brain -/obj/item/organ/internal/brain/carp/akula +/obj/item/organ/brain/carp/akula name = "azulean brain" -/obj/item/organ/internal/brain/carp/akula/Initialize(mapload) +/obj/item/organ/brain/carp/akula/Initialize(mapload) . = ..() RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula) //Heart -/obj/item/organ/internal/heart/carp/akula +/obj/item/organ/heart/carp/akula name = "azulean heart" organ_traits = list() -/obj/item/organ/internal/heart/carp/akula/Initialize(mapload) +/obj/item/organ/heart/carp/akula/Initialize(mapload) . = ..() RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula) //Tongue -/obj/item/organ/internal/tongue/carp/akula +/obj/item/organ/tongue/carp/akula name = "azulean jaws" liked_foodtypes = SEAFOOD | RAW disliked_foodtypes = CLOTH | DAIRY toxic_foodtypes = TOXIC -/obj/item/organ/internal/tongue/carp/akula/Initialize(mapload) +/obj/item/organ/tongue/carp/akula/Initialize(mapload) . = ..() RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula) -/obj/item/organ/internal/tongue/carp/akula/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) +/obj/item/organ/tongue/carp/akula/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) . = ..() if(!ishuman(tongue_owner)) return @@ -215,12 +215,12 @@ rec_species.update_no_equip_flags(tongue_owner, initial(rec_species.no_equip_flags)) //Lungs -/obj/item/organ/internal/lungs/carp/akula +/obj/item/organ/lungs/carp/akula name = "azulean lungs" - safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min - safe_oxygen_max = /obj/item/organ/internal/lungs::safe_oxygen_max + safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min + safe_oxygen_max = /obj/item/organ/lungs::safe_oxygen_max -/obj/item/organ/internal/lungs/carp/akula/Initialize(mapload) +/obj/item/organ/lungs/carp/akula/Initialize(mapload) . = ..() REMOVE_TRAIT(src, TRAIT_SPACEBREATHING, REF(src)) RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm index 29df861b8bf..a05143348d8 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm @@ -10,7 +10,7 @@ ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID mutant_bodyparts = list() - mutanttongue = /obj/item/organ/internal/tongue/aquatic + mutanttongue = /obj/item/organ/tongue/aquatic payday_modifier = 1.0 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT examine_limb_id = SPECIES_AKULA @@ -33,7 +33,7 @@ "wings" = list("None", FALSE), ) -/obj/item/organ/internal/tongue/aquatic +/obj/item/organ/tongue/aquatic liked_foodtypes = SEAFOOD | MEAT | FRUIT | GORE disliked_foodtypes = CLOTH | GROSS toxic_foodtypes = TOXIC diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm index 76c3bb57fec..de6be921592 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm @@ -9,7 +9,7 @@ TRAIT_LITERATE, TRAIT_USES_SKINTONES, ) - mutanttongue = /obj/item/organ/internal/tongue/dwarven + mutanttongue = /obj/item/organ/tongue/dwarven skinned_type = /obj/item/stack/sheet/animalhide/human changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT payday_modifier = 1.0 diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm index d346a985f48..9975eb59cc7 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm @@ -4,7 +4,7 @@ examine_limb_id = SPECIES_GHOUL can_have_genitals = FALSE //WHY WOULD YOU WANT TO FUCK ONE OF THESE THINGS? mutant_bodyparts = list("ghoulcolor" = "Tan Necrotic") - mutanttongue = /obj/item/organ/internal/tongue/ghoul + mutanttongue = /obj/item/organ/tongue/ghoul inherent_traits = list( TRAIT_ADVANCEDTOOLUSER, TRAIT_RADIMMUNE, diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm index 0bac094f620..66a45750e7d 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm @@ -12,7 +12,7 @@ /datum/component/organ_corruption dupe_mode = COMPONENT_DUPE_UNIQUE /// The type of organ affected by this specific type of organ corruption. - var/corruptable_organ_type = /obj/item/organ/internal + var/corruptable_organ_type = /obj/item/organ /// If this type of organ has a unique sprite for what its corrupted /// version should look like, this will be the icon file it will be pulled /// from. @@ -77,7 +77,7 @@ * Arguments: * * corruption_target - The organ that will get corrupted. */ -/datum/component/organ_corruption/proc/corrupt_organ(obj/item/organ/internal/corruption_target) +/datum/component/organ_corruption/proc/corrupt_organ(obj/item/organ/corruption_target) SHOULD_CALL_PARENT(TRUE) if(!corruption_target) return FALSE diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm index f83b2caaec5..c361c5d9957 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm @@ -1,4 +1,4 @@ /datum/component/organ_corruption/lungs - corruptable_organ_type = /obj/item/organ/internal/lungs + corruptable_organ_type = /obj/item/organ/lungs corrupted_prefix = "atrophied" diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm index 27c937ef2e4..e703285a25b 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm @@ -2,7 +2,7 @@ #define MINIMUM_BLOOD_REGENING_REAGENT_RATIO 0.75 /datum/component/organ_corruption/liver - corruptable_organ_type = /obj/item/organ/internal/liver + corruptable_organ_type = /obj/item/organ/liver corrupted_icon_state = "liver" @@ -23,7 +23,7 @@ /datum/component/organ_corruption/liver/UnregisterFromParent() . = ..() - var/obj/item/organ/internal/liver/parent_liver = parent + var/obj/item/organ/liver/parent_liver = parent if(parent_liver.owner) UnregisterSignal(parent_liver.owner, COMSIG_GLASS_DRANK) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm index 3af433695a9..7cd311e3322 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm @@ -1,9 +1,9 @@ /datum/component/organ_corruption/stomach - corruptable_organ_type = /obj/item/organ/internal/stomach + corruptable_organ_type = /obj/item/organ/stomach corrupted_icon_state = "stomach" -/datum/component/organ_corruption/stomach/corrupt_organ(obj/item/organ/internal/corruption_target) +/datum/component/organ_corruption/stomach/corrupt_organ(obj/item/organ/corruption_target) . = ..() if(!.) @@ -18,7 +18,7 @@ UnregisterSignal(parent, COMSIG_STOMACH_AFTER_EAT) -/datum/component/organ_corruption/stomach/proc/on_stomach_after_eat(obj/item/organ/internal/stomach/tummy, atom/edible) +/datum/component/organ_corruption/stomach/proc/on_stomach_after_eat(obj/item/organ/stomach/tummy, atom/edible) SIGNAL_HANDLER if(!istype(edible, /obj/item/food)) @@ -29,7 +29,7 @@ if(BLOODY & eaten.foodtypes) // They're good if it's BLOODY food, they're less good if it isn't. return - var/obj/item/organ/internal/parent_organ = parent + var/obj/item/organ/parent_organ = parent if(parent_organ.owner && HAS_TRAIT(parent_organ.owner, TRAIT_AGEUSIA)) // They don't taste anything, their body shouldn't react strongly to the taste of that stuff. return diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm index 8363af7dd1f..59755827851 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm @@ -4,19 +4,19 @@ #define BLOOD_DRAIN_MULTIPLIER_CKEY 1.15 /datum/component/organ_corruption/tongue - corruptable_organ_type = /obj/item/organ/internal/tongue + corruptable_organ_type = /obj/item/organ/tongue corrupted_icon_state = "tongue" /// The item action given to the tongue once it was corrupted. var/tongue_action_type = /datum/action/cooldown/hemophage/drain_victim -/datum/component/organ_corruption/tongue/corrupt_organ(obj/item/organ/internal/corruption_target) +/datum/component/organ_corruption/tongue/corrupt_organ(obj/item/organ/corruption_target) . = ..() if(!.) return - var/obj/item/organ/internal/tongue/corrupted_tongue = corruption_target + var/obj/item/organ/tongue/corrupted_tongue = corruption_target corrupted_tongue.liked_foodtypes = BLOODY corrupted_tongue.disliked_foodtypes = NONE @@ -126,7 +126,7 @@ // if you drained from a human with a client, congrats var/drained_multiplier = (is_target_human_with_client ? BLOOD_DRAIN_MULTIPLIER_CKEY : 1) - var/obj/item/organ/internal/stomach/hemophage/stomach_reference = hemophage.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/hemophage/stomach_reference = hemophage.get_organ_slot(ORGAN_SLOT_STOMACH) if(isnull(stomach_reference)) victim.blood_volume = clamp(victim.blood_volume - drained_blood, 0, BLOOD_VOLUME_MAXIMUM) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm index 9feaeb41ca9..6fe324cb21b 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm @@ -26,7 +26,7 @@ if(!owner || !ishuman(owner) || !target) return - var/obj/item/organ/internal/heart/hemophage/tumor = target + var/obj/item/organ/heart/hemophage/tumor = target if(!tumor || !istype(tumor)) // This shouldn't happen, but you can never be too careful. return diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm index 43005aa433f..66c2d059250 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm @@ -7,19 +7,19 @@ #define ORGAN_CORRUPTION_INSTANT 0 -/obj/item/organ/internal/liver/hemophage +/obj/item/organ/liver/hemophage name = "liver" // Name change is handled by /datum/component/organ_corruption/corrupt_organ() desc = GENERIC_CORRUPTED_ORGAN_DESC icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi' organ_flags = ORGAN_EDIBLE | ORGAN_TUMOR_CORRUPTED -/obj/item/organ/internal/liver/hemophage/Initialize(mapload) +/obj/item/organ/liver/hemophage/Initialize(mapload) . = ..() AddComponent(/datum/component/organ_corruption/liver, time_to_corrupt = ORGAN_CORRUPTION_INSTANT) -/obj/item/organ/internal/liver/hemophage/handle_chemical(mob/living/carbon/affected_mob, datum/reagent/chem, seconds_per_tick, times_fired) +/obj/item/organ/liver/hemophage/handle_chemical(mob/living/carbon/affected_mob, datum/reagent/chem, seconds_per_tick, times_fired) . = ..() // parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing @@ -67,21 +67,21 @@ return TRUE -/obj/item/organ/internal/stomach/hemophage +/obj/item/organ/stomach/hemophage name = "stomach" // Name change is handled by /datum/component/organ_corruption/corrupt_organ() desc = GENERIC_CORRUPTED_ORGAN_DESC icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi' organ_flags = ORGAN_EDIBLE | ORGAN_TUMOR_CORRUPTED -/obj/item/organ/internal/stomach/hemophage/Initialize(mapload) +/obj/item/organ/stomach/hemophage/Initialize(mapload) . = ..() AddComponent(/datum/component/organ_corruption/stomach, time_to_corrupt = ORGAN_CORRUPTION_INSTANT) // I didn't feel like moving this behavior onto the component, it was just too annoying to do. -/obj/item/organ/internal/stomach/hemophage/on_life(seconds_per_tick, times_fired) +/obj/item/organ/stomach/hemophage/on_life(seconds_per_tick, times_fired) var/datum/reagent/blood/blood = reagents.has_reagent(/datum/reagent/blood) if(blood) blood.metabolization_rate = BLOOD_METABOLIZATION_RATE @@ -89,7 +89,7 @@ return ..() -/obj/item/organ/internal/tongue/hemophage +/obj/item/organ/tongue/hemophage name = "tongue" // Name change is handled by /datum/component/organ_corruption/corrupt_organ() desc = GENERIC_CORRUPTED_ORGAN_DESC icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi' @@ -98,7 +98,7 @@ disliked_foodtypes = NONE -/obj/item/organ/internal/tongue/hemophage/Initialize(mapload) +/obj/item/organ/tongue/hemophage/Initialize(mapload) . = ..() AddComponent(/datum/component/organ_corruption/tongue, time_to_corrupt = ORGAN_CORRUPTION_INSTANT) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm index 5786d62e6b6..657b58869a9 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm @@ -18,10 +18,10 @@ ) inherent_biotypes = MOB_HUMANOID | MOB_ORGANIC exotic_bloodtype = "U" - mutantheart = /obj/item/organ/internal/heart/hemophage - mutantliver = /obj/item/organ/internal/liver/hemophage - mutantstomach = /obj/item/organ/internal/stomach/hemophage - mutanttongue = /obj/item/organ/internal/tongue/hemophage + mutantheart = /obj/item/organ/heart/hemophage + mutantliver = /obj/item/organ/liver/hemophage + mutantstomach = /obj/item/organ/stomach/hemophage + mutanttongue = /obj/item/organ/tongue/hemophage mutantlungs = null changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT examine_limb_id = SPECIES_HUMAN diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm index 5d46ecf0dd2..2895c172c9f 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm @@ -21,7 +21,7 @@ if(!owner || !ishuman(owner)) return FALSE - var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage) + var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage) if(!tumor_heart) return FALSE @@ -36,7 +36,7 @@ if(!owner || !ishuman(owner)) return - var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage) + var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage) if(!tumor_heart) return @@ -72,7 +72,7 @@ if(!linked_alert) return - var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage) + var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage) if(tumor_heart) var/old_layer = tumor_heart.layer var/old_plane = tumor_heart.plane diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm index df13a858efa..25cb319e4b0 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm @@ -15,7 +15,7 @@ #define TRAIT_TUMOR "tumor" -/obj/item/organ/internal/heart/hemophage +/obj/item/organ/heart/hemophage name = "pulsating tumor" icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi' icon_state = "tumor-on" @@ -28,7 +28,7 @@ var/bloodloss_rate = NORMAL_BLOOD_DRAIN -/obj/item/organ/internal/heart/hemophage/mob_insert(mob/living/carbon/tumorful, special, movement_flags) +/obj/item/organ/heart/hemophage/mob_insert(mob/living/carbon/tumorful, special, movement_flags) . = ..() if(!. || !owner) return @@ -38,7 +38,7 @@ RegisterSignal(tumorful, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item)) -/obj/item/organ/internal/heart/hemophage/mob_remove(mob/living/carbon/tumorless, special = FALSE) +/obj/item/organ/heart/hemophage/mob_remove(mob/living/carbon/tumorless, special = FALSE) . = ..() SEND_SIGNAL(tumorless, COMSIG_PULSATING_TUMOR_REMOVED, tumorless) @@ -58,7 +58,7 @@ tumorless_human.remove_movespeed_modifier(/datum/movespeed_modifier/hemophage_dormant_state) -/obj/item/organ/internal/heart/hemophage/on_life(seconds_per_tick, times_fired) +/obj/item/organ/heart/hemophage/on_life(seconds_per_tick, times_fired) . = ..() // A Hemophage's tumor will be able to be operated on multiple times, so @@ -85,7 +85,7 @@ /// Simple helper proc that toggles the dormant state of the tumor, which also switches its appearance to reflect said change. -/obj/item/organ/internal/heart/hemophage/proc/toggle_dormant_state() +/obj/item/organ/heart/hemophage/proc/toggle_dormant_state() is_dormant = !is_dormant base_icon_state = is_dormant ? "[base_icon_state]-dormant" : initial(base_icon_state) @@ -106,12 +106,12 @@ /// Simple helper proc that returns whether or not the given hemophage is in a closet subtype (but not in any bodybag subtype). -/obj/item/organ/internal/heart/hemophage/proc/in_closet(mob/living/carbon/human/hemophage) +/obj/item/organ/heart/hemophage/proc/in_closet(mob/living/carbon/human/hemophage) return istype(hemophage.loc, /obj/structure/closet) && !istype(hemophage.loc, /obj/structure/closet/body_bag) /// Simple helper proc that returns whether or not the given hemophage is in total darkness. -/obj/item/organ/internal/heart/hemophage/proc/in_total_darkness(mob/living/carbon/human/hemophage) +/obj/item/organ/heart/hemophage/proc/in_total_darkness(mob/living/carbon/human/hemophage) var/turf/current_turf = get_turf(hemophage) if(!istype(current_turf)) return FALSE @@ -120,7 +120,7 @@ /// Whether or not we should be applying the healing status effect for the owner. -/obj/item/organ/internal/heart/hemophage/proc/can_heal_owner_damage() +/obj/item/organ/heart/hemophage/proc/can_heal_owner_damage() // We handle the least expensive checks first. if(owner.health >= owner.maxHealth || is_dormant || owner.blood_volume <= MINIMUM_VOLUME_FOR_REGEN || (!in_closet(owner) && !in_total_darkness(owner))) return FALSE @@ -131,7 +131,7 @@ /// Simple helper to toggle the hemophage's vulnerability (or lack thereof) based on the status of their tumor. /// This proc contains no check whatsoever, to avoid redundancy of null checks and such. /// That being said, it shouldn't be used by anything but the tumor, if you have to call it outside of that, you probably have gone wrong somewhere. -/obj/item/organ/internal/heart/hemophage/proc/toggle_dormant_tumor_vulnerabilities(mob/living/carbon/human/hemophage) +/obj/item/organ/heart/hemophage/proc/toggle_dormant_tumor_vulnerabilities(mob/living/carbon/human/hemophage) var/datum/physiology/hemophage_physiology = hemophage.physiology var/damage_multiplier = is_dormant ? DORMANT_DAMAGE_MULTIPLIER : 1 / DORMANT_DAMAGE_MULTIPLIER @@ -141,7 +141,7 @@ hemophage_physiology.stamina_mod *= damage_multiplier / 2 // Doing half here so that they don't instantly hit stam-crit when hit like only once. -/obj/item/organ/internal/heart/hemophage/proc/get_status_tab_item(mob/living/source, list/items) +/obj/item/organ/heart/hemophage/proc/get_status_tab_item(mob/living/source, list/items) SIGNAL_HANDLER items += "Current blood level: [owner.blood_volume]/[BLOOD_VOLUME_MAXIMUM]" diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm index df18d12b264..03743af54aa 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm @@ -27,19 +27,19 @@ * Handles corrupting already-existing organs upon having the tumor be inserted in the mob. */ /datum/element/tumor_corruption/proc/handle_organ_corruption_on_existing_organs(mob/living/carbon/organ_enjoyer) - var/obj/item/organ/internal/liver/liver = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && !(liver.organ_flags & ORGAN_TUMOR_CORRUPTED)) liver.AddComponent(/datum/component/organ_corruption/liver) - var/obj/item/organ/internal/lungs/lungs = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/lungs = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LUNGS) if(lungs && !(lungs.organ_flags & ORGAN_TUMOR_CORRUPTED)) lungs.AddComponent(/datum/component/organ_corruption/lungs) - var/obj/item/organ/internal/stomach/stomach = organ_enjoyer.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/stomach = organ_enjoyer.get_organ_slot(ORGAN_SLOT_STOMACH) if(stomach && !(stomach.organ_flags & ORGAN_TUMOR_CORRUPTED)) stomach.AddComponent(/datum/component/organ_corruption/stomach) - var/obj/item/organ/internal/tongue/tongue = organ_enjoyer.get_organ_slot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/tongue = organ_enjoyer.get_organ_slot(ORGAN_SLOT_TONGUE) if(tongue && !(tongue.organ_flags & ORGAN_TUMOR_CORRUPTED)) tongue.AddComponent(/datum/component/organ_corruption/tongue) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm index e58511cb36a..83ba8898754 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm @@ -9,7 +9,7 @@ ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG mutant_bodyparts = list() - mutanttongue = /obj/item/organ/internal/tongue/insect + mutanttongue = /obj/item/organ/tongue/insect payday_modifier = 1.0 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT examine_limb_id = SPECIES_INSECT diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm index a0899ed37e4..549a7cbad56 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm @@ -9,7 +9,7 @@ ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID mutant_bodyparts = list() - mutanttongue = /obj/item/organ/internal/tongue/mammal + mutanttongue = /obj/item/organ/tongue/mammal payday_modifier = 1.0 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT bodypart_overrides = list( @@ -35,7 +35,7 @@ "neck_acc" = list("None", FALSE), ) -/obj/item/organ/internal/tongue/mammal +/obj/item/organ/tongue/mammal liked_foodtypes = GRAIN | MEAT disliked_foodtypes = CLOTH | GROSS | GORE toxic_foodtypes = TOXIC diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm index 2b29de082dd..e3b49ef1b58 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm @@ -8,10 +8,10 @@ mutant_bodyparts = list() hair_alpha = 160 //a notch brighter so it blends better. facial_hair_alpha = 160 - mutantliver = /obj/item/organ/internal/liver/slime - mutantstomach = /obj/item/organ/internal/stomach/slime - mutantbrain = /obj/item/organ/internal/brain/slime - mutantears = /obj/item/organ/internal/ears/jelly + mutantliver = /obj/item/organ/liver/slime + mutantstomach = /obj/item/organ/stomach/slime + mutantbrain = /obj/item/organ/brain/slime + mutantears = /obj/item/organ/ears/jelly inherent_traits = list( TRAIT_MUTANT_COLORS, TRAIT_TOXINLOVER, @@ -66,11 +66,11 @@ if(isnull(human_holder.loc)) return // preview characters don't need funny organs, prevents a runtime - var/obj/item/organ/internal/brain/slime/oversized/new_slime_brain = new - var/obj/item/organ/internal/stomach/slime/oversized/new_slime_stomach = new //YOU LOOK HUGE! THAT MUST MEAN YOU HAVE HUGE golgi apparatus! RIP AND TEAR YOUR HUGE golgi apparatus! + var/obj/item/organ/brain/slime/oversized/new_slime_brain = new + var/obj/item/organ/stomach/slime/oversized/new_slime_stomach = new //YOU LOOK HUGE! THAT MUST MEAN YOU HAVE HUGE golgi apparatus! RIP AND TEAR YOUR HUGE golgi apparatus! - var/obj/item/organ/internal/brain/slime/old_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN) - var/obj/item/organ/internal/stomach/slime/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/brain/slime/old_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/stomach/slime/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) oversized_quirk.old_organs = list( old_brain, old_stomach, @@ -94,42 +94,42 @@ old_stomach.moveToNullspace() STOP_PROCESSING(SSobj, old_stomach) -/obj/item/organ/internal/eyes/jelly +/obj/item/organ/eyes/jelly name = "photosensitive eyespots" zone = BODY_ZONE_CHEST organ_flags = ORGAN_UNREMOVABLE -/obj/item/organ/internal/eyes/roundstartslime +/obj/item/organ/eyes/roundstartslime name = "photosensitive eyespots" zone = BODY_ZONE_CHEST organ_flags = ORGAN_UNREMOVABLE -/obj/item/organ/internal/ears/jelly +/obj/item/organ/ears/jelly name = "core audiosomes" zone = BODY_ZONE_CHEST organ_flags = ORGAN_UNREMOVABLE overrides_sprite_datum_organ_type = TRUE bodypart_overlay = /datum/bodypart_overlay/mutant/ears -/obj/item/organ/internal/tongue/jelly +/obj/item/organ/tongue/jelly zone = BODY_ZONE_CHEST organ_flags = ORGAN_UNREMOVABLE -/obj/item/organ/internal/lungs/slime +/obj/item/organ/lungs/slime zone = BODY_ZONE_CHEST organ_flags = ORGAN_UNREMOVABLE -/obj/item/organ/internal/liver/slime +/obj/item/organ/liver/slime name = "endoplasmic reticulum" zone = BODY_ZONE_CHEST organ_flags = ORGAN_UNREMOVABLE -/obj/item/organ/internal/stomach/slime +/obj/item/organ/stomach/slime name = "golgi apparatus" zone = BODY_ZONE_CHEST organ_flags = ORGAN_UNREMOVABLE -/obj/item/organ/internal/brain/slime +/obj/item/organ/brain/slime name = "core" desc = "The central core of a slimeperson, technically their 'extract.' Where the cytoplasm, membrane, and organelles come from; perhaps this is also a mitochondria?" zone = BODY_ZONE_CHEST @@ -147,18 +147,18 @@ throw_speed = 0.5 resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | LAVA_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF -/obj/item/organ/internal/brain/slime/Initialize(mapload, mob/living/carbon/organ_owner, list/examine_list) +/obj/item/organ/brain/slime/Initialize(mapload, mob/living/carbon/organ_owner, list/examine_list) . = ..() colorize() -/obj/item/organ/internal/brain/slime/examine() +/obj/item/organ/brain/slime/examine() . = ..() if(gps_active) . += span_notice("A dim light lowly pulsates from the center of the core, indicating an outgoing signal from a tracking microchip.") . += span_red("You could probably snuff that out.") . += span_hypnophrase("You remember that pouring plasma on it, if it's non-embodied, would make it regrow one.") -/obj/item/organ/internal/brain/slime/attack_self(mob/living/user) // Allows a player (presumably an antag) to deactivate the GPS signal on a slime core +/obj/item/organ/brain/slime/attack_self(mob/living/user) // Allows a player (presumably an antag) to deactivate the GPS signal on a slime core if(!(gps_active)) return user.visible_message(span_warning("[user] begins jamming [user.p_their()] hand into a slime core! Slime goes everywhere!"), @@ -181,7 +181,7 @@ gps_active = FALSE qdel(GetComponent(/datum/component/gps)) -/obj/item/organ/internal/brain/slime/mob_insert(mob/living/carbon/organ_owner, special = FALSE, movement_flags) +/obj/item/organ/brain/slime/mob_insert(mob/living/carbon/organ_owner, special = FALSE, movement_flags) . = ..() if(!.) return @@ -189,14 +189,14 @@ core_ejected = FALSE RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(on_slime_death)) -/obj/item/organ/internal/brain/slime/on_mob_remove(mob/living/carbon/organ_owner) +/obj/item/organ/brain/slime/on_mob_remove(mob/living/carbon/organ_owner) . = ..() UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH) /** * Colors the slime's core (their brain) the same as their first mutant color. */ -/obj/item/organ/internal/brain/slime/proc/colorize() +/obj/item/organ/brain/slime/proc/colorize() if(owner && isjellyperson(owner)) core_color = owner.dna.features["mcolor"] add_atom_colour(core_color, FIXED_COLOUR_PRIORITY) @@ -204,7 +204,7 @@ /** * Handling for tracking when the slime in question dies (except through gibbing), which then segues into the core ejection proc. */ -/obj/item/organ/internal/brain/slime/proc/on_slime_death(mob/living/victim, gibbed) +/obj/item/organ/brain/slime/proc/on_slime_death(mob/living/victim, gibbed) SIGNAL_HANDLER UnregisterSignal(victim, COMSIG_LIVING_DEATH) @@ -219,7 +219,7 @@ * CORE EJECTION PROC - * Makes it so that when a slime dies, their core ejects and their body is qdel'd. */ -/obj/item/organ/internal/brain/slime/proc/core_ejection(mob/living/victim, new_stat, turf/loc_override) +/obj/item/organ/brain/slime/proc/core_ejection(mob/living/victim, new_stat, turf/loc_override) if(core_ejected) return core_ejected = TRUE @@ -245,7 +245,7 @@ /** * Procs the ethereal jaunt liquid effect when the slime dissolves on death. */ -/obj/item/organ/internal/brain/slime/proc/do_steam_effects(turf/loc) +/obj/item/organ/brain/slime/proc/do_steam_effects(turf/loc) var/datum/effect_system/steam_spread/steam = new() steam.set_up(10, FALSE, loc) steam.start() @@ -254,7 +254,7 @@ * CHECK FOR REPAIR SECTION * Makes it so that when a slime's core has plasma poured on it, it builds a new body and moves the brain into it. */ -/obj/item/organ/internal/brain/slime/check_for_repair(obj/item/item, mob/user) +/obj/item/organ/brain/slime/check_for_repair(obj/item/item, mob/user) if(!item.is_drainable() || item.reagents.get_reagent_amount(/datum/reagent/toxin/plasma) < 100) return FALSE user.visible_message( @@ -285,7 +285,7 @@ regenerate() return TRUE -/obj/item/organ/internal/brain/slime/proc/regenerate() +/obj/item/organ/brain/slime/proc/regenerate() //we have the plasma. we can rebuild them. set_organ_damage(-maxHealth) //fully heals the brain if(gps_active) // making sure the gps signal is removed if it's active on revival @@ -513,8 +513,8 @@ heatmod = 1 specific_alpha = 155 markings_alpha = 130 //This is set lower than the other so that the alpha values don't stack on top of each other so much - mutanteyes = /obj/item/organ/internal/eyes/roundstartslime - mutanttongue = /obj/item/organ/internal/tongue/jelly + mutanteyes = /obj/item/organ/eyes/roundstartslime + mutanttongue = /obj/item/organ/tongue/jelly bodypart_overrides = list( //Overriding jelly bodyparts BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/jelly/slime/roundstart, @@ -1031,13 +1031,13 @@ return switch(dna_alteration) if("Breasts Lactation") - var/obj/item/organ/external/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS) alterer.dna.features["breasts_lactation"] = !alterer.dna.features["breasts_lactation"] melons.lactates = alterer.dna.features["breasts_lactation"] alterer.balloon_alert(alterer, "[alterer.dna.features["breasts_lactation"] ? "lactating" : "not lactating"]") if("Breasts Size") - var/obj/item/organ/external/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS) var/new_size = tgui_input_list( alterer, "Choose your character's breasts size:", @@ -1050,7 +1050,7 @@ melons.set_size(alterer.dna.features["breasts_size"]) if("Penis Girth") - var/obj/item/organ/external/genital/penis/sausage = alterer.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis/sausage = alterer.get_organ_slot(ORGAN_SLOT_PENIS) var/max_girth = PENIS_MAX_GIRTH if(alterer.dna.features["penis_size"] >= max_girth) max_girth = alterer.dna.features["penis_size"] @@ -1066,7 +1066,7 @@ sausage.girth = alterer.dna.features["penis_girth"] if("Penis Length") - var/obj/item/organ/external/genital/penis/wang = alterer.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis/wang = alterer.get_organ_slot(ORGAN_SLOT_PENIS) var/new_length = tgui_input_number( alterer, "Choose your penis length:\n([PENIS_MIN_LENGTH]-[PENIS_MAX_LENGTH] inches)", @@ -1083,7 +1083,7 @@ wang.set_size(alterer.dna.features["penis_size"]) if("Penis Sheath") - var/obj/item/organ/external/genital/penis/schlong = alterer.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis/schlong = alterer.get_organ_slot(ORGAN_SLOT_PENIS) var/new_sheath = tgui_input_list( alterer, "Choose your penis sheath", @@ -1099,7 +1099,7 @@ alterer.balloon_alert(alterer, "[alterer.dna.features["penis_taur_mode"] ? "using taur penis" : "not using taur penis"]") if("Testicles Size") - var/obj/item/organ/external/genital/testicles/avocados = alterer.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/testicles/avocados = alterer.get_organ_slot(ORGAN_SLOT_TESTICLES) var/new_size = tgui_input_list( alterer, "Choose your character's testicles size:", @@ -1125,7 +1125,7 @@ /datum/action/innate/core_signal/Activate() var/mob/living/carbon/human/slime = owner - var/obj/item/organ/internal/brain/slime/core = slime.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/slime/core = slime.get_organ_slot(ORGAN_SLOT_BRAIN) if(slime_restricted && !isjellyperson(slime)) return if(core.gps_active) diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm index 3b038ab1bde..972eb265868 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm @@ -14,15 +14,15 @@ bodytemp_cold_damage_limit = (T20C - 10) species_language_holder = /datum/language_holder/skrell mutant_bodyparts = list() - mutanttongue = /obj/item/organ/internal/tongue/skrell + mutanttongue = /obj/item/organ/tongue/skrell payday_modifier = 1.0 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT - mutantbrain = /obj/item/organ/internal/brain/skrell - mutanteyes = /obj/item/organ/internal/eyes/skrell - mutantlungs = /obj/item/organ/internal/lungs/skrell - mutantheart = /obj/item/organ/internal/heart/skrell - mutantliver = /obj/item/organ/internal/liver/skrell - mutanttongue = /obj/item/organ/internal/tongue/skrell + mutantbrain = /obj/item/organ/brain/skrell + mutanteyes = /obj/item/organ/eyes/skrell + mutantlungs = /obj/item/organ/lungs/skrell + mutantheart = /obj/item/organ/heart/skrell + mutantliver = /obj/item/organ/liver/skrell + mutanttongue = /obj/item/organ/tongue/skrell bodypart_overrides = list( BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/skrell, BODY_ZONE_CHEST = /obj/item/bodypart/chest/mutant/skrell, @@ -76,7 +76,7 @@ skrell.update_body(TRUE) -/obj/item/organ/internal/tongue/skrell +/obj/item/organ/tongue/skrell name = "internal vocal sacs" desc = "An Strange looking sac." icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi' @@ -106,27 +106,27 @@ disliked_foodtypes = RAW | CLOTH toxic_foodtypes = DAIRY | MEAT -/obj/item/organ/internal/tongue/skrell/get_possible_languages() +/obj/item/organ/tongue/skrell/get_possible_languages() return languages_possible_skrell -/obj/item/organ/internal/heart/skrell +/obj/item/organ/heart/skrell name = "skrellian heart" icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi' icon_state = "heart" -/obj/item/organ/internal/brain/skrell +/obj/item/organ/brain/skrell name = "spongy brain" icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi' icon_state = "brain2" -/obj/item/organ/internal/eyes/skrell +/obj/item/organ/eyes/skrell name = "amphibian eyes" desc = "Large black orbs." icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi' icon_state = "eyes" flash_protect = FLASH_PROTECTION_SENSITIVE -/obj/item/organ/internal/lungs/skrell +/obj/item/organ/lungs/skrell name = "skrell lungs" icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi' icon_state = "lungs" @@ -152,7 +152,7 @@ heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3 heat_damage_type = BURN -/obj/item/organ/internal/liver/skrell +/obj/item/organ/liver/skrell name = "skrell liver" icon_state = "liver" icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi' diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm index 6e7077559a0..15d5ce08c4a 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm @@ -10,7 +10,7 @@ TRAIT_CATLIKE_GRACE, TRAIT_WATER_HATER, ) - mutanttongue = /obj/item/organ/internal/tongue/cat/tajaran + mutanttongue = /obj/item/organ/tongue/cat/tajaran inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID mutant_bodyparts = list() payday_modifier = 1.0 @@ -34,7 +34,7 @@ "legs" = list("Normal Legs", FALSE), ) -/obj/item/organ/internal/tongue/cat/tajaran +/obj/item/organ/tongue/cat/tajaran liked_foodtypes = GRAIN | MEAT disliked_foodtypes = CLOTH diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm index 8731ff495d1..ff3f78f4d20 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm @@ -9,7 +9,7 @@ ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID mutant_bodyparts = list() - mutanttongue = /obj/item/organ/internal/tongue/unathi + mutanttongue = /obj/item/organ/tongue/unathi payday_modifier = 1.0 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT examine_limb_id = SPECIES_LIZARD @@ -34,7 +34,7 @@ "legs" = list("Normal Legs", FALSE), ) -/obj/item/organ/internal/tongue/unathi +/obj/item/organ/tongue/unathi liked_foodtypes = GORE | MEAT | SEAFOOD | NUTS disliked_foodtypes = GRAIN | DAIRY | CLOTH | GROSS toxic_foodtypes = TOXIC diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm index b91ab569ad3..fb8a317fc10 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm @@ -10,9 +10,9 @@ TRAIT_MUTANT_COLORS, ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID - mutanttongue = /obj/item/organ/internal/tongue/vox - mutantlungs = /obj/item/organ/internal/lungs/nitrogen/vox - mutantbrain = /obj/item/organ/internal/brain/vox + mutanttongue = /obj/item/organ/tongue/vox + mutantlungs = /obj/item/organ/lungs/nitrogen/vox + mutantbrain = /obj/item/organ/brain/vox breathid = "n2" mutant_bodyparts = list() payday_modifier = 1.0 diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm index ca169f54721..8060cb73902 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm @@ -9,7 +9,7 @@ ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID mutant_bodyparts = list() - mutanttongue = /obj/item/organ/internal/tongue/vulpkanin + mutanttongue = /obj/item/organ/tongue/vulpkanin species_language_holder = /datum/language_holder/vulpkanin payday_modifier = 1.0 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT @@ -31,7 +31,7 @@ "legs" = list("Normal Legs", FALSE), ) -/obj/item/organ/internal/tongue/vulpkanin +/obj/item/organ/tongue/vulpkanin liked_foodtypes = RAW | MEAT disliked_foodtypes = CLOTH toxic_foodtypes = TOXIC diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm index ded13972015..0c4439c31dc 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm @@ -10,14 +10,14 @@ TRAIT_MUTANT_COLORS, ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID - mutantbrain = /obj/item/organ/internal/brain/xeno_hybrid - mutanttongue = /obj/item/organ/internal/tongue/xeno_hybrid - mutantliver = /obj/item/organ/internal/liver/xeno_hybrid - mutantstomach = /obj/item/organ/internal/stomach/xeno_hybrid + mutantbrain = /obj/item/organ/brain/xeno_hybrid + mutanttongue = /obj/item/organ/tongue/xeno_hybrid + mutantliver = /obj/item/organ/liver/xeno_hybrid + mutantstomach = /obj/item/organ/stomach/xeno_hybrid mutant_organs = list( - /obj/item/organ/internal/alien/plasmavessel/roundstart, - /obj/item/organ/internal/alien/resinspinner/roundstart, - /obj/item/organ/internal/alien/hivenode, + /obj/item/organ/alien/plasmavessel/roundstart, + /obj/item/organ/alien/resinspinner/roundstart, + /obj/item/organ/alien/hivenode, ) exotic_blood = /datum/reagent/toxin/acid exotic_bloodtype = "X*" @@ -133,7 +133,7 @@ #define BUILD_DURATION 0.5 SECONDS //Plasma vessel -/obj/item/organ/internal/alien/plasmavessel/roundstart +/obj/item/organ/alien/plasmavessel/roundstart stored_plasma = 55 max_plasma = 55 plasma_rate = 2 @@ -156,7 +156,7 @@ return ..() //Resin spinner -/obj/item/organ/internal/alien/resinspinner/roundstart +/obj/item/organ/alien/resinspinner/roundstart actions_types = list(/datum/action/cooldown/alien/make_structure/resin/roundstart) /datum/action/cooldown/alien/make_structure/resin @@ -167,17 +167,17 @@ //Non-modularly checked in `code\modules\mob\living\carbon\alien\adult\alien_powers.dm` //Organ resprites -/obj/item/organ/internal/brain/xeno_hybrid +/obj/item/organ/brain/xeno_hybrid icon_state = "brain-x" //rebranding -/obj/item/organ/internal/stomach/xeno_hybrid +/obj/item/organ/stomach/xeno_hybrid icon_state = "stomach-x" -/obj/item/organ/internal/liver/xeno_hybrid +/obj/item/organ/liver/xeno_hybrid icon_state = "liver-x" //Liver modification (xenohybrids can process plasma!) -/obj/item/organ/internal/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired) +/obj/item/organ/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired) . = ..() if(. & COMSIG_MOB_STOP_REAGENT_CHECK) return diff --git a/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm index c399b5a529c..2bbb57c36b4 100644 --- a/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -842,7 +842,7 @@ /datum/reagent/consumable/ethanol/cringe_weaver/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) . = ..() - var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) if(liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)) if(drinker.heal_bodypart_damage(1 * REM * seconds_per_tick, 1 * REM * seconds_per_tick)) //coroners love drinking formaldehyde return UPDATE_MOB_HEALTH diff --git a/modular_nova/modules/customization/modules/surgery/organs/cap.dm b/modular_nova/modules/customization/modules/surgery/organs/cap.dm index 664334aee03..59a415e81d3 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/cap.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/cap.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/mushroom_cap +/obj/item/organ/mushroom_cap icon_state = "random_fly_1" mutantpart_key = "caps" @@ -6,7 +6,7 @@ slot = ORGAN_SLOT_EXTERNAL_CAP preference = "feature_caps" -/obj/item/organ/external/mushroom_cap/Initialize(mapload) +/obj/item/organ/mushroom_cap/Initialize(mapload) if(!ispath(bodypart_overlay)) mutantpart_info[MUTANT_INDEX_COLOR_LIST] = bodypart_overlay.draw_color return ..() diff --git a/modular_nova/modules/customization/modules/surgery/organs/ears.dm b/modular_nova/modules/customization/modules/surgery/organs/ears.dm index c8796f831b7..8328756fbb8 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/ears.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/ears.dm @@ -1,13 +1,13 @@ -/obj/item/organ/internal/ears/mutant +/obj/item/organ/ears/mutant name = "fluffy ears" desc = "Wait, there's two pairs of these?" icon = 'icons/obj/clothing/head/costume.dmi' icon_state = "kitty" bodypart_overlay = /datum/bodypart_overlay/mutant/ears -/obj/item/organ/internal/ears/cat +/obj/item/organ/ears/cat -/obj/item/organ/internal/ears/fox +/obj/item/organ/ears/fox /datum/bodypart_overlay/mutant/ears feature_key = "ears" diff --git a/modular_nova/modules/customization/modules/surgery/organs/eyes.dm b/modular_nova/modules/customization/modules/surgery/organs/eyes.dm index c6135f9b2ef..ea97856d37e 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/eyes.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/eyes.dm @@ -1,8 +1,8 @@ -/obj/item/organ/internal/eyes +/obj/item/organ/eyes var/is_emissive = FALSE var/eyes_layer = BODY_LAYER - -/obj/item/organ/internal/eyes/night_vision/ashwalker + +/obj/item/organ/eyes/night_vision/ashwalker //give ashwalker darkvision a reddish-blue tint low_light_cutoff = list(22, 12, 17) medium_light_cutoff = list(33, 18, 26) diff --git a/modular_nova/modules/customization/modules/surgery/organs/fluff.dm b/modular_nova/modules/customization/modules/surgery/organs/fluff.dm index 0dab3106c26..d63e83117aa 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/fluff.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/fluff.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/fluff +/obj/item/organ/fluff name = "fluff" desc = "Real fluffy." icon_state = "random_fly_1" diff --git a/modular_nova/modules/customization/modules/surgery/organs/frills.dm b/modular_nova/modules/customization/modules/surgery/organs/frills.dm index 0dacf38e09f..185e688e779 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/frills.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/frills.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/frills +/obj/item/organ/frills preference = "feature_frills" mutantpart_key = "frills" mutantpart_info = list(MUTANT_INDEX_NAME = "Divinity", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) diff --git a/modular_nova/modules/customization/modules/surgery/organs/genitals.dm b/modular_nova/modules/customization/modules/surgery/organs/genitals.dm index 89b2a7caf8a..ecc1176ac11 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/genitals.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/genitals.dm @@ -1,6 +1,6 @@ -/obj/item/organ/external/genital +/obj/item/organ/genital color = "#fcccb3" - organ_flags = ORGAN_ORGANIC | ORGAN_UNREMOVABLE + organ_flags = ORGAN_ORGANIC | ORGAN_UNREMOVABLE | ORGAN_EXTERNAL ///Size value of the genital, needs to be translated to proper lengths/diameters/cups var/genital_size = 1 ///Sprite name of the genital, it's what shows up on character creation @@ -23,11 +23,11 @@ var/layer_mode = GENITAL_LAYER_NORMAL //This translates the float size into a sprite string -/obj/item/organ/external/genital/proc/get_sprite_size_string() +/obj/item/organ/genital/proc/get_sprite_size_string() return 0 //This translates the float size into a sprite string -/obj/item/organ/external/genital/proc/update_sprite_suffix() +/obj/item/organ/genital/proc/update_sprite_suffix() sprite_suffix = "[get_sprite_size_string()]" var/datum/bodypart_overlay/mutant/genital/our_overlay = bodypart_overlay @@ -37,33 +37,33 @@ our_overlay.organ_slot = src.slot -/obj/item/organ/external/genital/proc/get_description_string(datum/sprite_accessory/genital/gas) +/obj/item/organ/genital/proc/get_description_string(datum/sprite_accessory/genital/gas) return "You see genitals" -/obj/item/organ/external/genital/proc/update_genital_icon_state() +/obj/item/organ/genital/proc/update_genital_icon_state() return -/obj/item/organ/external/genital/proc/set_size(size) +/obj/item/organ/genital/proc/set_size(size) genital_size = size update_sprite_suffix() -/obj/item/organ/external/genital/Initialize(mapload) +/obj/item/organ/genital/Initialize(mapload) . = ..() update_sprite_suffix() if(CONFIG_GET(flag/disable_lewd_items)) return INITIALIZE_HINT_QDEL //Removes ERP organs depending on config -/obj/item/organ/external/genital/Insert(mob/living/carbon/M, special, movement_flags) +/obj/item/organ/genital/Insert(mob/living/carbon/M, special, movement_flags) if(CONFIG_GET(flag/disable_erp_preferences)) return . = ..() -/obj/item/organ/external/genital/Remove(mob/living/carbon/M, special = FALSE, moving) +/obj/item/organ/genital/Remove(mob/living/carbon/M, special = FALSE, moving) . = ..() update_genital_icon_state() -/obj/item/organ/external/genital/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/build_from_dna(datum/dna/DNA, associated_key) . = ..() var/datum/sprite_accessory/genital/accessory = SSaccessories.sprite_accessories[associated_key][DNA.mutant_bodyparts[associated_key][MUTANT_INDEX_NAME]] genital_name = accessory.name @@ -78,10 +78,10 @@ our_overlay.organ_slot = src.slot /// for specific build_from_dna behavior that also checks the genital accessory. -/obj/item/organ/external/genital/proc/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) +/obj/item/organ/genital/proc/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) return -/obj/item/organ/external/genital/proc/is_exposed() +/obj/item/organ/genital/proc/is_exposed() if(!owner) return TRUE @@ -163,7 +163,7 @@ /// Helper function - if the organ this overlay is tied to has been set to layer above clothing, return TRUE /datum/bodypart_overlay/mutant/genital/proc/layer_mode_check() if(istype(owner)) - var/obj/item/organ/external/genital/owning_organ = owner.get_organ_slot(organ_slot) + var/obj/item/organ/genital/owning_organ = owner.get_organ_slot(organ_slot) if(owning_organ?.layer_mode == GENITAL_LAYER_HIGH) return TRUE return FALSE @@ -180,7 +180,7 @@ return ..() -/obj/item/organ/external/genital/penis +/obj/item/organ/genital/penis name = "penis" desc = "A male reproductive organ." icon_state = "penis" @@ -213,7 +213,7 @@ return TRUE -/obj/item/organ/external/genital/penis/get_description_string(datum/sprite_accessory/genital/gas) +/obj/item/organ/genital/penis/get_description_string(datum/sprite_accessory/genital/gas) var/returned_string = "" var/pname = LOWER_TEXT(genital_name) == "nondescript" ? "" : LOWER_TEXT(genital_name) + " " if(sheath != SHEATH_NONE && aroused != AROUSAL_FULL) //Hidden in sheath @@ -235,7 +235,7 @@ returned_string += " It's fully erect." return returned_string -/obj/item/organ/external/genital/penis/update_genital_icon_state() +/obj/item/organ/genital/penis/update_genital_icon_state() var/size_affix var/measured_size = FLOOR(genital_size,1) if(measured_size < 1) @@ -254,7 +254,7 @@ passed_string += "_s" icon_state = passed_string -/obj/item/organ/external/genital/penis/get_sprite_size_string() +/obj/item/organ/genital/penis/get_sprite_size_string() if(aroused != AROUSAL_FULL && sheath != SHEATH_NONE) //Sheath time! var/poking_out = 0 if(aroused == AROUSAL_PARTIAL) @@ -282,14 +282,14 @@ passed_string += "_s" return passed_string -/obj/item/organ/external/genital/penis/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/penis/build_from_dna(datum/dna/DNA, associated_key) girth = DNA.features["penis_girth"] uses_skin_color = DNA.features["penis_uses_skincolor"] set_size(DNA.features["penis_size"]) return ..() -/obj/item/organ/external/genital/penis/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) +/obj/item/organ/genital/penis/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) var/datum/sprite_accessory/genital/penis/snake = accessory if(snake.can_have_sheath) sheath = DNA.features["penis_sheath"] @@ -300,7 +300,7 @@ return SSaccessories.sprite_accessories[ORGAN_SLOT_PENIS] -/obj/item/organ/external/genital/testicles +/obj/item/organ/genital/testicles name = "testicles" desc = "A male reproductive organ." icon_state = "testicles" @@ -332,30 +332,30 @@ else return TRUE -/obj/item/organ/external/genital/testicles/update_genital_icon_state() +/obj/item/organ/genital/testicles/update_genital_icon_state() var/measured_size = clamp(genital_size, 1, 6) var/passed_string = "testicles_[genital_type]_[measured_size]" if(uses_skintones) passed_string += "_s" icon_state = passed_string -/obj/item/organ/external/genital/testicles/get_description_string(datum/sprite_accessory/genital/gas) +/obj/item/organ/genital/testicles/get_description_string(datum/sprite_accessory/genital/gas) if(genital_name == "Internal") //Checks if Testicles are of Internal Variety visibility_preference = GENITAL_SKIP_VISIBILITY //Removes visibility if yes. else return "You see a pair of testicles, they look [LOWER_TEXT(balls_size_to_description(genital_size))]." -/obj/item/organ/external/genital/testicles/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/testicles/build_from_dna(datum/dna/DNA, associated_key) uses_skin_color = DNA.features["testicles_uses_skincolor"] set_size(DNA.features["balls_size"]) return ..() -/obj/item/organ/external/genital/testicles/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) +/obj/item/organ/genital/testicles/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) if(DNA.features["testicles_uses_skintones"]) uses_skintones = accessory.has_skintone_shading -/obj/item/organ/external/genital/testicles/get_sprite_size_string() +/obj/item/organ/genital/testicles/get_sprite_size_string() var/measured_size = FLOOR(genital_size,1) measured_size = clamp(measured_size, 0, 6) var/passed_string = "[genital_type]_[measured_size]" @@ -367,7 +367,7 @@ return SSaccessories.sprite_accessories[ORGAN_SLOT_TESTICLES] -/obj/item/organ/external/genital/testicles/proc/balls_size_to_description(number) +/obj/item/organ/genital/testicles/proc/balls_size_to_description(number) if(number < 0) number = 0 var/returned = GLOB.balls_size_translation["[number]"] @@ -375,14 +375,14 @@ returned = BREAST_SIZE_BEYOND_MEASUREMENT return returned -/obj/item/organ/external/genital/testicles/proc/balls_description_to_size(cup) +/obj/item/organ/genital/testicles/proc/balls_description_to_size(cup) for(var/key in GLOB.balls_size_translation) if(GLOB.balls_size_translation[key] == cup) return text2num(key) return 0 -/obj/item/organ/external/genital/vagina +/obj/item/organ/genital/vagina name = "vagina" icon = 'modular_nova/master_files/icons/obj/genitals/vagina.dmi' icon_state = "vagina" @@ -412,7 +412,7 @@ else return TRUE -/obj/item/organ/external/genital/vagina/get_description_string(datum/sprite_accessory/genital/gas) +/obj/item/organ/genital/vagina/get_description_string(datum/sprite_accessory/genital/gas) var/returned_string = "You see a [LOWER_TEXT(genital_name)] vagina." if(LOWER_TEXT(genital_name) == "cloaca") returned_string = "You see a cloaca." //i deserve a pipebomb for this @@ -425,18 +425,18 @@ returned_string += " It's bright and dripping with arousal." return returned_string -/obj/item/organ/external/genital/vagina/get_sprite_size_string() +/obj/item/organ/genital/vagina/get_sprite_size_string() var/is_dripping = 0 if(aroused == AROUSAL_FULL) is_dripping = 1 return "[genital_type]_[is_dripping]" -/obj/item/organ/external/genital/vagina/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/vagina/build_from_dna(datum/dna/DNA, associated_key) uses_skin_color = DNA.features["vagina_uses_skincolor"] return ..() // will update the sprite suffix -/obj/item/organ/external/genital/vagina/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) +/obj/item/organ/genital/vagina/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) if(DNA.features["vagina_uses_skintones"]) uses_skintones = accessory.has_skintone_shading @@ -444,7 +444,7 @@ return SSaccessories.sprite_accessories[ORGAN_SLOT_VAGINA] -/obj/item/organ/external/genital/womb +/obj/item/organ/genital/womb name = "womb" desc = "A female reproductive organ." icon = 'modular_nova/master_files/icons/obj/genitals/vagina.dmi' @@ -467,7 +467,7 @@ return SSaccessories.sprite_accessories[ORGAN_SLOT_WOMB] -/obj/item/organ/external/genital/anus +/obj/item/organ/genital/anus name = "anus" desc = "What do you want me to tell you?" icon = 'modular_nova/master_files/icons/obj/genitals/anus.dmi' @@ -484,7 +484,7 @@ feature_key = ORGAN_SLOT_ANUS layers = NONE -/obj/item/organ/external/genital/anus/get_description_string(datum/sprite_accessory/genital/gas) +/obj/item/organ/genital/anus/get_description_string(datum/sprite_accessory/genital/gas) var/returned_string = "You see an [LOWER_TEXT(genital_name)]." if(aroused == AROUSAL_PARTIAL) returned_string += " It looks tight." @@ -496,7 +496,7 @@ return SSaccessories.sprite_accessories[ORGAN_SLOT_ANUS] -/obj/item/organ/external/genital/breasts +/obj/item/organ/genital/breasts name = "breasts" desc = "Female milk producing organs." icon_state = "breasts" @@ -524,7 +524,7 @@ else return TRUE -/obj/item/organ/external/genital/breasts/get_description_string(datum/sprite_accessory/genital/gas) +/obj/item/organ/genital/breasts/get_description_string(datum/sprite_accessory/genital/gas) var/returned_string = "You see a [LOWER_TEXT(genital_name)] of breasts." var/size_description var/translation = breasts_size_to_cup(genital_size) @@ -543,7 +543,7 @@ returned_string += " Their nipples look hard and perky." return returned_string -/obj/item/organ/external/genital/breasts/update_genital_icon_state() +/obj/item/organ/genital/breasts/update_genital_icon_state() var/max_size = 5 var/current_size = FLOOR(genital_size, 1) if(current_size < 0) @@ -555,7 +555,7 @@ passed_string += "_s" icon_state = passed_string -/obj/item/organ/external/genital/breasts/get_sprite_size_string() +/obj/item/organ/genital/breasts/get_sprite_size_string() var/max_size = 5 if(genital_type == "pair") max_size = 16 @@ -569,21 +569,21 @@ passed_string += "_s" return passed_string -/obj/item/organ/external/genital/breasts/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/breasts/build_from_dna(datum/dna/DNA, associated_key) lactates = DNA.features["breasts_lactation"] uses_skin_color = DNA.features["breasts_uses_skincolor"] set_size(DNA.features["breasts_size"]) return ..() -/obj/item/organ/external/genital/breasts/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) +/obj/item/organ/genital/breasts/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA) if(DNA.features["breasts_uses_skintones"]) uses_skintones = accessory.has_skintone_shading /datum/bodypart_overlay/mutant/genital/breasts/get_global_feature_list() return SSaccessories.sprite_accessories[ORGAN_SLOT_BREASTS] -/obj/item/organ/external/genital/breasts/proc/breasts_size_to_cup(number) +/obj/item/organ/genital/breasts/proc/breasts_size_to_cup(number) if(number < 0) number = 0 var/returned = GLOB.breast_size_translation["[number]"] @@ -591,7 +591,7 @@ returned = BREAST_SIZE_BEYOND_MEASUREMENT return returned -/obj/item/organ/external/genital/breasts/proc/breasts_cup_to_size(cup) +/obj/item/organ/genital/breasts/proc/breasts_cup_to_size(cup) for(var/key in GLOB.breast_size_translation) if(GLOB.breast_size_translation[key] == cup) return text2num(key) @@ -607,14 +607,14 @@ return var/list/genital_list = list() - for(var/obj/item/organ/external/genital/genital in organs) + for(var/obj/item/organ/genital/genital in organs) if(!genital.visibility_preference == GENITAL_SKIP_VISIBILITY) genital_list += genital if(!genital_list.len) //There is nothing to expose return - var/obj/item/organ/external/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", genital_list) + var/obj/item/organ/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", genital_list) if(!picked_organ || !(picked_organ in organs)) return @@ -653,14 +653,14 @@ return var/list/genital_list = list() - for(var/obj/item/organ/external/genital/genital in organs) + for(var/obj/item/organ/genital/genital in organs) if(!genital.aroused == AROUSAL_CANT) genital_list += genital if(!genital_list.len) //There is nothing to modify. return - var/obj/item/organ/external/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to the change arousal of", "Expose/Hide genitals", genital_list) + var/obj/item/organ/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to the change arousal of", "Expose/Hide genitals", genital_list) if(!picked_organ || !(picked_organ in organs)) return diff --git a/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm b/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm index 973b3d8e5a6..6f8b3255f71 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/head_accessory +/obj/item/organ/head_accessory name = "head accessory" desc = "It goes on the head." icon_state = "random_fly_1" diff --git a/modular_nova/modules/customization/modules/surgery/organs/horns.dm b/modular_nova/modules/customization/modules/surgery/organs/horns.dm index 02f0084ab24..efb22c9f971 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/horns.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/horns.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/horns +/obj/item/organ/horns desc = "Why do some people even have horns? Well, this one obviously doesn't." preference = "feature_horns" mutantpart_key = "horns" diff --git a/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm b/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm index b21e6756cab..3434897a685 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm @@ -1,3 +1,3 @@ -/obj/item/organ/external/antennae +/obj/item/organ/antennae mutantpart_key = "moth_antennae" mutantpart_info = list(MUTANT_INDEX_NAME = "Plain", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) diff --git a/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm b/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm index 4863ab2f55e..aa10a2e02ca 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/moth_markings +/obj/item/organ/moth_markings name = "moth markings" desc = "How did you even get that off...?" icon_state = "random_fly_2" diff --git a/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm b/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm index 51f97f36097..9f421623ce7 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/neck_accessory +/obj/item/organ/neck_accessory name = "neck accessory" desc = "It goes on the neck." icon_state = "random_fly_1" diff --git a/modular_nova/modules/customization/modules/surgery/organs/nif.dm b/modular_nova/modules/customization/modules/surgery/organs/nif.dm index 1398ba45136..854f3c4688c 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/nif.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/nif.dm @@ -17,7 +17,7 @@ /datum/surgery/repair_nif/can_start(mob/user, mob/living/patient) var/mob/living/carbon/human/nif_patient = patient - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) if(!nif_patient || !installed_nif) return FALSE @@ -49,7 +49,7 @@ ) var/mob/living/carbon/human/nif_patient = target - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) installed_nif.durability = installed_nif.max_durability diff --git a/modular_nova/modules/customization/modules/surgery/organs/organ.dm b/modular_nova/modules/customization/modules/surgery/organs/organ.dm index f15b09e9a77..326eb1ca528 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/organ.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/organ.dm @@ -6,17 +6,17 @@ /// Relevant layer flags, as set by the organ's associated sprite_accessory, should there be one. var/relevant_layers -/obj/item/organ/external +/obj/item/organ ///This is for associating an organ with a mutant bodypart. Look at tails for examples var/mutantpart_key var/list/list/mutantpart_info -/obj/item/organ/external/Initialize(mapload) +/obj/item/organ/Initialize(mapload) . = ..() if(mutantpart_key) color = mutantpart_info[MUTANT_INDEX_COLOR_LIST][1] -/obj/item/organ/external/Remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/Remove(mob/living/carbon/organ_owner, special, movement_flags) // NOVA EDIT ADDITION START if(mutantpart_key) transfer_mutantpart_info(organ_owner, special) @@ -24,7 +24,7 @@ return ..() /// Copies the organ's mutantpart_info to the owner's mutant_bodyparts -/obj/item/organ/external/proc/copy_to_mutant_bodyparts(mob/living/carbon/organ_owner, special) +/obj/item/organ/proc/copy_to_mutant_bodyparts(mob/living/carbon/organ_owner, special) var/mob/living/carbon/human/human_owner = organ_owner if(!istype(human_owner)) return @@ -34,7 +34,7 @@ human_owner.update_body() /// Copies the mob's mutant_bodyparts data to an organ's mutantpart_info for consistency e.g. on organ removal -/obj/item/organ/external/proc/transfer_mutantpart_info(mob/living/carbon/organ_owner, special) +/obj/item/organ/proc/transfer_mutantpart_info(mob/living/carbon/organ_owner, special) var/mob/living/carbon/human/human_owner = organ_owner if(!istype(human_owner)) return @@ -50,7 +50,7 @@ /obj/item/organ/proc/build_from_dna(datum/dna/DNA, associated_key) return -/obj/item/organ/external/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/build_from_dna(datum/dna/DNA, associated_key) mutantpart_key = associated_key mutantpart_info = DNA.mutant_bodyparts[associated_key].Copy() color = mutantpart_info[MUTANT_INDEX_COLOR_LIST][1] diff --git a/modular_nova/modules/customization/modules/surgery/organs/pod.dm b/modular_nova/modules/customization/modules/surgery/organs/pod.dm index e545f3f17c0..2c53d32f204 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/pod.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/pod.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/pod_hair +/obj/item/organ/pod_hair name = "podperson hair" desc = "Base for many-o-salads." diff --git a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm index 9bd71abe4c3..7240a8f16e6 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/skrell_hair +/obj/item/organ/skrell_hair name = "skrell_hair" desc = "Hair isn't really the best way to describe it, but you really can't think of any other word that makes sense." icon_state = "random_fly_1" diff --git a/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm b/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm index c9ff539dec6..8cafba48edb 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/synth_antenna +/obj/item/organ/synth_antenna name = "synth antenna" desc = "Wonder if we'll catch Syndicate frequencies with these..." icon_state = "random_fly_1" diff --git a/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm b/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm index 7339229ffc5..cbcb700fb79 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/synth_screen +/obj/item/organ/synth_screen name = "synth screen" desc = "Surely that's just a bunch of LEDs and not a retro-projected screen, right? Right...?" icon_state = "tonguerobot" diff --git a/modular_nova/modules/customization/modules/surgery/organs/tails.dm b/modular_nova/modules/customization/modules/surgery/organs/tails.dm index 059cd5779d1..761a3247340 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/tails.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/tails.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/tail +/obj/item/organ/tail mutantpart_key = "tail" mutantpart_info = list(MUTANT_INDEX_NAME = "Smooth", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) var/can_wag = TRUE @@ -44,22 +44,22 @@ return TRUE -/obj/item/organ/external/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags) if(sprite_accessory_flags & SPRITE_ACCESSORY_WAG_ABLE) wag_flags |= WAG_ABLE return ..() -/obj/item/organ/external/tail/cat +/obj/item/organ/tail/cat mutantpart_info = list(MUTANT_INDEX_NAME = "Cat", MUTANT_INDEX_COLOR_LIST = list("#FFAA00")) -/obj/item/organ/external/tail/monkey +/obj/item/organ/tail/monkey wag_flags = WAG_ABLE // waggable monkey tails mutantpart_info = list(MUTANT_INDEX_NAME = "Monkey", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) -/obj/item/organ/external/tail/lizard +/obj/item/organ/tail/lizard mutantpart_info = list(MUTANT_INDEX_NAME = "Smooth", MUTANT_INDEX_COLOR_LIST = list("#DDFFDD")) -/obj/item/organ/external/tail/fluffy +/obj/item/organ/tail/fluffy name = "fluffy tail" -/obj/item/organ/external/tail/fluffy/no_wag +/obj/item/organ/tail/fluffy/no_wag diff --git a/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm b/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm index 4f6889f6c78..1c35e7f21ab 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm @@ -1,10 +1,11 @@ -/obj/item/organ/external/taur_body +/obj/item/organ/taur_body name = "taur body" zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_EXTERNAL_TAUR external_bodyshapes = BODYSHAPE_TAUR use_mob_sprite_as_obj_sprite = TRUE + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL preference = "feature_taur" mutantpart_key = "taur" mutantpart_info = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF")) @@ -45,15 +46,15 @@ /// When considering how much to offset our rider, we multiply size scaling against this. var/riding_offset_scaling_mult = 0.8 -/obj/item/organ/external/taur_body/horselike +/obj/item/organ/taur_body/horselike can_use_saddle = TRUE -/obj/item/organ/external/taur_body/horselike/synth - organ_flags = ORGAN_ROBOTIC +/obj/item/organ/taur_body/horselike/synth + organ_flags = ORGAN_ROBOTIC | ORGAN_EXTERNAL -/obj/item/organ/external/taur_body/horselike/deer +/obj/item/organ/taur_body/horselike/deer -/obj/item/organ/external/taur_body/horselike/deer/Initialize(mapload) +/obj/item/organ/taur_body/horselike/deer/Initialize(mapload) . = ..() taur_specific_clothing_y_offsets = list( @@ -63,26 +64,26 @@ TEXT_SOUTH = 0, ) -/obj/item/organ/external/taur_body/serpentine +/obj/item/organ/taur_body/serpentine left_leg_name = "upper serpentine body" right_leg_name = "lower serpentine body" -/obj/item/organ/external/taur_body/serpentine/synth - organ_flags = ORGAN_ROBOTIC +/obj/item/organ/taur_body/serpentine/synth + organ_flags = ORGAN_ROBOTIC | ORGAN_EXTERNAL -/obj/item/organ/external/taur_body/spider +/obj/item/organ/taur_body/spider left_leg_name = "left legs" right_leg_name = "right legs" -/obj/item/organ/external/taur_body/tentacle +/obj/item/organ/taur_body/tentacle left_leg_name = "front tentacles" right_leg_name = "back tentacles" -/obj/item/organ/external/taur_body/blob +/obj/item/organ/taur_body/blob left_leg_name = "outer blob" right_leg_name = "inner blob" -/obj/item/organ/external/taur_body/anthro +/obj/item/organ/taur_body/anthro left_leg_name = null right_leg_name = null @@ -102,7 +103,7 @@ return SSaccessories.sprite_accessories["taur"] -/obj/item/organ/external/taur_body/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/taur_body/mob_insert(mob/living/carbon/receiver, special, movement_flags) if(sprite_accessory_flags & SPRITE_ACCESSORY_HIDE_SHOES) external_bodyshapes |= BODYSHAPE_HIDE_SHOES @@ -143,7 +144,7 @@ return ..() -/obj/item/organ/external/taur_body/mob_remove(mob/living/carbon/organ_owner, special, moving) +/obj/item/organ/taur_body/mob_remove(mob/living/carbon/organ_owner, special, moving) if(QDELETED(owner)) return ..() @@ -170,7 +171,7 @@ return ..() -/obj/item/organ/external/taur_body/Destroy() +/obj/item/organ/taur_body/Destroy() . = ..() if(old_left_leg) QDEL_NULL(old_left_leg) @@ -178,7 +179,7 @@ if(old_right_leg) QDEL_NULL(old_right_leg) -/obj/item/organ/external/taur_body/proc/get_riding_offset(oversized = FALSE) +/obj/item/organ/taur_body/proc/get_riding_offset(oversized = FALSE) var/size_scaling = (owner.dna.features["body_size"] / BODY_SIZE_NORMAL) - 1 var/scaling_mult = 1 + (size_scaling * riding_offset_scaling_mult) diff --git a/modular_nova/modules/customization/modules/surgery/organs/vox.dm b/modular_nova/modules/customization/modules/surgery/organs/vox.dm index f7407a73b15..cf22d598097 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/vox.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/vox.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/lungs/nitrogen +/obj/item/organ/lungs/nitrogen name = "nitrogen lungs" desc = "A set of lungs for breathing nitrogen." safe_oxygen_min = 0 //Dont need oxygen @@ -8,7 +8,7 @@ oxy_breath_dam_min = 6 oxy_breath_dam_max = 20 -/obj/item/organ/internal/lungs/nitrogen/vox +/obj/item/organ/lungs/nitrogen/vox name = "vox lungs" desc = "They're filled with dust... wow." icon_state = "lungs-c" @@ -18,11 +18,11 @@ cold_level_3_threshold = 0 organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/brain/vox +/obj/item/organ/brain/vox name = "vox brain" organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/brain/vox/emp_act(severity) +/obj/item/organ/brain/vox/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return diff --git a/modular_nova/modules/customization/modules/surgery/organs/wings.dm b/modular_nova/modules/customization/modules/surgery/organs/wings.dm index 924d7cee9b1..20142f9d18e 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/wings.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/wings.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/wings +/obj/item/organ/wings name = "wings" desc = "A pair of wings. Those may or may not allow you to fly... or at the very least flap." zone = BODY_ZONE_CHEST @@ -27,7 +27,7 @@ /datum/bodypart_overlay/mutant/wings/override_color(rgb_value) return draw_color -/obj/item/organ/external/wings/moth +/obj/item/organ/wings/moth name = "moth wings" desc = "A pair of fuzzy moth wings." flight_for_species = list(SPECIES_MOTH) @@ -36,7 +36,7 @@ ///Our associated terrorize spell, for antagonist nightmares var/datum/action/cooldown/spell/moth_and_dash/our_dash -/obj/item/organ/external/wings/moth/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(ismoth(organ_owner)) @@ -46,7 +46,7 @@ our_dash = new(organ_owner) our_dash.Grant(organ_owner) -/obj/item/organ/external/wings/moth/on_mob_remove(mob/living/carbon/organ_owner) +/obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner) . = ..() QDEL_NULL(our_climb) QDEL_NULL(our_dash) @@ -185,21 +185,21 @@ return TRUE return FALSE -/obj/item/organ/external/wings/flight +/obj/item/organ/wings/flight unconditional_flight = TRUE can_open = TRUE -/obj/item/organ/external/wings/flight/angel +/obj/item/organ/wings/flight/angel name = "angel wings" desc = "A pair of magnificent, feathery wings. They look strong enough to lift you up in the air." mutantpart_info = list(MUTANT_INDEX_NAME = "Angel", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) -/obj/item/organ/external/wings/flight/dragon +/obj/item/organ/wings/flight/dragon name = "dragon wings" desc = "A pair of intimidating, membranous wings. They look strong enough to lift you up in the air." mutantpart_info = list(MUTANT_INDEX_NAME = "Dragon", MUTANT_INDEX_COLOR_LIST = list("#880000")) -/obj/item/organ/external/wings/flight/megamoth +/obj/item/organ/wings/flight/megamoth name = "megamoth wings" desc = "A pair of horrifyingly large, fuzzy wings. They look strong enough to lift you up in the air." mutantpart_info = list(MUTANT_INDEX_NAME = "Megamoth", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) @@ -243,20 +243,20 @@ return COLOR_WHITE // We want to keep those wings as their original color, because it looks better. -/obj/item/organ/external/wings/functional +/obj/item/organ/wings/functional bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/locked -/obj/item/organ/external/wings/functional/angel +/obj/item/organ/wings/functional/angel bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/original_color -/obj/item/organ/external/wings/functional/dragon +/obj/item/organ/wings/functional/dragon bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional -/obj/item/organ/external/wings/functional/moth +/obj/item/organ/wings/functional/moth bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/locked/original_color -/obj/item/organ/external/wings/functional/robotic +/obj/item/organ/wings/functional/robotic bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional -/obj/item/organ/external/wings/functional/slime +/obj/item/organ/wings/functional/slime bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional diff --git a/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm b/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm index 5725cc1a9a2..6f64a50c0e8 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm @@ -1,7 +1,8 @@ -/obj/item/organ/external/xenodorsal +/obj/item/organ/xenodorsal name = "dorsal spines" desc = "How did that even fit on them...?" icon_state = "random_fly_2" + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL mutantpart_key = "xenodorsal" mutantpart_info = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) diff --git a/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm b/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm index c08af5cb985..70efcd35672 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm @@ -1,7 +1,8 @@ -/obj/item/organ/external/xenohead +/obj/item/organ/xenohead name = "xeno head" desc = "How did you take that off?" icon_state = "random_fly_2" + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL mutantpart_key = "xenohead" mutantpart_info = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm index 8011e4e0d74..4bbb3edca93 100644 --- a/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm +++ b/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm @@ -90,8 +90,8 @@ var/mob/living/carbon/human/human_target = to_buckle - var/obj/item/organ/external/taur_body/taur_body = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) - var/obj/item/organ/external/taur_body/other_taur_body = human_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/taur_body = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/other_taur_body = human_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) if (isnull(taur_body) || isnull(other_taur_body)) return TRUE diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm index 80bff206af1..0c5f3a21f7b 100644 --- a/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm +++ b/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm @@ -72,12 +72,5 @@ /datum/component/carbon_saddle/proc/wearer_has_requisite_organ(mob/living/carbon/target) if (!istype(target)) return TRUE - - for (var/obj/item/organ/iter_organ as anything in target.organs) - if (!istype(iter_organ, /obj/item/organ/external/taur_body)) - continue - var/obj/item/organ/external/taur_body/taur_body = iter_organ - if (taur_body.can_use_saddle) - return TRUE - - return FALSE + var/obj/item/organ/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + return istype(taur_body) && taur_body.can_use_saddle diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm index d810478e7e9..46b4218d8b2 100644 --- a/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm +++ b/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm @@ -26,7 +26,7 @@ return var/mob/living/carbon/target_carbon = signal_source.loc - var/obj/item/organ/external/taur_body/taur_body = target_carbon.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/taur_body = target_carbon.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) if (!istype(taur_body)) return var/icon_dir = target_carbon.dir @@ -56,7 +56,7 @@ /datum/component/taur_clothing_offset/proc/wearer_dir_changed(mob/living/carbon/human/signal_source, old_dir, new_dir) SIGNAL_HANDLER - var/obj/item/organ/external/taur_body/taur_body = signal_source.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/taur_body = signal_source.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) if (isnull(taur_body)) return diff --git a/modular_nova/modules/customization/readme.md b/modular_nova/modules/customization/readme.md index 6a6246b751a..92bc27ab877 100644 --- a/modular_nova/modules/customization/readme.md +++ b/modular_nova/modules/customization/readme.md @@ -26,8 +26,8 @@ Re-writes how mutant bodyparts exist and how they're handled. Adds in a per limb ./code/modules/mob/living/carbon/human/species_types/felinid.dm > the 5 procs related to wagging tail ./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm the 5 procs related to wagging tail and - /datum/species/lizard/on_species_gain() ./code/modules/surgery/bodyparts/_bodyparts.dm > /obj/item/bodypart/proc/get_limb_icon() - ./code/modules/surgery/organs/ears.dm > /obj/item/organ/internal/ears/cat/Insert(), /obj/item/organ/internal/ears/cat/Remove() - ./code/modules/surgery/organs/tails.dm > /obj/item/organ/external/tail/cat/Insert(), /obj/item/organ/external/tail/cat/Remove(), /obj/item/organ/external/tail/lizard/Initialize(mapload), /obj/item/organ/external/tail/lizard/Insert(), /obj/item/organ/external/tail/lizard/Remove() + ./code/modules/surgery/organs/ears.dm > /obj/item/organ/ears/cat/Insert(), /obj/item/organ/ears/cat/Remove() + ./code/modules/surgery/organs/tails.dm > /obj/item/organ/tail/cat/Insert(), /obj/item/organ/tail/cat/Remove(), /obj/item/organ/tail/lizard/Initialize(mapload), /obj/item/organ/tail/lizard/Insert(), /obj/item/organ/tail/lizard/Remove() ./code/modules/surgery/bodyparts/dismemberment.dm > /mob/living/carbon/regenerate_limb() ./code/modules/mob/living/carbon/human/status_procs.dm > /mob/living/carbon/human/become_husk() > APPENDED ./code/modules/reagents/chemistry/holder.dm > /datum/reagents/metabolize() @@ -46,8 +46,8 @@ Re-writes how mutant bodyparts exist and how they're handled. Adds in a per limb ### Defines: ./code/modules/surgery/organs/tongue.dm > var/static/list/languages_possible_base - added 2 languages -./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm > commented out "mutant_organs = list(/obj/item/organ/external/tail/lizard)" -./code/modules/mob/living/carbon/human/species_types/felinid.dm > commented out "mutantears = /obj/item/organ/internal/ears/cat" and "mutant_organs = list(/obj/item/organ/external/tail/cat)" +./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm > commented out "mutant_organs = list(/obj/item/organ/tail/lizard)" +./code/modules/mob/living/carbon/human/species_types/felinid.dm > commented out "mutantears = /obj/item/organ/ears/cat" and "mutant_organs = list(/obj/item/organ/tail/cat)" ./code/modules/mob/living/carbon/human/species.dm > var/list/list/mutant_bodyparts (added typed list type) ./code/_globalvars/lists/flavor_misc.dm > Removed accessory list defines .\code\datums\keybindings\living.dm > /datum/keybinding/living/look_up > from L to P diff --git a/modular_nova/modules/echolocation_quirk/code/echolocation.dm b/modular_nova/modules/echolocation_quirk/code/echolocation.dm index a8193754215..fbec8a95f30 100644 --- a/modular_nova/modules/echolocation_quirk/code/echolocation.dm +++ b/modular_nova/modules/echolocation_quirk/code/echolocation.dm @@ -42,7 +42,7 @@ esp_color.update_colour(col) // double the ear/hearing damage multiplier from any source. - var/obj/item/organ/internal/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS) if (!istype(echo_ears)) return @@ -57,7 +57,7 @@ QDEL_NULL(esp) // echolocation component removal handles graceful disposal of everything above except the ears QDEL_NULL(added_action) // remove the stall action, too var/mob/living/carbon/human/human_holder = quirk_holder - var/obj/item/organ/internal/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS) if (!istype(echo_ears)) return echo_ears.damage_multiplier = initial(echo_ears.damage_multiplier) diff --git a/modular_nova/modules/emote_panel/code/emote_panel.dm b/modular_nova/modules/emote_panel/code/emote_panel.dm index 23690d65fee..d1a36163a19 100644 --- a/modular_nova/modules/emote_panel/code/emote_panel.dm +++ b/modular_nova/modules/emote_panel/code/emote_panel.dm @@ -237,7 +237,7 @@ available_emotes += human_emotes var/mob/living/carbon/human/current_mob = src // Checking if can wag tail - var/obj/item/organ/external/tail/tail = current_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + var/obj/item/organ/tail/tail = current_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) if(!(tail?.wag_flags & WAG_ABLE)) available_emotes -= /mob/living/carbon/human/proc/emote_wag // Checking if has wings diff --git a/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm b/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm index 8f7cf24e552..23e75885783 100644 --- a/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm +++ b/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm @@ -52,11 +52,11 @@ user.allowed_turfs += "holoseat" //wings - if((istype(user.get_organ_slot(ORGAN_SLOT_WINGS), /obj/item/organ/external/wings/moth)) || HAS_TRAIT(user, TRAIT_SPARKLE_ASPECT)) + if((istype(user.get_organ_slot(ORGAN_SLOT_WINGS), /obj/item/organ/wings/moth)) || HAS_TRAIT(user, TRAIT_SPARKLE_ASPECT)) user.allowed_turfs += "dust" //moth's dust ✨ //body parts - if(istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail)) + if(istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail)) var/name = human_user.dna.species.mutant_bodyparts["tail"][MUTANT_INDEX_NAME] var/datum/sprite_accessory/tails/tail = SSaccessories.sprite_accessories["tail"][name] if(tail.fluffy) diff --git a/modular_nova/modules/exp_corps/code/clothing.dm b/modular_nova/modules/exp_corps/code/clothing.dm index 0e193b4ee3a..360c32689bd 100644 --- a/modular_nova/modules/exp_corps/code/clothing.dm +++ b/modular_nova/modules/exp_corps/code/clothing.dm @@ -225,7 +225,7 @@ /obj/item/clothing/head/helmet/expeditionary_corps/proc/enable_nv(mob/user) if(current_user) - var/obj/item/organ/internal/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/eyes) if(my_eyes) my_eyes.color_cutoffs = list(10, 30, 10) my_eyes.flash_protect = FLASH_PROTECTION_SENSITIVE @@ -233,7 +233,7 @@ /obj/item/clothing/head/helmet/expeditionary_corps/proc/disable_nv() if(current_user) - var/obj/item/organ/internal/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/eyes) if(my_eyes) my_eyes.color_cutoffs = initial(my_eyes.color_cutoffs) my_eyes.flash_protect = initial(my_eyes.flash_protect) diff --git a/modular_nova/modules/faction/code/mapping/mapping_helpers.dm b/modular_nova/modules/faction/code/mapping/mapping_helpers.dm index 4e301603cb4..0d4360247dd 100644 --- a/modular_nova/modules/faction/code/mapping/mapping_helpers.dm +++ b/modular_nova/modules/faction/code/mapping/mapping_helpers.dm @@ -202,11 +202,11 @@ new /obj/item/mod/control/pre_equipped/elite(src) if(5) //Implants new /obj/item/storage/box/cyber_implants(src) - new /obj/item/organ/internal/cyberimp/arm/combat(src) - new /obj/item/organ/internal/cyberimp/arm/surgery(src) - new /obj/item/organ/internal/cyberimp/arm/baton(src) - new /obj/item/organ/internal/cyberimp/arm/toolset(src) - new /obj/item/organ/internal/cyberimp/arm/gun/taser(src) + new /obj/item/organ/cyberimp/arm/combat(src) + new /obj/item/organ/cyberimp/arm/surgery(src) + new /obj/item/organ/cyberimp/arm/baton(src) + new /obj/item/organ/cyberimp/arm/toolset(src) + new /obj/item/organ/cyberimp/arm/gun/taser(src) /obj/structure/closet/crate/secure/tradership_cargo_valuable/populate_contents_immediate() . = ..() diff --git a/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm b/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm index 3eff36e55b3..d3006d4f038 100644 --- a/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm +++ b/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm @@ -154,8 +154,8 @@ to_chat(user, span_warning("You have no idea how to use this freezing concoction.")) return - if(istype(interacting_with, /obj/item/organ/internal/lungs)) - var/obj/item/organ/internal/lungs/target_lungs = interacting_with + if(istype(interacting_with, /obj/item/organ/lungs)) + var/obj/item/organ/lungs/target_lungs = interacting_with if(IS_ROBOTIC_ORGAN(target_lungs)) user.balloon_alert(user, "The lungs have to be organic!") return @@ -163,7 +163,7 @@ playsound(location, 'sound/effects/slosh.ogg', 25, TRUE) user.visible_message(span_notice("[user] pours a strange blue liquid over the set of lungs. The flesh starts glistening in a strange cyan light, transforming before your very eyes!"), span_notice("Recalling the instructions for the lung transfiguration ritual, you pour the liquid over the flesh of the organ. Soon, the lungs glow in a mute cyan light, before they turn dim and change form before your very eyes!")) - var/obj/item/organ/internal/lungs/icebox_adapted/new_lungs = new(location) + var/obj/item/organ/lungs/icebox_adapted/new_lungs = new(location) new_lungs.damage = target_lungs.damage qdel(target_lungs) qdel(src) diff --git a/modular_nova/modules/implants/code/augments_arms.dm b/modular_nova/modules/implants/code/augments_arms.dm index 54bfdc2837f..3be335fdcdd 100644 --- a/modular_nova/modules/implants/code/augments_arms.dm +++ b/modular_nova/modules/implants/code/augments_arms.dm @@ -37,14 +37,14 @@ armour_penetration = 10 //Energy isn't as good at going through armor as it is through flesh alone. hitsound = 'sound/items/weapons/blade1.ogg' -/obj/item/organ/internal/cyberimp/arm/armblade +/obj/item/organ/cyberimp/arm/armblade name = "arm blade implant" desc = "An integrated blade implant designed to be installed into a persons arm. Stylish and deadly; Although, being caught with this without proper permits is sure to draw unwanted attention." items_to_create = list(/obj/item/melee/implantarmblade) icon = 'modular_nova/modules/implants/icons/implanted_blade.dmi' icon_state = "mantis_blade" -/obj/item/organ/internal/cyberimp/arm/armblade/emag_act() +/obj/item/organ/cyberimp/arm/armblade/emag_act() if(obj_flags & EMAGGED) return FALSE for(var/datum/weakref/created_item in items_list) @@ -54,7 +54,7 @@ /obj/item/autosurgeon/syndicate/armblade name = "armblade autosurgeon" - starting_organ = /obj/item/organ/internal/cyberimp/arm/armblade + starting_organ = /obj/item/organ/cyberimp/arm/armblade /obj/item/knife/razor_claws name = "implanted razor claws" @@ -122,7 +122,7 @@ qdel(stone) return ..() -/obj/item/organ/internal/cyberimp/arm/razor_claws +/obj/item/organ/cyberimp/arm/razor_claws name = "razor claws implant" desc = "A set of hidden, retractable blades built into the fingertips; cyborg mercenary approved." items_to_create = list(/obj/item/knife/razor_claws) @@ -133,11 +133,11 @@ retract_sound = 'sound/items/sheath.ogg' /// bespoke subtypes for augs menu since it's a bit wonky -/obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm +/obj/item/organ/cyberimp/arm/razor_claws/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm +/obj/item/organ/cyberimp/arm/razor_claws/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG @@ -148,7 +148,7 @@ button_icon = 'modular_nova/master_files/icons/hud/actions.dmi' button_icon_state = "wolverine" -/obj/item/organ/internal/cyberimp/arm/mining_drill +/obj/item/organ/cyberimp/arm/mining_drill name = "\improper Dalba Masterworks 'Burrower' Integrated Drill" desc = "Extending from a stabilization bracer built into the upper forearm, this implant allows for a steel mining drill to extend over the user's hand. Little by little, we advance a bit further with each turn. That's how a drill works!" icon = 'modular_nova/modules/implants/icons/drillimplant.dmi' @@ -159,11 +159,11 @@ /// The bodypart overlay datum we should apply to whatever mob we are put into's someone's arm var/datum/bodypart_overlay/simple/steel_drill/drill_overlay -/obj/item/organ/internal/cyberimp/arm/mining_drill/right_arm //You know the drill. +/obj/item/organ/cyberimp/arm/mining_drill/right_arm //You know the drill. zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/mining_drill/left_arm +/obj/item/organ/cyberimp/arm/mining_drill/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG @@ -177,7 +177,7 @@ /datum/bodypart_overlay/simple/steel_drill/right icon_state = "steel_right" -/obj/item/organ/internal/cyberimp/arm/mining_drill/on_bodypart_insert(obj/item/bodypart/limb, movement_flags) +/obj/item/organ/cyberimp/arm/mining_drill/on_bodypart_insert(obj/item/bodypart/limb, movement_flags) . = ..() if(isteshari(owner)) return @@ -188,7 +188,7 @@ limb.add_bodypart_overlay(drill_overlay) owner?.update_body_parts() -/obj/item/organ/internal/cyberimp/arm/mining_drill/on_mob_remove(mob/living/carbon/arm_owner) +/obj/item/organ/cyberimp/arm/mining_drill/on_mob_remove(mob/living/carbon/arm_owner) . = ..() bodypart_owner?.remove_bodypart_overlay(drill_overlay) arm_owner.update_body_parts() @@ -232,7 +232,7 @@ playsound(user, 'modular_nova/master_files/sound/effects/robot_smoke.ogg', 50, FALSE) user.visible_message(span_warning("[user] spins [src]'s bit, accelerating for a moment to thousands of RPM."), span_notice("You spin [src]'s bit, accelerating for a moment to thousands of RPM.")) -/obj/item/organ/internal/cyberimp/arm/mining_drill/diamond +/obj/item/organ/cyberimp/arm/mining_drill/diamond name = "\improper Dalba Masterworks 'Tunneler' Diamond Integrated Drill" desc = "Extending from a stabilization bracer built into the upper forearm, this implant allows for a masterwork diamond mining drill to extend over the user's hand. This drill will open a hole in the universe, and that hole will be a path for those behind us!" icon_state = "diamond" @@ -249,14 +249,14 @@ usesound = 'sound/items/weapons/drill.ogg' hitsound = 'sound/items/weapons/drill.ogg' -/obj/item/organ/internal/cyberimp/arm/hacker +/obj/item/organ/cyberimp/arm/hacker name = "hacking arm implant" desc = "An small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think." icon = 'icons/obj/items_cyborg.dmi' icon_state = "toolkit_engiborg_multitool" items_to_create = list(/obj/item/screwdriver/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/abductor/implant) -/obj/item/organ/internal/cyberimp/arm/botany +/obj/item/organ/cyberimp/arm/botany name = "botany arm implant" desc = "A rather simple arm implant containing tools used in gardening and botanical research." items_to_create = list(/obj/item/cultivator, /obj/item/shovel/spade, /obj/item/hatchet, /obj/item/gun/energy/floragun, /obj/item/plant_analyzer, /obj/item/geneshears, /obj/item/secateurs, /obj/item/storage/bag/plants, /obj/item/storage/bag/plants/portaseeder) @@ -280,7 +280,7 @@ tool_behaviour = TOOL_SAW toolspeed = 1 -/obj/item/organ/internal/cyberimp/arm/botany/emag_act() +/obj/item/organ/cyberimp/arm/botany/emag_act() if(obj_flags & EMAGGED) return FALSE for(var/datum/weakref/created_item in items_list) @@ -295,12 +295,12 @@ icon = 'icons/obj/items_cyborg.dmi' icon_state = "toolkit_engiborg_multitool" -/obj/item/organ/internal/cyberimp/arm/janitor +/obj/item/organ/cyberimp/arm/janitor name = "janitorial tools implant" desc = "A set of janitorial tools on the user's arm." items_to_create = list(/obj/item/lightreplacer, /obj/item/holosign_creator, /obj/item/soap/nanotrasen, /obj/item/reagent_containers/spray/cyborg_drying, /obj/item/mop/advanced, /obj/item/paint/paint_remover, /obj/item/reagent_containers/cup/beaker/large, /obj/item/reagent_containers/spray/cleaner) //Beaker if for refilling sprays -/obj/item/organ/internal/cyberimp/arm/janitor/emag_act() +/obj/item/organ/cyberimp/arm/janitor/emag_act() if(obj_flags & EMAGGED) return FALSE for(var/datum/weakref/created_item in items_list) @@ -310,12 +310,12 @@ obj_flags |= EMAGGED return TRUE -/obj/item/organ/internal/cyberimp/arm/lighter +/obj/item/organ/cyberimp/arm/lighter name = "lighter implant" desc = "A... implanted lighter. Incredibly useless." items_to_create = list(/obj/item/lighter/greyscale) //Hilariously useless. -/obj/item/organ/internal/cyberimp/arm/lighter/emag_act() +/obj/item/organ/cyberimp/arm/lighter/emag_act() if(obj_flags & EMAGGED) return FALSE for(var/datum/weakref/created_item in items_list) @@ -372,7 +372,7 @@ ), ) -/obj/item/organ/internal/cyberimp/arm/razorwire +/obj/item/organ/cyberimp/arm/razorwire name = "razorwire spool implant" desc = "An integrated spool of razorwire, capable of being used as a weapon when whipped at your foes. \ Built into the back of your hand, try your best to not get it tangled." @@ -382,7 +382,7 @@ /obj/item/autosurgeon/syndicate/razorwire name = "razorwire autosurgeon" - starting_organ = /obj/item/organ/internal/cyberimp/arm/razorwire + starting_organ = /obj/item/organ/cyberimp/arm/razorwire // Shell launch system, an arm mounted single-shot shotgun/.980 grenade launcher that comes out of your arm @@ -425,7 +425,7 @@ max_ammo = 1 multiload = FALSE -/obj/item/organ/internal/cyberimp/arm/shell_launcher +/obj/item/organ/cyberimp/arm/shell_launcher name = "shell launch system implant" desc = "A mounted, single-shot housing for a shell launch cannon; capable of firing either twelve gauge shotgun shells, or .980 Tydhouer grenades." items_to_create = list(/obj/item/gun/ballistic/shotgun/shell_launcher) @@ -434,7 +434,7 @@ /obj/item/autosurgeon/syndicate/shell_launcher name = "shell launcher autosurgeon" - starting_organ = /obj/item/organ/internal/cyberimp/arm/shell_launcher + starting_organ = /obj/item/organ/cyberimp/arm/shell_launcher #undef KNIFE_HITSOUND #undef KNIFE_USESOUND diff --git a/modular_nova/modules/implants/code/augments_chest.dm b/modular_nova/modules/implants/code/augments_chest.dm index 7dd0395bd6c..16191776a3c 100644 --- a/modular_nova/modules/implants/code/augments_chest.dm +++ b/modular_nova/modules/implants/code/augments_chest.dm @@ -1,7 +1,7 @@ // for readability's sake, define here to match the healthscan() proc's use of it // if someone updates that upstream, fix that here too, wouldja? -/obj/item/organ/internal/cyberimp/chest/scanner +/obj/item/organ/cyberimp/chest/scanner name = "internal health analyzer" desc = "An advanced health analyzer implant, designed to directly interface with a host's body and relay scan information to the brain on command." slot = ORGAN_SLOT_SCANNER @@ -17,7 +17,7 @@ /datum/action/item_action/organ_action/use/internal_analyzer/Trigger(trigger_flags) . = ..() - var/obj/item/organ/internal/cyberimp/chest/scanner/our_scanner = target + var/obj/item/organ/cyberimp/chest/scanner/our_scanner = target if(our_scanner.organ_flags & ORGAN_FAILING) to_chat(owner, span_warning("Your health analyzer relays an error! It can't interface with your body in its current condition!")) return diff --git a/modular_nova/modules/implants/code/augments_eyes.dm b/modular_nova/modules/implants/code/augments_eyes.dm index d940eb5e789..9c8bbfd10e2 100644 --- a/modular_nova/modules/implants/code/augments_eyes.dm +++ b/modular_nova/modules/implants/code/augments_eyes.dm @@ -1,23 +1,23 @@ -/obj/item/organ/internal/eyes/robotic +/obj/item/organ/eyes/robotic icon = 'modular_nova/modules/implants/icons/internal_HA.dmi' //So I had to fucking include the eye sprites icon_state = "cybernetic_eyeballs" -/obj/item/organ/internal/eyes/robotic/xray +/obj/item/organ/eyes/robotic/xray eye_color_left = "#00ffe5" eye_color_right = "#00ffe5" icon_state = "xray_eyes" -/obj/item/organ/internal/eyes/robotic/thermals +/obj/item/organ/eyes/robotic/thermals eye_color_left = "#FC0" eye_color_right = "#FC0" icon_state = "thermal_eyes" -/obj/item/organ/internal/eyes/robotic/shield +/obj/item/organ/eyes/robotic/shield eye_color_left = "#ff2700" eye_color_right = "#ff2700" icon_state = "shielded_eyes" -/obj/item/organ/internal/eyes/night_vision/cyber +/obj/item/organ/eyes/night_vision/cyber name = "nightvision eyes" icon = 'modular_nova/modules/implants/icons/internal_HA.dmi' //All in the chest implants .dmi icon_state = "eyes_nvcyber" diff --git a/modular_nova/modules/implants/code/augments_head.dm b/modular_nova/modules/implants/code/augments_head.dm index d46f9972fd3..3c0b784d373 100644 --- a/modular_nova/modules/implants/code/augments_head.dm +++ b/modular_nova/modules/implants/code/augments_head.dm @@ -5,7 +5,7 @@ // An implant that injects you with twitch on demand, acting like a bootleg sandevistan -/obj/item/organ/internal/cyberimp/sensory_enhancer +/obj/item/organ/cyberimp/sensory_enhancer name = "\improper Qani-Laaca sensory computer" desc = "An experimental implant replacing the spine of organics. When activated, it can give a temporary boost to mental processing speed, \ Which many users percieve as a slowing of time and quickening of their ability to act. Due to its nature, it is incompatible with \ @@ -25,7 +25,7 @@ /// TODO: Refactor this to be used as a mutant bodypart_overlay instead. var/datum/bodypart_overlay/simple/sensory_enhancer/simple_bodypart_overlay -/obj/item/organ/internal/cyberimp/sensory_enhancer/proc/vomit_blood() +/obj/item/organ/cyberimp/sensory_enhancer/proc/vomit_blood() owner.spray_blood(owner.dir, 2) owner.emote("cough") owner.visible_message( @@ -33,7 +33,7 @@ span_danger("You feel your chest seize up, a worrying amount of blood flying out of your mouth as you cough uncontrollably.") ) -/obj/item/organ/internal/cyberimp/sensory_enhancer/on_bodypart_insert(obj/item/bodypart/limb, movement_flags) +/obj/item/organ/cyberimp/sensory_enhancer/on_bodypart_insert(obj/item/bodypart/limb, movement_flags) . = ..() if(isteshari(owner)) return @@ -41,7 +41,7 @@ limb.add_bodypart_overlay(simple_bodypart_overlay) owner?.update_body_parts() -/obj/item/organ/internal/cyberimp/sensory_enhancer/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/cyberimp/sensory_enhancer/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() bodypart_owner?.remove_bodypart_overlay(simple_bodypart_overlay) QDEL_NULL(simple_bodypart_overlay) @@ -49,7 +49,7 @@ /obj/item/autosurgeon/syndicate/sandy name = "\improper Qani-Laaca sensory computer autosurgeon" - starting_organ = /obj/item/organ/internal/cyberimp/sensory_enhancer + starting_organ = /obj/item/organ/cyberimp/sensory_enhancer /datum/bodypart_overlay/simple/sensory_enhancer icon = 'modular_nova/modules/implants/icons/implants_onmob.dmi' @@ -107,7 +107,7 @@ button_icon_state = "sandy_overcharge" injection_amount = 20 -/obj/item/organ/internal/cyberimp/sensory_enhancer/emp_act(severity) +/obj/item/organ/cyberimp/sensory_enhancer/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return @@ -123,7 +123,7 @@ // Hackerman deck, lets you emag or doorjack things (NO CYBORGS) within a short range of yourself -/obj/item/organ/internal/cyberimp/hackerman_deck +/obj/item/organ/cyberimp/hackerman_deck name = "\improper Binyat wireless hacking system" desc = "A rare-to-find neural chip that allows its user to interface with nearby machinery \ and effect it in (usually) beneficial ways. Due to the rudimentary connection, fine manipulation \ @@ -141,7 +141,7 @@ /// TODO: Refactor this to be used as a mutant bodypart_overlay instead. var/datum/bodypart_overlay/simple/hackerman/simple_bodypart_overlay -/obj/item/organ/internal/cyberimp/hackerman_deck/on_bodypart_insert(obj/item/bodypart/limb, movement_flags) +/obj/item/organ/cyberimp/hackerman_deck/on_bodypart_insert(obj/item/bodypart/limb, movement_flags) . = ..() if(isteshari(owner)) return @@ -149,7 +149,7 @@ limb.add_bodypart_overlay(simple_bodypart_overlay) owner?.update_body_parts() -/obj/item/organ/internal/cyberimp/hackerman_deck/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/cyberimp/hackerman_deck/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() bodypart_owner?.remove_bodypart_overlay(simple_bodypart_overlay) QDEL_NULL(simple_bodypart_overlay) @@ -183,7 +183,7 @@ /obj/machinery/computer/holodeck, /obj/machinery/computer/emergency_shuttle, /obj/machinery/recycler, - /obj/item/organ/internal/cyberimp/arm/armblade, + /obj/item/organ/cyberimp/arm/armblade, ) /// How far away we can hack things var/hack_range = 2 @@ -232,7 +232,7 @@ human_owner.adjust_bodytemperature(HACKERMAN_DECK_TEMPERATURE_INCREASE) -/obj/item/organ/internal/cyberimp/hackerman_deck/emp_act(severity) +/obj/item/organ/cyberimp/hackerman_deck/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return diff --git a/modular_nova/modules/implants/code/augments_internal.dm b/modular_nova/modules/implants/code/augments_internal.dm index 1d52cedeacf..5f550f244e4 100644 --- a/modular_nova/modules/implants/code/augments_internal.dm +++ b/modular_nova/modules/implants/code/augments_internal.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/brain/anti_sleep +/obj/item/organ/cyberimp/brain/anti_sleep name = "CNS jumpstarter" desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious outside of REM sleeping cycles. Has a short cooldown. Conflicts with the CNS Rebooter, making them incompatible with eachother." icon_state = "brain_implant_rebooter" @@ -6,7 +6,7 @@ slot = ORGAN_SLOT_BRAIN_CNS //One or the other, not both. var/cooldown -/obj/item/organ/internal/cyberimp/brain/anti_sleep/on_life(seconds_per_tick, times_fired) +/obj/item/organ/cyberimp/brain/anti_sleep/on_life(seconds_per_tick, times_fired) if(timeleft(cooldown)) return @@ -19,11 +19,11 @@ to_chat(owner, span_notice("You feel a rush of energy course through your body!")) cooldown = addtimer(CALLBACK(src, PROC_REF(sleepytimerend)), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE | TIMER_DELETE_ME) -/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/sleepytimerend() +/obj/item/organ/cyberimp/brain/anti_sleep/proc/sleepytimerend() to_chat(owner, span_notice("You hear a small beep in your head as your CNS Jumpstarter finishes recharging.")) cooldown = null -/obj/item/organ/internal/cyberimp/brain/anti_sleep/emp_act(severity) +/obj/item/organ/cyberimp/brain/anti_sleep/emp_act(severity) . = ..() var/mob/living/carbon/human/human_owner = owner if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF) @@ -32,5 +32,5 @@ human_owner.AdjustUnconscious(200) cooldown = addtimer(CALLBACK(src, PROC_REF(reboot)), (9 SECONDS / severity), TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE | TIMER_DELETE_ME) -/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/reboot() +/obj/item/organ/cyberimp/brain/anti_sleep/proc/reboot() organ_flags &= ~ORGAN_FAILING diff --git a/modular_nova/modules/implants/code/medical_designs.dm b/modular_nova/modules/implants/code/medical_designs.dm index ebe20540baa..1bebd142782 100644 --- a/modular_nova/modules/implants/code/medical_designs.dm +++ b/modular_nova/modules/implants/code/medical_designs.dm @@ -9,7 +9,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 20 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/armblade + build_path = /obj/item/organ/cyberimp/arm/armblade category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT, ) @@ -29,7 +29,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 30 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/razorwire + build_path = /obj/item/organ/cyberimp/arm/razorwire category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT ) @@ -48,7 +48,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 30 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/shell_launcher + build_path = /obj/item/organ/cyberimp/arm/shell_launcher category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT ) @@ -70,7 +70,7 @@ /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, ) construction_time = 30 SECONDS - build_path = /obj/item/organ/internal/cyberimp/sensory_enhancer + build_path = /obj/item/organ/cyberimp/sensory_enhancer category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT ) @@ -91,7 +91,7 @@ /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, ) construction_time = 30 SECONDS - build_path = /obj/item/organ/internal/cyberimp/hackerman_deck + build_path = /obj/item/organ/cyberimp/hackerman_deck category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT ) @@ -108,7 +108,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 20 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/razor_claws + build_path = /obj/item/organ/cyberimp/arm/razor_claws category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS, ) @@ -125,7 +125,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 20 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/mining_drill + build_path = /obj/item/organ/cyberimp/arm/mining_drill category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS, ) @@ -142,7 +142,7 @@ /datum/material/diamond = SHEET_MATERIAL_AMOUNT, ) construction_time = 30 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/mining_drill/diamond + build_path = /obj/item/organ/cyberimp/arm/mining_drill/diamond category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING ) @@ -159,7 +159,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 20 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/hacker + build_path = /obj/item/organ/cyberimp/arm/hacker category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY, ) @@ -176,7 +176,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 20 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/flash + build_path = /obj/item/organ/cyberimp/arm/flash category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT, ) @@ -194,7 +194,7 @@ /datum/material/plastic = SHEET_MATERIAL_AMOUNT, ) construction_time = 20 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/botany + build_path = /obj/item/organ/cyberimp/arm/botany category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS, ) @@ -213,7 +213,7 @@ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 6, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/eyes/night_vision/cyber + build_path = /obj/item/organ/eyes/night_vision/cyber category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY, ) @@ -231,7 +231,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/cyberimp/brain/anti_sleep + build_path = /obj/item/organ/cyberimp/brain/anti_sleep category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT, ) @@ -249,7 +249,7 @@ /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/cyberimp/chest/scanner + build_path = /obj/item/organ/cyberimp/chest/scanner category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH, ) @@ -266,7 +266,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 20 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/janitor + build_path = /obj/item/organ/cyberimp/arm/janitor category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS, ) @@ -283,7 +283,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, ) construction_time = 10 SECONDS - build_path = /obj/item/organ/internal/cyberimp/arm/lighter + build_path = /obj/item/organ/cyberimp/arm/lighter category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC, ) diff --git a/modular_nova/modules/interaction_menu/code/interaction_datum.dm b/modular_nova/modules/interaction_menu/code/interaction_datum.dm index 95e6a46e4e7..b9dd186b923 100644 --- a/modular_nova/modules/interaction_menu/code/interaction_datum.dm +++ b/modular_nova/modules/interaction_menu/code/interaction_datum.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction) if(user_required_parts.len) for(var/thing in user_required_parts) - var/obj/item/organ/external/genital/required_part = user.get_organ_slot(thing) + var/obj/item/organ/genital/required_part = user.get_organ_slot(thing) if(isnull(required_part)) return FALSE if(!required_part.is_exposed()) @@ -70,7 +70,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction) if(target_required_parts.len) for(var/thing in target_required_parts) - var/obj/item/organ/external/genital/required_part = target.get_organ_slot(thing) + var/obj/item/organ/genital/required_part = target.get_organ_slot(thing) if(isnull(required_part)) return FALSE if(!required_part.is_exposed()) diff --git a/modular_nova/modules/modular_implants/code/misc_devices.dm b/modular_nova/modules/modular_implants/code/misc_devices.dm index 8e0e0f1a034..755b5078871 100644 --- a/modular_nova/modules/modular_implants/code/misc_devices.dm +++ b/modular_nova/modules/modular_implants/code/misc_devices.dm @@ -13,7 +13,7 @@ /obj/item/nifsoft_remover/attack(mob/living/carbon/human/target_mob, mob/living/user) . = ..() - var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = target_mob.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/target_nif = target_mob.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) if(!target_nif || !length(target_nif.loaded_nifsofts)) balloon_alert(user, "[target_mob] has no NIFSofts!") @@ -80,7 +80,7 @@ /obj/item/nif_repair_kit/attack(mob/living/carbon/human/mob_to_repair, mob/living/user) . = ..() - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = mob_to_repair.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/installed_nif = mob_to_repair.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) if(!installed_nif) balloon_alert(user, "[mob_to_repair] lacks a NIF") diff --git a/modular_nova/modules/modular_implants/code/nif_actions.dm b/modular_nova/modules/modular_implants/code/nif_actions.dm index eda612f4fc3..6c360cd256c 100644 --- a/modular_nova/modules/modular_implants/code/nif_actions.dm +++ b/modular_nova/modules/modular_implants/code/nif_actions.dm @@ -11,7 +11,7 @@ /datum/action/item_action/nif/open_menu/Trigger(trigger_flags) . = ..() - var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = target + var/obj/item/organ/cyberimp/brain/nif/target_nif = target if(target_nif.calibrating) target_nif.send_message("The NIF is still calibrating, please wait!", TRUE) diff --git a/modular_nova/modules/modular_implants/code/nif_implants.dm b/modular_nova/modules/modular_implants/code/nif_implants.dm index a52cc75494c..15e6c4e103b 100644 --- a/modular_nova/modules/modular_implants/code/nif_implants.dm +++ b/modular_nova/modules/modular_implants/code/nif_implants.dm @@ -1,10 +1,10 @@ ///This is the standard 'baseline' NIF model. -/obj/item/organ/internal/cyberimp/brain/nif/standard +/obj/item/organ/cyberimp/brain/nif/standard name = "Standard Type NIF" desc = "'Standard-Type' is a classification for high-quality Nanite Implant Frameworks. This category primarily includes Framework patterns with high reliability, seamless bonding with a user, and a combination of storage space and processing power to run a wide array of programs." manufacturer_notes = "While countless manufacturers produce their own implementation of NIFs, open-source or not, there's less than a thousand Standard-Type models out there in the galaxy. These are the results of almost five years of improvements on older models of Frameworks, and are rather coveted due to being extremely difficult to 'homebrew." -/obj/item/organ/internal/cyberimp/brain/nif/roleplay_model +/obj/item/organ/cyberimp/brain/nif/roleplay_model name = "Econo-Deck Type NIF" desc = "'Econo-Deck' is a classification for lower-quality Nanite Implant Frameworks. Typically, these are off-brand 'economical' bootlegs of higher-quality Frameworks featuring lower-grade power cells, outdated and risky construction patterns, and far rougher calibration with a user." manufacturer_notes = "Most webspaces for hobbyists or hardcore users, Corpo neurologists, and developers of 'softs such as the Altspace Coven recommend against their purchase. Despite their affordability by the layman, it's a common notion in Framework user circles that a device directly hooked into a user's nervous system is never something which should be skimped on; hence, Econo-Decks typically find themselves in the hands of the truly desperate, criminals, or coming out of workshops as 'homebrews.'" @@ -16,7 +16,7 @@ death_durability_loss = 10 -/obj/item/organ/internal/cyberimp/brain/nif/roleplay_model/cheap +/obj/item/organ/cyberimp/brain/nif/roleplay_model/cheap name = "Trial-Lite Type NIF" desc = "'Trial-Lite' is a classification for temporary Nanite Implant Frameworks. These are typically distributed at promotional events, for the use of single-purpose NIFsofts, or at some Corporate dealerships to offer prospective users a look into the scene. Normally, Trial-Lite frameworks do not actually 'bond' with their user, forming an extremely loose connection before dissolving into scattered and dead nanomachines within a few hours, typically exhaled." manufacturer_notes = "Normally, Trial-Lite frameworks do not actually 'bond' with their user, forming an extremely loose connection before dissolving into scattered and dead nanomachines within a few hours, typically exhaled. It's so far been impossible to extend the lifespan of a Trial-Lite NIF, owing to their far inferior construction and programming." @@ -24,14 +24,14 @@ /obj/item/autosurgeon/organ/nif/disposable //Disposable, as in the fact that this only lasts for one shift name = "Econo-Deck Type Autosurgeon" - starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/roleplay_model/cheap + starting_organ = /obj/item/organ/cyberimp/brain/nif/roleplay_model/cheap uses = 1 -/obj/item/organ/internal/cyberimp/brain/nif/standard/ghost_role +/obj/item/organ/cyberimp/brain/nif/standard/ghost_role nif_persistence = FALSE is_calibrated = TRUE /obj/item/autosurgeon/organ/nif/ghost_role name = "Enhanced Standard Type NIF Autosurgeon" - starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/standard/ghost_role + starting_organ = /obj/item/organ/cyberimp/brain/nif/standard/ghost_role uses = 1 diff --git a/modular_nova/modules/modular_implants/code/nif_persistence.dm b/modular_nova/modules/modular_implants/code/nif_persistence.dm index ce4d865f7cf..a633dab637c 100644 --- a/modular_nova/modules/modular_implants/code/nif_persistence.dm +++ b/modular_nova/modules/modular_implants/code/nif_persistence.dm @@ -20,7 +20,7 @@ /// Saves the NIF data for a individual user. /mob/living/carbon/human/proc/save_nif_data(datum/modular_persistence/persistence, remove_nif = FALSE) - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) if(HAS_TRAIT(src, TRAIT_GHOSTROLE)) //Nothing is lost from playing a ghost role return FALSE @@ -75,7 +75,7 @@ if(!persistence.nif_path) return - var/obj/item/organ/internal/cyberimp/brain/nif/new_nif = new persistence.nif_path + var/obj/item/organ/cyberimp/brain/nif/new_nif = new persistence.nif_path new_nif.durability = persistence.nif_durability new_nif.current_theme = persistence.nif_theme @@ -108,7 +108,7 @@ /datum/nifsoft/proc/load_persistence_data() if(!linked_mob || !persistence) return FALSE - var/obj/item/organ/internal/brain/linked_brain = linked_mob.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/linked_brain = linked_mob.get_organ_slot(ORGAN_SLOT_BRAIN) if(!linked_brain || !linked_brain.modular_persistence) return FALSE diff --git a/modular_nova/modules/modular_implants/code/nifs.dm b/modular_nova/modules/modular_implants/code/nifs.dm index 1862d28014d..4145a9beeee 100644 --- a/modular_nova/modules/modular_implants/code/nifs.dm +++ b/modular_nova/modules/modular_implants/code/nifs.dm @@ -12,7 +12,7 @@ #define MAX_NIF_REWARDS_POINTS 2000 // This is the original NIF that other NIFs are based on. -/obj/item/organ/internal/cyberimp/brain/nif +/obj/item/organ/cyberimp/brain/nif name = "Nanite Implant Framework" desc = "A brain implant that infuses the user with nanites." icon = 'modular_nova/modules/modular_implants/icons/obj/nifs.dmi' @@ -108,13 +108,13 @@ ///What icon does the NIF display in chat when sending out alerts? Icon states are stored in 'modular_nova/modules/modular_implants/icons/chat.dmi' var/chat_icon = "standard" -/obj/item/organ/internal/cyberimp/brain/nif/Initialize(mapload) +/obj/item/organ/cyberimp/brain/nif/Initialize(mapload) . = ..() durability = max_durability power_level = max_power_level -/obj/item/organ/internal/cyberimp/brain/nif/Destroy() +/obj/item/organ/cyberimp/brain/nif/Destroy() if(linked_mob) UnregisterSignal(linked_mob, COMSIG_LIVING_DEATH, PROC_REF(damage_on_death)) @@ -127,7 +127,7 @@ QDEL_LIST(loaded_nifsofts) return ..() -/obj/item/organ/internal/cyberimp/brain/nif/mob_insert(mob/living/carbon/human/insertee, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/cyberimp/brain/nif/mob_insert(mob/living/carbon/human/insertee, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() if(linked_mob && stored_ckey != insertee.ckey && theft_protection) @@ -154,7 +154,7 @@ send_message("Loading preinstalled and stored NIFSofts, please wait...") addtimer(CALLBACK(src, PROC_REF(install_preinstalled_nifsofts)), 3 SECONDS) -/obj/item/organ/internal/cyberimp/brain/nif/mob_remove(mob/living/carbon/organ_owner, special = FALSE) +/obj/item/organ/cyberimp/brain/nif/mob_remove(mob/living/carbon/organ_owner, special = FALSE) . = ..() organ_owner.log_message("'s [src] was removed from [organ_owner]", LOG_GAME) @@ -170,7 +170,7 @@ QDEL_LIST(loaded_nifsofts) ///Installs preinstalled NIFSofts -/obj/item/organ/internal/cyberimp/brain/nif/proc/install_preinstalled_nifsofts() +/obj/item/organ/cyberimp/brain/nif/proc/install_preinstalled_nifsofts() if(!preinstalled_nifsofts) return FALSE @@ -183,7 +183,7 @@ return TRUE -/obj/item/organ/internal/cyberimp/brain/nif/process(seconds_per_tick) +/obj/item/organ/cyberimp/brain/nif/process(seconds_per_tick) . = ..() if(!linked_mob || broken || HAS_TRAIT(linked_mob, TRAIT_STASIS)) @@ -212,7 +212,7 @@ change_power_level(power_usage) ///Modifies power based off power_to_change. Negative numbers add charge, positive numbers remove charge -/obj/item/organ/internal/cyberimp/brain/nif/proc/change_power_level(power_to_change) +/obj/item/organ/cyberimp/brain/nif/proc/change_power_level(power_to_change) if(!power_to_change) return TRUE @@ -227,7 +227,7 @@ return TRUE ///Toggles nutrition drain as a power source on NIFs on/off. Bypass - Ignores the need to perform the nutirition_check() proc. -/obj/item/organ/internal/cyberimp/brain/nif/proc/toggle_nutrition_drain(bypass = FALSE) +/obj/item/organ/cyberimp/brain/nif/proc/toggle_nutrition_drain(bypass = FALSE) if(!bypass && !nutrition_check()) return FALSE @@ -245,7 +245,7 @@ return TRUE /// Checks to see if the mob has a nutrition that can be drain from -/obj/item/organ/internal/cyberimp/brain/nif/proc/nutrition_check() //This is a seperate proc so that TGUI can perform this check on the menu +/obj/item/organ/cyberimp/brain/nif/proc/nutrition_check() //This is a seperate proc so that TGUI can perform this check on the menu if(!linked_mob || !linked_mob.nutrition) return FALSE @@ -255,7 +255,7 @@ return linked_mob.nutrition >= minimum_nutrition ///Toggles Blood Drain. Bypasss - Ignores the need to perform the blood_check proc. -/obj/item/organ/internal/cyberimp/brain/nif/proc/toggle_blood_drain(bypass = FALSE) +/obj/item/organ/cyberimp/brain/nif/proc/toggle_blood_drain(bypass = FALSE) if(!bypass && !blood_check()) return @@ -271,14 +271,14 @@ balloon_alert(linked_mob, "Blood draining enabled") ///Checks if the NIF is able to draw blood as a power source? -/obj/item/organ/internal/cyberimp/brain/nif/proc/blood_check() +/obj/item/organ/cyberimp/brain/nif/proc/blood_check() if(!linked_mob || !linked_mob.blood_volume || (linked_mob.blood_volume <= minimum_blood_level)) return FALSE return TRUE ///Calibrates the Parent NIF, this is ran every time the parent NIF is first installed inside of someone. -/obj/item/organ/internal/cyberimp/brain/nif/proc/perform_calibration() +/obj/item/organ/cyberimp/brain/nif/proc/perform_calibration() if(linked_mob.stat >= DEAD) return FALSE @@ -311,7 +311,7 @@ stack_trace("persistence was not saved for [linked_mob]!") ///Installs the loaded_nifsoft to the parent NIF. -/obj/item/organ/internal/cyberimp/brain/nif/proc/install_nifsoft(datum/nifsoft/loaded_nifsoft) +/obj/item/organ/cyberimp/brain/nif/proc/install_nifsoft(datum/nifsoft/loaded_nifsoft) if(broken || calibrating) //NIFSofts can't be installed to a broken NIF return FALSE @@ -344,7 +344,7 @@ return TRUE ///Removes a NIFSoft from a NIF. Silent - determines whether or not alerts will be given to the owner of the NIF -/obj/item/organ/internal/cyberimp/brain/nif/proc/remove_nifsoft(datum/nifsoft/removed_nifsoft, silent = FALSE) +/obj/item/organ/cyberimp/brain/nif/proc/remove_nifsoft(datum/nifsoft/removed_nifsoft, silent = FALSE) if(!is_type_in_list(removed_nifsoft, loaded_nifsofts) || broken) return FALSE @@ -357,7 +357,7 @@ return TRUE ///Adjusts the NIF based on the adjustment_amount. Positive values repair, negative values damage -/obj/item/organ/internal/cyberimp/brain/nif/proc/adjust_durability(adjustment_amount) +/obj/item/organ/cyberimp/brain/nif/proc/adjust_durability(adjustment_amount) if(!adjustment_amount || ((adjustment_amount > 0) && (durability >= max_durability) || ((adjustment_amount < 0) && (durability <= NIF_MINIMUM_DURABILITY)))) return FALSE @@ -369,7 +369,7 @@ return TRUE ///Sends a message to the owner of the NIF. Typically used for messages from the NIF itself or from NIFSofts. -/obj/item/organ/internal/cyberimp/brain/nif/proc/send_message(message_to_send, alert = FALSE) +/obj/item/organ/cyberimp/brain/nif/proc/send_message(message_to_send, alert = FALSE) var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat) var/tag = sheet.icon_tag("nif-[chat_icon]") var/nif_icon = "" @@ -387,7 +387,7 @@ ///Changes the broken variable to be false. This does not relate to durability. -/obj/item/organ/internal/cyberimp/brain/nif/proc/fix_nif() +/obj/item/organ/cyberimp/brain/nif/proc/fix_nif() if(!broken) return FALSE @@ -396,14 +396,14 @@ return TRUE ///Re-enables the durability_loss_vulnerable variable, allowing the parent NIF to take durability damage again. -/obj/item/organ/internal/cyberimp/brain/nif/proc/make_vulnerable() +/obj/item/organ/cyberimp/brain/nif/proc/make_vulnerable() durability_loss_vulnerable = TRUE //This is here so that a TGUI can't be opened by using the implant while it isn't implanted. -/obj/item/organ/internal/cyberimp/brain/nif/attack_self(mob/user, modifiers) +/obj/item/organ/cyberimp/brain/nif/attack_self(mob/user, modifiers) return FALSE -/obj/item/organ/internal/cyberimp/brain/nif/emp_act(severity) +/obj/item/organ/cyberimp/brain/nif/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) return @@ -433,7 +433,7 @@ send_message("ELECTROMAGNETIC INTERFERENCE DETECTED.", TRUE) ///Applies damage to the parent NIF whenever the user dies. -/obj/item/organ/internal/cyberimp/brain/nif/proc/damage_on_death() +/obj/item/organ/cyberimp/brain/nif/proc/damage_on_death() SIGNAL_HANDLER if(!durability_loss_vulnerable) @@ -445,7 +445,7 @@ addtimer(CALLBACK(src, PROC_REF(make_vulnerable)), 20 MINUTES) //Players should have a decent grace period on this. /// Removes rewards points from the parent NIF. Returns FALSE if there are not enough points to remove, returns TRUE if the points have been succesfully removed. -/obj/item/organ/internal/cyberimp/brain/nif/proc/remove_rewards_points(points_to_remove) +/obj/item/organ/cyberimp/brain/nif/proc/remove_rewards_points(points_to_remove) if(points_to_remove > rewards_points) return FALSE @@ -475,7 +475,7 @@ ///Checks to see if a human with a NIF has the nifsoft_to_find type of NIFSoft installed? /mob/living/carbon/human/proc/find_nifsoft(datum/nifsoft/nifsoft_to_find) - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) var/list/nifsoft_list = installed_nif?.loaded_nifsofts if(!nifsoft_list) @@ -493,14 +493,14 @@ InsertAll("nif", 'modular_nova/modules/modular_implants/icons/chat.dmi') /obj/item/autosurgeon/organ/nif - starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/standard + starting_organ = /obj/item/organ/cyberimp/brain/nif/standard uses = 1 -/obj/item/organ/internal/cyberimp/brain/nif/debug +/obj/item/organ/cyberimp/brain/nif/debug is_calibrated = TRUE /obj/item/autosurgeon/organ/nif/debug - starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/debug + starting_organ = /obj/item/organ/cyberimp/brain/nif/debug uses = 1 /obj/item/storage/box/nif_ghost_box diff --git a/modular_nova/modules/modular_implants/code/nifs_tgui.dm b/modular_nova/modules/modular_implants/code/nifs_tgui.dm index 520a155215b..d754795a42e 100644 --- a/modular_nova/modules/modular_implants/code/nifs_tgui.dm +++ b/modular_nova/modules/modular_implants/code/nifs_tgui.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/brain/nif +/obj/item/organ/cyberimp/brain/nif ///Currently Avalible themese for the NIFs var/static/list/ui_themes = list( "abductor", @@ -16,22 +16,22 @@ ///What theme is currently being used on the NIF? var/current_theme = "default" -/obj/item/organ/internal/cyberimp/brain/nif/ui_interact(mob/user, datum/tgui/ui) +/obj/item/organ/cyberimp/brain/nif/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "NifPanel", name) ui.open() -/obj/item/organ/internal/cyberimp/brain/nif/ui_state(mob/user) +/obj/item/organ/cyberimp/brain/nif/ui_state(mob/user) return GLOB.conscious_state -/obj/item/organ/internal/cyberimp/brain/nif/ui_status(mob/user) +/obj/item/organ/cyberimp/brain/nif/ui_status(mob/user) if(user == linked_mob) return UI_INTERACTIVE return UI_CLOSE -/obj/item/organ/internal/cyberimp/brain/nif/ui_static_data(mob/user) +/obj/item/organ/cyberimp/brain/nif/ui_static_data(mob/user) var/list/data = list() data["loaded_nifsofts"] = list() @@ -60,7 +60,7 @@ return data -/obj/item/organ/internal/cyberimp/brain/nif/ui_data(mob/user) +/obj/item/organ/cyberimp/brain/nif/ui_data(mob/user) var/list/data = list() //User Preference Variables data["linked_mob_name"] = linked_mob.name @@ -82,7 +82,7 @@ return data -/obj/item/organ/internal/cyberimp/brain/nif/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) +/obj/item/organ/cyberimp/brain/nif/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() if(.) return diff --git a/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm b/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm index 1b2275b658f..910cb5c3a8b 100644 --- a/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm +++ b/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm @@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list( var/rewards_points = 0 if(target_nif) - var/obj/item/organ/internal/cyberimp/brain/nif/buyer_nif = target_nif.resolve() + var/obj/item/organ/cyberimp/brain/nif/buyer_nif = target_nif.resolve() if(buyer_nif) rewards_points = buyer_nif.rewards_points @@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list( target_nif = null else - var/obj/item/organ/internal/cyberimp/brain/nif/user_nif = nif_user.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/user_nif = nif_user.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) if(!user_nif) target_nif = null @@ -114,7 +114,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list( paying_account.bank_card_talk("You need a NIF implant to purchase this.") return FALSE - var/obj/item/organ/internal/cyberimp/brain/nif/buyer_nif = target_nif.resolve() + var/obj/item/organ/cyberimp/brain/nif/buyer_nif = target_nif.resolve() if(rewards_purchase) if(buyer_nif.rewards_points < amount_to_charge) diff --git a/modular_nova/modules/modular_implants/code/nifsofts.dm b/modular_nova/modules/modular_implants/code/nifsofts.dm index 66082718df9..7e5db4e521d 100644 --- a/modular_nova/modules/modular_implants/code/nifsofts.dm +++ b/modular_nova/modules/modular_implants/code/nifsofts.dm @@ -41,7 +41,7 @@ ///How long is the cooldown for? var/cooldown_duration = DEFAULT_NIFSOFT_COOLDOWN ///What NIF models can this software be installed on? - var/list/compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif) + var/list/compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif) /// How much of the NIFSoft's purchase price is paid out as reward points, if any? var/rewards_points_rate = 0.5 @@ -56,13 +56,13 @@ ///Is it a lewd item? var/lewd_nifsoft = FALSE -/datum/nifsoft/New(obj/item/organ/internal/cyberimp/brain/nif/recepient_nif, no_rewards_points = FALSE) +/datum/nifsoft/New(obj/item/organ/cyberimp/brain/nif/recepient_nif, no_rewards_points = FALSE) . = ..() if(no_rewards_points) //This is mostly so that credits can't be farmed through printed or stolen NIFSoft disks rewards_points_rate = 0 - compatible_nifs += /obj/item/organ/internal/cyberimp/brain/nif/debug + compatible_nifs += /obj/item/organ/cyberimp/brain/nif/debug program_name = name if(!recepient_nif.install_nifsoft(src)) @@ -77,7 +77,7 @@ linked_mob = null - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve() + var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve() if(installed_nif) installed_nif.loaded_nifsofts.Remove(src) @@ -85,7 +85,7 @@ /// Activates the parent NIFSoft /datum/nifsoft/proc/activate() - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve() + var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve() if(!installed_nif) stack_trace("NIFSoft [src] activated on a null parent!") // NIFSoft is -really- broken @@ -121,7 +121,7 @@ ///Refunds the activation cost of a NIFSoft. /datum/nifsoft/proc/refund_activation_cost() - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve() + var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve() if(!installed_nif) return installed_nif.change_power_level(-activation_cost) @@ -153,7 +153,7 @@ /// Updates the theme of the NIFSoft to match the parent NIF /datum/nifsoft/proc/update_theme() - var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = parent_nif?.resolve() + var/obj/item/organ/cyberimp/brain/nif/target_nif = parent_nif?.resolve() if(!target_nif) return FALSE @@ -190,7 +190,7 @@ /// Attempts to install the NIFSoft on the disk to the target /obj/item/disk/nifsoft_uploader/proc/attempt_software_install(mob/living/carbon/human/target) - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = target.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif) + var/obj/item/organ/cyberimp/brain/nif/installed_nif = target.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif) if(!ishuman(target) || !installed_nif) return FALSE diff --git a/modular_nova/modules/modular_implants/code/nifsofts/huds.dm b/modular_nova/modules/modular_implants/code/nifsofts/huds.dm index 1fd07b658ac..c7b9e3dab5d 100644 --- a/modular_nova/modules/modular_implants/code/nifsofts/huds.dm +++ b/modular_nova/modules/modular_implants/code/nifsofts/huds.dm @@ -1,7 +1,7 @@ /datum/nifsoft/hud name = "Scrying Lens" program_desc = "An umbrella term for all sorts of NIFsofts dealing with heads-up displays, this sort of technology dates back almost to the beginning of NIFsoft development. These 'softs are commonly used in the civilian field for integration with all sorts of activities; piloting, swordplay, scientific research, or even AI copiloting for important social interactions. While normally the nanomachines involved in the program's operation are used as a sort of artificial contact lens over the user's visual organs, NanoTrasen regulations have bid these particular forks to instead integrate with glasses the user's already wearing." - compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard) + compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard) active_mode = TRUE active_cost = 0.5 ui_icon = "eye" diff --git a/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm b/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm index 166f64b9846..785252d82ab 100644 --- a/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm +++ b/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm @@ -7,7 +7,7 @@ program_desc = "Connects the user's brain to a database containing the current monetary values for most items, allowing them to determine their value in realtime" active_mode = TRUE active_cost = 0.5 - compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard) + compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard) buying_category = NIFSOFT_CATEGORY_UTILITY ui_icon = "coins" diff --git a/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm b/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm index 9dc40fd5944..7773bfa0e36 100644 --- a/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm +++ b/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm @@ -16,7 +16,7 @@ /datum/nifsoft/scryer/New() . = ..() - var/obj/item/organ/internal/cyberimp/brain/nif/parent_resolved = parent_nif.resolve() + var/obj/item/organ/cyberimp/brain/nif/parent_resolved = parent_nif.resolve() if(!istype(parent_resolved)) stack_trace("[src] ([REF(src)]) tried to create a linked scryer but it had no parent_nif!") if(!linked_scryer) diff --git a/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm b/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm index 7aa1819e4a2..dda90544976 100644 --- a/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm +++ b/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm @@ -5,7 +5,7 @@ /datum/nifsoft/action_granter/shapeshifter name = "Polymorph" program_desc = "This program is a large-scale refitting of the nanomachine channels running over the skin of a NIF user. This allows the nanites to reach under the skin and even into the very bone structure of the host; including incorporation of mimetic materials and femto-level manipulation devices all for the purpose of allowing the user to, essentially, shapeshift on a low level. However, despite the incredible complexity behind these processes, there are still limits on the range of 'forms' a user can take. Mass can neither be created nor destroyed, after all, and you can only distribute and rearrange it in so many ways across a functioning humanoid body; meaning, the user cannot adopt forms too far out of their 'true' one." - compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard) + compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard) purchase_price = 350 buying_category = NIFSOFT_CATEGORY_COSMETIC ui_icon = "paintbrush" diff --git a/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm b/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm index 2dc1408eca4..670cc4c3f9a 100644 --- a/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm +++ b/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm @@ -115,7 +115,7 @@ if(!istype(target_mob)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - var/obj/item/organ/internal/brain/target_brain = target_mob.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/target_brain = target_mob.get_organ_slot(ORGAN_SLOT_BRAIN) if(!istype(target_brain)) to_chat(user, span_warning("[target_mob] lacks a brain!")) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm b/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm index d925adba3f1..da4076262b3 100644 --- a/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm +++ b/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm @@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(soulcatchers) qdel(soulcatcher_room) var/mob/living/soulcatcher_owner = parent - var/obj/item/organ/internal/cyberimp/brain/nif/parent_nif = parent + var/obj/item/organ/cyberimp/brain/nif/parent_nif = parent if(istype(parent_nif)) soulcatcher_owner = parent_nif.linked_mob diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm index 6c1edbcdca3..e7932fad8c9 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm @@ -13,7 +13,7 @@ arousal_status = arousal_flag if(istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/target = src - for(var/obj/item/organ/external/genital/target_genital in target.organs) + for(var/obj/item/organ/genital/target_genital in target.organs) if(!target_genital.aroused == AROUSAL_CANT) target_genital.aroused = arousal_status target_genital.update_sprite_suffix() @@ -38,7 +38,7 @@ if(get_organ_slot(ORGAN_SLOT_VAGINA) && !has_status_effect(/datum/status_effect/body_fluid_regen/vagina)) apply_status_effect(/datum/status_effect/body_fluid_regen/vagina) - var/obj/item/organ/external/genital/breasts/breasts = get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/breasts = get_organ_slot(ORGAN_SLOT_BREASTS) if(!breasts || !breasts.lactates) remove_status_effect(/datum/status_effect/body_fluid_regen/breasts) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm index ef20812614e..2260e31d2a9 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm @@ -54,7 +54,7 @@ var/self_their = p_their() if(climax_choice == CLIMAX_PENIS || climax_choice == CLIMAX_BOTH) - var/obj/item/organ/external/genital/penis/penis = get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis/penis = get_organ_slot(ORGAN_SLOT_PENIS) if(!get_organ_slot(ORGAN_SLOT_TESTICLES)) //If we have no god damn balls, we can't cum anywhere... GET BALLS! visible_message(span_userlove("[src] orgasms, but nothing comes out of [self_their] penis!"), \ span_userlove("You orgasm, it feels great, but nothing comes out of your penis!")) @@ -109,7 +109,7 @@ if(target_human.has_anus(REQUIRE_GENITAL_EXPOSED)) target_buttons += "asshole" if(target_human.has_penis(REQUIRE_GENITAL_EXPOSED)) - var/obj/item/organ/external/genital/penis/other_penis = target_human.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis/other_penis = target_human.get_organ_slot(ORGAN_SLOT_PENIS) if(other_penis.sheath != "None") target_buttons += "sheath" target_buttons += "On [target_human_them]" @@ -129,7 +129,7 @@ span_userlove("You hilt your cock into [target_human]'s [climax_into_choice], shooting cum into [target_human_them]!")) to_chat(target_human, span_userlove("Your [climax_into_choice] fills with warm cum as [src] shoots [self_their] load into it.")) - var/obj/item/organ/external/genital/testicles/testicles = get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/testicles/testicles = get_organ_slot(ORGAN_SLOT_TESTICLES) testicles.transfer_internal_fluid(null, testicles.internal_fluid_count * 0.6) // yep. we are sending semen to nullspace if(create_cum_decal) add_cum_splatter_floor(get_turf(src)) @@ -143,7 +143,7 @@ return TRUE if(climax_choice == CLIMAX_VAGINA || climax_choice == CLIMAX_BOTH) - var/obj/item/organ/external/genital/vagina/vagina = get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/vagina/vagina = get_organ_slot(ORGAN_SLOT_VAGINA) if(is_bottomless() || vagina.visibility_preference == GENITAL_ALWAYS_SHOW) visible_message(span_userlove("[src] twitches and moans as [p_they()] climax from their vagina!"), span_userlove("You twitch and moan as you climax from your vagina!")) add_cum_splatter_floor(get_turf(src), female = TRUE) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm index ec632635bbd..db4baa355b3 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm @@ -25,7 +25,7 @@ var/temp_pleasure = BASE_PAIN_AND_PLEASURE_ADJUSTMENT var/temp_pain = BASE_PAIN_AND_PLEASURE_ADJUSTMENT - var/obj/item/organ/external/genital/testicles/balls = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/testicles/balls = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) if(balls && balls.internal_fluid_full()) temp_arousal += BLUEBALL_AROUSAL_MODIFIER diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm index f55fb3264f6..f7953b7c4cc 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm @@ -48,10 +48,10 @@ alert_type = null /datum/status_effect/climax_cooldown/tick(seconds_between_ticks) - var/obj/item/organ/external/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA) - var/obj/item/organ/external/genital/testicles/balls = owner.get_organ_slot(ORGAN_SLOT_TESTICLES) - var/obj/item/organ/external/genital/penis/penis = owner.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/anus/anus = owner.get_organ_slot(ORGAN_SLOT_ANUS) + var/obj/item/organ/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/testicles/balls = owner.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/penis/penis = owner.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/anus/anus = owner.get_organ_slot(ORGAN_SLOT_ANUS) if(penis) penis.aroused = AROUSAL_NONE diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm index a75205bb528..7c98828156b 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm @@ -23,7 +23,7 @@ if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human)) return FALSE - var/obj/item/organ/external/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA) if(!vagina) return FALSE @@ -41,7 +41,7 @@ if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human)) return FALSE - var/obj/item/organ/external/genital/testicles/testes = owner.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/testicles/testes = owner.get_organ_slot(ORGAN_SLOT_TESTICLES) if(!testes || (affected_human.arousal < AROUSAL_LOW)) return FALSE @@ -56,7 +56,7 @@ if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human)) return FALSE - var/obj/item/organ/external/genital/breasts/breasts = owner.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/breasts = owner.get_organ_slot(ORGAN_SLOT_BREASTS) if(!breasts || !breasts.lactates) return FALSE diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm index 34d27290e00..20f47b2dba3 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm @@ -151,7 +151,7 @@ * suppress_chat - whether or not to display a message in chat * mob_penis the penis to cause to grow */ -/datum/reagent/drug/aphrodisiac/proc/grow_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS)) +/datum/reagent/drug/aphrodisiac/proc/grow_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS)) // Check if we actually have a penis to grow if(!mob_penis) @@ -191,7 +191,7 @@ * suppress_chat - whether or not to display a message in chat * mob_testicles - the testicles to cause to grow */ -/datum/reagent/drug/aphrodisiac/proc/grow_balls(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES)) +/datum/reagent/drug/aphrodisiac/proc/grow_balls(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES)) //no balls if(!mob_testicles) @@ -201,7 +201,7 @@ if(!exposed_mob.client?.prefs?.read_preference(/datum/preference/toggle/erp/penis_enlargement)) return - var/obj/item/organ/external/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS) if(mob_testicles.genital_size < balls_big_size && prob(balls_increase_chance)) // Add some randomness so growth happens more gradually in most cases mob_testicles.genital_size = min(mob_testicles.genital_size + testicles_size_increase_step, balls_max_size) @@ -220,7 +220,7 @@ * suppress_chat - whether or not to display a message in chat * mob_breasts the breasts to cause to grow */ -/datum/reagent/drug/aphrodisiac/proc/grow_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) +/datum/reagent/drug/aphrodisiac/proc/grow_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) if(!mob_breasts) return @@ -276,7 +276,7 @@ * suppress_chat - whether or not to display a message in chat * mob_penis the penis to shrink */ -/datum/reagent/drug/aphrodisiac/proc/shrink_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS)) +/datum/reagent/drug/aphrodisiac/proc/shrink_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS)) // Is there a penis to shrink? if(!mob_penis) @@ -310,7 +310,7 @@ * mob_penis, mob_testicles - the mob's penis and testicles * message - the message to send to chat */ -/datum/reagent/drug/aphrodisiac/proc/shrink_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS), obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES)) +/datum/reagent/drug/aphrodisiac/proc/shrink_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS), obj/item/organ/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES)) if(!mob_testicles) return @@ -335,7 +335,7 @@ * mob_breasts - the breasts to be shrunk * message - the message to send to chat */ -/datum/reagent/drug/aphrodisiac/proc/shrink_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) +/datum/reagent/drug/aphrodisiac/proc/shrink_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) if(!mob_breasts) return @@ -359,7 +359,7 @@ * mob_vagina - the vagina to shrink * message - the message to send to chat */ -/datum/reagent/drug/aphrodisiac/proc/shrink_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA)) +/datum/reagent/drug/aphrodisiac/proc/shrink_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA)) var/message = "You can the feel the muscles in your groin begin to tighten as your vagina seals itself completely shut." remove_genital(exposed_mob, mob_vagina, suppress_chat, message) @@ -370,7 +370,7 @@ * suppress_chat - whether or not to display a message in chat * mob_womb - the womb to shrink */ -/datum/reagent/drug/aphrodisiac/proc/shrink_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB)) +/datum/reagent/drug/aphrodisiac/proc/shrink_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB)) remove_genital(exposed_mob, mob_womb, suppress_chat) /** ---- Genital Removal ---- @@ -383,13 +383,13 @@ * message - the message to send to chat */ /datum/reagent/drug/aphrodisiac/proc/remove_genitals(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, list/genitals_to_remove, message) - for(var/obj/item/organ/external/genital/mob_genital in genitals_to_remove) + for(var/obj/item/organ/genital/mob_genital in genitals_to_remove) remove_genital(exposed_mob, mob_genital, suppress_chat) if(!suppress_chat && message) to_chat(exposed_mob, span_purple(message)) -/datum/reagent/drug/aphrodisiac/proc/remove_genital(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/mob_genital, suppress_chat = FALSE, message) +/datum/reagent/drug/aphrodisiac/proc/remove_genital(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/mob_genital, suppress_chat = FALSE, message) if(!mob_genital) return @@ -432,7 +432,7 @@ * suppress_chat - whether or not to display a message in chat * mob_penis the mob's penis */ -/datum/reagent/drug/aphrodisiac/proc/create_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS)) +/datum/reagent/drug/aphrodisiac/proc/create_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS)) // Create the new penis if we don't already have one and if prefs allow if(mob_penis) @@ -461,7 +461,7 @@ exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_PENIS][MUTANT_INDEX_COLOR_LIST] = list(colour) // Create the new penis - var/obj/item/organ/external/genital/penis/new_penis = new + var/obj/item/organ/genital/penis/new_penis = new new_penis.build_from_dna(exposed_mob.dna, ORGAN_SLOT_PENIS) new_penis.Insert(exposed_mob, 0, FALSE) new_penis.genital_size = 4 @@ -478,7 +478,7 @@ * suppress_chat - whether or not to display a message in chat * mob_testicles - the mob's testicles */ -/datum/reagent/drug/aphrodisiac/proc/create_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/testicles/mob_balls = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)) +/datum/reagent/drug/aphrodisiac/proc/create_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/testicles/mob_balls = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)) // Create the new testicles if we don't already have them and if prefs allow if(mob_balls) @@ -487,7 +487,7 @@ if(!exposed_mob.client?.prefs.read_preference(/datum/preference/toggle/erp/new_genitalia_growth)) return - var/obj/item/organ/external/genital/testicles/new_balls = new + var/obj/item/organ/genital/testicles/new_balls = new new_balls.build_from_dna(exposed_mob.dna, ORGAN_SLOT_TESTICLES) new_balls.Insert(exposed_mob, 0, FALSE) new_balls.genital_size = 0 @@ -502,7 +502,7 @@ * suppress_chat - whether or not to display a message in chat * mob_breasts - the mob's breasts */ -/datum/reagent/drug/aphrodisiac/proc/create_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) +/datum/reagent/drug/aphrodisiac/proc/create_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) // Make sure we don't already have them if(mob_breasts) @@ -516,7 +516,7 @@ exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_BREASTS][MUTANT_INDEX_NAME] = "Pair" // Create the new breasts - var/obj/item/organ/external/genital/breasts/new_breasts = new + var/obj/item/organ/genital/breasts/new_breasts = new new_breasts.build_from_dna(exposed_mob.dna, ORGAN_SLOT_BREASTS) new_breasts.Insert(exposed_mob, FALSE, FALSE) new_breasts.genital_size = 2 @@ -541,7 +541,7 @@ * suppress_chat - whether or not to display a message in chat * mob_vagina - the mob's vagina */ -/datum/reagent/drug/aphrodisiac/proc/create_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA)) +/datum/reagent/drug/aphrodisiac/proc/create_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA)) // Add new vagina if we don't already have one. Use dna prefs before assigning a default human one. if(mob_vagina) @@ -553,7 +553,7 @@ if (exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_VAGINA][MUTANT_INDEX_NAME] == "None") exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_VAGINA][MUTANT_INDEX_NAME] = "Human" - var/obj/item/organ/external/genital/vagina/new_vagina = new + var/obj/item/organ/genital/vagina/new_vagina = new new_vagina.build_from_dna(exposed_mob.dna, ORGAN_SLOT_VAGINA) new_vagina.Insert(exposed_mob, 0, FALSE) update_appearance(exposed_mob) @@ -567,7 +567,7 @@ * suppress_chat - whether or not to display a message in chat * mob_womb - the mob's womb */ -/datum/reagent/drug/aphrodisiac/proc/create_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB)) +/datum/reagent/drug/aphrodisiac/proc/create_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB)) // Add a new womb if we don't already have one. Use dna prefs before assigning a default normal one. if(mob_womb) @@ -576,7 +576,7 @@ if (exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_WOMB][MUTANT_INDEX_NAME] == "None") exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_WOMB][MUTANT_INDEX_NAME] = "Normal" - var/obj/item/organ/external/genital/womb/new_womb = new + var/obj/item/organ/genital/womb/new_womb = new new_womb.build_from_dna(exposed_mob.dna, ORGAN_SLOT_WOMB) new_womb.Insert(exposed_mob, 0, FALSE) update_appearance(exposed_mob) @@ -588,12 +588,12 @@ * genital - the genital that is causing the messages * suppress_chat - whether or not to display a message in chat */ -/datum/reagent/drug/aphrodisiac/proc/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/genital, suppress_chat = FALSE) +/datum/reagent/drug/aphrodisiac/proc/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/genital, suppress_chat = FALSE) /** * Called after growth/shrinkage to update mob sprites */ -/datum/reagent/drug/aphrodisiac/proc/update_appearance(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/genital, mutations_overlay = FALSE) +/datum/reagent/drug/aphrodisiac/proc/update_appearance(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/genital, mutations_overlay = FALSE) if(genital) genital.update_sprite_suffix() if(exposed_mob) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm index d5542ea5740..ca861099f86 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm @@ -30,7 +30,7 @@ exposed_mob.set_gender(exposed_mob.client?.prefs?.read_preference(/datum/preference/choiced/gender)) if(exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS)) - var/obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/mob_breasts = exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS) var/original_breast_size = GLOB.breast_size_to_number[exposed_mob.client?.prefs.read_preference(/datum/preference/choiced/breasts_size)] if(original_breast_size) if(mob_breasts?.genital_size > original_breast_size) @@ -43,7 +43,7 @@ modified_genitals = TRUE if(exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)) - var/obj/item/organ/external/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS) if(exposed_mob.client?.prefs?.read_preference(/datum/preference/numeric/penis_length)) var/original_penis_length = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/penis_length) var/original_penis_girth = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/penis_girth) @@ -66,7 +66,7 @@ modified_genitals = TRUE if(exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)) - var/obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/testicles/mob_testicles = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) if(exposed_mob.client?.prefs?.read_preference(/datum/preference/numeric/balls_size)) var/original_ball_size = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/balls_size) if(mob_testicles?.genital_size > original_ball_size) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm index abb45ae5c04..070cea0cd53 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm @@ -37,7 +37,7 @@ exposed_mob.adjust_pain(pain_adjust_amount) var/modified_genitals = FALSE - for(var/obj/item/organ/external/genital/mob_genitals in exposed_mob.organs) + for(var/obj/item/organ/genital/mob_genitals in exposed_mob.organs) if(!mob_genitals.aroused == AROUSAL_CANT) mob_genitals.aroused = AROUSAL_FULL mob_genitals.update_sprite_suffix() diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm index 6b5f8ee4f57..80a7611de60 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm @@ -87,13 +87,13 @@ if(exposed_mob.client?.prefs?.read_preference(/datum/preference/toggle/erp/penis_enlargement)) // Attempt to make new male genitals if applicable create_genitals(exposed_mob, suppress_chat, list(GENITAL_PENIS, GENITAL_TESTICLES)) - + // Make the balls bigger if they're small. grow_balls(exposed_mob, suppress_chat) - + // Separates gender change stuff from cock growth, breast shrinkage, and female genitalia removal change_gender(exposed_mob, MALE, suppress_chat) - + // Attempt genital shrinkage where applicable shrink_genitals(exposed_mob, suppress_chat, list(GENITAL_BREASTS, GENITAL_VAGINA, GENITAL_WOMB)) @@ -102,14 +102,14 @@ * * exposed_mob - the mob being affected by the reagent * genital - the genital that is causing the messages -*/ -/datum/reagent/drug/aphrodisiac/incubus_draft/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/mob_genital, suppress_chat = FALSE) +*/ +/datum/reagent/drug/aphrodisiac/incubus_draft/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/mob_genital, suppress_chat = FALSE) if(!mob_genital) return - - if(istype(mob_genital, /obj/item/organ/external/genital/penis)) + + if(istype(mob_genital, /obj/item/organ/genital/penis)) penis_growth_to_chat(exposed_mob, mob_genital) - else if(istype(mob_genital, /obj/item/organ/external/genital/testicles)) + else if(istype(mob_genital, /obj/item/organ/genital/testicles)) testicles_growth_to_chat(exposed_mob, mob_genital, suppress_chat) /** @@ -118,12 +118,12 @@ * exposed_mob - the mob being affected by the reagent * mob_penis - the penis that is causing the message * NOTE: this function doesn't get called often enough to warrant suppressing chat, hence the var's omission -*/ -/datum/reagent/drug/aphrodisiac/incubus_draft/proc/penis_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/penis/mob_penis) +*/ +/datum/reagent/drug/aphrodisiac/incubus_draft/proc/penis_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/penis/mob_penis) if(!mob_penis) return - + if(mob_penis.visibility_preference == GENITAL_ALWAYS_SHOW || exposed_mob.is_bottomless()) if(mob_penis.genital_size >= (penis_max_length - 2)) if(exposed_mob.dna.features["penis_sheath"] == SHEATH_SLIT) @@ -142,14 +142,14 @@ to_chat(exposed_mob, span_purple("Your [pick(words_for_bigger_cock)] [pick(bigger_cock_text_list)] [pick(cock_action_text_list)]about [mob_penis.genital_size] inches long, and [mob_penis.girth] inches in circumference.")) else to_chat(exposed_mob, span_purple("Your [pick(cock_text_list)] [pick(cock_action_text_list)]about [mob_penis.genital_size] inches long, and [mob_penis.girth] inches in circumference.")) - + /** * Helper function for the helper function used to display the messages that appear in chat while the testicles growth is occurring * * exposed_mob - the mob being affected by the reagent * mob_testicles - the testicles that are causing the message -*/ -/datum/reagent/drug/aphrodisiac/incubus_draft/proc/testicles_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/testicles/mob_testicles, suppress_chat = FALSE) +*/ +/datum/reagent/drug/aphrodisiac/incubus_draft/proc/testicles_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/testicles/mob_testicles, suppress_chat = FALSE) // So we don't spam chat if(suppress_chat) @@ -157,13 +157,13 @@ if(!mob_testicles) return - + // Display a different message when they reach 'enormous' - if(mob_testicles.genital_size <= balls_big_size) - to_chat(exposed_mob, span_purple("Your balls [pick(ball_action_text_list)]. They are now [mob_testicles.balls_size_to_description(mob_testicles.genital_size)].")) + if(mob_testicles.genital_size <= balls_big_size) + to_chat(exposed_mob, span_purple("Your balls [pick(ball_action_text_list)]. They are now [mob_testicles.balls_size_to_description(mob_testicles.genital_size)].")) else if(mob_testicles.genital_size == balls_max_size) - to_chat(exposed_mob, span_purple("You can feel your heavy balls churn as they swell to enormous proportions!")) - + to_chat(exposed_mob, span_purple("You can feel your heavy balls churn as they swell to enormous proportions!")) + // Notify the user that they're overdosing. Doesn't affect their mood. /datum/reagent/drug/aphrodisiac/incubus_draft/overdose_start(mob/living/carbon/human/exposed_mob) to_chat(exposed_mob, span_userdanger("You feel like you took too much [name]!")) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm index 50dd2095f35..5c8f7419cd5 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm @@ -113,7 +113,7 @@ * suppress_chat - whether or not to display a message in chat * NOTE: this function doesn't get called often enough to warrant suppressing chat, hence the var's omission */ -/datum/reagent/drug/aphrodisiac/succubus_milk/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) +/datum/reagent/drug/aphrodisiac/succubus_milk/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS)) if(!mob_breasts) return diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm index 688f29650fa..993495a5a47 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm @@ -32,7 +32,7 @@ /obj/item/clothing/under/misc/latex_catsuit/equipped(mob/living/affected_mob, slot) . = ..() var/mob/living/carbon/human/affected_human = affected_mob - var/obj/item/organ/external/genital/breasts/affected_breasts = affected_human.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/affected_breasts = affected_human.get_organ_slot(ORGAN_SLOT_BREASTS) if(src == affected_human.w_uniform) if(affected_mob.gender == FEMALE) icon_state = "latex_catsuit_female" diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm index f0ab08638b8..88d57070358 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm @@ -56,10 +56,10 @@ /obj/item/clothing/strapon/equipped(mob/user, slot) . = ..() var/mob/living/carbon/human/affected_mob = user - var/obj/item/organ/external/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA) - var/obj/item/organ/external/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB) - var/obj/item/organ/external/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB) + var/obj/item/organ/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) if(src == affected_mob.belt) affected_vagina?.visibility_preference = GENITAL_NEVER_SHOW @@ -73,10 +73,10 @@ /obj/item/clothing/strapon/dropped(mob/living/user) . = ..() var/mob/living/carbon/human/affected_mob = user - var/obj/item/organ/external/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA) - var/obj/item/organ/external/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB) - var/obj/item/organ/external/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB) + var/obj/item/organ/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES) if(strapon_item && !ismob(loc) && in_hands == TRUE && src != affected_mob.belt) qdel(strapon_item) @@ -193,7 +193,7 @@ return var/message = "" - var/obj/item/organ/external/genital/vagina = hit_mob.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/vagina = hit_mob.get_organ_slot(ORGAN_SLOT_VAGINA) if(hit_mob.check_erp_prefs(/datum/preference/toggle/erp/sex_toy, user, src)) switch(user.zone_selected) //to let code know what part of body we gonna fuck if(BODY_ZONE_PRECISE_GROIN) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm index 2e3de6cf96b..0227bd63bea 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm @@ -38,7 +38,7 @@ /// Returns true if the human has an accessible penis for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines. /mob/living/carbon/human/proc/has_penis(required_state = REQUIRE_GENITAL_ANY) - var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_PENIS) if(!genital) return FALSE @@ -54,7 +54,7 @@ /// Returns true if the human has a accessible balls for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines. /mob/living/carbon/human/proc/has_balls(required_state = REQUIRE_GENITAL_ANY) - var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_TESTICLES) if(!genital) return FALSE @@ -70,7 +70,7 @@ /// Returns true if the human has an accessible vagina for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines. /mob/living/carbon/human/proc/has_vagina(required_state = REQUIRE_GENITAL_ANY) - var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_VAGINA) if(!genital) return FALSE @@ -86,7 +86,7 @@ /// Returns true if the human has a accessible breasts for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines. /mob/living/carbon/human/proc/has_breasts(required_state = REQUIRE_GENITAL_ANY) - var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_BREASTS) if(!genital) return FALSE @@ -104,7 +104,7 @@ /mob/living/carbon/human/proc/has_anus(required_state = REQUIRE_GENITAL_ANY) if(issilicon(src)) return TRUE - var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_ANUS) + var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_ANUS) if(!genital) return FALSE @@ -380,5 +380,5 @@ ..() /// Checks if the tail is exposed. -/obj/item/organ/external/tail/proc/is_exposed() +/obj/item/organ/tail/proc/is_exposed() return TRUE // your tail is always exposed, dummy! why are you checking this diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm index 1730e8f121a..098917bfe61 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/brain/on_life(seconds_per_tick, times_fired) //All your horny is here *points to the head* +/obj/item/organ/brain/on_life(seconds_per_tick, times_fired) //All your horny is here *points to the head* . = ..() var/mob/living/carbon/human/brain_owner = owner if(istype(brain_owner, /mob/living/carbon/human) && brain_owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy)) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm index 315af756af4..7f3fe235c3a 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm @@ -18,8 +18,8 @@ return var/mob/living/carbon/human/affected_human = user - var/obj/item/organ/external/genital/testicles/testicles = affected_human.get_organ_slot(ORGAN_SLOT_TESTICLES) - var/obj/item/organ/external/genital/penis/penis = affected_human.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/testicles = affected_human.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/penis/penis = affected_human.get_organ_slot(ORGAN_SLOT_PENIS) var/datum/sprite_accessory/genital/penis_sprite = SSaccessories.sprite_accessories[ORGAN_SLOT_PENIS][affected_human.dna.species.mutant_bodyparts[ORGAN_SLOT_PENIS][MUTANT_INDEX_NAME]] if(penis_sprite.is_hidden(affected_human)) to_chat(user, span_notice("You need to expose yourself in order to masturbate.")) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm index aa24175ebef..c0e7826d666 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm @@ -40,7 +40,7 @@ . = ..() if(!istype(user)) return - var/obj/item/organ/external/genital/breasts/user_breast = user.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/user_breast = user.get_organ_slot(ORGAN_SLOT_BREASTS) if(src == user.nipples) if(user_breast) @@ -70,7 +70,7 @@ /obj/item/clothing/sextoy/nipple_clamps/process(seconds_per_tick) . = ..() var/mob/living/carbon/human/target = loc - var/obj/item/organ/external/genital/breasts/target_breast = target.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts/target_breast = target.get_organ_slot(ORGAN_SLOT_BREASTS) if(!target || !target_breast) return target.adjust_arousal(1 * seconds_per_tick) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm index cac7a71e7ac..820ce6f9cf9 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm @@ -105,7 +105,7 @@ var/list/possible_emotes = list("moan") switch(user.zone_selected) //to let code know what part of body we gonna fuck if(BODY_ZONE_PRECISE_GROIN) - var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) if(!vagina) to_chat(user, span_danger("[target] don't have suitable genitalia for that!")) return FALSE @@ -327,11 +327,11 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors . = ..() if(!istype(user)) return - var/obj/item/organ/external/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA) - var/obj/item/organ/external/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB) - var/obj/item/organ/external/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES) - var/obj/item/organ/external/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS) + var/obj/item/organ/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB) + var/obj/item/organ/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS) if(src == user.vagina) vagina?.visibility_preference = GENITAL_NEVER_SHOW @@ -360,11 +360,11 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors if(other_end) QDEL_NULL(other_end) - var/obj/item/organ/external/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA) - var/obj/item/organ/external/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB) - var/obj/item/organ/external/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES) - var/obj/item/organ/external/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS) + var/obj/item/organ/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB) + var/obj/item/organ/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS) if(!(src == user.vagina)) anus?.visibility_preference = GENITAL_HIDDEN_BY_CLOTHES diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm index 3248b9b35ea..423431f78b4 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm @@ -29,7 +29,7 @@ if(BODY_ZONE_CHEST) targetedsomewhere = TRUE - var/obj/item/organ/external/genital/badonkers = target.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/badonkers = target.get_organ_slot(ORGAN_SLOT_BREASTS) if(!(target.is_topless() || badonkers.visibility_preference == GENITAL_ALWAYS_SHOW)) to_chat(user, span_danger("[target]'s chest is covered!")) return diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm index 10ae92b9200..8cd272a2258 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm @@ -61,7 +61,7 @@ return switch(user.zone_selected) //to let code know what part of body we gonna... Uhh... You get the point. if(BODY_ZONE_PRECISE_GROIN) - var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) if(!penis) to_chat(user, span_danger("[target] doesn't have a penis!")) return diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm index 2330cc87729..cac170fed7b 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm @@ -124,8 +124,8 @@ switch(user.zone_selected) //to let code know what part of body we gonna tickle if(BODY_ZONE_PRECISE_GROIN) targetedsomewhere = TRUE - var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) if(vagina && penis) if(target.is_bottomless() || (penis.visibility_preference == GENITAL_ALWAYS_SHOW && vagina.visibility_preference == GENITAL_ALWAYS_SHOW)) message = (user == target) ? pick("leans [src] against [target.p_their()] penis, letting it shock it. Ouch...", @@ -184,7 +184,7 @@ if(BODY_ZONE_CHEST) targetedsomewhere = TRUE - var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS) if(breasts) if(breasts.visibility_preference == GENITAL_ALWAYS_SHOW || target.is_topless()) message = (user == target) ? pick("leans [src] against [target.p_their()] breasts, letting it shock it.", diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm index 80add499a9a..8bac2f1bba8 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm @@ -117,8 +117,8 @@ switch(user.zone_selected) if(BODY_ZONE_PRECISE_GROIN) - var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) if(!vagina && !penis) return FALSE @@ -144,7 +144,7 @@ target.adjust_pleasure((vibration_mode == "low" ? 2 : (vibration_mode == "high" ? 10 : 5))) if(BODY_ZONE_CHEST) - var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS) if(!(target.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW)) to_chat(user, span_danger("Looks like [target]'s chest is covered!")) return FALSE diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm index aa786d4c593..c59afdcc427 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm @@ -147,8 +147,8 @@ switch(user.zone_selected) //to let code know what part of body we gonna wax if(BODY_ZONE_PRECISE_GROIN) targeted_somewhere = TRUE - var/obj/item/organ/external/genital/penis = attacked.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/vagina = attacked.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/penis = attacked.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/vagina = attacked.get_organ_slot(ORGAN_SLOT_VAGINA) if((vagina && penis) && (attacked.is_bottomless() || vagina.visibility_preference == GENITAL_ALWAYS_SHOW && penis.visibility_preference == GENITAL_ALWAYS_SHOW)) message = (user == attacked) ? pick("drips some wax on [attacked.p_their()] genitals, moaning in pleasure", "drips some wax on [attacked.p_them()]self, moaning in pleasure as it reaches [attacked.p_their()] genitals") : pick( @@ -180,7 +180,7 @@ if(BODY_ZONE_CHEST) targeted_somewhere = TRUE - var/obj/item/organ/external/genital/breasts = attacked.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts = attacked.get_organ_slot(ORGAN_SLOT_BREASTS) if(attacked.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW) var/breasts_or_nipples = breasts ? ORGAN_SLOT_BREASTS : ORGAN_SLOT_NIPPLES message = (user == attacked) ? pick("drips some wax on [attacked.p_their()] [breasts_or_nipples], releasing all [attacked.p_their()] lustness", "drips some wax right on [attacked.p_their()] [breasts ? "tits" : "chest"], making [attacked.p_their()] feel faint.") : pick("pours the wax that is slowly dripping from [src] onto [attacked]'s [breasts_or_nipples], [attacked.p_they()] shows pure enjoyment.", "tilts the candle. Right in the moment when wax drips on [attacked]'s [breasts_or_nipples], [attacked.p_they()] shivers", "tilts the candle. Just when hot drops of wax fell on [attacked]'s [breasts_or_nipples], [attacked.p_they()] quietly moans in pleasure") diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm index 5e12ff253d6..9667f5d1641 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm @@ -124,8 +124,8 @@ switch(user.zone_selected) //to let code know what part of body we gonna vibe if(BODY_ZONE_PRECISE_GROIN) targetedsomewhere = TRUE - var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) - var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA) if((vagina && penis) && (vagina.visibility_preference == GENITAL_ALWAYS_SHOW && penis.visibility_preference == GENITAL_ALWAYS_SHOW || target.is_bottomless())) message = (user == target) ? pick("massages their vagina with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their pussy with [src]", "massages their penis with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their penis with [src]") : pick("[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] massages [target]'s vagina with [src]", "uses [src] to [vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] massage [target]'s crotch", "leans the massager against [target]'s pussy", "[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] massages [target]'s penis with [src]", "uses [src] to [vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] massage [target]'s penis", "leans the massager against [target]'s penis") target.adjust_arousal(DEFAULT_AROUSAL_INCREASE) @@ -150,7 +150,7 @@ if(BODY_ZONE_CHEST) targetedsomewhere = TRUE - var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS) if(target.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW) var/breasts_or_nipples = breasts ? ORGAN_SLOT_BREASTS : ORGAN_SLOT_NIPPLES message = (user == target) ? pick("massages their [breasts_or_nipples] with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their tits with [src]") : pick("[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] teases [target]'s [breasts_or_nipples] with [src]", "uses [src] to[vibration_mode == "low" ? " slowly" : ""] massage [target]'s [breasts ? "tits" : ORGAN_SLOT_NIPPLES]", "uses [src] to tease [target]'s [breasts ? "boobs" : ORGAN_SLOT_NIPPLES]", "rubs [target]'s [breasts ? "tits" : ORGAN_SLOT_NIPPLES] with [src]") diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm index 9991547d878..5f338310fe4 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm @@ -80,7 +80,7 @@ var/mob/living/carbon/human/user = loc if(!user || !istype(user)) return PROCESS_KILL - var/obj/item/organ/external/genital/testicles/balls = user.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/balls = user.get_organ_slot(ORGAN_SLOT_PENIS) if(!toy_on || !balls) return user.adjust_arousal(1 * seconds_per_tick) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm index 8db24c2ee5f..3a8e054a827 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm @@ -43,17 +43,17 @@ */ /// What organ is fluid being extracted from? - var/obj/item/organ/external/genital/current_selected_organ = null + var/obj/item/organ/genital/current_selected_organ = null /// What beaker is liquid being outputted to? var/obj/item/reagent_containers/cup/beaker = null /// What human mob is currently buckled to the machine? var/mob/living/carbon/human/current_mob = null /// What is the current breast organ of the buckled mob? - var/obj/item/organ/external/genital/breasts/current_breasts = null + var/obj/item/organ/genital/breasts/current_breasts = null /// What is the current testicles organ of the buckled mob? - var/obj/item/organ/external/genital/testicles/current_testicles = null + var/obj/item/organ/genital/testicles/current_testicles = null /// What is the current vagina organ of the buckled mob? - var/obj/item/organ/external/genital/vagina/current_vagina = null + var/obj/item/organ/genital/vagina/current_vagina = null /// What color is the machine currently set to? var/machine_color = "pink" @@ -355,7 +355,7 @@ update_all_visuals() return FALSE - if((istype(current_selected_organ, /obj/item/organ/external/genital/testicles) && (semen_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/external/genital/vagina) && (girlcum_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/external/genital/breasts) && (milk_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY))) + if((istype(current_selected_organ, /obj/item/organ/genital/testicles) && (semen_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/genital/vagina) && (girlcum_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/genital/breasts) && (milk_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY))) current_mode = MILKING_PUMP_MODE_OFF pump_state = MILKING_PUMP_STATE_OFF update_all_visuals() @@ -386,11 +386,11 @@ var/obj/item/reagent_containers/target_container switch(current_selected_organ.type) - if(/obj/item/organ/external/genital/breasts) + if(/obj/item/organ/genital/breasts) target_container = milk_vessel - if(/obj/item/organ/external/genital/vagina) + if(/obj/item/organ/genital/vagina) target_container = girlcum_vessel - if(/obj/item/organ/external/genital/testicles) + if(/obj/item/organ/genital/testicles) target_container = semen_vessel if(!target_container || current_selected_organ.internal_fluid_count <= 0) @@ -449,7 +449,7 @@ var/current_selected_organ_size = current_selected_organ.genital_size cut_overlay(organ_overlay) - if(istype(current_selected_organ, /obj/item/organ/external/genital/breasts)) + if(istype(current_selected_organ, /obj/item/organ/genital/breasts)) switch(current_selected_organ.genital_type) if("pair") current_selected_organ_type = "double_breast" @@ -473,14 +473,14 @@ else current_selected_organ_size = "5" - if(istype(current_selected_organ, /obj/item/organ/external/genital/testicles)) + if(istype(current_selected_organ, /obj/item/organ/genital/testicles)) current_selected_organ_type = ORGAN_SLOT_PENIS - if(istype(current_selected_organ, /obj/item/organ/external/genital/vagina)) + if(istype(current_selected_organ, /obj/item/organ/genital/vagina)) current_selected_organ_type = ORGAN_SLOT_VAGINA organ_overlay_new_icon_state = "[current_selected_organ_type]_pump_[pump_state]" - if(istype(current_selected_organ, /obj/item/organ/external/genital/breasts)) + if(istype(current_selected_organ, /obj/item/organ/genital/breasts)) organ_overlay_new_icon_state += "_[current_selected_organ_size]" if(current_mode == MILKING_PUMP_MODE_OFF) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm index 176750d8d64..f93a67c5adb 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm @@ -30,8 +30,8 @@ if (covered) continue - var/obj/item/organ/external/genital/vagina/found_vagina = buckled_human.get_organ_slot(ORGAN_SLOT_VAGINA) - var/obj/item/organ/external/genital/vagina/found_penis = buckled_human.get_organ_slot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/vagina/found_vagina = buckled_human.get_organ_slot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/vagina/found_penis = buckled_human.get_organ_slot(ORGAN_SLOT_PENIS) var/arousal_mult = seconds_per_tick var/message_chance = 40 diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm index ff1fdfe8cb5..319683e3c39 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm @@ -1,4 +1,4 @@ -/obj/item/organ/external/genital +/obj/item/organ/genital /// The fluid count of the genital. var/internal_fluid_count = 0 @@ -12,15 +12,15 @@ var/obj/item/inserted_item /// Helper proc for checking if internal fluids are full or not. -/obj/item/organ/external/genital/proc/internal_fluid_full() +/obj/item/organ/genital/proc/internal_fluid_full() return internal_fluid_count >= internal_fluid_maximum /// Adds the given amount to the internal fluid count, clamping it between 0 and internal_fluid_maximum. -/obj/item/organ/external/genital/proc/adjust_internal_fluid(amount) +/obj/item/organ/genital/proc/adjust_internal_fluid(amount) internal_fluid_count = clamp(internal_fluid_count + amount, 0, internal_fluid_maximum) /// Tries to add the specified amount to the target reagent container, or removes it if none are available. Keeps in mind internal_fluid_count. -/obj/item/organ/external/genital/proc/transfer_internal_fluid(datum/reagents/reagent_container = null, attempt_amount) +/obj/item/organ/genital/proc/transfer_internal_fluid(datum/reagents/reagent_container = null, attempt_amount) if(!internal_fluid_datum || !internal_fluid_count || !internal_fluid_maximum) return FALSE diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm index 8899db9d003..9e2686001a3 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm @@ -1,7 +1,7 @@ -/obj/item/organ/external/genital/breasts +/obj/item/organ/genital/breasts internal_fluid_datum = /datum/reagent/consumable/breast_milk -/obj/item/organ/external/genital/breasts/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/breasts/build_from_dna(datum/dna/DNA, associated_key) . = ..() var/breasts_capacity = 0 var/size = 0.5 diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm index e9864538174..dfe777b38a6 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm @@ -1,7 +1,7 @@ -/obj/item/organ/external/genital/testicles +/obj/item/organ/genital/testicles internal_fluid_datum = /datum/reagent/consumable/cum -/obj/item/organ/external/genital/testicles/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/testicles/build_from_dna(datum/dna/DNA, associated_key) . = ..() var/size = 0.5 if(DNA.features["balls_size"] > 0) diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm index c74995845a1..9a201ea5c5e 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm @@ -1,6 +1,6 @@ -/obj/item/organ/external/genital/vagina +/obj/item/organ/genital/vagina internal_fluid_datum = /datum/reagent/consumable/femcum -/obj/item/organ/external/genital/vagina/build_from_dna(datum/dna/DNA, associated_key) +/obj/item/organ/genital/vagina/build_from_dna(datum/dna/DNA, associated_key) . = ..() internal_fluid_maximum = 10 diff --git a/modular_nova/modules/modular_persistence/code/modular_persistence.dm b/modular_nova/modules/modular_persistence/code/modular_persistence.dm index 2919b4e3837..834f6a3bf59 100644 --- a/modular_nova/modules/modular_persistence/code/modular_persistence.dm +++ b/modular_nova/modules/modular_persistence/code/modular_persistence.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list( "stored_character_slot_index", )) -/obj/item/organ/internal/brain +/obj/item/organ/brain /// The modular persistence data for a character. var/datum/modular_persistence/modular_persistence @@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list( player.save_individual_persistence() /// Loads the contents of the player's modular_persistence file to their character. -/datum/controller/subsystem/persistence/proc/load_modular_persistence(obj/item/organ/internal/brain/brain) +/datum/controller/subsystem/persistence/proc/load_modular_persistence(obj/item/organ/brain/brain) if(!brain) return FALSE @@ -51,11 +51,11 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list( /// The owner's character slot index. var/stored_character_slot_index -/datum/modular_persistence/New(obj/item/organ/internal/brain/brain, list/persistence_data) +/datum/modular_persistence/New(obj/item/organ/brain/brain, list/persistence_data) owner_brain = WEAKREF(brain) . = ..() - var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve() + var/obj/item/organ/brain/our_brain = owner_brain?.resolve() if(!our_brain) owner_brain = null return @@ -74,7 +74,9 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list( if(var_entry) vars[var_name] = var_entry - + if(findtext(nif_path, "/obj/item/organ/internal")) + var/trimmed_nif_path = copytext(nif_path, length("/obj/item/organ/internal") + 1) + nif_path = "/obj/item/organ[trimmed_nif_path]" if(!our_brain.owner) CRASH("Tried to load modular persistence on a brain with no owner! How did this happen?! (\ref[brain], [brain.brainmob?.ckey], [brain])") @@ -94,7 +96,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list( /datum/modular_persistence/proc/serialize_contents_to_list() var/list/returned_list = list() - var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve() + var/obj/item/organ/brain/our_brain = owner_brain?.resolve() if(!our_brain) owner_brain = null return @@ -115,7 +117,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list( /// Saves the held persistence data to where it needs to go. /datum/modular_persistence/proc/save_data(var/ckey) - var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve() + var/obj/item/organ/brain/our_brain = owner_brain?.resolve() if(!our_brain) owner_brain = null return @@ -139,6 +141,6 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list( /// Saves the persistence data for the owner. /mob/living/carbon/human/proc/save_individual_persistence(var/ckey) - var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) return brain?.modular_persistence?.save_data(ckey) diff --git a/modular_nova/modules/modular_vending/code/wardrobes.dm b/modular_nova/modules/modular_vending/code/wardrobes.dm index 1ada597beba..1026917e24c 100644 --- a/modular_nova/modules/modular_vending/code/wardrobes.dm +++ b/modular_nova/modules/modular_vending/code/wardrobes.dm @@ -75,7 +75,7 @@ ) contraband_nova = list( - /obj/item/organ/internal/tongue/lizard/robot = 2, + /obj/item/organ/tongue/lizard/robot = 2, ) /obj/machinery/vending/wardrobe/science_wardrobe diff --git a/modular_nova/modules/moretraitoritems/code/autosurgeon.dm b/modular_nova/modules/moretraitoritems/code/autosurgeon.dm index fcd156c7475..fa773964ba0 100644 --- a/modular_nova/modules/moretraitoritems/code/autosurgeon.dm +++ b/modular_nova/modules/moretraitoritems/code/autosurgeon.dm @@ -1,36 +1,36 @@ /obj/item/autosurgeon/toolset - starting_organ = /obj/item/organ/internal/cyberimp/arm/toolset + starting_organ = /obj/item/organ/cyberimp/arm/toolset /obj/item/autosurgeon/surgery - starting_organ = /obj/item/organ/internal/cyberimp/arm/surgery + starting_organ = /obj/item/organ/cyberimp/arm/surgery /obj/item/autosurgeon/botany - starting_organ = /obj/item/organ/internal/cyberimp/arm/botany + starting_organ = /obj/item/organ/cyberimp/arm/botany /obj/item/autosurgeon/janitor - starting_organ = /obj/item/organ/internal/cyberimp/arm/janitor + starting_organ = /obj/item/organ/cyberimp/arm/janitor /obj/item/autosurgeon/armblade - starting_organ = /obj/item/organ/internal/cyberimp/arm/armblade + starting_organ = /obj/item/organ/cyberimp/arm/armblade /obj/item/autosurgeon/muscle - starting_organ = /obj/item/organ/internal/cyberimp/arm/strongarm + starting_organ = /obj/item/organ/cyberimp/arm/strongarm //syndie /obj/item/autosurgeon/syndicate/hackerman - starting_organ = /obj/item/organ/internal/cyberimp/arm/hacker + starting_organ = /obj/item/organ/cyberimp/arm/hacker /obj/item/autosurgeon/syndicate/esword_arm - starting_organ = /obj/item/organ/internal/cyberimp/arm/esword + starting_organ = /obj/item/organ/cyberimp/arm/esword /obj/item/autosurgeon/syndicate/nodrop - starting_organ = /obj/item/organ/internal/cyberimp/brain/anti_drop + starting_organ = /obj/item/organ/cyberimp/brain/anti_drop /obj/item/autosurgeon/syndicate/baton - starting_organ = /obj/item/organ/internal/cyberimp/arm/baton + starting_organ = /obj/item/organ/cyberimp/arm/baton /obj/item/autosurgeon/syndicate/flash - starting_organ = /obj/item/organ/internal/cyberimp/arm/flash + starting_organ = /obj/item/organ/cyberimp/arm/flash //bodypart /obj/item/autosurgeon/bodypart/r_arm_robotic @@ -45,9 +45,9 @@ name = "strange autosurgeon" icon = 'modular_nova/modules/moretraitoritems/icons/alien.dmi' surgery_speed = 2 - organ_whitelist = list(/obj/item/organ/internal/alien) + organ_whitelist = list(/obj/item/organ/alien) -/obj/item/organ/internal/alien/plasmavessel/opfor +/obj/item/organ/alien/plasmavessel/opfor stored_plasma = 500 max_plasma = 500 plasma_rate = 10 @@ -62,12 +62,12 @@ /obj/item/storage/organbox/strange/PopulateContents() new /obj/item/autosurgeon/xeno(src) - new /obj/item/organ/internal/alien/plasmavessel/opfor(src) - new /obj/item/organ/internal/alien/resinspinner(src) - new /obj/item/organ/internal/alien/acid(src) - new /obj/item/organ/internal/alien/neurotoxin(src) - new /obj/item/organ/internal/alien/hivenode(src) + new /obj/item/organ/alien/plasmavessel/opfor(src) + new /obj/item/organ/alien/resinspinner(src) + new /obj/item/organ/alien/acid(src) + new /obj/item/organ/alien/neurotoxin(src) + new /obj/item/organ/alien/hivenode(src) /obj/item/storage/organbox/strange/eggsac/PopulateContents() . = ..() - new /obj/item/organ/internal/alien/eggsac(src) + new /obj/item/organ/alien/eggsac(src) diff --git a/modular_nova/modules/mutants/code/mutant_species.dm b/modular_nova/modules/mutants/code/mutant_species.dm index 773baefb150..e353d724a64 100644 --- a/modular_nova/modules/mutants/code/mutant_species.dm +++ b/modular_nova/modules/mutants/code/mutant_species.dm @@ -19,7 +19,7 @@ TRAIT_NO_ZOMBIFY, ) inherent_biotypes = MOB_UNDEAD | MOB_HUMANOID - mutanttongue = /obj/item/organ/internal/tongue/zombie + mutanttongue = /obj/item/organ/tongue/zombie changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | ERT_SPAWN bodytemp_normal = T0C // They have no natural body heat, the environment regulates body temp bodytemp_heat_damage_limit = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD // Take damage at fire temp @@ -56,7 +56,7 @@ name = "Mutated Abomination" id = SPECIES_MUTANT_INFECTIOUS damage_modifier = 10 - mutanteyes = /obj/item/organ/internal/eyes/zombie + mutanteyes = /obj/item/organ/eyes/zombie changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN bodypart_overrides = list( BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant_zombie, diff --git a/modular_nova/modules/night_vision/night_vision.dm b/modular_nova/modules/night_vision/night_vision.dm index 942d52fa645..5e2bfc04c52 100644 --- a/modular_nova/modules/night_vision/night_vision.dm +++ b/modular_nova/modules/night_vision/night_vision.dm @@ -21,7 +21,7 @@ /datum/quirk/night_vision/proc/refresh_quirk_holder_eyes() var/mob/living/carbon/human/human_quirk_holder = quirk_holder - var/obj/item/organ/internal/eyes/eyes = human_quirk_holder.get_organ_by_type(/obj/item/organ/internal/eyes) + var/obj/item/organ/eyes/eyes = human_quirk_holder.get_organ_by_type(/obj/item/organ/eyes) if(!eyes) return // We've either added or removed TRAIT_NIGHT_VISION before calling this proc. Just refresh the eyes. diff --git a/modular_nova/modules/organs/code/ears.dm b/modular_nova/modules/organs/code/ears.dm index f7bbd6d622f..c5567132e7d 100644 --- a/modular_nova/modules/organs/code/ears.dm +++ b/modular_nova/modules/organs/code/ears.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/ears/teshari +/obj/item/organ/ears/teshari name = "teshari ears" desc = "A set of four long rabbit-like ears, a Teshari's main tool while hunting. Naturally extremely sensitive to loud sounds." damage_multiplier = 1.5 @@ -6,7 +6,7 @@ overrides_sprite_datum_organ_type = TRUE bodypart_overlay = /datum/bodypart_overlay/mutant/ears -/obj/item/organ/internal/ears/teshari/on_mob_remove(mob/living/carbon/ear_owner) +/obj/item/organ/ears/teshari/on_mob_remove(mob/living/carbon/ear_owner) . = ..() REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) @@ -41,7 +41,7 @@ user.visible_message(span_notice("[user], pricks up [user.p_their()] four ears, each twitching intently!"), span_notice("You perk up all four of your ears, hunting for even the quietest sounds.")) update_button_state("echolocation_on") - var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) if(ears) ears.damage_multiplier = 3 @@ -53,7 +53,7 @@ user.visible_message(span_notice("[user] drops [user.p_their()] ears down a bit, no longer listening as closely."), span_notice("You drop your ears down, no longer paying close attention.")) update_button_state("echolocation_off") - var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) if(ears) ears.damage_multiplier = 1.5 diff --git a/modular_nova/modules/organs/code/heart.dm b/modular_nova/modules/organs/code/heart.dm index 7764b29685a..59966fd0a3a 100644 --- a/modular_nova/modules/organs/code/heart.dm +++ b/modular_nova/modules/organs/code/heart.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/snail +/obj/item/organ/heart/snail name = "twin gastropod hearts" desc = "A primary heart normally nestled inside a gastropod's shell, and another in the owner's actual chest; necessary to maintain ample bloodflow through essentially two torsos." icon = 'modular_nova/master_files/icons/obj/surgery.dmi' @@ -9,7 +9,7 @@ COOLDOWN_DECLARE(shell_effect_cd) -/obj/item/organ/internal/heart/snail/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/snail/on_mob_insert(mob/living/carbon/organ_owner, special) . = ..() if(!ishuman(organ_owner)) return @@ -22,7 +22,7 @@ RegisterSignal(human_owner, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(modify_damage)) RegisterSignal(human_owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(do_block_effect)) -/obj/item/organ/internal/heart/snail/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/snail/on_mob_remove(mob/living/carbon/organ_owner, special) . = ..() if(!ishuman(organ_owner) || QDELETED(organ_owner)) return @@ -36,7 +36,7 @@ * * Adds a 0.5 modifier to attacks from the back, code borrowed (wholesale) from the roach heart. */ -/obj/item/organ/internal/heart/snail/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) +/obj/item/organ/heart/snail/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER if(!is_blocking(source, damage_amount, damagetype, attack_direction)) @@ -49,7 +49,7 @@ * * Does a special effect if we blocked damage with our shell. */ -/obj/item/organ/internal/heart/snail/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item) +/obj/item/organ/heart/snail/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER if(!is_blocking(source, damage_dealt, damagetype, attack_direction)) @@ -62,7 +62,7 @@ COOLDOWN_START(src, shell_effect_cd, 5 SECONDS) // Cooldown resets EVERY time we get hit /// Checks if the passed mob is in a valid state to be blocking damage with the snail shell -/obj/item/organ/internal/heart/snail/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction) +/obj/item/organ/heart/snail/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction) if(damage_amount < 5 || damagetype != BRUTE || !attack_direction) return if(!ishuman(blocker) || blocker.stat >= UNCONSCIOUS) diff --git a/modular_nova/modules/organs/code/liver.dm b/modular_nova/modules/organs/code/liver.dm index 628ce9add87..9d7114f5b30 100644 --- a/modular_nova/modules/organs/code/liver.dm +++ b/modular_nova/modules/organs/code/liver.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/liver/snail +/obj/item/organ/liver/snail name = "gastropod liver" icon = 'modular_nova/master_files/icons/obj/surgery.dmi' icon_state = "liver-snail" diff --git a/modular_nova/modules/organs/code/lungs.dm b/modular_nova/modules/organs/code/lungs.dm index 9b60ef7d1d1..e7110a6b0a0 100644 --- a/modular_nova/modules/organs/code/lungs.dm +++ b/modular_nova/modules/organs/code/lungs.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/lungs/cold +/obj/item/organ/lungs/cold name = "cold-adapted lungs" icon = 'modular_nova/modules/organs/icons/lungs.dmi' desc = "A set of lungs adapted to low temperatures, though they are more susceptible to high temperatures" @@ -22,7 +22,7 @@ heat_damage_type = BURN -/obj/item/organ/internal/lungs/hot +/obj/item/organ/lungs/hot name = "heat-adapted lungs" icon = 'modular_nova/modules/organs/icons/lungs.dmi' desc = "A set of lungs adapted to high temperatures, though they are more susceptible to low temperatures" @@ -45,7 +45,7 @@ heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_2 heat_damage_type = BURN -/obj/item/organ/internal/lungs/toxin +/obj/item/organ/lungs/toxin name = "toxin-adapted lungs" icon = 'modular_nova/modules/organs/icons/lungs.dmi' desc = "A set of lungs adapted to toxic environments, though more susceptible to extreme temperatures." @@ -72,7 +72,7 @@ heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3 heat_damage_type = BURN -/obj/item/organ/internal/lungs/oxy +/obj/item/organ/lungs/oxy name = "low-oxygen-adapted lungs" icon = 'modular_nova/modules/organs/icons/lungs.dmi' desc = "A set of lungs adapted to lower-pressure environments, though more susceptible to extreme temperatures." @@ -97,7 +97,7 @@ cold_level_3_damage = COLD_GAS_DAMAGE_LEVEL_3 cold_damage_type = BURN -/obj/item/organ/internal/lungs/ethereal +/obj/item/organ/lungs/ethereal cold_level_1_threshold = 208 cold_level_2_threshold = 200 cold_level_3_threshold = 170 diff --git a/modular_nova/modules/organs/code/stomach.dm b/modular_nova/modules/organs/code/stomach.dm index b43d364f989..cd68bfc4c36 100644 --- a/modular_nova/modules/organs/code/stomach.dm +++ b/modular_nova/modules/organs/code/stomach.dm @@ -1,8 +1,8 @@ -/obj/item/organ/internal/stomach +/obj/item/organ/stomach /// Whether the organ is an oversized version var/is_oversized -/obj/item/organ/internal/stomach/oversized +/obj/item/organ/stomach/oversized name = "huge guts" desc = "Typically found in huge creatures, this monstrous engine has developed to be highly efficient, made to get an enormous amount of nutrients to an enormous eater." icon = 'modular_nova/modules/organs/icons/stomach.dmi' @@ -11,7 +11,7 @@ metabolism_efficiency = 0.07 is_oversized = TRUE -/obj/item/organ/internal/stomach/synth/oversized +/obj/item/organ/stomach/synth/oversized name = "huge synthetic bio-reactor" desc = "Typically found in huge synthetics, this monstrous engine has been developed to be highly efficient, made to provide an enormous amount of power to an enormous machine." icon = 'modular_nova/modules/organs/icons/stomach.dmi' @@ -20,7 +20,7 @@ metabolism_efficiency = 0.07 is_oversized = TRUE -/obj/item/organ/internal/stomach/slime/oversized +/obj/item/organ/stomach/slime/oversized name = "huge golgi apparatus" desc = "Typically found in huge slimes, this monstrous organelle has been developed to be highly efficient, made to provide an enormous amount of nutrients to an enormous ooze." maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD @@ -28,12 +28,12 @@ is_oversized = TRUE // Not a stomach, but suitable for where we keep oversized schtuff. -/obj/item/organ/internal/brain/slime/oversized +/obj/item/organ/brain/slime/oversized name = "oversized core" desc = "The central core of a slimeperson, technically their 'extract.' Where the cytoplasm, membrane, and organelles come from; perhaps this is also a mitochondria? This one is enormous." brain_size = 2 -/obj/item/organ/internal/stomach/ethereal/proc/ethereal_shock_absorb(mob/living/stomach_owner = owner, shock_damage, shock_source, siemens_coeff = 1, flags = NONE) +/obj/item/organ/stomach/ethereal/proc/ethereal_shock_absorb(mob/living/stomach_owner = owner, shock_damage, shock_source, siemens_coeff = 1, flags = NONE) do_sparks(number = 5, cardinal_only = TRUE, source = shock_source) playsound(src, SFX_SPARKS, 75, TRUE, -1) adjust_charge(25) @@ -50,7 +50,7 @@ return COMPONENT_LIVING_BLOCK_SHOCK //lithovore stomach - modified golem - this whole section calls to the vars set under stomach/golem, they work in game -/obj/item/organ/internal/stomach/lithovore +/obj/item/organ/stomach/lithovore name = "litho-adapted stomach" icon_state = "stomach-p" desc = "An unfamiliar digestive organ that excels in material deconstruction." @@ -59,7 +59,7 @@ organ_traits = list(TRAIT_ROCK_EATER) //i eat MORE ROCKS. WORSE. -/obj/item/organ/internal/stomach/lithovore/oversized +/obj/item/organ/stomach/lithovore/oversized name = "huge litho-adapted stomach" icon = 'modular_nova/modules/organs/icons/stomach.dmi' icon_state = "stomach_big_p" diff --git a/modular_nova/modules/organs/code/tongue.dm b/modular_nova/modules/organs/code/tongue.dm index 57ff8f5714c..31cce08e47b 100644 --- a/modular_nova/modules/organs/code/tongue.dm +++ b/modular_nova/modules/organs/code/tongue.dm @@ -1,60 +1,60 @@ -/obj/item/organ/internal/tongue/copy_traits_from(obj/item/organ/internal/tongue/old_tongue, copy_actions = FALSE) +/obj/item/organ/tongue/copy_traits_from(obj/item/organ/tongue/old_tongue, copy_actions = FALSE) . = ..() // make sure we get food preferences too, because those are now tied to tongues for some reason liked_foodtypes = old_tongue.liked_foodtypes disliked_foodtypes = old_tongue.disliked_foodtypes toxic_foodtypes = old_tongue.toxic_foodtypes -/obj/item/organ/internal/tongue/dog +/obj/item/organ/tongue/dog name = "long tongue" desc = "A long and wet tongue. It seems to jump when it's called good, oddly enough." say_mod = "woofs" icon_state = "tongue" modifies_speech = TRUE -/obj/item/organ/internal/tongue/dog/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/tongue/dog/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() signer.verb_ask = "arfs" signer.verb_exclaim = "wans" signer.verb_whisper = "whimpers" signer.verb_yell = "barks" -/obj/item/organ/internal/tongue/dog/mob_remove(mob/living/carbon/speaker, special = FALSE) +/obj/item/organ/tongue/dog/mob_remove(mob/living/carbon/speaker, special = FALSE) . = ..() speaker.verb_ask = initial(verb_ask) speaker.verb_exclaim = initial(verb_exclaim) speaker.verb_whisper = initial(verb_whisper) speaker.verb_yell = initial(verb_yell) -/obj/item/organ/internal/tongue/cat/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/tongue/cat/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() signer.verb_ask = "mrrps" signer.verb_exclaim = "mrrowls" signer.verb_whisper = "purrs" signer.verb_yell = "yowls" -/obj/item/organ/internal/tongue/cat/mob_remove(mob/living/carbon/speaker, special = FALSE) +/obj/item/organ/tongue/cat/mob_remove(mob/living/carbon/speaker, special = FALSE) . = ..() speaker.verb_ask = initial(verb_ask) speaker.verb_exclaim = initial(verb_exclaim) speaker.verb_whisper = initial(verb_whisper) speaker.verb_yell = initial(verb_yell) -/obj/item/organ/internal/tongue/avian +/obj/item/organ/tongue/avian name = "avian tongue" desc = "A short and stubby tongue that craves seeds." say_mod = "chirps" icon_state = "tongue" modifies_speech = TRUE -/obj/item/organ/internal/tongue/avian/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/tongue/avian/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED) . = ..() signer.verb_ask = "peeps" signer.verb_exclaim = "squawks" signer.verb_whisper = "murmurs" signer.verb_yell = "shrieks" -/obj/item/organ/internal/tongue/avian/mob_remove(mob/living/carbon/speaker, special = FALSE) +/obj/item/organ/tongue/avian/mob_remove(mob/living/carbon/speaker, special = FALSE) . = ..() speaker.verb_ask = initial(verb_ask) speaker.verb_exclaim = initial(verb_exclaim) @@ -63,10 +63,10 @@ /// This "human" tongue is only used in Character Preferences / Augmentation menu. /// The base tongue class lacked a say_mod. With say_mod included it makes a non-Human user sound like a Human. -/obj/item/organ/internal/tongue/human +/obj/item/organ/tongue/human say_mod = "says" -/obj/item/organ/internal/tongue/lizard/robot +/obj/item/organ/tongue/lizard/robot name = "robotic lizard voicebox" desc = "A lizard-like voice synthesizer that can interface with organic lifeforms." organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES @@ -81,14 +81,14 @@ organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED) voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" -/obj/item/organ/internal/tongue/lizard/robot/can_speak_language(language) +/obj/item/organ/tongue/lizard/robot/can_speak_language(language) return TRUE // THE MAGIC OF ELECTRONICS -/obj/item/organ/internal/tongue/lizard/robot/modify_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/lizard/robot/modify_speech(datum/source, list/speech_args) . = ..() speech_args[SPEECH_SPANS] |= SPAN_ROBOT -/obj/item/organ/internal/tongue/lizard/cybernetic +/obj/item/organ/tongue/lizard/cybernetic name = "forked cybernetic tongue" icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi' icon_state = "cybertongue-lizard" @@ -100,7 +100,7 @@ disliked_foodtypes = NONE modifies_speech = TRUE -/obj/item/organ/internal/tongue/cybernetic +/obj/item/organ/tongue/cybernetic name = "cybernetic tongue" icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi' icon_state = "cybertongue" @@ -112,20 +112,20 @@ liked_foodtypes = NONE disliked_foodtypes = NONE -/obj/item/organ/internal/tongue/vox +/obj/item/organ/tongue/vox name = "vox tongue" desc = "A fleshy muscle mostly used for skreeing." say_mod = "skrees" liked_foodtypes = MEAT | FRIED -/obj/item/organ/internal/tongue/dwarven +/obj/item/organ/tongue/dwarven name = "dwarven tongue" desc = "A fleshy muscle mostly used for bellowing." say_mod = "bellows" liked_foodtypes = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products. disliked_foodtypes = JUNKFOOD | FRIED | CLOTH //Dwarves hate foods that have no nutrition other than alcohol. -/obj/item/organ/internal/tongue/ghoul +/obj/item/organ/tongue/ghoul name = "ghoulish tongue" desc = "A fleshy muscle mostly used for rasping." say_mod = "rasps" @@ -133,7 +133,7 @@ disliked_foodtypes = VEGETABLES | FRUIT | CLOTH toxic_foodtypes = DAIRY | PINEAPPLE -/obj/item/organ/internal/tongue/insect +/obj/item/organ/tongue/insect name = "insect tongue" desc = "A fleshy muscle mostly used for chittering." say_mod = "chitters" @@ -141,7 +141,7 @@ disliked_foodtypes = CLOTH | GRAIN | FRIED toxic_foodtypes = DAIRY -/obj/item/organ/internal/tongue/xeno_hybrid +/obj/item/organ/tongue/xeno_hybrid name = "alien tongue" desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"." icon_state = "tonguexeno" @@ -149,21 +149,21 @@ taste_sensitivity = 10 liked_foodtypes = MEAT -/obj/item/organ/internal/tongue/xeno_hybrid/Initialize(mapload) +/obj/item/organ/tongue/xeno_hybrid/Initialize(mapload) . = ..() - voice_filter = /obj/item/organ/internal/tongue/alien::voice_filter + voice_filter = /obj/item/organ/tongue/alien::voice_filter -/obj/item/organ/internal/tongue/skrell +/obj/item/organ/tongue/skrell name = "skrell tongue" desc = "A fleshy muscle mostly used for warbling." say_mod = "warbles" -/obj/item/organ/internal/tongue/lizard/filterless +/obj/item/organ/tongue/lizard/filterless name = "smooth forked tongue" voice_filter = null -/obj/item/organ/internal/tongue/lizard/filterless/Initialize(mapload) +/obj/item/organ/tongue/lizard/filterless/Initialize(mapload) . = ..() desc += " This one is noticeably smooth, and would lack any non-hissing lisps if used." diff --git a/modular_nova/modules/oversized/code/oversized_quirk.dm b/modular_nova/modules/oversized/code/oversized_quirk.dm index 7b17b666365..85ce0a4c673 100644 --- a/modular_nova/modules/oversized/code/oversized_quirk.dm +++ b/modular_nova/modules/oversized/code/oversized_quirk.dm @@ -75,9 +75,9 @@ continue // if it's a brain, make sure the mob doesn't get stuck outside their body - var/obj/item/organ/internal/brain/possibly_a_brain = organ_to_restore + var/obj/item/organ/brain/possibly_a_brain = organ_to_restore if(istype(possibly_a_brain)) - var/obj/item/organ/internal/brain/current_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/current_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN) possibly_a_brain.brainmob = current_brain.brainmob organ_to_restore.replace_into(quirk_holder) diff --git a/modular_nova/modules/primitive_catgirls/code/organs.dm b/modular_nova/modules/primitive_catgirls/code/organs.dm index 94e8acd121d..4a57693ba54 100644 --- a/modular_nova/modules/primitive_catgirls/code/organs.dm +++ b/modular_nova/modules/primitive_catgirls/code/organs.dm @@ -2,13 +2,13 @@ // Lungs -/obj/item/organ/internal/lungs/icebox_adapted +/obj/item/organ/lungs/icebox_adapted name = "hardy lungs" desc = "Lungs adapted to frozen environments that would be otherwise inhospitable to most races. Feels cold." icon_state = "hardylungs" icon = 'modular_nova/modules/primitive_catgirls/icons/organs.dmi' -/obj/item/organ/internal/lungs/icebox_adapted/Initialize(mapload) +/obj/item/organ/lungs/icebox_adapted/Initialize(mapload) . = ..() var/datum/gas_mixture/immutable/planetary/mix = SSair.planetary[ICEMOON_DEFAULT_ATMOS] @@ -59,12 +59,12 @@ // Eyes -/obj/item/organ/internal/eyes/low_light_adapted +/obj/item/organ/eyes/low_light_adapted color_cutoffs = list(30, 15, 15) // Tongue -/obj/item/organ/internal/tongue/cat/primitive +/obj/item/organ/tongue/cat/primitive liked_foodtypes = SEAFOOD | MEAT | GORE diff --git a/modular_nova/modules/primitive_catgirls/code/spawner.dm b/modular_nova/modules/primitive_catgirls/code/spawner.dm index b7657298c12..1d4045aea65 100644 --- a/modular_nova/modules/primitive_catgirls/code/spawner.dm +++ b/modular_nova/modules/primitive_catgirls/code/spawner.dm @@ -137,7 +137,7 @@ return if(target.key && target != user) - if(!target.get_organ_by_type(/obj/item/organ/internal/brain) || (target.mind && !target.ssd_indicator)) + if(!target.get_organ_by_type(/obj/item/organ/brain) || (target.mind && !target.ssd_indicator)) to_chat(user, span_danger("Awake kin cannot be put back to sleep against their will.")) return diff --git a/modular_nova/modules/primitive_catgirls/code/species.dm b/modular_nova/modules/primitive_catgirls/code/species.dm index e52207d31ef..6cdab65720a 100644 --- a/modular_nova/modules/primitive_catgirls/code/species.dm +++ b/modular_nova/modules/primitive_catgirls/code/species.dm @@ -16,9 +16,9 @@ name = "Primitive Demihuman" id = SPECIES_FELINE_PRIMITIVE - mutantlungs = /obj/item/organ/internal/lungs/icebox_adapted - mutanteyes = /obj/item/organ/internal/eyes/low_light_adapted - mutanttongue = /obj/item/organ/internal/tongue/cat/primitive + mutantlungs = /obj/item/organ/lungs/icebox_adapted + mutanteyes = /obj/item/organ/eyes/low_light_adapted + mutanttongue = /obj/item/organ/tongue/cat/primitive species_language_holder = /datum/language_holder/primitive_felinid language_prefs_whitelist = list(/datum/language/primitive_catgirl) diff --git a/modular_nova/modules/resleeving/code/rsd_interface.dm b/modular_nova/modules/resleeving/code/rsd_interface.dm index b065891d171..9c90c1869e2 100644 --- a/modular_nova/modules/resleeving/code/rsd_interface.dm +++ b/modular_nova/modules/resleeving/code/rsd_interface.dm @@ -9,7 +9,7 @@ /// Attempts to use the item on the target brain. /obj/item/rsd_interface/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) - if(!istype(interacting_with, /obj/item/organ/internal/brain)) + if(!istype(interacting_with, /obj/item/organ/brain)) return NONE if(HAS_TRAIT(interacting_with, TRAIT_RSD_COMPATIBLE)) @@ -25,7 +25,7 @@ /datum/element/rsd_interface/Attach(datum/target) . = ..() - if(!istype(target, /obj/item/organ/internal/brain)) + if(!istype(target, /obj/item/organ/brain)) return ELEMENT_INCOMPATIBLE RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) diff --git a/modular_nova/modules/roundstart_implants/code/loadout_implants.dm b/modular_nova/modules/roundstart_implants/code/loadout_implants.dm index a104481367f..bb396316511 100644 --- a/modular_nova/modules/roundstart_implants/code/loadout_implants.dm +++ b/modular_nova/modules/roundstart_implants/code/loadout_implants.dm @@ -2,22 +2,22 @@ // EYE IMPLANTS -/obj/item/organ/internal/eyes/robotic/binoculars +/obj/item/organ/eyes/robotic/binoculars name = "digital magnification optics" desc = "Commonly used on frontier worlds with comparatively vast overland distances to aid in visual acquisition of coworkers and targets." actions_types = list(/datum/action/item_action/organ_action/toggle) var/zoomed = FALSE var/range_power = 2 // what kind of range modifier do we feed to the scope component? -/obj/item/organ/internal/eyes/robotic/binoculars/Initialize(mapload) +/obj/item/organ/eyes/robotic/binoculars/Initialize(mapload) . = ..() AddComponent(/datum/component/scope, range_modifier = range_power) -/obj/item/organ/internal/eyes/robotic/binoculars/ui_action_click(mob/user, actiontype) +/obj/item/organ/eyes/robotic/binoculars/ui_action_click(mob/user, actiontype) if (istype(actiontype, /datum/action/item_action/organ_action/toggle)) toggle_active(user) -/obj/item/organ/internal/eyes/robotic/binoculars/proc/toggle_active(mob/user) +/obj/item/organ/eyes/robotic/binoculars/proc/toggle_active(mob/user) //this is so unbelievably, hysterically jank. i actually cannot believe this works. what the fuck var/datum/component/scope/zoom = src.GetComponent(/datum/component/scope) if (zoomed) @@ -33,67 +33,67 @@ zoomed = TRUE // ARM IMPLANTS -/obj/item/organ/internal/cyberimp/arm/adjuster +/obj/item/organ/cyberimp/arm/adjuster name = "adjuster arm implant" desc = "A miniaturized toolset implant containing a simple fingertip-mounted universal screwdriver bit with an inverted torque-wrench head. Most commonly used when rearranging furniture or other station machinery." items_to_create = list(/obj/item/wrench/integrated, /obj/item/screwdriver/integrated) -/obj/item/organ/internal/cyberimp/arm/adjuster/Initialize(mapload) +/obj/item/organ/cyberimp/arm/adjuster/Initialize(mapload) . = ..() AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA) -/obj/item/organ/internal/cyberimp/arm/electrical_toolset +/obj/item/organ/cyberimp/arm/electrical_toolset name = "electrical toolset implant" desc = "Bereft of any kind of insulation to speak of, this aug has a very distinct nickname amongst frontier outpost crews: 'the sizzler'. Often used in high verticality environments where loadout space is at a premium." items_to_create = list(/obj/item/screwdriver/integrated, /obj/item/multitool/integrated, /obj/item/wirecutters/integrated) -/obj/item/organ/internal/cyberimp/arm/electrical_toolset/Initialize(mapload) +/obj/item/organ/cyberimp/arm/electrical_toolset/Initialize(mapload) . = ..() AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA) -/obj/item/organ/internal/cyberimp/arm/arc_welder +/obj/item/organ/cyberimp/arm/arc_welder name = "shipbreaker's toolset implant" desc = "A specialized salvage-grade implant that houses an arc welder, miniaturized crowbar within the bearer's arm, plus a fingertip torque-wrench rated for enough newtons to get the job done. Renowned across the frontier for being the 'trashy tattoo' equivalent of someone's first aug." items_to_create = list(/obj/item/wrench/integrated, /obj/item/crowbar/integrated, /obj/item/weldingtool/electric/arc_welder/integrated) -/obj/item/organ/internal/cyberimp/arm/arc_welder/Initialize(mapload) +/obj/item/organ/cyberimp/arm/arc_welder/Initialize(mapload) . = ..() AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER) -/obj/item/organ/internal/cyberimp/arm/emt_triage +/obj/item/organ/cyberimp/arm/emt_triage name = "triage actuator implant" desc = "Pioneered by Interdyne Pharmaceuticals for use in their frontier postings, this set of in-arm augments allows medical staff to perform basic life-saving surgeries out on the field with the assistance of a bladed instrument." items_to_create = list(/obj/item/surgical_drapes/integrated, /obj/item/retractor/integrated, /obj/item/hemostat/integrated) -/obj/item/organ/internal/cyberimp/arm/emt_triage/Initialize(mapload) +/obj/item/organ/cyberimp/arm/emt_triage/Initialize(mapload) . = ..() AddElement(/datum/element/manufacturer_examine, COMPANY_INTERDYNE) -/obj/item/organ/internal/cyberimp/arm/civilian_barstaff +/obj/item/organ/cyberimp/arm/civilian_barstaff name = "waitstaff implant" desc = "The galactic service industry demands only the finest from its (underpaid) employees, leading to the development of this sordid piece of technology which substitutes a user's organic arm for a food storage space and an integrated chamois cleaning cloth. Why?" items_to_create = list(/obj/item/storage/bag/tray/integrated, /obj/item/reagent_containers/cup/rag/integrated) -/obj/item/organ/internal/cyberimp/arm/civilian_lighter +/obj/item/organ/cyberimp/arm/civilian_lighter name = "thumbtip lighter implant" desc = "This extraordinarily useless implant was a product of market demand, and it exists because the galactic diaspora apparently craves the ability to light things with their thumbtips." items_to_create = list(/obj/item/lighter/integrated) -/obj/item/organ/internal/cyberimp/arm/blacksteel_forging +/obj/item/organ/cyberimp/arm/blacksteel_forging name = "Blacksteel 'Starforge' metalworking toolset implant" desc = "A galactic favorite amongst burgeoning starfarer races with a fascination for basic metallurgy or mundane weaponry, this unlikely toolset augmentation is one of the Foundation's most popular products." items_to_create = list(/obj/item/forging/hammer/integrated, /obj/item/forging/tongs/integrated, /obj/item/forging/billow/integrated) -/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/Initialize(mapload) +/obj/item/organ/cyberimp/arm/blacksteel_forging/Initialize(mapload) . = ..() AddElement(/datum/element/manufacturer_examine, COMPANY_BLACKSTEEL) -/obj/item/organ/internal/cyberimp/arm/bureaucracy +/obj/item/organ/cyberimp/arm/bureaucracy name = "bureaucrat's 'Jacent' toolset implant" desc = "Popular amongst coreworld corporates, this integrated toolset includes a wrist-sheathed four-colour pen, a special motorized sheaf hollow for holding up to ten pieces of galactic-standard A4 paper and a set of two fingertip stamps for approving and denying things. Does not replenish." items_to_create = list(/obj/item/pen/fourcolor/integrated, /obj/item/paper_bin/integrated, /obj/item/stamp/integrated, /obj/item/stamp/denied/integrated) -/obj/item/organ/internal/cyberimp/arm/cargo +/obj/item/organ/cyberimp/arm/cargo name = "FTU 'Deckhand' toolset implant" desc = "Containing a fingertip-mounted universal scanner and a boxcutter, deck workers across the sector favor this cheap and effective implant as both a means of self-defense from irate consumers and for keeping a set of handy scanners quite literally, close at hand." items_to_create = list(/obj/item/universal_scanner/integrated, /obj/item/boxcutter/extended/integrated) diff --git a/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm b/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm index 84562826077..f25d82fc1e0 100644 --- a/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm +++ b/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm @@ -2,90 +2,90 @@ //Purely code readability. // ARM IMPLANTS -/obj/item/organ/internal/cyberimp/arm/adjuster/left_arm +/obj/item/organ/cyberimp/arm/adjuster/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/adjuster/right_arm +/obj/item/organ/cyberimp/arm/adjuster/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/power_cord/left_arm +/obj/item/organ/cyberimp/arm/power_cord/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/power_cord/right_arm +/obj/item/organ/cyberimp/arm/power_cord/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/lighter/left_arm +/obj/item/organ/cyberimp/arm/lighter/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/lighter/right_arm +/obj/item/organ/cyberimp/arm/lighter/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm +/obj/item/organ/cyberimp/arm/arc_welder/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm +/obj/item/organ/cyberimp/arm/arc_welder/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm +/obj/item/organ/cyberimp/arm/electrical_toolset/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm +/obj/item/organ/cyberimp/arm/electrical_toolset/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm +/obj/item/organ/cyberimp/arm/emt_triage/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm +/obj/item/organ/cyberimp/arm/emt_triage/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm +/obj/item/organ/cyberimp/arm/civilian_barstaff/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm +/obj/item/organ/cyberimp/arm/civilian_barstaff/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm +/obj/item/organ/cyberimp/arm/civilian_lighter/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm +/obj/item/organ/cyberimp/arm/civilian_lighter/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm +/obj/item/organ/cyberimp/arm/blacksteel_forging/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm +/obj/item/organ/cyberimp/arm/blacksteel_forging/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm +/obj/item/organ/cyberimp/arm/bureaucracy/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm +/obj/item/organ/cyberimp/arm/bureaucracy/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/cargo/left_arm +/obj/item/organ/cyberimp/arm/cargo/left_arm zone = BODY_ZONE_L_ARM slot = ORGAN_SLOT_LEFT_ARM_AUG -/obj/item/organ/internal/cyberimp/arm/cargo/right_arm +/obj/item/organ/cyberimp/arm/cargo/right_arm zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_AUG diff --git a/modular_nova/modules/synths/code/bodyparts/brain.dm b/modular_nova/modules/synths/code/bodyparts/brain.dm index 953b2bad433..f0f7a8de28f 100644 --- a/modular_nova/modules/synths/code/bodyparts/brain.dm +++ b/modular_nova/modules/synths/code/bodyparts/brain.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/brain/synth +/obj/item/organ/brain/synth name = "compact positronic brain" slot = ORGAN_SLOT_BRAIN zone = BODY_ZONE_CHEST @@ -11,7 +11,7 @@ var/last_message_time = 0 organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED) -/obj/item/organ/internal/brain/synth/mob_insert(mob/living/carbon/brain_owner, special, movement_flags) +/obj/item/organ/brain/synth/mob_insert(mob/living/carbon/brain_owner, special, movement_flags) . = ..() if(brain_owner.stat != DEAD || !ishuman(brain_owner)) @@ -21,7 +21,7 @@ if(HAS_TRAIT(human_brain_owner, TRAIT_REVIVES_BY_HEALING) && human_brain_owner.health > SYNTH_BRAIN_WAKE_THRESHOLD) human_brain_owner.revive(FALSE) -/obj/item/organ/internal/brain/synth/emp_act(severity) // EMP act against the posi, keep the cap far below the organ health +/obj/item/organ/brain/synth/emp_act(severity) // EMP act against the posi, keep the cap far below the organ health . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -38,7 +38,7 @@ to_chat(owner, span_warning("Alert: Electromagnetic damage taken in central processing unit. Error Code: 401-YT")) apply_organ_damage(SYNTH_ORGAN_LIGHT_EMP_DAMAGE, SYNTH_EMP_BRAIN_DAMAGE_MAXIMUM, required_organ_flag = ORGAN_ROBOTIC) -/obj/item/organ/internal/brain/synth/apply_organ_damage(damage_amount, maximum, required_organ_flag) +/obj/item/organ/brain/synth/apply_organ_damage(damage_amount, maximum, required_organ_flag) . = ..() if(owner && damage > 0 && (world.time - last_message_time) > SYNTH_BRAIN_DAMAGE_MESSAGE_INTERVAL) @@ -51,7 +51,7 @@ if(damage > BRAIN_DAMAGE_MILD) to_chat(owner, span_warning("Alert: Minor corruption in central processing unit. Error Code: 001-HP")) -/obj/item/organ/internal/brain/synth/circuit +/obj/item/organ/brain/synth/circuit name = "compact AI circuit" desc = "A compact and extremely complex circuit, perfectly dimensioned to fit in the same slot as a synthetic-compatible positronic brain. It is usually slotted into the chest of synthetic crewmembers." icon = 'modular_nova/master_files/icons/obj/alt_silicon_brains.dmi' @@ -60,7 +60,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' -/obj/item/organ/internal/brain/synth/mmi +/obj/item/organ/brain/synth/mmi name = "compact man-machine interface" desc = "A compact man-machine interface, perfectly dimensioned to fit in the same slot as a synthetic-compatible positronic brain. Unfortunately, the brain seems to be permanently attached to the circuitry, and it seems relatively sensitive to its environment. It is usually slotted into the chest of synthetic crewmembers." icon = 'modular_nova/master_files/icons/obj/surgery.dmi' diff --git a/modular_nova/modules/synths/code/bodyparts/ears.dm b/modular_nova/modules/synths/code/bodyparts/ears.dm index cc5906bb7f8..a3a0213a067 100644 --- a/modular_nova/modules/synths/code/bodyparts/ears.dm +++ b/modular_nova/modules/synths/code/bodyparts/ears.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/ears/synth +/obj/item/organ/ears/synth name = "auditory sensors" icon = 'modular_nova/master_files/icons/obj/surgery.dmi' icon_state = "ears-ipc" @@ -11,7 +11,7 @@ overrides_sprite_datum_organ_type = TRUE bodypart_overlay = /datum/bodypart_overlay/mutant/ears -/obj/item/organ/internal/ears/synth/emp_act(severity) +/obj/item/organ/ears/synth/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -39,7 +39,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/ears/synth + build_path = /obj/item/organ/ears/synth category = list( RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS, ) diff --git a/modular_nova/modules/synths/code/bodyparts/eyes.dm b/modular_nova/modules/synths/code/bodyparts/eyes.dm index 80f54876b7e..aa72a25c46e 100644 --- a/modular_nova/modules/synths/code/bodyparts/eyes.dm +++ b/modular_nova/modules/synths/code/bodyparts/eyes.dm @@ -1,11 +1,11 @@ -/obj/item/organ/internal/eyes/synth +/obj/item/organ/eyes/synth name = "optical sensors" icon_state = "cybernetic_eyeballs" desc = "A very basic set of optical sensors with no extra vision modes or functions." maxHealth = 1 * STANDARD_ORGAN_THRESHOLD organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/eyes/synth/emp_act(severity) +/obj/item/organ/eyes/synth/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -29,7 +29,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/eyes/synth + build_path = /obj/item/organ/eyes/synth category = list( RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS, ) diff --git a/modular_nova/modules/synths/code/bodyparts/heart.dm b/modular_nova/modules/synths/code/bodyparts/heart.dm index a8f8f46b4e4..b23dc1a4967 100644 --- a/modular_nova/modules/synths/code/bodyparts/heart.dm +++ b/modular_nova/modules/synths/code/bodyparts/heart.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/heart/synth +/obj/item/organ/heart/synth name = "hydraulic pump engine" desc = "An electronic device that handles the hydraulic pumps, powering one's robotic limbs. Without this, synthetics are unable to move." organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES @@ -10,7 +10,7 @@ slot = ORGAN_SLOT_HEART var/last_message_time = 0 -/obj/item/organ/internal/heart/synth/emp_act(severity) +/obj/item/organ/heart/synth/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -37,7 +37,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/heart/synth + build_path = /obj/item/organ/heart/synth category = list( RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS, ) diff --git a/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm b/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm index cb20bb9737c..d6dd1f08c49 100644 --- a/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm +++ b/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm @@ -1,17 +1,17 @@ -/obj/item/organ/internal/brain/synth +/obj/item/organ/brain/synth var/obj/item/modular_computer/pda/synth/internal_computer actions_types = list(/datum/action/item_action/synth/open_internal_computer) -/obj/item/organ/internal/brain/synth/Initialize(mapload) +/obj/item/organ/brain/synth/Initialize(mapload) . = ..() internal_computer = new(src) ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT) -/obj/item/organ/internal/brain/synth/Destroy() +/obj/item/organ/brain/synth/Destroy() QDEL_NULL(internal_computer) return ..() -/obj/item/organ/internal/brain/synth/on_mob_insert(mob/living/carbon/human/brain_owner, special, movement_flags) +/obj/item/organ/brain/synth/on_mob_insert(mob/living/carbon/human/brain_owner, special, movement_flags) . = ..() if(!istype(brain_owner)) return @@ -19,7 +19,7 @@ if(internal_computer && brain_owner.wear_id) internal_computer.handle_id_slot(brain_owner, brain_owner.wear_id) -/obj/item/organ/internal/brain/synth/on_mob_remove(mob/living/carbon/human/brain_owner, special) +/obj/item/organ/brain/synth/on_mob_remove(mob/living/carbon/human/brain_owner, special) . = ..() if(!istype(brain_owner)) return @@ -28,7 +28,7 @@ internal_computer.handle_id_slot(brain_owner) internal_computer.clear_id_slot_signals(brain_owner.wear_id) -/obj/item/organ/internal/brain/synth/proc/on_equip_signal(datum/source, obj/item/item, slot) +/obj/item/organ/brain/synth/proc/on_equip_signal(datum/source, obj/item/item, slot) SIGNAL_HANDLER if(isnull(internal_computer)) return diff --git a/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm b/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm index 2e0bdd6385a..70d8e34600c 100644 --- a/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm +++ b/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm @@ -15,7 +15,7 @@ . = ..() // prevent these from being created outside of synth brains - if(!istype(loc, /obj/item/organ/internal/brain/synth)) + if(!istype(loc, /obj/item/organ/brain/synth)) return INITIALIZE_HINT_QDEL /obj/item/modular_computer/pda/synth/check_power_override() @@ -28,14 +28,14 @@ /datum/action/item_action/synth/open_internal_computer/Trigger(trigger_flags) . = ..() - var/obj/item/organ/internal/brain/synth/targetmachine = target + var/obj/item/organ/brain/synth/targetmachine = target targetmachine.internal_computer.interact(owner) /obj/item/modular_computer/pda/synth/ui_state(mob/user) return GLOB.default_state /obj/item/modular_computer/pda/synth/ui_status(mob/user) - var/obj/item/organ/internal/brain/synth/brain_loc = loc + var/obj/item/organ/brain/synth/brain_loc = loc if(!istype(brain_loc)) return UI_CLOSE @@ -49,7 +49,7 @@ /// Id card arg is optional. Leaving it null causes the id to become unpaired from the synth computer /obj/item/modular_computer/pda/synth/proc/update_id_slot(obj/item/card/id/id_card) - var/obj/item/organ/internal/brain/synth/brain_loc = loc + var/obj/item/organ/brain/synth/brain_loc = loc if(!istype(brain_loc)) return if(isnull(brain_loc.internal_computer)) @@ -144,7 +144,7 @@ if(!istype(targetmachine)) return ..() - var/obj/item/organ/internal/brain/synth/robotbrain = targetmachine.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/synth/robotbrain = targetmachine.get_organ_slot(ORGAN_SLOT_BRAIN) if(istype(robotbrain)) if(user.zone_selected == BODY_ZONE_PRECISE_EYES) balloon_alert(user, "Establishing SSH login with persocom...") @@ -157,7 +157,7 @@ /obj/item/modular_computer/pda/synth/get_header_data() var/list/data = ..() - var/obj/item/organ/internal/brain/synth/brain_loc = loc + var/obj/item/organ/brain/synth/brain_loc = loc // Battery level is now according to the synth charge if(istype(brain_loc)) var/charge_level = (brain_loc.owner.nutrition / NUTRITION_LEVEL_FULL) * 100 diff --git a/modular_nova/modules/synths/code/bodyparts/limbs.dm b/modular_nova/modules/synths/code/bodyparts/limbs.dm index c2d826e3e64..4fe4120fa8d 100644 --- a/modular_nova/modules/synths/code/bodyparts/limbs.dm +++ b/modular_nova/modules/synths/code/bodyparts/limbs.dm @@ -112,7 +112,7 @@ bodypart_flags = BODYPART_UNHUSKABLE wing_types = list( - /obj/item/organ/external/wings/functional/robotic, + /obj/item/organ/wings/functional/robotic, ) /datum/design/synth_chest diff --git a/modular_nova/modules/synths/code/bodyparts/liver.dm b/modular_nova/modules/synths/code/bodyparts/liver.dm index 9c1fe7382a0..b6713adfa98 100644 --- a/modular_nova/modules/synths/code/bodyparts/liver.dm +++ b/modular_nova/modules/synths/code/bodyparts/liver.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/liver/synth +/obj/item/organ/liver/synth name = "reagent processing unit" desc = "An electronic device that processes the beneficial chemicals for the synthetic user." icon = 'modular_nova/master_files/icons/obj/surgery.dmi' @@ -9,7 +9,7 @@ maxHealth = 1 * STANDARD_ORGAN_THRESHOLD organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/liver/synth/emp_act(severity) +/obj/item/organ/liver/synth/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -37,7 +37,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/liver/synth + build_path = /obj/item/organ/liver/synth category = list( RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS, ) diff --git a/modular_nova/modules/synths/code/bodyparts/lungs.dm b/modular_nova/modules/synths/code/bodyparts/lungs.dm index 1b5ce199c01..556e0388ed8 100644 --- a/modular_nova/modules/synths/code/bodyparts/lungs.dm +++ b/modular_nova/modules/synths/code/bodyparts/lungs.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/lungs/synth +/obj/item/organ/lungs/synth name = "heatsink" desc = "A device that transfers generated heat to a fluid medium to cool it down. Required to keep your synthetics cool-headed. Its shape resembles lungs." //Purposefully left the 'fluid medium' ambigious for interpretation of the character, whether it be air or fluid cooling icon = 'modular_nova/master_files/icons/obj/surgery.dmi' @@ -14,7 +14,7 @@ maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/lungs/synth/emp_act(severity) +/obj/item/organ/lungs/synth/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -44,7 +44,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/lungs/synth + build_path = /obj/item/organ/lungs/synth category = list( RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS, ) diff --git a/modular_nova/modules/synths/code/bodyparts/power_cord.dm b/modular_nova/modules/synths/code/bodyparts/power_cord.dm index 58a55faf9a8..d0b97c94816 100644 --- a/modular_nova/modules/synths/code/bodyparts/power_cord.dm +++ b/modular_nova/modules/synths/code/bodyparts/power_cord.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/arm/power_cord +/obj/item/organ/cyberimp/arm/power_cord name = "charging implant" desc = "An internal power cord. Useful if you run on elecricity. Not so much otherwise." items_to_create = list(/obj/item/synth_powercord) @@ -46,7 +46,7 @@ var/nutrition_level_joules = user.nutrition * SYNTH_JOULES_PER_NUTRITION user.changeNext_move(CLICK_CD_MELEE) - var/obj/item/organ/internal/stomach/synth/synth_cell = user.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/synth/synth_cell = user.get_organ_slot(ORGAN_SLOT_STOMACH) if(QDELETED(synth_cell) || !istype(synth_cell)) to_chat(user, span_warning("You plug into [target], but nothing happens! It seems you don't have an internal cell to charge.")) return diff --git a/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm b/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm index 53092375080..409680e2c96 100644 --- a/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm +++ b/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm @@ -24,13 +24,13 @@ /mob/living/proc/prefs_get_brain_to_use(value, is_cyborg = FALSE) switch(value) if(ORGAN_PREF_POSI_BRAIN) - return is_cyborg ? /obj/item/mmi/posibrain : /obj/item/organ/internal/brain/synth + return is_cyborg ? /obj/item/mmi/posibrain : /obj/item/organ/brain/synth if(ORGAN_PREF_MMI_BRAIN) - return is_cyborg ? /obj/item/mmi : /obj/item/organ/internal/brain/synth/mmi + return is_cyborg ? /obj/item/mmi : /obj/item/organ/brain/synth/mmi if(ORGAN_PREF_CIRCUIT_BRAIN) - return is_cyborg ? /obj/item/mmi/posibrain/circuit : /obj/item/organ/internal/brain/synth/circuit + return is_cyborg ? /obj/item/mmi/posibrain/circuit : /obj/item/organ/brain/synth/circuit /mob/living/silicon/robot/Initialize(mapload) . = ..() @@ -76,7 +76,7 @@ new_mmi = new new_mmi(src) // Probably shitcode, but silicon code is spaghetti as fuck. - new_mmi.brain = new /obj/item/organ/internal/brain(new_mmi) + new_mmi.brain = new /obj/item/organ/brain(new_mmi) new_mmi.brain.organ_flags |= ORGAN_FROZEN new_mmi.brain.name = "[real_name]'s brain" new_mmi.name = "[initial(new_mmi.name)]: [real_name]" diff --git a/modular_nova/modules/synths/code/bodyparts/stomach.dm b/modular_nova/modules/synths/code/bodyparts/stomach.dm index b297662d9f0..dc6a5168b03 100644 --- a/modular_nova/modules/synths/code/bodyparts/stomach.dm +++ b/modular_nova/modules/synths/code/bodyparts/stomach.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/stomach/synth +/obj/item/organ/stomach/synth name = "synthetic bio-reactor" icon = 'modular_nova/master_files/icons/obj/surgery.dmi' icon_state = "stomach-ipc" @@ -11,7 +11,7 @@ desc = "A specialised mini reactor, for synthetic use only. Has a low-power mode to ensure baseline functions. Without this, synthetics are unable to stay powered." organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/stomach/synth/emp_act(severity) +/obj/item/organ/stomach/synth/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -41,22 +41,22 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/stomach/synth + build_path = /obj/item/organ/stomach/synth category = list( RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE -/obj/item/organ/internal/stomach/synth/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/stomach/synth/mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() RegisterSignal(receiver, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(on_borg_charge)) -/obj/item/organ/internal/stomach/synth/mob_remove(mob/living/carbon/stomach_owner, special) +/obj/item/organ/stomach/synth/mob_remove(mob/living/carbon/stomach_owner, special) . = ..() UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT) ///Handles charging the synth from borg chargers -/obj/item/organ/internal/stomach/synth/proc/on_borg_charge(datum/source, datum/callback/charge_cell, seconds_per_tick) +/obj/item/organ/stomach/synth/proc/on_borg_charge(datum/source, datum/callback/charge_cell, seconds_per_tick) SIGNAL_HANDLER if(owner.nutrition >= NUTRITION_LEVEL_FULL) diff --git a/modular_nova/modules/synths/code/bodyparts/tongue.dm b/modular_nova/modules/synths/code/bodyparts/tongue.dm index cc35fcf41b4..44ba4f11d9a 100644 --- a/modular_nova/modules/synths/code/bodyparts/tongue.dm +++ b/modular_nova/modules/synths/code/bodyparts/tongue.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/tongue/synth +/obj/item/organ/tongue/synth name = "synthetic voicebox" desc = "A fully-functional synthetic tongue, encased in soft silicone. Features include high-resolution vocals and taste receptors." icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi' @@ -15,10 +15,10 @@ slot = ORGAN_SLOT_TONGUE organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/tongue/synth/can_speak_language(language) +/obj/item/organ/tongue/synth/can_speak_language(language) return TRUE -/obj/item/organ/internal/tongue/synth/handle_speech(datum/source, list/speech_args) +/obj/item/organ/tongue/synth/handle_speech(datum/source, list/speech_args) speech_args[SPEECH_SPANS] |= SPAN_ROBOT /datum/design/synth_tongue @@ -31,7 +31,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/organ/internal/tongue/synth + build_path = /obj/item/organ/tongue/synth category = list( RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS, ) diff --git a/modular_nova/modules/synths/code/defib.dm b/modular_nova/modules/synths/code/defib.dm index ecb6e2e952e..bd797d92f10 100644 --- a/modular_nova/modules/synths/code/defib.dm +++ b/modular_nova/modules/synths/code/defib.dm @@ -2,10 +2,10 @@ * Global timer proc used in defib.dm. Removes the temporary trauma caused by being defibbed as a synth. * * Args: - * * obj/item/organ/internal/brain/synth_brain: The brain with the trauma on it. Non-nullable. + * * obj/item/organ/brain/synth_brain: The brain with the trauma on it. Non-nullable. * * datum/brain_trauma/trauma: The trauma itself. Non-nullable. */ -/proc/remove_synth_defib_trauma(obj/item/organ/internal/brain/synth_brain, datum/brain_trauma/trauma) +/proc/remove_synth_defib_trauma(obj/item/organ/brain/synth_brain, datum/brain_trauma/trauma) if (QDELETED(synth_brain) || QDELETED(trauma)) return diff --git a/modular_nova/modules/synths/code/species/synthetic.dm b/modular_nova/modules/synths/code/species/synthetic.dm index 4c89c80bc1b..c5ef2264329 100644 --- a/modular_nova/modules/synths/code/species/synthetic.dm +++ b/modular_nova/modules/synths/code/species/synthetic.dm @@ -25,15 +25,15 @@ payday_modifier = 1.0 // Matches the rest of the pay penalties the non-human crew have death_sound = 'modular_nova/master_files/sound/effects/hacked.ogg' species_language_holder = /datum/language_holder/machine - mutant_organs = list(/obj/item/organ/internal/cyberimp/arm/power_cord/left_arm) - mutantbrain = /obj/item/organ/internal/brain/synth - mutantstomach = /obj/item/organ/internal/stomach/synth - mutantears = /obj/item/organ/internal/ears/synth - mutanttongue = /obj/item/organ/internal/tongue/synth - mutanteyes = /obj/item/organ/internal/eyes/synth - mutantlungs = /obj/item/organ/internal/lungs/synth - mutantheart = /obj/item/organ/internal/heart/synth - mutantliver = /obj/item/organ/internal/liver/synth + mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord/left_arm) + mutantbrain = /obj/item/organ/brain/synth + mutantstomach = /obj/item/organ/stomach/synth + mutantears = /obj/item/organ/ears/synth + mutanttongue = /obj/item/organ/tongue/synth + mutanteyes = /obj/item/organ/eyes/synth + mutantlungs = /obj/item/organ/lungs/synth + mutantheart = /obj/item/organ/heart/synth + mutantliver = /obj/item/organ/liver/synth mutantappendix = null exotic_blood = /datum/reagent/fuel/oil bodypart_overrides = list( @@ -95,7 +95,7 @@ sing_action.Grant(transformer) var/screen_mutant_bodypart = transformer.dna.mutant_bodyparts[MUTANT_SYNTH_SCREEN] - var/obj/item/organ/internal/eyes/eyes = transformer.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = transformer.get_organ_slot(ORGAN_SLOT_EYES) if(!screen && screen_mutant_bodypart && screen_mutant_bodypart[MUTANT_INDEX_NAME] && screen_mutant_bodypart[MUTANT_INDEX_NAME] != "None") @@ -151,7 +151,7 @@ UnregisterSignal(human, COMSIG_ATOM_EMAG_ACT) - var/obj/item/organ/internal/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES) if(eyes) eyes.eye_icon_state = initial(eyes.eye_icon_state) @@ -164,11 +164,11 @@ if(isnull(human_holder.loc)) return // preview characters don't need funny organs, prevents a runtime - var/obj/item/organ/internal/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH) if(old_stomach.is_oversized) // don't override augments that are already oversized return - var/obj/item/organ/internal/stomach/synth/oversized/new_synth_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE reactor! RIP AND TEAR YOUR HUGE reactor! + var/obj/item/organ/stomach/synth/oversized/new_synth_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE reactor! RIP AND TEAR YOUR HUGE reactor! oversized_quirk.old_organs += list(old_stomach) @@ -211,7 +211,7 @@ return // This is awful. Please find a better way to do this. - var/obj/item/organ/external/synth_screen/screen_organ = transformer.get_organ_slot(ORGAN_SLOT_EXTERNAL_SYNTH_SCREEN) + var/obj/item/organ/synth_screen/screen_organ = transformer.get_organ_slot(ORGAN_SLOT_EXTERNAL_SYNTH_SCREEN) if(!istype(screen_organ)) return @@ -220,7 +220,7 @@ transformer.update_body() /datum/species/synthetic/get_types_to_preload() - return ..() - typesof(/obj/item/organ/internal/cyberimp/arm/power_cord) // Don't cache things that lead to hard deletions. + return ..() - typesof(/obj/item/organ/cyberimp/arm/power_cord) // Don't cache things that lead to hard deletions. /datum/species/synthetic/create_pref_unique_perks() var/list/perk_descriptions = list() diff --git a/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm index 94ecc2907d0..07b1161bf0f 100644 --- a/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm +++ b/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm @@ -16,7 +16,7 @@ /datum/surgery/robot_brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool) . = ..() - var/obj/item/organ/internal/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) if(!istype(brain) && !issynthetic(target)) return FALSE else diff --git a/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm index 21676fddfb4..64e2d96a3bc 100644 --- a/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm +++ b/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm @@ -17,7 +17,7 @@ desc = "A mechanical surgery procedure designed to repair an androids internal hydraulic pump." /datum/surgery/hydraulic_maintenance/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/heart/hydraulic_pump = target.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/hydraulic_pump = target.get_organ_slot(ORGAN_SLOT_HEART) if(isnull(hydraulic_pump) || !issynthetic(target) || hydraulic_pump.damage < 10) return FALSE return ..() @@ -45,7 +45,7 @@ /datum/surgery_step/hydraulic/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) var/mob/living/carbon/human/patient = target - var/obj/item/organ/internal/heart/hydraulic = patient.get_organ_slot(ORGAN_SLOT_HEART) + var/obj/item/organ/heart/hydraulic = patient.get_organ_slot(ORGAN_SLOT_HEART) patient.setOrganLoss(ORGAN_SLOT_HEART, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration if(hydraulic.organ_flags & ORGAN_EMP) hydraulic.organ_flags &= ~ORGAN_EMP diff --git a/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm index 685d36580ad..7b74de90793 100644 --- a/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm +++ b/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm @@ -17,7 +17,7 @@ desc = "A mechanical list of actions to reset the reagent processor and purge built up minerals." /datum/surgery/reagent_pump/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER) if(isnull(reagent_processor) || !issynthetic(target) || reagent_processor.damage < 10) return FALSE return ..() @@ -46,7 +46,7 @@ /datum/surgery_step/reagent_pump/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) var/mob/living/carbon/human/patient = target - var/obj/item/organ/internal/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER) patient.setOrganLoss(ORGAN_SLOT_LIVER, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration if(reagent_processor.organ_flags & ORGAN_EMP) reagent_processor.organ_flags &= ~ORGAN_EMP diff --git a/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm index 3213cc954b3..684fa7cd560 100644 --- a/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm +++ b/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm @@ -18,7 +18,7 @@ desc = "A mechanical surgery procedure designed to repair an androids internal heatsink." /datum/surgery/heatsink/can_start(mob/user, mob/living/carbon/target, obj/item/tool) - var/obj/item/organ/internal/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS) if(isnull(target_lungs) || !issynthetic(target) || target_lungs.damage < 10 ) return FALSE return ..() @@ -46,7 +46,7 @@ /datum/surgery_step/heatsink/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) if(ishuman(target)) var/mob/living/carbon/human/patient = target - var/obj/item/organ/internal/lungs/heatsink = patient.get_organ_slot(ORGAN_SLOT_LUNGS) + var/obj/item/organ/lungs/heatsink = patient.get_organ_slot(ORGAN_SLOT_LUNGS) patient.setOrganLoss(ORGAN_SLOT_LUNGS, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration if(heatsink.organ_flags & ORGAN_EMP) heatsink.organ_flags &= ~ORGAN_EMP diff --git a/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm index 823eb48203d..2c8e05d2192 100644 --- a/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm +++ b/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm @@ -17,7 +17,7 @@ desc = "A mechanical surgery procedure designed to repair an androids internal bioreactor." /datum/surgery/bioreactor/can_start(mob/user, mob/living/carbon/target) - var/obj/item/organ/internal/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH) if(isnull(bioreactor) || !issynthetic(target) || bioreactor.damage < 10) return FALSE return ..() @@ -46,7 +46,7 @@ /datum/surgery_step/bioreactor/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) var/mob/living/carbon/human/patient = target - var/obj/item/organ/internal/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH) patient.setOrganLoss(ORGAN_SLOT_STOMACH, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration if(bioreactor.organ_flags & ORGAN_EMP) bioreactor.organ_flags &= ~ORGAN_EMP diff --git a/modular_nova/modules/taur_mechanics/code/constrict.dm b/modular_nova/modules/taur_mechanics/code/constrict.dm index 952733dd05e..10b8c415be6 100644 --- a/modular_nova/modules/taur_mechanics/code/constrict.dm +++ b/modular_nova/modules/taur_mechanics/code/constrict.dm @@ -508,13 +508,13 @@ UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_GRAB, COMSIG_LIVING_TRY_PULL, COMSIG_LIVING_SET_BODY_POSITION, COMSIG_ATOM_POST_DIR_CHANGE)) if (owner) - var/obj/item/organ/external/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) taur_body.hide_self = FALSE owner = new_owner if (owner) - var/obj/item/organ/external/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) taur_body.hide_self = TRUE RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(owner_moved)) diff --git a/modular_nova/modules/taur_mechanics/code/preferences.dm b/modular_nova/modules/taur_mechanics/code/preferences.dm index 35e9eba4a52..d050a0c5b60 100644 --- a/modular_nova/modules/taur_mechanics/code/preferences.dm +++ b/modular_nova/modules/taur_mechanics/code/preferences.dm @@ -15,6 +15,6 @@ /datum/preference/toggle/naga_soles/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) if (value) return - var/obj/item/organ/external/taur_body/serpentine/snake_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + var/obj/item/organ/taur_body/serpentine/snake_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) if (istype(snake_body)) snake_body.add_hardened_soles(target) diff --git a/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm b/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm index a17d0b338bf..638727bf7e1 100644 --- a/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm +++ b/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm @@ -1,15 +1,15 @@ -/obj/item/organ/external/taur_body/serpentine +/obj/item/organ/taur_body/serpentine /// The constrict ability we have given our owner. Nullable, if we have no owner. var/datum/action/innate/constrict/constrict_ability /// Did our owner have their feet blocked before we ran on_mob_insert? Used for determining if we should unblock their feet slots on removal. var/owner_blocked_feet_before_insert -/obj/item/organ/external/taur_body/serpentine/Destroy() +/obj/item/organ/taur_body/serpentine/Destroy() QDEL_NULL(constrict_ability) // handled in remove, but lets be safe return ..() -/obj/item/organ/external/taur_body/serpentine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/taur_body/serpentine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() constrict_ability = new /datum/action/innate/constrict(organ_owner) @@ -37,10 +37,10 @@ add_hardened_soles(organ_owner) /// Adds TRAIT_HARD_SOLES to our owner. -/obj/item/organ/external/taur_body/serpentine/proc/add_hardened_soles(mob/living/carbon/organ_owner = owner) +/obj/item/organ/taur_body/serpentine/proc/add_hardened_soles(mob/living/carbon/organ_owner = owner) ADD_TRAIT(organ_owner, TRAIT_HARD_SOLES, ORGAN_TRAIT) -/obj/item/organ/external/taur_body/serpentine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/taur_body/serpentine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() QDEL_NULL(constrict_ability) diff --git a/modular_nova/modules/teshari/code/_teshari.dm b/modular_nova/modules/teshari/code/_teshari.dm index 33268063ce4..ee58342b13b 100644 --- a/modular_nova/modules/teshari/code/_teshari.dm +++ b/modular_nova/modules/teshari/code/_teshari.dm @@ -15,7 +15,7 @@ digitigrade_customization = DIGITIGRADE_NEVER changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT payday_modifier = 1.0 - mutanttongue = /obj/item/organ/internal/tongue/teshari + mutanttongue = /obj/item/organ/tongue/teshari custom_worn_icons = list( LOADOUT_ITEM_HEAD = TESHARI_HEAD_ICON, LOADOUT_ITEM_MASK = TESHARI_MASK_ICON, @@ -36,7 +36,7 @@ bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET) bodytemp_cold_damage_limit = (BODYTEMP_COLD_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET) species_language_holder = /datum/language_holder/teshari - mutantears = /obj/item/organ/internal/ears/teshari + mutantears = /obj/item/organ/ears/teshari body_size_restricted = TRUE bodypart_overrides = list( BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/teshari, @@ -54,7 +54,7 @@ "legs" = list("Normal Legs", FALSE), ) -/obj/item/organ/internal/tongue/teshari +/obj/item/organ/tongue/teshari liked_foodtypes = MEAT | GORE | RAW disliked_foodtypes = GROSS | GRAIN diff --git a/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm b/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm index bacf3a5ff39..11c4064e46f 100644 --- a/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm +++ b/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm @@ -3,7 +3,7 @@ GLOBAL_LIST_INIT(tier1_reward, list( /obj/item/stack/sheet/sinew = 1, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 1, - /obj/item/organ/internal/monster_core/regenerative_core/legion = 1, + /obj/item/organ/monster_core/regenerative_core/legion = 1, )) GLOBAL_LIST_INIT(tier2_reward, list( @@ -96,7 +96,7 @@ GLOBAL_LIST_INIT(animal_reward, list( /obj/item/stack/sheet/sinew = 1, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 1, - /obj/item/organ/internal/monster_core/regenerative_core/legion = 1, + /obj/item/organ/monster_core/regenerative_core/legion = 1, )) GLOBAL_LIST_INIT(alien_reward, list( diff --git a/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm b/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm index 8afa84427f2..59379673fcb 100644 --- a/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm +++ b/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm @@ -85,7 +85,7 @@ to_chat(carbon_mob, "AAAAAAH") carbon_mob.SetSleeping(0) carbon_mob.adjust_stutter(40 SECONDS) - var/obj/item/organ/internal/ears/ears = carbon_mob.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/ears = carbon_mob.get_organ_slot(ORGAN_SLOT_EARS) if(ears) ears.adjustEarDamage(0, 30) carbon_mob.Paralyze(6 SECONDS) diff --git a/tgstation.dme b/tgstation.dme index 3a7331b8b9b..c3e6e03fc3b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5835,6 +5835,7 @@ #include "code\modules\reagents\chemistry\items.dm" #include "code\modules\reagents\chemistry\reagents.dm" #include "code\modules\reagents\chemistry\recipes.dm" +#include "code\modules\reagents\chemistry\taste.dm" #include "code\modules\reagents\chemistry\holder\holder.dm" #include "code\modules\reagents\chemistry\holder\mob_life.dm" #include "code\modules\reagents\chemistry\holder\properties.dm" diff --git a/tgui/packages/tgui/interfaces/MODsuit.tsx b/tgui/packages/tgui/interfaces/MODsuit.tsx index 8f45a323dc0..9f57de5c081 100644 --- a/tgui/packages/tgui/interfaces/MODsuit.tsx +++ b/tgui/packages/tgui/interfaces/MODsuit.tsx @@ -25,25 +25,29 @@ import { Window } from '../layouts'; type MODsuitData = { // Static ui_theme: string; - control: string; complexity_max: number; - parts: PartData[]; // Dynamic suit_status: SuitStatus; user_status: UserStatus; module_custom_status: ModuleCustomStatus; module_info: Module[]; + control: string; + parts: PartData[]; }; type PartData = { slot: string; name: string; + deployed: BooleanLike; + ref: string; }; type SuitStatus = { core_name: string; - cell_charge_current: number; - cell_charge_max: number; + charge_current: number; + charge_max: number; + chargebar_color: string; + chargebar_string: string; active: BooleanLike; open: BooleanLike; seconds_electrified: number; @@ -53,8 +57,8 @@ type SuitStatus = { complexity: number; selected_module: string; ai_name: string; - has_pai: boolean; - is_ai: boolean; + has_pai: BooleanLike; + is_ai: BooleanLike; link_id: string; link_freq: string; link_call: string; @@ -257,6 +261,20 @@ const ConfigurePinEntry = (props) => { ); }; +// fuck u smartkar configs werent meant to be used as actions 🖕🖕🖕 +// and really u couldnt be bothered to make this and instead used +// the pin entry? 🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕 +const ConfigureButtonEntry = (props) => { + const { name, value, module_ref } = props; + const { act } = useBackend(); + return ( +