mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 15:17:01 +01:00
The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request 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. ## Why It's Good For The Game 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):  ## Changelog 🆑 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. /🆑
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -217,8 +217,8 @@
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/smartfridge/organ,
|
||||
/obj/item/organ/internal/alien/resinspinner,
|
||||
/obj/item/organ/internal/eyes/night_vision,
|
||||
/obj/item/organ/alien/resinspinner,
|
||||
/obj/item/organ/eyes/night_vision,
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/ruin/syndibiodome)
|
||||
"cE" = (
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -2454,12 +2454,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,
|
||||
@@ -2609,6 +2603,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
|
||||
@@ -9465,24 +9463,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{
|
||||
@@ -26326,10 +26306,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
|
||||
@@ -45438,6 +45414,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
|
||||
@@ -70259,6 +70253,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
|
||||
@@ -85843,7 +85843,7 @@ jte
|
||||
diI
|
||||
yea
|
||||
vmt
|
||||
dzi
|
||||
pEQ
|
||||
fEC
|
||||
wxR
|
||||
fEC
|
||||
@@ -112838,7 +112838,7 @@ tjj
|
||||
tjj
|
||||
blb
|
||||
ssz
|
||||
jar
|
||||
aZg
|
||||
qRO
|
||||
ssz
|
||||
vLv
|
||||
@@ -113095,7 +113095,7 @@ tjj
|
||||
blb
|
||||
blb
|
||||
ssz
|
||||
aVK
|
||||
xtv
|
||||
sPO
|
||||
ssz
|
||||
aSy
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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,
|
||||
@@ -28019,22 +28011,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,
|
||||
@@ -38064,6 +38040,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,
|
||||
@@ -59519,6 +59503,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
|
||||
@@ -63486,17 +63486,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
|
||||
@@ -66214,6 +66203,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
|
||||
@@ -89980,7 +89980,7 @@ hxd
|
||||
rtG
|
||||
oor
|
||||
oor
|
||||
wme
|
||||
xma
|
||||
oor
|
||||
xbu
|
||||
oor
|
||||
@@ -90499,7 +90499,7 @@ kDb
|
||||
imT
|
||||
gPw
|
||||
qNL
|
||||
fEV
|
||||
nyu
|
||||
pVK
|
||||
xOw
|
||||
uCR
|
||||
@@ -91335,7 +91335,7 @@ tSw
|
||||
tAH
|
||||
waD
|
||||
tSw
|
||||
jTy
|
||||
uXh
|
||||
vQg
|
||||
oCb
|
||||
gCA
|
||||
|
||||
@@ -2592,13 +2592,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,
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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)
|
||||
@@ -66285,11 +66285,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)
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1659,8 +1659,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)
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -266,7 +266,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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -26,23 +26,23 @@ 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/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,
|
||||
)))
|
||||
|
||||
/// List of body parts we can apply to people
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
#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)
|
||||
|
||||
/// Scarring on the right eye
|
||||
#define RIGHT_EYE_SCAR (1<<0)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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, "<font color='red' size='8'>HONK</font>")
|
||||
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, "<font color='red' size='5'>HONK</font>")
|
||||
|
||||
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, "<font color='red' size='2'>HONK</font>")
|
||||
|
||||
@@ -720,7 +720,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
|
||||
|
||||
@@ -25,8 +25,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
|
||||
|
||||
@@ -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,
|
||||
@@ -430,7 +430,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,
|
||||
)),
|
||||
@@ -472,7 +472,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(
|
||||
|
||||
@@ -671,7 +671,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,
|
||||
@@ -684,7 +684,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(
|
||||
|
||||
@@ -375,7 +375,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
/obj/item/fishing_rod = list(
|
||||
"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,
|
||||
@@ -387,7 +387,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,
|
||||
),
|
||||
))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -330,7 +330,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)
|
||||
|
||||
@@ -843,7 +843,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) \
|
||||
|
||||
@@ -88,7 +88,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
|
||||
|
||||
@@ -126,8 +126,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
|
||||
|
||||
@@ -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
|
||||
@@ -85,7 +90,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)
|
||||
@@ -105,7 +110,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)
|
||||
@@ -163,3 +168,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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -499,7 +499,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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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!"),
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
+1
-1
@@ -907,7 +907,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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -560,7 +560,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)
|
||||
@@ -588,7 +588,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
|
||||
@@ -613,7 +613,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -27,22 +27,22 @@
|
||||
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 - 1, FLASH_PROTECTION_HYPER_SENSITIVE)
|
||||
|
||||
/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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
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
|
||||
|
||||
@@ -39,7 +39,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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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."))
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -258,42 +258,42 @@
|
||||
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,
|
||||
)
|
||||
|
||||
/datum/station_trait/cybernetic_revolution/New()
|
||||
@@ -312,7 +312,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
|
||||
|
||||
@@ -136,7 +136,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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user