diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
index 97b4e3d53c9..6ef2066b191 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
@@ -467,7 +467,7 @@
pixel_y = 4
},
/obj/item/bodypart/chest,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/obj/item/multitool,
/turf/open/floor/iron/freezer,
/area/ruin/powered)
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm
index d4862ce03ee..0ea4048d127 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm
@@ -142,7 +142,7 @@
/turf/open/misc/ice/icemoon,
/area/icemoon/underground/explored)
"sp" = (
-/obj/item/organ/internal/monster_core/regenerative_core/legion{
+/obj/item/organ/monster_core/regenerative_core/legion{
time_to_decay = 0;
pixel_x = 11;
pixel_y = 4;
@@ -273,7 +273,7 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"JP" = (
-/obj/item/organ/internal/monster_core/regenerative_core/legion{
+/obj/item/organ/monster_core/regenerative_core/legion{
time_to_decay = 0;
pixel_x = -12;
pixel_y = -4;
@@ -365,7 +365,7 @@
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/icemoon/underground/explored)
"VT" = (
-/obj/item/organ/internal/monster_core/regenerative_core/legion{
+/obj/item/organ/monster_core/regenerative_core/legion{
time_to_decay = 0;
pixel_x = 4;
pixel_y = 3;
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
index a3c10d3b508..228c55292fb 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
@@ -90,6 +90,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
+"bp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"bu" = (
/obj/effect/turf_decal/siding/wood,
/obj/structure/table/wood,
@@ -216,9 +223,15 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 5
},
-/obj/machinery/smartfridge/organ,
-/obj/item/organ/internal/alien/resinspinner,
-/obj/item/organ/internal/eyes/night_vision,
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/item/clothing/gloves/latex/coroner{
+ pixel_x = -1;
+ pixel_y = 8
+ },
+/obj/item/clothing/mask/surgical{
+ pixel_x = 6;
+ pixel_y = 10
+ },
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"cE" = (
@@ -498,9 +511,10 @@
/obj/effect/decal/cleanable/blood/gibs/down,
/turf/open/floor/iron/cafeteria,
/area/ruin/syndibiodome)
-"gX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/warm/directional/west,
+"gZ" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"ha" = (
@@ -509,10 +523,10 @@
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors/noteleport)
"he" = (
-/mob/living/basic/gorilla/genetics,
/obj/effect/turf_decal/siding/wood/corner{
dir = 1
},
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/wood,
/area/ruin/syndibiodome)
"hf" = (
@@ -527,8 +541,8 @@
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"hm" = (
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt/dust,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark/small,
/area/ruin/syndibiodome)
"hr" = (
@@ -639,14 +653,12 @@
},
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
-"iq" = (
-/obj/structure/flora/rock/pile/style_random,
-/mob/living/carbon/human/species/monkey/angry,
-/turf/open/floor/grass,
-/area/ruin/syndibiodome)
"ir" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/dim/directional/east,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"iG" = (
@@ -723,16 +735,6 @@
},
/obj/effect/decal/cleanable/blood/drip,
/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/surgery_tray/full,
-/obj/item/clothing/gloves/latex/coroner{
- pixel_x = -1;
- pixel_y = 8
- },
-/obj/item/clothing/mask/surgical{
- pixel_x = 6;
- pixel_y = 10
- },
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"jd" = (
@@ -771,9 +773,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
-"jQ" = (
-/turf/closed/indestructible/syndicate/nodiagonal,
-/area/icemoon/surface/outdoors/noteleport)
"jR" = (
/obj/effect/decal/cleanable/blood/trails{
dir = 4
@@ -1025,9 +1024,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
-"mK" = (
-/turf/open/misc/asteroid/snow/icemoon,
-/area/ruin/syndibiodome)
"mV" = (
/obj/effect/turf_decal/siding/wideplating/dark,
/obj/effect/decal/cleanable/dirt/dust,
@@ -1040,6 +1036,9 @@
"mW" = (
/obj/effect/spawner/random/trash,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"mZ" = (
@@ -1113,6 +1112,13 @@
/obj/effect/turf_decal/trimline/dark_red/line,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
+"on" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"oq" = (
/obj/effect/decal/cleanable/blood/trails{
dir = 10
@@ -1147,7 +1153,7 @@
/obj/machinery/light/warm/directional/west,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"oH" = (
@@ -1346,7 +1352,6 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 1
},
-/mob/living/carbon/human/species/monkey/angry,
/obj/machinery/light/warm/directional/north,
/obj/machinery/digital_clock/directional/north,
/obj/effect/decal/cleanable/dirt,
@@ -1354,8 +1359,8 @@
/area/ruin/syndibiodome)
"rQ" = (
/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt/dust,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"rX" = (
@@ -1434,7 +1439,6 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/mapping_helpers/broken_machine,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
"td" = (
@@ -1701,12 +1705,20 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
+"vH" = (
+/obj/effect/spawner/random/trash,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"vJ" = (
/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
/obj/effect/turf_decal/trimline/purple/corner,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
"vK" = (
@@ -1959,7 +1971,6 @@
/obj/effect/turf_decal/trimline/dark/line{
dir = 1
},
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 1
},
@@ -2100,7 +2111,6 @@
/turf/open/floor/grass,
/area/ruin/syndibiodome)
"yU" = (
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/turf_decal/weather/dirt{
dir = 9
},
@@ -2235,6 +2245,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
+"Az" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"AA" = (
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 5
@@ -2262,9 +2279,9 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/storage/belt/security/webbing,
/obj/item/storage/toolbox/syndicate,
-/obj/item/gun/ballistic/automatic/pistol,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/m10mm,
+/obj/item/gun/ballistic/automatic/pistol/contraband,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"Ba" = (
@@ -2496,7 +2513,6 @@
/turf/open/floor/iron/white/small,
/area/ruin/syndibiodome)
"EE" = (
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/decal/cleanable/blood/trails{
dir = 1
},
@@ -2727,7 +2743,6 @@
"Hs" = (
/obj/structure/flora/bush/flowers_br/style_3,
/obj/structure/flora/bush/flowers_yw/style_3,
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/gibspawner/human/bodypartless,
/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
/turf/open/floor/grass,
@@ -2810,6 +2825,14 @@
},
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
+"Iq" = (
+/obj/machinery/light/small/dim/directional/west,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"IF" = (
/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
/obj/effect/turf_decal/siding/wideplating/dark/end{
@@ -2947,6 +2970,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
+"Kl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
"Kn" = (
/obj/effect/decal/cleanable/blood/footprints{
dir = 2
@@ -3087,6 +3117,9 @@
"LA" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/dim/directional/west,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"LB" = (
@@ -3192,6 +3225,8 @@
/turf/open/floor/iron/cafeteria,
/area/ruin/syndibiodome)
"Mr" = (
+/obj/machinery/light/warm/directional/west,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"Mt" = (
@@ -3266,7 +3301,6 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 1
},
-/mob/living/carbon/human/species/monkey/angry,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/dark/line,
/obj/effect/decal/cleanable/dirt/dust,
@@ -3348,7 +3382,7 @@
/obj/effect/turf_decal/weather/dirt{
dir = 6
},
-/mob/living/basic/gorilla/genetics,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/grass,
/area/ruin/syndibiodome)
"NN" = (
@@ -3364,7 +3398,6 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 6
},
-/obj/effect/gibspawner/generic,
/obj/machinery/digital_clock/directional/east,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/plastitanium/red,
@@ -3379,11 +3412,8 @@
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"Os" = (
-/obj/structure/bodycontainer/morgue/beeper_off{
- dir = 8
- },
/obj/effect/turf_decal/trimline/tram/filled,
-/turf/open/floor/pod/dark,
+/turf/closed/indestructible/syndicate/nodiagonal,
/area/ruin/syndibiodome)
"Oy" = (
/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
@@ -3392,13 +3422,6 @@
},
/turf/open/floor/plating,
/area/ruin/syndibiodome)
-"OD" = (
-/mob/living/carbon/human/species/monkey/angry,
-/obj/effect/turf_decal/weather/dirt{
- dir = 6
- },
-/turf/open/floor/grass,
-/area/ruin/syndibiodome)
"OH" = (
/obj/effect/decal/cleanable/blood/trails{
dir = 8
@@ -3428,8 +3451,8 @@
/obj/machinery/light/warm/directional/east,
/obj/item/storage/belt/security/webbing,
/obj/item/gun/ballistic/automatic/pistol/contraband,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/m10mm,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"OM" = (
@@ -3446,6 +3469,9 @@
"ON" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/dim/directional/south,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"OO" = (
@@ -3640,7 +3666,6 @@
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"RK" = (
-/mob/living/carbon/human/species/monkey/angry,
/obj/structure/chair/office/tactical{
dir = 4
},
@@ -3659,8 +3684,9 @@
/area/icemoon/surface/outdoors/noteleport)
"RX" = (
/obj/effect/turf_decal/siding/wideplating/dark,
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt,
+/obj/effect/gibspawner/generic,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"Se" = (
@@ -3823,6 +3849,10 @@
dir = 1
},
/area/ruin/syndibiodome)
+"To" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/turf/open/floor/iron/dark,
+/area/ruin/syndibiodome)
"Tu" = (
/obj/structure/table/reinforced/plastitaniumglass,
/obj/effect/turf_decal/siding/wideplating/dark{
@@ -3897,6 +3927,7 @@
/obj/item/stack/sheet/mineral/uranium/five,
/obj/item/stack/sheet/mineral/uranium/five,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/warm/directional/east,
/turf/open/floor/catwalk_floor/iron_dark,
/area/ruin/syndibiodome)
"TL" = (
@@ -3971,12 +4002,12 @@
/turf/open/floor/iron/dark/small,
/area/ruin/syndibiodome)
"Ux" = (
-/mob/living/basic/gorilla/genetics,
/obj/effect/gibspawner/human/bodypartless,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/blue/corner{
dir = 4
},
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark,
/area/ruin/syndibiodome)
"Uz" = (
@@ -4223,8 +4254,8 @@
/obj/effect/decal/cleanable/blood/tracks{
dir = 4
},
-/mob/living/basic/gorilla/genetics,
/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/iron/dark/herringbone,
/area/ruin/syndibiodome)
"XG" = (
@@ -4362,13 +4393,13 @@
/area/ruin/syndibiodome)
"YZ" = (
/obj/effect/turf_decal/siding/wideplating/dark,
-/mob/living/basic/gorilla/genetics,
/obj/structure/fluff/fake_vent,
/obj/effect/decal/cleanable/blood/trails{
dir = 1
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/gibspawner/human/bodypartless,
+/mob/living/basic/gorilla/hostile,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/syndibiodome)
"Zd" = (
@@ -4690,7 +4721,7 @@ oq
Mc
zM
zM
-mK
+ys
ys
ys
tL
@@ -4727,8 +4758,8 @@ ck
ys
ys
zM
-Ut
-vx
+Kl
+on
xi
kw
wL
@@ -4820,8 +4851,8 @@ jS
ys
ys
zM
-Ut
-Ut
+Kl
+Kl
zM
Sr
zM
@@ -4867,7 +4898,7 @@ pg
pg
zM
zM
-Ut
+Kl
zM
zM
Ab
@@ -4914,7 +4945,7 @@ zd
ys
zM
Db
-Ut
+Kl
zM
kK
MB
@@ -4961,7 +4992,7 @@ pg
pg
zM
ic
-Ut
+Kl
zM
rK
YZ
@@ -5008,7 +5039,7 @@ uD
ys
zM
wY
-Ut
+Kl
zM
cB
ja
@@ -5102,10 +5133,10 @@ AI
ys
ys
zM
-Ut
-Ut
-zM
-zM
+Kl
+Kl
+Iq
+Ro
zM
zM
zM
@@ -5151,8 +5182,8 @@ Hi
zM
zM
Ut
-LA
-Ro
+Kl
+Ut
zM
qN
qU
@@ -5198,10 +5229,10 @@ ys
ys
zM
zM
-Ut
-Ut
-Ut
-vx
+Kl
+Kl
+Kl
+gZ
je
kt
XC
@@ -5582,7 +5613,7 @@ Fl
qN
IU
vu
-iq
+MH
YD
Fp
xz
@@ -5664,13 +5695,13 @@ ys
ck
zM
zM
-mW
-Ut
+vH
+bp
ir
-Ut
-Ut
-Ut
-vx
+bp
+bp
+bp
+Az
kw
Eq
CV
@@ -5711,7 +5742,7 @@ ys
ys
zM
MP
-Ut
+bp
zM
zM
Ut
@@ -5758,7 +5789,7 @@ ys
ys
zM
qa
-Ut
+bp
zM
zM
dS
@@ -5805,7 +5836,7 @@ ys
zM
zM
Sv
-Ut
+bp
zM
wx
RH
@@ -5852,7 +5883,7 @@ zM
zM
rZ
Ut
-Ut
+bp
zM
Ra
RX
@@ -5899,7 +5930,7 @@ zM
zM
zM
zM
-Ut
+bp
zM
Pw
Oi
@@ -5993,12 +6024,12 @@ Uc
qp
sR
zM
-Ut
-Ut
+bp
+bp
LA
-mW
-Ut
-vx
+vH
+bp
+Az
Nt
uW
Vv
@@ -6049,7 +6080,7 @@ qN
pY
XC
XC
-qN
+To
Ut
zM
Vj
@@ -6060,7 +6091,7 @@ XE
Mt
WB
iX
-OD
+cN
zM
ys
uD
@@ -6188,8 +6219,8 @@ zM
zM
zM
zM
-Vv
zM
+To
zM
LU
qN
@@ -6235,8 +6266,8 @@ zM
ek
Dc
zM
-zM
-zM
+Mr
+Ut
Mr
Ut
qN
@@ -6283,7 +6314,7 @@ MM
bu
zM
Kz
-gX
+Ut
Ut
Ut
zM
@@ -6428,7 +6459,7 @@ zM
zM
zM
ys
-jQ
+zM
zM
zM
zM
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
index 6156174aaba..bd900021094 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
@@ -235,7 +235,7 @@
"oL" = (
/obj/structure/bonfire/prelit,
/obj/effect/decal/cleanable/ash,
-/obj/item/organ/external/tail/lizard,
+/obj/item/organ/tail/lizard,
/obj/effect/decal/cleanable/blood/old,
/obj/structure/stone_tile/slab/cracked,
/turf/open/misc/asteroid/basalt/wasteland,
@@ -313,7 +313,7 @@
/area/ruin/unpowered/elephant_graveyard)
"wp" = (
/obj/item/knife/combat/bone,
-/obj/item/organ/internal/tongue,
+/obj/item/organ/tongue,
/obj/effect/decal/cleanable/blood/old,
/turf/open/misc/asteroid/basalt/wasteland,
/area/ruin/unpowered/elephant_graveyard)
@@ -386,8 +386,8 @@
/turf/open/misc/asteroid/basalt/lava_land_surface,
/area/lavaland/surface)
"Di" = (
-/obj/item/organ/internal/lungs,
-/obj/item/organ/internal/liver,
+/obj/item/organ/lungs,
+/obj/item/organ/liver,
/obj/effect/decal/cleanable/blood/old,
/turf/open/misc/asteroid/basalt/wasteland,
/area/ruin/unpowered/elephant_graveyard)
@@ -406,7 +406,7 @@
/turf/open/misc/asteroid/basalt/wasteland,
/area/ruin/unpowered/elephant_graveyard)
"Eh" = (
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
/turf/open/misc/asteroid/basalt/wasteland,
/area/ruin/unpowered/elephant_graveyard)
"EI" = (
@@ -468,9 +468,9 @@
/turf/open/floor/mineral/titanium/white,
/area/ruin/powered/graveyard_shuttle)
"Kj" = (
-/obj/item/organ/internal/heart,
-/obj/item/organ/internal/eyes,
-/obj/item/organ/internal/ears,
+/obj/item/organ/heart,
+/obj/item/organ/eyes,
+/obj/item/organ/ears,
/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/misc/asteroid/basalt/wasteland,
/area/ruin/unpowered/elephant_graveyard)
diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
index 66e681981c7..5e8cb710e89 100644
--- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
+++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
@@ -524,9 +524,9 @@
"tL" = (
/obj/effect/turf_decal/bot_white,
/obj/structure/closet/crate/secure/engineering,
-/obj/item/organ/internal/cyberimp/arm/toolset,
-/obj/item/organ/internal/cyberimp/eyes/hud/medical,
-/obj/item/organ/internal/cyberimp/brain/anti_stun,
+/obj/item/organ/cyberimp/arm/toolset,
+/obj/item/organ/cyberimp/eyes/hud/medical,
+/obj/item/organ/cyberimp/brain/anti_stun,
/turf/open/floor/iron/dark/airless,
/area/shuttle/ruin/caravan/freighter3)
"tO" = (
diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
index 025a2b62e0a..52a288e64e6 100644
--- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
+++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
@@ -341,7 +341,7 @@
/obj/effect/decal/cleanable/blood/footprints{
dir = 8
},
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
/obj/structure/window/reinforced/spawner/directional/north,
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/dangerous_research/lab)
@@ -543,7 +543,7 @@
dir = 4
},
/obj/effect/decal/cleanable/blood/bubblegum,
-/obj/item/organ/internal/appendix,
+/obj/item/organ/appendix,
/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/window/reinforced/spawner/directional/west,
/obj/effect/mapping_helpers/burnt_floor,
@@ -903,7 +903,7 @@
/area/ruin/space/has_grav/dangerous_research/dorms)
"mG" = (
/obj/structure/table,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/obj/effect/decal/cleanable/blood/bubblegum,
/obj/effect/spawner/random/medical/surgery_tool_advanced,
/obj/effect/turf_decal/tile/blue/fourcorners,
@@ -1056,7 +1056,7 @@
dir = 1
},
/obj/effect/decal/cleanable/blood/footprints,
-/obj/item/organ/internal/lungs,
+/obj/item/organ/lungs,
/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/window/reinforced/spawner/directional/east,
/turf/open/floor/iron/dark,
@@ -1193,7 +1193,7 @@
dir = 8
},
/obj/effect/decal/cleanable/blood/gibs,
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
/obj/item/skillchip/research_director,
/obj/effect/turf_decal/tile/neutral/half{
dir = 4
@@ -1279,7 +1279,7 @@
/obj/effect/decal/cleanable/blood/footprints{
dir = 8
},
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/dangerous_research/lab)
@@ -3692,8 +3692,8 @@
/area/ruin/space/has_grav/dangerous_research/lab)
"Wt" = (
/obj/structure/table/optable,
-/obj/item/organ/internal/eyes,
-/obj/item/organ/internal/liver,
+/obj/item/organ/eyes,
+/obj/item/organ/liver,
/obj/effect/decal/cleanable/blood/bubblegum,
/obj/effect/turf_decal/tile/blue/fourcorners,
/turf/open/floor/iron/white,
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
index f3a4b1f7528..05da4138d0f 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
@@ -876,10 +876,10 @@
/obj/item/petri_dish,
/obj/item/petri_dish,
/obj/item/petri_dish,
-/obj/item/organ/internal/tongue/rat,
+/obj/item/organ/tongue/rat,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/glass,
-/obj/item/organ/internal/stomach/rat,
+/obj/item/organ/stomach/rat,
/obj/item/fish/ratfish,
/obj/structure/closet/crate/freezer,
/obj/effect/spawner/random/medical/surgery_tool,
@@ -1227,7 +1227,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/food/deadmouse,
/mob/living/basic/mouse/rat,
-/obj/item/organ/internal/heart/rat,
+/obj/item/organ/heart/rat,
/turf/open/floor/plating/dumpsterair,
/area/ruin/space/has_grav/garbagetruck/foodwaste)
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
index c697cd5fa00..f1c41c3bf17 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
@@ -1,11 +1,11 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"bb" = (
-/obj/item/organ/external/wings/moth,
+/obj/item/organ/wings/moth,
/obj/structure/closet/crate/trashcart,
/obj/item/bodypart/arm/left/skeleton,
/obj/item/bodypart/arm/right/skeleton,
/obj/item/evidencebag,
-/obj/item/organ/internal/heart/cybernetic/tier2,
+/obj/item/organ/heart/cybernetic/tier2,
/obj/structure/broken_flooring/pile,
/obj/item/stack/sheet/animalhide/human/five,
/turf/open/floor/plating,
@@ -183,7 +183,7 @@
/obj/item/trash/syndi_cakes,
/obj/item/trash/syndi_cakes,
/obj/item/poster/random_contraband,
-/obj/item/organ/internal/tongue/zombie,
+/obj/item/organ/tongue/zombie,
/obj/structure/closet/crate/trashcart,
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/medicalwaste)
@@ -298,8 +298,8 @@
/obj/item/stack/medical/gauze,
/obj/item/stack/sticky_tape/surgical,
/obj/structure/broken_flooring/corner,
-/obj/item/organ/internal/cyberimp/arm/surgery,
-/obj/item/organ/internal/cyberimp/eyes/hud/medical,
+/obj/item/organ/cyberimp/arm/surgery,
+/obj/item/organ/cyberimp/eyes/hud/medical,
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/medicalwaste)
"zu" = (
@@ -417,7 +417,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/medicalwaste)
"Gp" = (
-/obj/item/organ/internal/eyes/robotic/basic,
+/obj/item/organ/eyes/robotic/basic,
/obj/item/kitchen/spoon,
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/medicalwaste)
@@ -437,9 +437,9 @@
"IM" = (
/obj/effect/decal/cleanable/robot_debris,
/obj/structure/closet/crate/freezer,
-/obj/item/organ/internal/liver/roach,
-/obj/item/organ/internal/stomach,
-/obj/item/organ/internal/tongue/robot,
+/obj/item/organ/liver/roach,
+/obj/item/organ/stomach,
+/obj/item/organ/tongue/robot,
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/medicalwaste)
"IS" = (
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
index cdb5b4e2cec..1bc775220c2 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
@@ -662,7 +662,7 @@
/obj/structure/mecha_wreckage/ripley,
/obj/effect/decal/cleanable/fuel_pool,
/obj/effect/decal/cleanable/molten_object,
-/obj/item/organ/internal/tongue/robot,
+/obj/item/organ/tongue/robot,
/turf/open/floor/plating/dumpsterair,
/area/ruin/space/has_grav/garbagetruck/squat)
"HN" = (
diff --git a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm
index 6954a5f57a2..06451e02e8c 100644
--- a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm
+++ b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm
@@ -5471,7 +5471,7 @@
/obj/structure/table/wood,
/obj/item/toy/figure/wizard/special{
pixel_y = 9;
- pixel_x = -4;
+ pixel_x = -4
},
/obj/item/toy/figure/warden{
name = "\improper Knight action figure";
diff --git a/_maps/RandomRuins/SpaceRuins/medieval1.dmm b/_maps/RandomRuins/SpaceRuins/medieval1.dmm
index e4df5166993..74ca6aad858 100644
--- a/_maps/RandomRuins/SpaceRuins/medieval1.dmm
+++ b/_maps/RandomRuins/SpaceRuins/medieval1.dmm
@@ -74,7 +74,7 @@
"qr" = (
/obj/structure/table/wood,
/obj/item/plate,
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
/turf/open/floor/wood/parquet,
/area/ruin/space)
"rm" = (
@@ -88,7 +88,7 @@
/turf/open/floor/stone,
/area/ruin/space)
"sR" = (
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
/turf/open/floor/stone,
/area/ruin/space)
"tj" = (
@@ -238,7 +238,7 @@
"Ug" = (
/obj/effect/decal/cleanable/blood/tracks,
/obj/effect/decal/cleanable/blood/gibs/up,
-/obj/item/organ/internal/lungs{
+/obj/item/organ/lungs{
pixel_x = 6;
pixel_y = -7
},
diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
index 6c08525d8f2..729e9ddf044 100644
--- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
+++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
@@ -312,7 +312,7 @@
/turf/open/floor/iron,
/area/ruin/space/has_grav/powered/cat_man)
"be" = (
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/iron/white/corner,
/area/ruin/space/has_grav/powered/cat_man)
@@ -396,7 +396,7 @@
"bt" = (
/obj/structure/table/optable,
/obj/effect/mob_spawn/corpse/human/damaged,
-/obj/item/organ/internal/ears/cat,
+/obj/item/organ/ears/cat,
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/powered/cat_man)
@@ -737,12 +737,12 @@
/obj/structure/closet/crate/freezer{
name = "cat ears"
},
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
/turf/open/floor/iron/freezer,
/area/ruin/space/has_grav/powered/cat_man)
"cv" = (
@@ -791,12 +791,12 @@
/obj/structure/closet/crate/freezer{
name = "cat tails"
},
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
/turf/open/floor/iron/freezer,
/area/ruin/space/has_grav/powered/cat_man)
"jc" = (
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 0c3c231b5f2..1f1ad0f6c4a 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -521,7 +521,7 @@
pixel_x = 17;
pixel_y = 12
},
-/obj/item/organ/internal/cyberimp/arm/toolset{
+/obj/item/organ/cyberimp/arm/toolset{
pixel_y = 2;
pixel_x = 6
},
diff --git a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
index f31929b70a4..719088322f2 100644
--- a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
+++ b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
@@ -251,14 +251,14 @@
/area/ruin/space/has_grav/the_outlet/researchrooms)
"gU" = (
/obj/structure/closet/secure_closet/freezer/empty,
-/obj/item/organ/internal/tongue/lizard,
+/obj/item/organ/tongue/lizard,
/obj/item/food/meat/slab/human/mutant/lizard,
-/obj/item/organ/external/tail/lizard,
-/obj/item/organ/internal/heart,
-/obj/item/organ/internal/brain,
-/obj/item/organ/internal/liver,
-/obj/item/organ/internal/lungs,
-/obj/item/organ/internal/stomach,
+/obj/item/organ/tail/lizard,
+/obj/item/organ/heart,
+/obj/item/organ/brain,
+/obj/item/organ/liver,
+/obj/item/organ/lungs,
+/obj/item/organ/stomach,
/turf/open/floor/iron/freezer,
/area/ruin/space/has_grav/the_outlet/researchrooms)
"gX" = (
diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm
index a21d64d505b..ea63bf1b7fe 100644
--- a/_maps/RandomZLevels/caves.dmm
+++ b/_maps/RandomZLevels/caves.dmm
@@ -56,7 +56,7 @@
},
/obj/item/veilrender/honkrender,
/obj/item/clothing/mask/gas/clown_hat,
-/obj/item/organ/internal/heart/demon,
+/obj/item/organ/heart/demon,
/turf/open/floor/engine/cult{
initial_gas_mix = "n2=23;o2=14;TEMP=2.7"
},
@@ -1252,7 +1252,7 @@
"ki" = (
/obj/structure/closet/crate/preopen,
/obj/item/paper/fluff/awaymissions/caves/shipment_receipt,
-/obj/item/organ/internal/eyes/robotic/thermals,
+/obj/item/organ/eyes/robotic/thermals,
/obj/item/gun/energy/laser/captain/scattershot,
/obj/item/slimepotion/fireproof,
/turf/open/misc/asteroid/basalt{
@@ -1977,7 +1977,7 @@
},
/area/awaymission/caves/bmp_asteroid/level_three)
"YG" = (
-/obj/item/organ/internal/brain/alien,
+/obj/item/organ/brain/alien,
/turf/open/misc/asteroid/basalt{
initial_gas_mix = "n2=23;o2=14;TEMP=2.7"
},
diff --git a/_maps/RandomZLevels/mothership_astrum.dmm b/_maps/RandomZLevels/mothership_astrum.dmm
index 272d6977c59..dd275f086bf 100644
--- a/_maps/RandomZLevels/mothership_astrum.dmm
+++ b/_maps/RandomZLevels/mothership_astrum.dmm
@@ -87,7 +87,7 @@
/obj/structure/window/spawner/directional/north,
/obj/structure/window/spawner/directional/east,
/obj/structure/window/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/arm/medibeam,
+/obj/item/organ/cyberimp/arm/medibeam,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"bl" = (
@@ -179,7 +179,7 @@
/area/awaymission/mothership_astrum/deck4)
"dd" = (
/obj/effect/decal/cleanable/blood,
-/obj/item/organ/internal/eyes/robotic,
+/obj/item/organ/eyes/robotic,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"dh" = (
@@ -289,7 +289,7 @@
/area/awaymission/mothership_astrum/halls)
"fa" = (
/obj/structure/closet/abductor,
-/obj/item/organ/internal/cyberimp/eyes/hud/medical,
+/obj/item/organ/cyberimp/eyes/hud/medical,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"fb" = (
@@ -424,7 +424,7 @@
/area/awaymission/mothership_astrum/deck4)
"hy" = (
/obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/brain/anti_stun,
+/obj/item/organ/cyberimp/brain/anti_stun,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"hz" = (
@@ -740,7 +740,7 @@
/area/awaymission/mothership_astrum/deck2)
"nB" = (
/obj/structure/closet/abductor,
-/obj/item/organ/internal/cyberimp/eyes/hud/security,
+/obj/item/organ/cyberimp/eyes/hud/security,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"nE" = (
@@ -842,7 +842,7 @@
/area/awaymission/mothership_astrum/deck3)
"oA" = (
/obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/janitor,
+/obj/item/organ/cyberimp/arm/janitor,
/turf/open/floor/plating/abductor,
/area/awaymission/mothership_astrum/halls)
"oF" = (
@@ -1042,7 +1042,7 @@
/area/awaymission/mothership_astrum/halls)
"sg" = (
/obj/effect/decal/cleanable/blood,
-/obj/item/organ/internal/eyes/robotic/shield,
+/obj/item/organ/eyes/robotic/shield,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"sk" = (
@@ -1477,7 +1477,7 @@
/obj/structure/window/spawner/directional/north,
/obj/structure/window/spawner/directional/east,
/obj/structure/window/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/chest/scanner,
+/obj/item/organ/cyberimp/chest/scanner,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"yB" = (
@@ -1630,7 +1630,7 @@
/area/awaymission/mothership_astrum/halls)
"Bl" = (
/obj/structure/table/abductor,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/turf/open/floor/plating/abductor,
/area/awaymission/mothership_astrum/halls)
"Bn" = (
@@ -1665,7 +1665,7 @@
/obj/structure/window/spawner/directional/east,
/obj/structure/window/spawner/directional/west,
/obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/hacker,
+/obj/item/organ/cyberimp/arm/hacker,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"BE" = (
@@ -2037,7 +2037,7 @@
/obj/structure/window/spawner/directional/east,
/obj/structure/window/spawner/directional/west,
/obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/mouth/breathing_tube,
+/obj/item/organ/cyberimp/mouth/breathing_tube,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"FV" = (
@@ -2292,7 +2292,7 @@
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"Iv" = (
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"IA" = (
@@ -2325,7 +2325,7 @@
/obj/structure/window/spawner/directional/north,
/obj/structure/window/spawner/directional/east,
/obj/structure/window/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/brain/anti_drop,
+/obj/item/organ/cyberimp/brain/anti_drop,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"IT" = (
@@ -2368,7 +2368,7 @@
/area/awaymission/mothership_astrum/halls)
"JB" = (
/obj/structure/alien/weeds,
-/obj/item/organ/internal/eyes/night_vision/cyber,
+/obj/item/organ/eyes/night_vision/cyber,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/deck4)
"JO" = (
@@ -2634,7 +2634,7 @@
/area/awaymission/mothership_astrum/deck2)
"Nd" = (
/obj/effect/decal/cleanable/blood,
-/obj/item/organ/internal/appendix/fly,
+/obj/item/organ/appendix/fly,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"Ne" = (
@@ -2666,7 +2666,7 @@
/area/awaymission/mothership_astrum/halls)
"Ns" = (
/obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/armblade,
+/obj/item/organ/cyberimp/arm/armblade,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"Nw" = (
@@ -2731,7 +2731,7 @@
/area/awaymission/mothership_astrum/halls)
"Oa" = (
/obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/toolset,
+/obj/item/organ/cyberimp/arm/toolset,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"Om" = (
@@ -2771,7 +2771,7 @@
/area/awaymission/mothership_astrum/deck1)
"Os" = (
/obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/brain/anti_drop,
+/obj/item/organ/cyberimp/brain/anti_drop,
/turf/open/floor/plating/abductor2,
/area/awaymission/mothership_astrum/halls)
"Ow" = (
@@ -2890,7 +2890,7 @@
/obj/effect/turf_decal/sand,
/obj/structure/table/wood,
/obj/item/storage/medkit/brute,
-/obj/item/organ/internal/cyberimp/brain/anti_stun,
+/obj/item/organ/cyberimp/brain/anti_stun,
/turf/open/misc/beach/sand,
/area/awaymission/mothership_astrum/deck5)
"PP" = (
@@ -2906,7 +2906,7 @@
/turf/open/misc/ironsand,
/area/awaymission/mothership_astrum/deck1)
"PR" = (
-/obj/item/organ/internal/eyes/snail,
+/obj/item/organ/eyes/snail,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"PV" = (
@@ -3120,7 +3120,7 @@
"SA" = (
/obj/structure/table/abductor,
/obj/structure/window/reinforced/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/chest/scanner,
+/obj/item/organ/cyberimp/chest/scanner,
/turf/open/floor/mineral/abductor,
/area/awaymission/mothership_astrum/halls)
"SF" = (
@@ -3544,7 +3544,7 @@
"XE" = (
/obj/structure/table/wood,
/obj/item/flashlight/flare/candle/infinite,
-/obj/item/organ/internal/cyberimp/chest/reviver,
+/obj/item/organ/cyberimp/chest/reviver,
/turf/open/floor/plastic,
/area/awaymission/mothership_astrum/deck2)
"XH" = (
diff --git a/_maps/deathmatch/sunrise.dmm b/_maps/deathmatch/sunrise.dmm
index b4de46385cd..d58aac39aec 100644
--- a/_maps/deathmatch/sunrise.dmm
+++ b/_maps/deathmatch/sunrise.dmm
@@ -721,7 +721,7 @@
/area/deathmatch)
"Uk" = (
/obj/structure/closet/crate/coffin,
-/obj/item/organ/internal/cyberimp/arm/shard/katana,
+/obj/item/organ/cyberimp/arm/shard/katana,
/obj/structure/window/spawner/directional/east,
/obj/structure/window/spawner/directional/west,
/obj/structure/window/spawner/directional/south,
diff --git a/_maps/map_files/Basketball/lusty_xenomorphs.dmm b/_maps/map_files/Basketball/lusty_xenomorphs.dmm
index 534376d3f56..f3550c0c15f 100644
--- a/_maps/map_files/Basketball/lusty_xenomorphs.dmm
+++ b/_maps/map_files/Basketball/lusty_xenomorphs.dmm
@@ -135,7 +135,7 @@
/turf/open/floor/engine,
/area/centcom/basketball)
"kT" = (
-/obj/item/organ/internal/body_egg/alien_embryo,
+/obj/item/organ/body_egg/alien_embryo,
/turf/open/floor/engine,
/area/centcom/basketball)
"lh" = (
@@ -327,7 +327,7 @@
/area/centcom/basketball)
"Bd" = (
/obj/structure/alien/weeds,
-/obj/item/organ/internal/body_egg/alien_embryo,
+/obj/item/organ/body_egg/alien_embryo,
/turf/open/floor/iron/white,
/area/centcom/basketball)
"Cv" = (
diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm
index ef4ae3a2ae5..747e04d408c 100644
--- a/_maps/map_files/Birdshot/birdshot.dmm
+++ b/_maps/map_files/Birdshot/birdshot.dmm
@@ -2478,12 +2478,6 @@
/obj/machinery/power/apc/auto_name/directional/south,
/turf/open/floor/plating,
/area/station/maintenance/department/science/xenobiology)
-"aVK" = (
-/obj/structure/rack,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/turf/open/floor/plating,
-/area/station/maintenance/department/science/xenobiology)
"aVT" = (
/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior,
/obj/effect/mapping_helpers/airlock/locked,
@@ -2633,6 +2627,10 @@
/obj/structure/flora/bush/flowers_yw/style_random,
/turf/open/misc/sandy_dirt,
/area/station/service/lawoffice)
+"aZg" = (
+/obj/machinery/drone_dispenser,
+/turf/open/floor/plating,
+/area/station/maintenance/department/science/xenobiology)
"aZh" = (
/obj/machinery/modular_computer/preset/curator{
dir = 8
@@ -9500,24 +9498,6 @@
},
/turf/open/floor/engine,
/area/station/engineering/supermatter/room)
-"dzi" = (
-/obj/structure/table/wood,
-/obj/item/book/granter/action/spell/smoke/lesser{
- name = "mysterious old book of cloud-chasing"
- },
-/obj/item/reagent_containers/cup/glass/bottle/holywater{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/nullrod{
- pixel_x = 4
- },
-/obj/item/organ/internal/heart,
-/obj/item/soulstone/anybody/chaplain,
-/obj/machinery/light/small/red/dim/directional/south,
-/obj/item/radio/intercom/chapel/directional/east,
-/turf/open/floor/iron/terracotta/diagonal,
-/area/station/service/chapel/office)
"dzE" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -26384,10 +26364,6 @@
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plating,
/area/station/maintenance/port/greater)
-"jar" = (
-/obj/machinery/drone_dispenser,
-/turf/open/floor/plating,
-/area/station/maintenance/department/science/xenobiology)
"jat" = (
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
dir = 4
@@ -45498,6 +45474,24 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/port)
+"pEQ" = (
+/obj/structure/table/wood,
+/obj/item/book/granter/action/spell/smoke/lesser{
+ name = "mysterious old book of cloud-chasing"
+ },
+/obj/item/reagent_containers/cup/glass/bottle/holywater{
+ pixel_x = -2;
+ pixel_y = 2
+ },
+/obj/item/nullrod{
+ pixel_x = 4
+ },
+/obj/item/organ/heart,
+/obj/item/soulstone/anybody/chaplain,
+/obj/machinery/light/small/red/dim/directional/south,
+/obj/item/radio/intercom/chapel/directional/east,
+/turf/open/floor/iron/terracotta/diagonal,
+/area/station/service/chapel/office)
"pET" = (
/obj/effect/turf_decal/siding/wideplating{
dir = 8
@@ -70367,6 +70361,12 @@
},
/turf/open/floor/iron/checker,
/area/station/security/breakroom)
+"xtv" = (
+/obj/structure/rack,
+/obj/item/stack/sheet/iron/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/turf/open/floor/plating,
+/area/station/maintenance/department/science/xenobiology)
"xtD" = (
/obj/effect/turf_decal/siding/wood{
dir = 4
@@ -85969,7 +85969,7 @@ jte
diI
yea
vmt
-dzi
+pEQ
fEC
wxR
fEC
@@ -112964,7 +112964,7 @@ tjj
tjj
blb
ssz
-jar
+aZg
qRO
ssz
vLv
@@ -113221,7 +113221,7 @@ tjj
blb
blb
ssz
-aVK
+xtv
sPO
ssz
aSy
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index e6134de2453..5a4a74216c4 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -52616,7 +52616,7 @@
/turf/open/floor/iron/dark/textured,
/area/station/ai_monitored/security/armory)
"pgN" = (
-/obj/item/organ/external/tail/monkey,
+/obj/item/organ/tail/monkey,
/obj/effect/decal/cleanable/blood/splatter,
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
@@ -56829,7 +56829,7 @@
pixel_y = 4
},
/obj/item/bodypart/chest,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/turf/open/misc/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"qrj" = (
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 88f7f830867..d056026b5ff 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -15680,14 +15680,6 @@
/obj/structure/cable,
/turf/open/floor/circuit/red,
/area/station/ai_monitored/turret_protected/ai_upload)
-"fEV" = (
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/obj/machinery/door/airlock/security/glass{
- name = "Security Post - Cargo"
- },
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/supply)
"fEW" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -28021,22 +28013,6 @@
/obj/item/kirbyplants/potty,
/turf/open/floor/wood/large,
/area/station/commons/lounge)
-"jTy" = (
-/obj/structure/table/wood,
-/obj/item/book/granter/action/spell/smoke/lesser{
- name = "mysterious old book of cloud-chasing"
- },
-/obj/item/reagent_containers/cup/glass/bottle/holywater{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/nullrod{
- pixel_x = 4
- },
-/obj/item/organ/internal/heart,
-/obj/item/soulstone/anybody/chaplain,
-/turf/open/floor/cult,
-/area/station/service/chapel/office)
"jTH" = (
/obj/machinery/firealarm/directional/east,
/obj/machinery/pdapainter/security,
@@ -38066,6 +38042,14 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/station/security/prison/work)
+"nyu" = (
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/obj/machinery/door/airlock/security/glass{
+ name = "Security Post - Cargo"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/security/general,
+/turf/open/floor/iron/dark,
+/area/station/security/checkpoint/supply)
"nyy" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -59521,6 +59505,22 @@
"uXd" = (
/turf/closed/wall/r_wall,
/area/station/engineering/main)
+"uXh" = (
+/obj/structure/table/wood,
+/obj/item/book/granter/action/spell/smoke/lesser{
+ name = "mysterious old book of cloud-chasing"
+ },
+/obj/item/reagent_containers/cup/glass/bottle/holywater{
+ pixel_x = -2;
+ pixel_y = 2
+ },
+/obj/item/nullrod{
+ pixel_x = 4
+ },
+/obj/item/organ/heart,
+/obj/item/soulstone/anybody/chaplain,
+/turf/open/floor/cult,
+/area/station/service/chapel/office)
"uXt" = (
/obj/docking_port/stationary/syndicate/northwest{
dir = 8
@@ -63488,17 +63488,6 @@
},
/turf/open/floor/iron/dark,
/area/station/security/evidence)
-"wme" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Security Post - Cargo"
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/supply)
"wmf" = (
/obj/effect/spawner/random/trash/garbage{
spawn_scatter_radius = 1
@@ -66216,6 +66205,17 @@
},
/turf/open/floor/iron,
/area/station/commons/locker)
+"xma" = (
+/obj/machinery/door/airlock/security/glass{
+ name = "Security Post - Cargo"
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/obj/effect/mapping_helpers/airlock/access/all/security/general,
+/turf/open/floor/iron/dark,
+/area/station/security/checkpoint/supply)
"xmb" = (
/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{
dir = 4
@@ -89982,7 +89982,7 @@ hxd
rtG
oor
oor
-wme
+xma
oor
xbu
oor
@@ -90501,7 +90501,7 @@ kDb
imT
gPw
qNL
-fEV
+nyu
pVK
xOw
uCR
@@ -91337,7 +91337,7 @@ tSw
tAH
waD
tSw
-jTy
+uXh
vQg
oCb
gCA
diff --git a/_maps/map_files/NSVBlueshift/Blueshift.dmm b/_maps/map_files/NSVBlueshift/Blueshift.dmm
index 81c8edf1f82..c32169e95b8 100644
--- a/_maps/map_files/NSVBlueshift/Blueshift.dmm
+++ b/_maps/map_files/NSVBlueshift/Blueshift.dmm
@@ -3182,7 +3182,7 @@
/area/station/service/hydroponics/garden)
"aGN" = (
/obj/effect/decal/cleanable/blood/old,
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
/obj/item/pen{
pixel_x = 5;
pixel_y = 8
@@ -11792,7 +11792,7 @@
/obj/structure/table/wood/fancy,
/obj/item/book/granter/action/spell/smoke/lesser,
/obj/item/nullrod,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/obj/item/reagent_containers/cup/glass/bottle/holywater,
/obj/item/soulstone/anybody/chaplain,
/obj/machinery/light/small/directional/north,
@@ -19939,7 +19939,7 @@
/turf/open/floor/iron,
/area/station/ai_monitored/command/storage/eva/upper)
"dPO" = (
-/obj/item/organ/external/tail/monkey,
+/obj/item/organ/tail/monkey,
/turf/open/floor/cult,
/area/station/maintenance/department/science/xenobiology)
"dPP" = (
@@ -37079,7 +37079,7 @@
/turf/closed/wall,
/area/space/nearstation)
"hfi" = (
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
/turf/open/floor/material/meat,
/area/station/maintenance/department/science/xenobiology)
"hfl" = (
@@ -40973,16 +40973,16 @@
/area/station/common/wrestling/arena)
"hSi" = (
/obj/structure/table,
-/obj/item/organ/external/tail/cat{
+/obj/item/organ/tail/cat{
pixel_x = -5;
pixel_y = 4
},
-/obj/item/organ/external/tail/fluffy{
+/obj/item/organ/tail/fluffy{
pixel_x = -3;
pixel_y = 2
},
-/obj/item/organ/external/tail/lizard,
-/obj/item/organ/internal/ears/cat,
+/obj/item/organ/tail/lizard,
+/obj/item/organ/ears/cat,
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-flat-1"
},
@@ -42233,9 +42233,9 @@
},
/obj/effect/turf_decal/bot,
/obj/item/bodypart/arm/left,
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
/obj/effect/decal/cleanable/blood/old,
-/obj/item/organ/external/tail/lizard,
+/obj/item/organ/tail/lizard,
/turf/open/floor/iron/dark,
/area/station/maintenance/department/security/prison_upper)
"ieW" = (
@@ -48303,7 +48303,7 @@
},
/area/station/hallway/primary/upper)
"jpm" = (
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
/turf/open/floor/material/meat,
/area/station/maintenance/department/science/xenobiology)
"jpn" = (
@@ -49102,7 +49102,7 @@
"jxj" = (
/mob/living/basic/mushroom,
/obj/effect/decal/cleanable/blood/gibs,
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
/turf/open/floor/plating,
/area/station/maintenance/department/science/ordnance_maint)
"jxk" = (
@@ -61911,8 +61911,8 @@
/area/station/medical/patients_rooms)
"lSU" = (
/obj/structure/table,
-/obj/item/organ/internal/stomach/cybernetic,
-/obj/item/organ/internal/eyes/robotic/flashlight,
+/obj/item/organ/stomach/cybernetic,
+/obj/item/organ/eyes/robotic/flashlight,
/obj/structure/disposalpipe/segment,
/turf/open/floor/iron,
/area/station/maintenance/starboard/fore)
@@ -73753,7 +73753,7 @@
"oif" = (
/obj/structure/table/optable,
/obj/effect/decal/cleanable/blood/old,
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
/turf/open/floor/iron/white,
/area/station/maintenance/abandon_surgery)
"oih" = (
@@ -84868,9 +84868,9 @@
/obj/structure/closet/crate/freezer{
name = "organ storage"
},
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/heart,
+/obj/item/organ/tail/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/heart,
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-flat-1"
},
@@ -87462,7 +87462,7 @@
/turf/open/floor/iron,
/area/station/hallway/primary/upper)
"qNf" = (
-/obj/item/organ/internal/tongue,
+/obj/item/organ/tongue,
/turf/open/floor/material/meat,
/area/station/maintenance/department/science/xenobiology)
"qNi" = (
@@ -99607,7 +99607,7 @@
/turf/open/floor/plating,
/area/station/maintenance/department/engineering/atmos_aux_port)
"tda" = (
-/obj/item/organ/internal/stomach,
+/obj/item/organ/stomach,
/turf/open/floor/material/meat,
/area/station/maintenance/department/science/xenobiology)
"tdb" = (
@@ -115383,7 +115383,7 @@
/turf/open/floor/plating,
/area/station/maintenance/department/medical)
"wbt" = (
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/iron,
/area/station/maintenance/rus_surgery)
@@ -120913,7 +120913,7 @@
/obj/structure/closet/crate/freezer{
name = "limb storage"
},
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
/obj/item/bodypart/leg/left/digitigrade,
/turf/open/floor/plating,
/area/station/maintenance/rus_surgery)
@@ -122761,9 +122761,9 @@
/obj/structure/closet/crate/freezer{
name = "organ storage"
},
-/obj/item/organ/internal/heart,
-/obj/item/organ/internal/eyes/fly,
-/obj/item/organ/internal/liver,
+/obj/item/organ/heart,
+/obj/item/organ/eyes/fly,
+/obj/item/organ/liver,
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-flat-1"
},
diff --git a/_maps/map_files/Ouroboros/Ouroboros.dmm b/_maps/map_files/Ouroboros/Ouroboros.dmm
index 23ffdf81fd2..880a2bfa7db 100644
--- a/_maps/map_files/Ouroboros/Ouroboros.dmm
+++ b/_maps/map_files/Ouroboros/Ouroboros.dmm
@@ -24942,8 +24942,8 @@
/obj/effect/spawner/random/medical/memeorgans,
/obj/effect/spawner/random/medical/memeorgans,
/obj/effect/spawner/random/medical/organs,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat{
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat{
pixel_x = 6
},
/obj/machinery/power/apc/auto_name/directional/south,
diff --git a/_maps/map_files/SerenityStation/SerenityStation.dmm b/_maps/map_files/SerenityStation/SerenityStation.dmm
index 59aafac5889..0a11fddcd9d 100644
--- a/_maps/map_files/SerenityStation/SerenityStation.dmm
+++ b/_maps/map_files/SerenityStation/SerenityStation.dmm
@@ -27158,7 +27158,7 @@
/obj/structure/table/wood/fancy,
/obj/item/nullrod,
/obj/item/book/granter/action/spell/smoke/lesser,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/turf/open/floor/iron/dark/side{
dir = 4
},
diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
index 0c3eccafc47..55435a6b39b 100644
--- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm
+++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
@@ -37899,11 +37899,11 @@
/obj/structure/closet/crate/freezer{
name = "organ storage"
},
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/heart,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/heart,
/obj/structure/sign/poster/contraband/random/directional/east,
/obj/machinery/vending/wallmed/directional/north,
/obj/effect/decal/cleanable/cobweb/cobweb2,
@@ -40114,7 +40114,7 @@
"lqF" = (
/obj/structure/table/wood/fancy,
/obj/item/nullrod,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/obj/item/reagent_containers/cup/glass/bottle/holywater,
/obj/machinery/light/small/directional/north,
/turf/open/floor/pod/dark,
diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm
index d1b9a7ec350..a2457647837 100644
--- a/_maps/map_files/debug/runtimestation.dmm
+++ b/_maps/map_files/debug/runtimestation.dmm
@@ -2626,13 +2626,13 @@
/area/station/hallway/primary/central)
"XN" = (
/obj/structure/table,
-/obj/item/organ/internal/cyberimp/bci{
+/obj/item/organ/cyberimp/bci{
pixel_y = 5
},
-/obj/item/organ/internal/cyberimp/bci{
+/obj/item/organ/cyberimp/bci{
pixel_y = 5
},
-/obj/item/organ/internal/cyberimp/bci{
+/obj/item/organ/cyberimp/bci{
pixel_y = 5
},
/turf/open/floor/iron/dark,
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
index 0e8deac0a59..893f1208686 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
@@ -102,7 +102,7 @@
/area/station/asteroid)
"N" = (
/obj/item/instrument/trombone,
-/obj/item/organ/internal/tongue/bone,
+/obj/item/organ/tongue/bone,
/turf/open/misc/asteroid/dug,
/area/station/asteroid)
"O" = (
diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm
index bbeaa4bd07c..66345284283 100644
--- a/_maps/map_files/wawastation/wawastation.dmm
+++ b/_maps/map_files/wawastation/wawastation.dmm
@@ -15446,7 +15446,7 @@
/obj/item/nullrod{
pixel_x = 4
},
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
/obj/item/soulstone/anybody/chaplain,
/turf/open/floor/cult,
/area/station/service/chapel/office)
@@ -66282,11 +66282,11 @@
/area/station/hallway/secondary/exit/departure_lounge)
"xrt" = (
/obj/effect/decal/cleanable/dirt/dust,
-/obj/item/organ/external/horns,
-/obj/item/organ/external/antennae,
-/obj/item/organ/external/frills,
-/obj/item/organ/external/spines,
-/obj/item/organ/external/tail/lizard/fake,
+/obj/item/organ/horns,
+/obj/item/organ/antennae,
+/obj/item/organ/frills,
+/obj/item/organ/spines,
+/obj/item/organ/tail/lizard/fake,
/obj/structure/closet/crate/freezer,
/turf/open/floor/plating,
/area/station/maintenance/department/science)
diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm
index bbcad398257..cdf903f0345 100644
--- a/_maps/shuttles/emergency_birdshot.dmm
+++ b/_maps/shuttles/emergency_birdshot.dmm
@@ -904,14 +904,14 @@
/obj/structure/closet/crate/freezer,
/obj/item/bodypart/arm/left/moth,
/obj/item/bodypart/arm/left/moth,
-/obj/item/organ/external/tail/lizard,
+/obj/item/organ/tail/lizard,
/obj/item/bodypart/leg/right/digitigrade,
/obj/item/bodypart/leg/right/digitigrade,
/obj/item/bodypart/leg/left/fly,
/obj/item/bodypart/leg/left/fly,
/obj/item/bodypart/arm/right,
/obj/item/bodypart/arm/right,
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
/obj/effect/turf_decal/stripes/white/end{
dir = 1
},
diff --git a/_maps/shuttles/emergency_zeta.dmm b/_maps/shuttles/emergency_zeta.dmm
index 720a906a767..ba22cc26301 100644
--- a/_maps/shuttles/emergency_zeta.dmm
+++ b/_maps/shuttles/emergency_zeta.dmm
@@ -198,10 +198,10 @@
/area/shuttle/escape/brig)
"IM" = (
/obj/structure/table/abductor,
-/obj/item/organ/internal/heart/gland/access{
+/obj/item/organ/heart/gland/access{
pixel_x = 10
},
-/obj/item/organ/internal/heart/gland/egg,
+/obj/item/organ/heart/gland/egg,
/turf/open/floor/plating/abductor,
/area/shuttle/escape)
"JK" = (
diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin_cyborg_mothership.dmm
index 4e0fff656e8..7864564eab1 100644
--- a/_maps/shuttles/ruin_cyborg_mothership.dmm
+++ b/_maps/shuttles/ruin_cyborg_mothership.dmm
@@ -480,7 +480,7 @@
/turf/open/floor/circuit/airless,
/area/shuttle/ruin/cyborg_mothership)
"yQ" = (
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
/obj/structure/cable,
/turf/open/floor/circuit/airless,
/area/shuttle/ruin/cyborg_mothership)
diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm
index 0192f6aa118..b895743cab0 100644
--- a/_maps/shuttles/whiteship_kilo.dmm
+++ b/_maps/shuttles/whiteship_kilo.dmm
@@ -100,7 +100,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
-/obj/item/organ/internal/stomach,
+/obj/item/organ/stomach,
/obj/item/trash/syndi_cakes,
/obj/effect/turf_decal/tile/bar{
dir = 1
diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm
index 4a791a320d2..5d5acde1c35 100644
--- a/_maps/templates/lazy_templates/ninja_den.dmm
+++ b/_maps/templates/lazy_templates/ninja_den.dmm
@@ -1696,8 +1696,8 @@
/obj/item/reagent_containers/medigel/synthflesh,
/obj/item/reagent_containers/medigel/synthflesh,
/obj/item/reagent_containers/medigel/synthflesh,
-/obj/item/organ/internal/heart/cybernetic/tier2,
-/obj/item/organ/internal/heart/cybernetic/tier2,
+/obj/item/organ/heart/cybernetic/tier2,
+/obj/item/organ/heart/cybernetic/tier2,
/obj/item/defibrillator,
/turf/open/floor/iron/sepia,
/area/centcom/central_command_areas/holding)
diff --git a/_maps/virtual_domains/abductor_ship.dmm b/_maps/virtual_domains/abductor_ship.dmm
index b182c50ed66..b74435a9ab1 100644
--- a/_maps/virtual_domains/abductor_ship.dmm
+++ b/_maps/virtual_domains/abductor_ship.dmm
@@ -63,7 +63,7 @@
/area/virtual_domain)
"kl" = (
/obj/structure/table_frame/abductor,
-/obj/item/organ/internal/lungs{
+/obj/item/organ/lungs{
pixel_x = 8;
pixel_y = 7
},
@@ -247,7 +247,7 @@
/turf/open/floor/plating/abductor,
/area/virtual_domain)
"JC" = (
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
/turf/open/floor/plating/abductor,
/area/virtual_domain)
"JR" = (
@@ -298,7 +298,7 @@
/turf/open/floor/plating/abductor,
/area/virtual_domain)
"PB" = (
-/obj/item/organ/external/antennae,
+/obj/item/organ/antennae,
/turf/open/floor/plating/abductor,
/area/virtual_domain)
"Qp" = (
diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index f68641b2984..d1fff3b20ed 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -452,3 +452,9 @@ GLOBAL_LIST_INIT(heretic_path_to_color, list(
#define CM_COLOR_SAT_MAX 0.7
#define CM_COLOR_LUM_MIN 0.65
#define CM_COLOR_LUM_MAX 0.75
+
+// Lowest priority
+#define EYE_COLOR_ORGAN_PRIORITY 1
+#define EYE_COLOR_SPECIES_PRIORITY 10
+#define EYE_COLOR_WEED_PRIORITY 20
+#define EYE_COLOR_CULT_PRIORITY 30
diff --git a/code/__DEFINES/dcs/signals/signals_mod.dm b/code/__DEFINES/dcs/signals/signals_mod.dm
index 09b29c93784..58fd8ca689e 100644
--- a/code/__DEFINES/dcs/signals/signals_mod.dm
+++ b/code/__DEFINES/dcs/signals/signals_mod.dm
@@ -5,10 +5,12 @@
#define COMSIG_MOD_DEPLOYED "mod_deployed"
/// Called when a MOD user retracts one or more of its parts.
#define COMSIG_MOD_RETRACTED "mod_retracted"
-/// Called when a MOD deploys a part.
+/// Called when a MOD deploys a part. (mob/user, datum/mod_part/part)
#define COMSIG_MOD_PART_DEPLOYED "mod_part_deployed"
-/// Called when a MOD retracts a part.
+/// Called when a MOD retracts a part. (mob/user, datum/mod_part/part)
#define COMSIG_MOD_PART_RETRACTED "mod_part_retracted"
+/// Called when a MOD seals/unseals a part. (datum/mod_part/part)
+#define COMSIG_MOD_PART_SEALED "mod_part_sealed"
/// Called when a MOD is finished toggling itself.
#define COMSIG_MOD_TOGGLED "mod_toggled"
/// Called when a MOD activation is called from toggle_activate(mob/user)
diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm
index 53ac323b61c..2b6c1b32206 100644
--- a/code/__DEFINES/dcs/signals/signals_object.dm
+++ b/code/__DEFINES/dcs/signals/signals_object.dm
@@ -358,10 +358,10 @@
//called in /obj/item/tank/jetpack/proc/turn_off() : ()
#define COMSIG_JETPACK_DEACTIVATED "jetpack_deactivated"
-//called in /obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle() : ()
+//called in /obj/item/organ/cyberimp/chest/thrusters/proc/toggle() : ()
#define COMSIG_THRUSTER_ACTIVATED "jetmodule_activated"
#define THRUSTER_ACTIVATION_FAILED (1<<0)
-//called in /obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle() : ()
+//called in /obj/item/organ/cyberimp/chest/thrusters/proc/toggle() : ()
#define COMSIG_THRUSTER_DEACTIVATED "jetmodule_deactivated"
// /obj/item/camera signals
diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm
index 79b0546283d..baf0ef93195 100644
--- a/code/__DEFINES/inventory.dm
+++ b/code/__DEFINES/inventory.dm
@@ -297,7 +297,7 @@ GLOBAL_LIST_INIT(mining_suit_allowed, list(
/obj/item/kinetic_crusher,
/obj/item/knife,
/obj/item/mining_scanner,
- /obj/item/organ/internal/monster_core,
+ /obj/item/organ/monster_core,
/obj/item/storage/bag/ore,
/obj/item/pickaxe,
/obj/item/resonator,
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index b6aa66a5b1e..26baf699409 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -115,7 +115,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define ismoth(A) (is_species(A, /datum/species/moth))
#define isfelinid(A) (is_species(A, /datum/species/human/felinid))
#define isethereal(A) (is_species(A, /datum/species/ethereal))
-#define isvampire(A) (is_species(A,/datum/species/vampire))
+#define isvampire(A) (is_species(A,/datum/species/human/vampire))
#define isdullahan(A) (is_species(A, /datum/species/dullahan))
#define ismonkey(A) (is_species(A, /datum/species/monkey))
#define isandroid(A) (is_species(A, /datum/species/android))
@@ -257,10 +257,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define isorgan(A) (istype(A, /obj/item/organ))
-#define isinternalorgan(A) (istype(A, /obj/item/organ/internal))
-
-#define isexternalorgan(A) (istype(A, /obj/item/organ/external))
-
#define isclothing(A) (istype(A, /obj/item/clothing))
#define ispickedupmob(A) (istype(A, /obj/item/clothing/head/mob_holder)) // Checks if clothing item is actually a held mob
diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm
index 08e18af74d1..bf0271ca5a9 100644
--- a/code/__DEFINES/reagents.dm
+++ b/code/__DEFINES/reagents.dm
@@ -25,7 +25,7 @@
// Reagent exposure methods.
/// Used for splashing.
#define TOUCH (1<<0)
-/// Used for ingesting the reagents. Food, drinks, inhaling smoke.
+/// Used for ingesting the reagents. Food and drinks.
#define INGEST (1<<1)
/// Used by foams, sprays, and blob attacks.
#define VAPOR (1<<2)
@@ -35,6 +35,8 @@
#define INJECT (1<<4)
/// Exclusive to just plumbing. if set we use the round robin technique else we use proportional
#define LINEAR (1<<5)
+/// Used by smoke or inhaling from a source. Smoke and cigarettes.
+#define INHALE (1<<6)
/// When returned by on_mob_life(), on_mob_dead(), overdose_start() or overdose_processed(), will cause the mob to updatehealth() afterwards
#define UPDATE_MOB_HEALTH 1
diff --git a/code/__DEFINES/research/anomalies.dm b/code/__DEFINES/research/anomalies.dm
index 49769e8132e..c6060298fe2 100644
--- a/code/__DEFINES/research/anomalies.dm
+++ b/code/__DEFINES/research/anomalies.dm
@@ -26,26 +26,26 @@ GLOBAL_LIST_INIT(bioscrambler_parts_blacklist, typecacheof(list(
/// Blacklist of organs which should not appear when bioscrambled.
/// Either will look terrible outside of intended host, give you magical powers, are irreversible, or kill you
GLOBAL_LIST_INIT(bioscrambler_organs_blacklist, typecacheof(list (
- /obj/item/organ/external/pod_hair,
- /obj/item/organ/external/spines,
- /obj/item/organ/external/wings,
- /obj/item/organ/external/wings/functional,
- /obj/item/organ/internal/alien,
- /obj/item/organ/internal/brain,
- /obj/item/organ/internal/body_egg,
- /obj/item/organ/internal/cyberimp,
- /obj/item/organ/internal/ears/dullahan,
- /obj/item/organ/internal/eyes/dullahan,
- /obj/item/organ/internal/heart/cursed,
- /obj/item/organ/internal/heart/demon,
- /obj/item/organ/internal/lungs,
- /obj/item/organ/internal/monster_core,
- /obj/item/organ/internal/tongue/dullahan,
- /obj/item/organ/internal/vocal_cords/colossus,
- /obj/item/organ/internal/zombie_infection,
- /obj/item/organ/internal/empowered_borer_egg, // NOVA EDIT ADDITION
- /obj/item/organ/internal/eyes/robotic, // NOVA EDIT ADDITION
- /obj/item/organ/internal/eyes/night_vision/cyber, // NOVA EDIT ADDITION
+ /obj/item/organ/pod_hair,
+ /obj/item/organ/spines,
+ /obj/item/organ/wings,
+ /obj/item/organ/wings/functional,
+ /obj/item/organ/alien,
+ /obj/item/organ/brain,
+ /obj/item/organ/body_egg,
+ /obj/item/organ/cyberimp,
+ /obj/item/organ/ears/dullahan,
+ /obj/item/organ/eyes/dullahan,
+ /obj/item/organ/heart/cursed,
+ /obj/item/organ/heart/demon,
+ /obj/item/organ/lungs,
+ /obj/item/organ/monster_core,
+ /obj/item/organ/tongue/dullahan,
+ /obj/item/organ/vocal_cords/colossus,
+ /obj/item/organ/zombie_infection,
+ /obj/item/organ/empowered_borer_egg, // NOVA EDIT ADDITION
+ /obj/item/organ/eyes/robotic, // NOVA EDIT ADDITION
+ /obj/item/organ/eyes/night_vision/cyber, // NOVA EDIT ADDITION
)))
/// List of body parts we can apply to people
diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm
index 9f0cdf853d1..0bdb104d039 100644
--- a/code/__DEFINES/surgery.dm
+++ b/code/__DEFINES/surgery.dm
@@ -30,9 +30,11 @@
#define ORGAN_PROMINENT (1<<11)
/// An organ that is ostensibly dangerous when inside a body
#define ORGAN_HAZARDOUS (1<<12)
+/// This is an external organ, not an inner one. Used in several checks.
+#define ORGAN_EXTERNAL (1<<13)
// NOVA EDIT ADDITION START - Customization
/// Synthetic organ granted by a species (for use for organ replacements between species)
-#define ORGAN_SYNTHETIC_FROM_SPECIES (1<<13)
+#define ORGAN_SYNTHETIC_FROM_SPECIES (1<<14)
// NOVA EDIT ADDITION END
/// Scarring on the right eye
diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm
index a5b89445425..01c13a05c2d 100644
--- a/code/__DEFINES/traits/declarations.dm
+++ b/code/__DEFINES/traits/declarations.dm
@@ -619,7 +619,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
// example. Through years of training/abuse, their livers have taken
// a liking to those substances. Steal a sec officer's liver, eat donuts good.
-// These traits are applied to /obj/item/organ/internal/liver
+// These traits are applied to /obj/item/organ/liver
#define TRAIT_LAW_ENFORCEMENT_METABOLISM "law_enforcement_metabolism"
#define TRAIT_CULINARY_METABOLISM "culinary_metabolism"
#define TRAIT_COMEDY_METABOLISM "comedy_metabolism"
diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm
index 0045cfd111f..3552bea70cc 100644
--- a/code/__DEFINES/traits/sources.dm
+++ b/code/__DEFINES/traits/sources.dm
@@ -273,7 +273,7 @@
/**
* Trait granted by [/mob/living/carbon/Initialize] and
-* granted/removed by [/obj/item/organ/internal/tongue]
+* granted/removed by [/obj/item/organ/tongue]
* Used for ensuring that carbons without tongues cannot taste anything
* so it is added in Initialize, and then removed when a tongue is inserted
* and readded when a tongue is removed.
diff --git a/code/__DEFINES/~nova_defines/signals.dm b/code/__DEFINES/~nova_defines/signals.dm
index b417f8c0a31..39b2e7013b2 100644
--- a/code/__DEFINES/~nova_defines/signals.dm
+++ b/code/__DEFINES/~nova_defines/signals.dm
@@ -58,7 +58,7 @@
//when someone pulls back their fishing rod
#define COMSIG_FINISH_FISHING "finish_fishing"
-/// From /obj/item/organ/internal/stomach/after_eat(atom/edible)
+/// From /obj/item/organ/stomach/after_eat(atom/edible)
#define COMSIG_STOMACH_AFTER_EAT "stomach_after_eat"
/// For when a Hemophage's pulsating tumor gets added to their body.
diff --git a/code/__HELPERS/honkerblast.dm b/code/__HELPERS/honkerblast.dm
index f49a5ca4aca..4f1f6b71dd3 100644
--- a/code/__HELPERS/honkerblast.dm
+++ b/code/__HELPERS/honkerblast.dm
@@ -23,7 +23,7 @@
victim.Stun(100)
victim.adjust_stutter(30 SECONDS)
victim.set_jitter_if_lower(1000 SECONDS)
- var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
ears?.adjustEarDamage(10, 15)
to_chat(victim, "HONK")
var/obj/item/clothing/shoes/victim_shoes = victim.get_item_by_slot(ITEM_SLOT_FEET)
@@ -35,13 +35,13 @@
victim.Paralyze(20)
victim.Stun(50)
victim.set_jitter_if_lower(500 SECONDS)
- var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
ears?.adjustEarDamage(7, 10)
to_chat(victim, "HONK")
for(var/mob/living/carbon/victim in lightly_honked)
victim.Knockdown(20)
victim.set_jitter_if_lower(200 SECONDS)
- var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
ears?.adjustEarDamage(4, 5)
to_chat(victim, "HONK")
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index f29ba81366c..47286c26c57 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -772,7 +772,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
mob_occupant = occupant
else if(isorgan(occupant))
- var/obj/item/organ/internal/brain/brain = occupant
+ var/obj/item/organ/brain/brain = occupant
mob_occupant = brain.brainmob
return mob_occupant
diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm
index aca1f97e624..5fd8f6dfa89 100644
--- a/code/_globalvars/lists/quirks.dm
+++ b/code/_globalvars/lists/quirks.dm
@@ -27,8 +27,8 @@ GLOBAL_LIST_INIT(part_choice_transhuman, list(
"Right Arm" = /obj/item/bodypart/arm/right/robot,
"Left Leg" = /obj/item/bodypart/leg/left/robot,
"Right Leg" = /obj/item/bodypart/leg/right/robot,
- "Robotic Voice Box" = /obj/item/organ/internal/tongue/robot,
- "Flashlights for Eyes" = /obj/item/organ/internal/eyes/robotic/flashlight,
+ "Robotic Voice Box" = /obj/item/organ/tongue/robot,
+ "Flashlights for Eyes" = /obj/item/organ/eyes/robotic/flashlight,
))
///Hemiplegic Quirk
diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm
index 6248eccd7e1..d6677a213a4 100644
--- a/code/_globalvars/phobias.dm
+++ b/code/_globalvars/phobias.dm
@@ -125,8 +125,8 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/item/gun/energy/alien,
/obj/item/hemostat/alien,
/obj/item/melee/baton/abductor,
- /obj/item/organ/internal/body_egg/alien_embryo,
- /obj/item/organ/internal/heart/gland,
+ /obj/item/organ/body_egg/alien_embryo,
+ /obj/item/organ/heart/gland,
/obj/item/radio/headset/abductor,
/obj/item/retractor/alien,
/obj/item/scalpel/alien,
@@ -255,10 +255,10 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/item/grenade/spawnergrenade/spesscarp,
/obj/item/knife/carp,
/obj/item/nullrod/carp,
- /obj/item/organ/internal/lungs/carp,
- /obj/item/organ/internal/tongue/carp,
- /obj/item/organ/internal/brain/carp,
- /obj/item/organ/internal/heart/carp,
+ /obj/item/organ/lungs/carp,
+ /obj/item/organ/tongue/carp,
+ /obj/item/organ/brain/carp,
+ /obj/item/organ/heart/carp,
/obj/item/storage/fancy/cigarettes/cigpack_carp,
/obj/item/stack/sheet/animalhide/carp,
/obj/item/toy/plush/carpplushie,
@@ -434,7 +434,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/item/clothing/head/costume/lizard,
/obj/item/clothing/shoes/cowboy/lizard,
/obj/item/food/kebab/tail,
- /obj/item/organ/external/tail/lizard,
+ /obj/item/organ/tail/lizard,
/obj/item/reagent_containers/cup/glass/bottle/lizardwine,
/obj/item/toy/plush/lizard_plushie,
)),
@@ -476,7 +476,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/effect/decal/remains/human,
/obj/item/clothing/suit/armor/bone,
/obj/item/food/meat/slab/human/mutant/skeleton,
- /obj/item/organ/internal/tongue/bone,
+ /obj/item/organ/tongue/bone,
/obj/item/stack/sheet/bone,
)),
"snakes" = typecacheof(list(
diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm
index 6c1ff83cde2..7da9ea16a45 100644
--- a/code/_globalvars/traits/_traits.dm
+++ b/code/_globalvars/traits/_traits.dm
@@ -680,7 +680,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_LIVING_HEART" = TRAIT_LIVING_HEART,
"TRAIT_USED_ORGAN" = TRAIT_USED_ORGAN,
),
- /obj/item/organ/internal/liver = list(
+ /obj/item/organ/liver = list(
"TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST,
"TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM,
"TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM,
@@ -693,7 +693,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM,
"TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM,
),
- /obj/item/organ/internal/lungs = list(
+ /obj/item/organ/lungs = list(
"TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING,
),
/obj/machinery/modular_computer = list(
diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm
index 1058b1d0b40..b5488683779 100644
--- a/code/_globalvars/traits/admin_tooling.dm
+++ b/code/_globalvars/traits/admin_tooling.dm
@@ -380,7 +380,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_ROD_LAVA_USABLE" = TRAIT_ROD_LAVA_USABLE,
"TRAIT_ROD_REMOVE_FISHING_DUD" = TRAIT_ROD_REMOVE_FISHING_DUD,
),
- /obj/item/organ/internal/liver = list(
+ /obj/item/organ/liver = list(
"TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST,
"TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM,
"TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM,
@@ -392,7 +392,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM,
"TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM,
),
- /obj/item/organ/internal/lungs = list(
+ /obj/item/organ/lungs = list(
"TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING,
),
// NOVA EDIT ADDITION START - NOVA TRAITS
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 1b3f950edd6..5eaff57b609 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -129,7 +129,7 @@
//Gas alerts
// Gas alerts are continuously thrown/cleared by:
-// * /obj/item/organ/internal/lungs/proc/check_breath()
+// * /obj/item/organ/lungs/proc/check_breath()
// * /mob/living/carbon/check_breath()
// * /mob/living/carbon/human/check_breath()
// * /datum/element/atmos_requirements/proc/on_non_stasis_life()
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 4269727e3ea..bf460c97fea 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -333,7 +333,7 @@
var/obj/item/bodypart/head/head = human_mob.get_bodypart(BODY_ZONE_HEAD)
if(isnull(head))
blocked_slots |= ITEM_SLOT_HEAD|ITEM_SLOT_EARS|ITEM_SLOT_EYES|ITEM_SLOT_MASK
- var/obj/item/organ/internal/eyes/eyes = human_mob.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = human_mob.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes?.no_glasses)
blocked_slots |= ITEM_SLOT_EYES
if(human_mob.bodyshape & BODYSHAPE_DIGITIGRADE)
diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
index 4641e4f0e50..da9eba3fde7 100644
--- a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
+++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
@@ -863,7 +863,7 @@
candidates = living_players
for(var/mob/living/carbon/human/candidate in candidates)
if( \
- !candidate.get_organ_by_type(/obj/item/organ/internal/brain) \
+ !candidate.get_organ_by_type(/obj/item/organ/brain) \
|| candidate.mind.has_antag_datum(/datum/antagonist/obsessed) \
|| candidate.stat == DEAD \
|| !(ROLE_OBSESSED in candidate.client?.prefs?.be_special) \
diff --git a/code/datums/actions/items/toggles.dm b/code/datums/actions/items/toggles.dm
index f450b96fc2a..efd9725691a 100644
--- a/code/datums/actions/items/toggles.dm
+++ b/code/datums/actions/items/toggles.dm
@@ -90,7 +90,7 @@
. = ..()
if(!.)
return
- var/obj/item/organ/internal/cyberimp/eyes/hud/hud_implant = target
+ var/obj/item/organ/cyberimp/eyes/hud/hud_implant = target
hud_implant.toggle_hud(owner)
/datum/action/item_action/wheelys
diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm
index 9d459f3160c..0074d206983 100644
--- a/code/datums/ai/monkey/monkey_controller.dm
+++ b/code/datums/ai/monkey/monkey_controller.dm
@@ -123,8 +123,8 @@ have ways of interacting with a specific mob and control it.
/datum/ai_controller/monkey/proc/set_trip_mode(mode = TRUE)
var/mob/living/carbon/regressed_monkey = pawn
var/brain = regressed_monkey.get_organ_slot(ORGAN_SLOT_BRAIN)
- if(istype(brain, /obj/item/organ/internal/brain/primate)) // In case we are a monkey AI in a human brain by who was previously controlled by a client but it now not by some marvel
- var/obj/item/organ/internal/brain/primate/monkeybrain = brain
+ if(istype(brain, /obj/item/organ/brain/primate)) // In case we are a monkey AI in a human brain by who was previously controlled by a client but it now not by some marvel
+ var/obj/item/organ/brain/primate/monkeybrain = brain
monkeybrain.tripping = mode
///re-used behavior pattern by monkeys for finding a weapon
diff --git a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
index df7123e6f19..e6d6ae24f31 100644
--- a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
+++ b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
@@ -8,6 +8,11 @@
///The color this organ draws with. Updated by bodypart/inherit_color()
var/draw_color
+ ///Override of the color of the organ, from dye sprays
+ var/dye_color
+ ///Can this bodypart overlay be dyed?
+ var/dyable = FALSE
+
///Where does this organ inherit its color from?
var/color_source = ORGAN_COLOR_INHERIT
///Take on the dna/preference from whoever we're gonna be inserted in
@@ -93,7 +98,7 @@
return appearance
/datum/bodypart_overlay/mutant/color_image(image/overlay, layer, obj/item/bodypart/limb)
- overlay.color = sprite_datum.color_src ? draw_color : null
+ overlay.color = sprite_datum.color_src ? (dye_color || draw_color) : null
/datum/bodypart_overlay/mutant/added_to_limb(obj/item/bodypart/limb)
inherit_color(limb)
@@ -113,7 +118,7 @@
. = list()
. += "[get_base_icon_state()]"
. += "[feature_key]"
- . += "[draw_color]"
+ . += "[dye_color || draw_color]"
return .
///Return a dumb glob list for this specific feature (called from parse_sprite)
@@ -173,3 +178,10 @@
else
CRASH("External organ [type] had fetch_sprite_datum called with a null accessory name!")
+///From dye sprays. Set the dye_color (draw_color override) of this organ to a new value.
+/datum/bodypart_overlay/mutant/proc/set_dye_color(new_color, obj/item/organ/organ)
+ dye_color = new_color
+ if(organ.owner)
+ organ.owner.update_body_parts()
+ else
+ organ.bodypart_owner?.update_icon_dropped()
diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm
index 8f0f8cfb048..422ad075ea0 100644
--- a/code/datums/brain_damage/brain_trauma.dm
+++ b/code/datums/brain_damage/brain_trauma.dm
@@ -8,7 +8,7 @@
var/desc = "A trauma caused by brain damage, which causes issues to the patient."
var/scan_desc = "generic brain trauma" //description when detected by a health scanner
var/mob/living/carbon/owner //the poor bastard
- var/obj/item/organ/internal/brain/brain //the poor bastard's brain
+ var/obj/item/organ/brain/brain //the poor bastard's brain
var/gain_text = span_notice("You feel traumatized.")
var/lose_text = span_notice("You no longer feel traumatized.")
var/can_gain = TRUE
diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm
index 198b6746317..195d33c4b4b 100644
--- a/code/datums/brain_damage/split_personality.dm
+++ b/code/datums/brain_damage/split_personality.dm
@@ -191,7 +191,7 @@
var/codeword
var/objective
-/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/internal/brain/B, _permanent, _codeword, _objective)
+/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/brain/B, _permanent, _codeword, _objective)
..()
if(_codeword)
codeword = _codeword
diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm
index f1aa865e0cb..0602624dbb8 100644
--- a/code/datums/components/crafting/entertainment.dm
+++ b/code/datums/components/crafting/entertainment.dm
@@ -22,7 +22,7 @@
result = /obj/item/toy/plush/moth
reqs = list(
/obj/item/stack/sheet/animalhide/mothroach = 1,
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/heart = 1,
/obj/item/stack/sheet/cloth = 3,
)
category = CAT_ENTERTAINMENT
diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm
index d6d3c178e9b..205d30da456 100644
--- a/code/datums/components/crafting/equipment.dm
+++ b/code/datums/components/crafting/equipment.dm
@@ -156,7 +156,7 @@
/datum/crafting_recipe/flashlight_eyes
name = "Flashlight Eyes"
- result = /obj/item/organ/internal/eyes/robotic/flashlight
+ result = /obj/item/organ/eyes/robotic/flashlight
time = 10
reqs = list(
/obj/item/flashlight = 2,
diff --git a/code/datums/components/crafting/melee_weapon.dm b/code/datums/components/crafting/melee_weapon.dm
index b8771257cfa..a8805c56577 100644
--- a/code/datums/components/crafting/melee_weapon.dm
+++ b/code/datums/components/crafting/melee_weapon.dm
@@ -37,10 +37,10 @@
name = "Tail Club"
result = /obj/item/tailclub
reqs = list(
- /obj/item/organ/external/tail/lizard = 1,
+ /obj/item/organ/tail/lizard = 1,
/obj/item/stack/sheet/iron = 1,
)
- blacklist = list(/obj/item/organ/external/tail/lizard/fake)
+ blacklist = list(/obj/item/organ/tail/lizard/fake)
time = 4 SECONDS
category = CAT_WEAPON_MELEE
@@ -63,10 +63,10 @@
name = "Liz O' Nine Tails"
result = /obj/item/melee/chainofcommand/tailwhip
reqs = list(
- /obj/item/organ/external/tail/lizard = 1,
+ /obj/item/organ/tail/lizard = 1,
/obj/item/stack/cable_coil = 1,
)
- blacklist = list(/obj/item/organ/external/tail/lizard/fake)
+ blacklist = list(/obj/item/organ/tail/lizard/fake)
time = 4 SECONDS
category = CAT_WEAPON_MELEE
@@ -74,7 +74,7 @@
name = "Cat O' Nine Tails"
result = /obj/item/melee/chainofcommand/tailwhip/kitty
reqs = list(
- /obj/item/organ/external/tail/cat = 1,
+ /obj/item/organ/tail/cat = 1,
/obj/item/stack/cable_coil = 1,
)
time = 4 SECONDS
diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm
index 09c8455a77b..21abedb8b47 100644
--- a/code/datums/components/crafting/robot.dm
+++ b/code/datums/components/crafting/robot.dm
@@ -184,7 +184,7 @@
/obj/item/stack/cable_coil = 5,
/obj/item/stack/rods = 2,
/obj/item/stack/sheet/glass = 1,
- /obj/item/organ/internal/heart/ethereal = 1,
+ /obj/item/organ/heart/ethereal = 1,
)
category = CAT_ROBOT
diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/tailoring.dm
index 2196a88325a..45c021aca6c 100644
--- a/code/datums/components/crafting/tailoring.dm
+++ b/code/datums/components/crafting/tailoring.dm
@@ -253,7 +253,7 @@
name = "Lizard Cloche Hat"
result = /obj/item/clothing/head/costume/lizard
time = 1 SECONDS
- reqs = list(/obj/item/organ/external/tail/lizard = 1)
+ reqs = list(/obj/item/organ/tail/lizard = 1)
category = CAT_CLOTHING
/datum/crafting_recipe/lizardhat_alternate
@@ -268,8 +268,8 @@
result = /obj/item/clothing/head/costume/kitty/genuine
time = 1 SECONDS
reqs = list(
- /obj/item/organ/external/tail/cat = 1,
- /obj/item/organ/internal/ears/cat = 1,
+ /obj/item/organ/tail/cat = 1,
+ /obj/item/organ/ears/cat = 1,
)
category = CAT_CLOTHING
diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm
index 554e3d611ba..053782f6ed6 100644
--- a/code/datums/components/cult_ritual_item.dm
+++ b/code/datums/components/cult_ritual_item.dm
@@ -162,7 +162,7 @@
// For carbonss we also want to clear out the stomach of any holywater
if(iscarbon(target))
var/mob/living/carbon/carbon_target = target
- var/obj/item/organ/internal/stomach/belly = carbon_target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = carbon_target.get_organ_slot(ORGAN_SLOT_STOMACH)
if(belly)
holy_to_unholy += belly.reagents.get_reagent_amount(/datum/reagent/water/holywater)
belly.reagents.del_reagent(/datum/reagent/water/holywater)
diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm
index cfd04fc3ac2..62e446f5a28 100644
--- a/code/datums/components/food/edible.dm
+++ b/code/datums/components/food/edible.dm
@@ -212,10 +212,12 @@ Behavior that's still missing from this component that original food items had t
for(var/rid in reagents)
var/amount = reagents[rid]
- if(length(tastes) && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin))
- owner.reagents.add_reagent(rid, amount, tastes.Copy(), added_purity = reagent_purity)
- else
- owner.reagents.add_reagent(rid, amount, added_purity = reagent_purity)
+ if(length(tastes) && ispath(rid, /datum/reagent/consumable/nutriment))
+ var/datum/reagent/consumable/nutriment/nid = rid
+ if(initial(nid.carry_food_tastes))
+ owner.reagents.add_reagent(rid, amount, tastes.Copy(), added_purity = reagent_purity)
+ continue
+ owner.reagents.add_reagent(rid, amount, added_purity = reagent_purity)
/datum/component/edible/proc/examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
@@ -282,7 +284,7 @@ Behavior that's still missing from this component that original food items had t
examine_list += span_notice("It could use a little more Sodium Chloride...")
if (isliving(user))
var/mob/living/living_user = user
- living_user.taste(owner.reagents)
+ living_user.taste_container(owner.reagents)
/datum/component/edible/proc/UseFromHand(obj/item/source, mob/living/M, mob/living/user)
SIGNAL_HANDLER
@@ -499,7 +501,7 @@ Behavior that's still missing from this component that original food items had t
//Invoke the eater's stomach's after_eat callback if valid
if(iscarbon(eater))
var/mob/living/carbon/carbon_eater = eater
- var/obj/item/organ/internal/stomach/stomach = carbon_eater.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/stomach = carbon_eater.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.after_eat(owner)
@@ -686,7 +688,7 @@ Behavior that's still missing from this component that original food items had t
bitecount++
. = COMPONENT_CANCEL_ATTACK_CHAIN
- doggy.taste(food.reagents) // why should carbons get all the fun?
+ doggy.taste_container(food.reagents) // why should carbons get all the fun?
if(bitecount >= 5)
var/satisfaction_text = pick("burps from enjoyment.", "yaps for more!", "woofs twice.", "looks at the area where \the [food] was.")
doggy.manual_emote(satisfaction_text)
diff --git a/code/datums/components/ghostrole_on_revive.dm b/code/datums/components/ghostrole_on_revive.dm
index cc09d99643b..d9638b2d46a 100644
--- a/code/datums/components/ghostrole_on_revive.dm
+++ b/code/datums/components/ghostrole_on_revive.dm
@@ -17,10 +17,10 @@
prepare_mob(parent)
return
- if(!istype(parent, /obj/item/organ/internal/brain))
+ if(!istype(parent, /obj/item/organ/brain))
return COMPONENT_INCOMPATIBLE
- var/obj/item/organ/internal/brain/brein = parent
+ var/obj/item/organ/brain/brein = parent
if(brein.owner)
prepare_mob(brein.owner)
else
@@ -34,7 +34,7 @@
if(iscarbon(liver))
var/mob/living/carbon/carbon = liver
- var/obj/item/organ/brain = carbon.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain = carbon.get_organ_by_type(/obj/item/organ/brain)
if(brain)
RegisterSignal(brain, COMSIG_ORGAN_REMOVED, PROC_REF(on_remove))
@@ -57,7 +57,7 @@
RegisterSignal(brein, COMSIG_ORGAN_IMPLANTED, PROC_REF(prepare_mob_from_brain))
UnregisterSignal(brein, COMSIG_ORGAN_REMOVED)
-/datum/component/ghostrole_on_revive/proc/prepare_mob_from_brain(obj/item/organ/internal/brain/brein, mob/living/owner)
+/datum/component/ghostrole_on_revive/proc/prepare_mob_from_brain(obj/item/organ/brain/brein, mob/living/owner)
SIGNAL_HANDLER
UnregisterSignal(brein, COMSIG_ORGAN_IMPLANTED)
@@ -111,8 +111,8 @@
var/mob/living/living
if(isliving(parent))
living = parent
- else if(istype(parent, /obj/item/organ/internal/brain))
- var/obj/item/organ/internal/brain/brain = parent
+ else if(istype(parent, /obj/item/organ/brain))
+ var/obj/item/organ/brain/brain = parent
living = brain.owner
living?.med_hud_set_status()
diff --git a/code/datums/components/heart_eater.dm b/code/datums/components/heart_eater.dm
index 722c4b1636d..122716b3be5 100644
--- a/code/datums/components/heart_eater.dm
+++ b/code/datums/components/heart_eater.dm
@@ -44,7 +44,7 @@
/datum/component/heart_eater/proc/prepare_species(mob/living/carbon/human/eater)
if(eater.get_liked_foodtypes() & GORE)
return
- var/obj/item/organ/internal/tongue/eater_tongue = eater.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/eater_tongue = eater.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!eater_tongue)
return
eater_tongue.disliked_foodtypes &= ~GORE
@@ -62,10 +62,10 @@
if(get_area(eater) == GLOB.areas_by_type[/area/centcom/wizard_station])
return
- if(!istype(what_we_ate, /obj/item/organ/internal/heart))
+ if(!istype(what_we_ate, /obj/item/organ/heart))
return
- var/obj/item/organ/internal/heart/we_ate_heart = what_we_ate
- var/obj/item/organ/internal/heart/previous_heart = last_heart_we_ate?.resolve()
+ var/obj/item/organ/heart/we_ate_heart = what_we_ate
+ var/obj/item/organ/heart/previous_heart = last_heart_we_ate?.resolve()
if(we_ate_heart == previous_heart)
return
if (!HAS_TRAIT(we_ate_heart, TRAIT_USED_ORGAN))
diff --git a/code/datums/components/ling_decoy_brain.dm b/code/datums/components/ling_decoy_brain.dm
index 917e8f2fbbd..d6368aeee0e 100644
--- a/code/datums/components/ling_decoy_brain.dm
+++ b/code/datums/components/ling_decoy_brain.dm
@@ -6,7 +6,7 @@
VAR_FINAL/datum/action/changeling/mmi_talk/talk_action
/datum/component/ling_decoy_brain/Initialize(datum/antagonist/changeling/ling)
- if(!istype(parent, /obj/item/organ/internal/brain))
+ if(!istype(parent, /obj/item/organ/brain))
return COMPONENT_INCOMPATIBLE
if(isnull(ling))
stack_trace("[type] instantiated without a changeling to link to.")
@@ -22,13 +22,13 @@
return ..()
/datum/component/ling_decoy_brain/RegisterWithParent()
- var/obj/item/organ/internal/brain/ling_brain = parent
+ var/obj/item/organ/brain/ling_brain = parent
ling_brain.organ_flags &= ~ORGAN_VITAL
ling_brain.decoy_override = TRUE
RegisterSignal(ling_brain, COMSIG_ATOM_ENTERING, PROC_REF(entered_mmi))
/datum/component/ling_decoy_brain/UnregisterFromParent()
- var/obj/item/organ/internal/brain/ling_brain = parent
+ var/obj/item/organ/brain/ling_brain = parent
ling_brain.organ_flags |= ORGAN_VITAL
ling_brain.decoy_override = FALSE
UnregisterSignal(ling_brain, COMSIG_ATOM_ENTERING, PROC_REF(entered_mmi))
@@ -38,7 +38,7 @@
*
* Unfortunately this is hooked on Entering rather than its own dedicated MMI signal becuase MMI code is a fuck
*/
-/datum/component/ling_decoy_brain/proc/entered_mmi(obj/item/organ/internal/brain/source, atom/entering, atom/old_loc, ...)
+/datum/component/ling_decoy_brain/proc/entered_mmi(obj/item/organ/brain/source, atom/entering, atom/old_loc, ...)
SIGNAL_HANDLER
var/mob/living/the_real_ling = parent_ling.owner.current
diff --git a/code/datums/components/manual_blinking.dm b/code/datums/components/manual_blinking.dm
index 67229a8b85f..f7d7d65e5d1 100644
--- a/code/datums/components/manual_blinking.dm
+++ b/code/datums/components/manual_blinking.dm
@@ -1,7 +1,7 @@
/datum/component/manual_blinking
dupe_mode = COMPONENT_DUPE_UNIQUE
- var/obj/item/organ/internal/eyes/E
+ var/obj/item/organ/eyes/E
var/warn_grace = FALSE
var/warn_dying = FALSE
var/last_blink
@@ -69,18 +69,18 @@
/datum/component/manual_blinking/proc/check_added_organ(mob/who_cares, obj/item/organ/O)
SIGNAL_HANDLER
- var/obj/item/organ/internal/eyes/new_eyes = O
+ var/obj/item/organ/eyes/new_eyes = O
- if(istype(new_eyes,/obj/item/organ/internal/eyes))
+ if(istype(new_eyes,/obj/item/organ/eyes))
E = new_eyes
START_PROCESSING(SSdcs, src)
/datum/component/manual_blinking/proc/check_removed_organ(mob/who_cares, obj/item/organ/O)
SIGNAL_HANDLER
- var/obj/item/organ/internal/eyes/bye_beyes = O // oh come on, that's pretty good
+ var/obj/item/organ/eyes/bye_beyes = O // oh come on, that's pretty good
- if(istype(bye_beyes, /obj/item/organ/internal/eyes))
+ if(istype(bye_beyes, /obj/item/organ/eyes))
E = null
STOP_PROCESSING(SSdcs, src)
diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm
index d8d4fea07d9..8e5f096766a 100644
--- a/code/datums/components/manual_breathing.dm
+++ b/code/datums/components/manual_breathing.dm
@@ -1,7 +1,7 @@
/datum/component/manual_breathing
dupe_mode = COMPONENT_DUPE_UNIQUE
- var/obj/item/organ/internal/lungs/L
+ var/obj/item/organ/lungs/L
var/warn_grace = FALSE
var/warn_dying = FALSE
var/last_breath
@@ -71,18 +71,18 @@
/datum/component/manual_breathing/proc/check_added_organ(mob/who_cares, obj/item/organ/O)
SIGNAL_HANDLER
- var/obj/item/organ/internal/eyes/new_lungs = O
+ var/obj/item/organ/eyes/new_lungs = O
- if(istype(new_lungs,/obj/item/organ/internal/lungs))
+ if(istype(new_lungs,/obj/item/organ/lungs))
L = new_lungs
START_PROCESSING(SSdcs, src)
/datum/component/manual_breathing/proc/check_removed_organ(mob/who_cares, obj/item/organ/O)
SIGNAL_HANDLER
- var/obj/item/organ/internal/lungs/old_lungs = O
+ var/obj/item/organ/lungs/old_lungs = O
- if(istype(old_lungs, /obj/item/organ/internal/lungs))
+ if(istype(old_lungs, /obj/item/organ/lungs))
L = null
STOP_PROCESSING(SSdcs, src)
diff --git a/code/datums/components/manual_heart.dm b/code/datums/components/manual_heart.dm
index 09448acfc67..d8d74854900 100644
--- a/code/datums/components/manual_heart.dm
+++ b/code/datums/components/manual_heart.dm
@@ -56,7 +56,7 @@
pump_action.Grant(parent)
var/mob/living/carbon/carbon_parent = parent
- var/obj/item/organ/internal/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
if(parent_heart && !HAS_TRAIT(carbon_parent, TRAIT_NOBLOOD) && carbon_parent.stat != DEAD)
START_PROCESSING(SSdcs, src)
COOLDOWN_START(src, heart_timer, pump_delay)
@@ -126,7 +126,7 @@
/datum/component/manual_heart/proc/check_added_organ(mob/organ_owner, obj/item/organ/new_organ)
SIGNAL_HANDLER
- var/obj/item/organ/internal/heart/new_heart = new_organ
+ var/obj/item/organ/heart/new_heart = new_organ
if(!istype(new_heart) || !check_valid())
return
@@ -141,7 +141,7 @@
/datum/component/manual_heart/proc/check_removed_organ(mob/organ_owner, obj/item/organ/removed_organ)
SIGNAL_HANDLER
- var/obj/item/organ/internal/heart/removed_heart = removed_organ
+ var/obj/item/organ/heart/removed_heart = removed_organ
if(istype(removed_heart))
pump_action.build_all_button_icons(UPDATE_BUTTON_STATUS)
@@ -150,7 +150,7 @@
///Helper proc to check if processing can be restarted.
/datum/component/manual_heart/proc/check_valid()
var/mob/living/carbon/carbon_parent = parent
- var/obj/item/organ/internal/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
return !isnull(parent_heart) && !HAS_TRAIT(carbon_parent, TRAIT_NOBLOOD) && carbon_parent.stat != DEAD
///Action to pump your heart. Cooldown will always be set to 1 second less than the pump delay.
@@ -171,7 +171,7 @@
var/mob/living/carbon/heart_haver = owner
if(!istype(heart_haver) || HAS_TRAIT(heart_haver, TRAIT_NOBLOOD) || heart_haver.stat == DEAD)
return FALSE
- var/obj/item/organ/internal/heart/heart_havers_heart = heart_haver.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart_havers_heart = heart_haver.get_organ_slot(ORGAN_SLOT_HEART)
if(isnull(heart_havers_heart))
return FALSE
return ..()
diff --git a/code/datums/components/phylactery.dm b/code/datums/components/phylactery.dm
index 572f816b5ad..9c96416f800 100644
--- a/code/datums/components/phylactery.dm
+++ b/code/datums/components/phylactery.dm
@@ -169,7 +169,7 @@
var/mob/living/carbon/human/lich = new(parent_turf)
ADD_TRAIT(lich, TRAIT_NO_SOUL, LICH_TRAIT)
- var/obj/item/organ/internal/brain/new_lich_brain = lich.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/new_lich_brain = lich.get_organ_slot(ORGAN_SLOT_BRAIN)
if(new_lich_brain) // Prevent MMI cheese
new_lich_brain.organ_flags &= ~ORGAN_VITAL
new_lich_brain.decoy_override = TRUE
@@ -201,7 +201,7 @@
var/mob/living/carbon/carbon_body = corpse
for(var/obj/item/organ/to_drop as anything in carbon_body.organs)
// Skip the brain - it can disappear, we don't need it anymore
- if(istype(to_drop, /obj/item/organ/internal/brain))
+ if(istype(to_drop, /obj/item/organ/brain))
continue
// For the rest, drop all the organs onto the floor (for style)
diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm
index fe723e4e804..8b6f744f144 100644
--- a/code/datums/components/riding/riding_mob.dm
+++ b/code/datums/components/riding/riding_mob.dm
@@ -329,7 +329,7 @@
TEXT_WEST = list(REGULAR_OFFSET, REGULAR_SIDE_OFFSET)
)
if (ride_check_flags & RIDING_TAUR)
- var/obj/item/organ/external/taur_body/taur_body = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/taur_body = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
return taur_body.get_riding_offset(oversized = HAS_TRAIT(H, TRAIT_OVERSIZED))
// NOVA EDIT ADDITION END
diff --git a/code/datums/components/sign_language.dm b/code/datums/components/sign_language.dm
index 054a4de4af0..478de762afc 100644
--- a/code/datums/components/sign_language.dm
+++ b/code/datums/components/sign_language.dm
@@ -75,7 +75,7 @@
SIGNAL_HANDLER
var/mob/living/carbon/carbon_parent = parent
- var/obj/item/organ/internal/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
if(tongue)
tongue.temp_say_mod = "signs"
//this speech relies on hands, which we have our own way of garbling speech when they're occupied, so we can have this always on
@@ -102,7 +102,7 @@
SIGNAL_HANDLER
var/mob/living/carbon/carbon_parent = parent
- var/obj/item/organ/internal/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
if(tongue)
tongue.temp_say_mod = ""
REMOVE_TRAIT(carbon_parent, TRAIT_SPEAKS_CLEARLY, SPEAKING_FROM_HANDS)
@@ -128,9 +128,9 @@
/datum/component/sign_language/proc/on_added_organ(mob/living/source, obj/item/organ/new_organ)
SIGNAL_HANDLER
- if(!istype(new_organ, /obj/item/organ/internal/tongue))
+ if(!istype(new_organ, /obj/item/organ/tongue))
return
- var/obj/item/organ/internal/tongue/new_tongue = new_organ
+ var/obj/item/organ/tongue/new_tongue = new_organ
new_tongue.temp_say_mod = "signs"
/// Signal proc for [COMSIG_MOB_TRY_SPEECH]
@@ -238,7 +238,7 @@
return SPELL_INVOCATION_ALWAYS_SUCCEED
/// Signal proc for [COMSIG_LIVING_TREAT_MESSAGE]
-/// Changes our message based on conditions that limit or alter our ability to communicate
+/// Changes our message based on conditions that limit or alter our ability to communicate
/datum/component/sign_language/proc/on_treat_living_message(atom/movable/source, list/message_args)
SIGNAL_HANDLER
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index afd8cce49e8..ca1bb82ace7 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -46,7 +46,7 @@
else if(isstructure(parent))
RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(use_squeak))
- if(istype(parent, /obj/item/organ/internal/liver))
+ if(istype(parent, /obj/item/organ/liver))
// Liver squeaking is depending on them functioning like a clown's liver
RegisterSignal(parent, SIGNAL_REMOVETRAIT(TRAIT_COMEDY_METABOLISM), PROC_REF(on_comedy_metabolism_removal))
diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm
index 53a0797c2e1..4dac194c158 100644
--- a/code/datums/components/supermatter_crystal.dm
+++ b/code/datums/components/supermatter_crystal.dm
@@ -130,7 +130,7 @@
)
return
- var/obj/item/organ/internal/tongue/licking_tongue = user.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/licking_tongue = user.get_organ_slot(ORGAN_SLOT_TONGUE)
if(licking_tongue)
dust_mob(source, user,
span_danger("As [user] hesitantly leans in and licks [atom_source] everything goes silent before [user.p_their()] body starts to glow and burst into flames before flashing to ash!"),
diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 9df4c57d328..a4652d354a5 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -399,13 +399,13 @@
if(HAS_TRAIT(tackle_target, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)) // riot armor and such
defense_mod += 5
- var/obj/item/organ/external/tail/lizard/el_tail = tackle_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/lizard/el_tail = tackle_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(HAS_TRAIT(tackle_target, TRAIT_TACKLING_TAILED_DEFENDER) && !el_tail)
defense_mod -= 1
if(el_tail && (el_tail.wag_flags & WAG_WAGGING)) // lizard tail wagging is robust and can swat away assailants!
defense_mod += 1
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = tackle_target.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = tackle_target.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
defense_mod += potential_spine.strength_bonus
@@ -434,14 +434,14 @@
attack_mod += 2
if(HAS_TRAIT(sacker, TRAIT_TACKLING_WINGED_ATTACKER))
- var/obj/item/organ/external/wings/moth/sacker_moth_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ var/obj/item/organ/wings/moth/sacker_moth_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
if(!sacker_moth_wing || sacker_moth_wing.burnt)
attack_mod -= 2
- var/obj/item/organ/external/wings/sacker_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ var/obj/item/organ/wings/sacker_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
if(sacker_wing)
attack_mod += 2
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = sacker.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = sacker.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
attack_mod += potential_spine.strength_bonus
@@ -508,7 +508,7 @@
if(HAS_TRAIT(user, TRAIT_HEAD_INJURY_BLOCKED))
oopsie_mod -= 6
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) // Can't snap that spine if it's made of metal.
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) // Can't snap that spine if it's made of metal.
if(istype(potential_spine))
oopsie_mod -= potential_spine.strength_bonus
diff --git a/code/datums/components/vision_hurting.dm b/code/datums/components/vision_hurting.dm
index acf2d186bb4..925395f3d39 100644
--- a/code/datums/components/vision_hurting.dm
+++ b/code/datums/components/vision_hurting.dm
@@ -16,7 +16,7 @@
for(var/mob/living/carbon/viewer in viewers(parent))
if(viewer.is_blind() || viewer.get_eye_protection() >= damage_per_second)
continue
- var/obj/item/organ/internal/eyes/burning_orbs = locate() in viewer.organs
+ var/obj/item/organ/eyes/burning_orbs = locate() in viewer.organs
if(!burning_orbs)
continue
burning_orbs.apply_organ_damage(damage_per_second * seconds_per_tick)
diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm
index c93d94023df..bf096a9fb4a 100644
--- a/code/datums/diseases/advance/symptoms/deafness.dm
+++ b/code/datums/diseases/advance/symptoms/deafness.dm
@@ -45,7 +45,7 @@
return
var/mob/living/carbon/infected_mob = advanced_disease.affected_mob
- var/obj/item/organ/internal/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
switch(advanced_disease.stage)
if(3, 4)
diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm
index 79c4909d277..2848ec484b3 100644
--- a/code/datums/diseases/advance/symptoms/sensory.dm
+++ b/code/datums/diseases/advance/symptoms/sensory.dm
@@ -95,13 +95,13 @@
switch(advanced_disease.stage)
if(4, 5)
if(advanced_disease.has_required_infectious_organ(infected_mob, ORGAN_SLOT_EARS))
- var/obj/item/organ/internal/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
ears.adjustEarDamage(-4, -4)
if(!advanced_disease.has_required_infectious_organ(infected_mob, ORGAN_SLOT_EYES))
return
- var/obj/item/organ/internal/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
infected_mob.adjust_temp_blindness(-4 SECONDS)
infected_mob.adjust_eye_blur(-4 SECONDS)
diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm
index e53faf5bac5..cc9e70a2421 100644
--- a/code/datums/diseases/advance/symptoms/vision.dm
+++ b/code/datums/diseases/advance/symptoms/vision.dm
@@ -42,7 +42,7 @@
return
var/mob/living/carbon/infected_mob = source_disease.affected_mob
- var/obj/item/organ/internal/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
switch(source_disease.stage)
if(1, 2)
diff --git a/code/datums/diseases/chronic_illness.dm b/code/datums/diseases/chronic_illness.dm
index fcb27ed9434..6ef3874d1ff 100644
--- a/code/datums/diseases/chronic_illness.dm
+++ b/code/datums/diseases/chronic_illness.dm
@@ -112,7 +112,7 @@
if(affected_mob.stat == CONSCIOUS)
affected_mob.visible_message(span_danger("[affected_mob] clutches at [affected_mob.p_their()] chest as if [affected_mob.p_their()] heart is stopping!"), \
span_userdanger("You feel a horrible pain as your heart is replaced with one from another dimension!"))
- var/obj/item/organ/internal/heart/cursed/cheart = new /obj/item/organ/internal/heart/cursed()
+ var/obj/item/organ/heart/cursed/cheart = new /obj/item/organ/heart/cursed()
cheart.replace_into(affected_mob)
playsound(affected_mob, 'sound/effects/hallucinations/far_noise.ogg', 50, 1)
update_stage(1)
diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm
index aab0fcded1d..f7348c38cb8 100644
--- a/code/datums/diseases/gastrolisis.dm
+++ b/code/datums/diseases/gastrolisis.dm
@@ -37,9 +37,9 @@
if(isopenturf(OT))
OT.MakeSlippery(TURF_WET_LUBE, 100)
if(4)
- var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes/snail) in affected_mob.organs
+ var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes/snail) in affected_mob.organs
if(!eyes && SPT_PROB(2.5, seconds_per_tick))
- var/obj/item/organ/internal/eyes/snail/new_eyes = new()
+ var/obj/item/organ/eyes/snail/new_eyes = new()
new_eyes.Insert(affected_mob)
affected_mob.visible_message(span_warning("[affected_mob]'s eyes fall out, with snail eyes taking its place!"), \
span_userdanger("You scream in pain as your eyes are pushed out by your new snail eyes!"))
@@ -57,9 +57,9 @@
affected_mob.emote("scream")
return
- var/obj/item/organ/internal/tongue/tongue = locate(/obj/item/organ/internal/tongue/snail) in affected_mob.organs
+ var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in affected_mob.organs
if(!tongue && SPT_PROB(2.5, seconds_per_tick))
- var/obj/item/organ/internal/tongue/snail/new_tongue = new()
+ var/obj/item/organ/tongue/snail/new_tongue = new()
new_tongue.Insert(affected_mob)
to_chat(affected_mob, span_userdanger("You feel your speech slow down..."))
return
@@ -84,13 +84,13 @@
. = ..()
if(affected_mob && !is_species(affected_mob, /datum/species/snail)) //undo all the snail fuckening
var/mob/living/carbon/human/H = affected_mob
- var/obj/item/organ/internal/tongue/tongue = locate(/obj/item/organ/internal/tongue/snail) in H.organs
+ var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in H.organs
if(tongue)
- var/obj/item/organ/internal/tongue/new_tongue = new H.dna.species.mutanttongue ()
+ var/obj/item/organ/tongue/new_tongue = new H.dna.species.mutanttongue ()
new_tongue.Insert(H)
- var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes/snail) in H.organs
+ var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes/snail) in H.organs
if(eyes)
- var/obj/item/organ/internal/eyes/new_eyes = new H.dna.species.mutanteyes ()
+ var/obj/item/organ/eyes/new_eyes = new H.dna.species.mutanteyes ()
new_eyes.Insert(H)
var/obj/item/storage/backpack/bag = H.get_item_by_slot(ITEM_SLOT_BACK)
if(istype(bag, /obj/item/storage/backpack/snail))
diff --git a/code/datums/diseases/parasitic_infection.dm b/code/datums/diseases/parasitic_infection.dm
index 64bb59f01fd..53b61266271 100644
--- a/code/datums/diseases/parasitic_infection.dm
+++ b/code/datums/diseases/parasitic_infection.dm
@@ -43,7 +43,7 @@
to_chat(affected_mob, span_warning("You feel much, MUCH lighter!"))
affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 20)
// disease code already checks if the liver exists otherwise it is cured
- var/obj/item/organ/internal/liver/affected_liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/affected_liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
affected_liver.Remove(affected_mob)
affected_liver.forceMove(get_turf(affected_mob))
cure()
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 15e70d3792b..9145106d6e0 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -999,7 +999,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
/mob/living/carbon/human/proc/something_horrible_mindmelt()
if(!is_blind())
- var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes) in organs
+ var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes) in organs
if(!eyes)
return
eyes.Remove(src)
diff --git a/code/datums/elements/climbable.dm b/code/datums/elements/climbable.dm
index 5700ca3bc2e..eb3bc611b29 100644
--- a/code/datums/elements/climbable.dm
+++ b/code/datums/elements/climbable.dm
@@ -62,8 +62,19 @@
climbed_thing.add_fingerprint(user)
user.visible_message(span_warning("[user] starts climbing onto [climbed_thing]."), \
span_notice("You start climbing onto [climbed_thing]..."))
+ // Time in deciseoncds it takes to complete the climb do_after()
var/adjusted_climb_time = climb_time
+ // Time in deciseonds that the mob is stunned after climbing successfully.
var/adjusted_climb_stun = climb_stun
+ // Our climbers fitness level, which removes some climb time and speeds up our climbing do_after, assuming they worked out
+ var/fitness_level = user.mind?.get_skill_level(/datum/skill/athletics) - 1
+ adjusted_climb_time = clamp(adjusted_climb_time - fitness_level, 1, climb_time) //Here we adjust the number of deciseconds we shave off per level of fitness, with a minimum of 1 decisecond and a maximum of climb_time (just in case)
+
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+ if(istype(potential_spine))
+ adjusted_climb_time *= potential_spine.athletics_boost_multiplier
+ adjusted_climb_stun *= potential_spine.athletics_boost_multiplier
+
if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //climbing takes twice as long without help from the hands.
adjusted_climb_time *= 2
if(isalien(user))
@@ -88,6 +99,7 @@
if(istype(buckle_target))
if(buckle_target.is_buckle_possible(user))
buckle_target.buckle_mob(user)
+ user.mind?.adjust_experience(/datum/skill/athletics, 5) //Get a bit fitter with every climb.
else
to_chat(user, span_warning("You fail to climb onto [climbed_thing]."))
LAZYREMOVEASSOC(current_climbers, climbed_thing, user)
diff --git a/code/datums/elements/corrupted_organ.dm b/code/datums/elements/corrupted_organ.dm
index 504c6851e00..fda892887ca 100644
--- a/code/datums/elements/corrupted_organ.dm
+++ b/code/datums/elements/corrupted_organ.dm
@@ -2,9 +2,9 @@
/// Mostly just does something spooky when it is removed
/datum/element/corrupted_organ
-/datum/element/corrupted_organ/Attach(datum/target)
+/datum/element/corrupted_organ/Attach(obj/item/organ/target)
. = ..()
- if (!isinternalorgan(target))
+ if (!istype(target) || (target.organ_flags & ORGAN_EXTERNAL))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_ORGAN_SURGICALLY_REMOVED, PROC_REF(on_removed))
diff --git a/code/datums/elements/cult_eyes.dm b/code/datums/elements/cult_eyes.dm
index 3e685419836..68d70a47092 100644
--- a/code/datums/elements/cult_eyes.dm
+++ b/code/datums/elements/cult_eyes.dm
@@ -26,13 +26,11 @@
return
ADD_TRAIT(target, TRAIT_UNNATURAL_RED_GLOWY_EYES, CULT_TRAIT)
- if (ishuman(target))
- var/mob/living/carbon/human/human_parent = target
- human_parent.eye_color_left = BLOODCULT_EYE
- human_parent.eye_color_right = BLOODCULT_EYE
- human_parent.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK)
- human_parent.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK)
- human_parent.update_body()
+ if (!ishuman(target))
+ return
+ var/mob/living/carbon/human/human_parent = target
+ human_parent.add_eye_color(BLOODCULT_EYE, EYE_COLOR_CULT_PRIORITY)
+ human_parent.update_body()
/**
* Detach proc
@@ -43,10 +41,7 @@
REMOVE_TRAIT(target, TRAIT_UNNATURAL_RED_GLOWY_EYES, CULT_TRAIT)
if (ishuman(target))
var/mob/living/carbon/human/human_parent = target
- human_parent.eye_color_left = initial(human_parent.eye_color_left)
- human_parent.eye_color_right = initial(human_parent.eye_color_right)
- human_parent.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK)
- human_parent.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK)
+ human_parent.remove_eye_color(EYE_COLOR_CULT_PRIORITY)
human_parent.update_body()
UnregisterSignal(target, list(COMSIG_CHANGELING_TRANSFORM, COMSIG_HUMAN_MONKEYIZE, COMSIG_MONKEY_HUMANIZE))
return ..()
diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm
index f1b34652059..ac69e8cc18e 100644
--- a/code/datums/elements/earhealing.dm
+++ b/code/datums/elements/earhealing.dm
@@ -26,7 +26,7 @@
/datum/element/earhealing/process(seconds_per_tick)
for(var/i in user_by_item)
var/mob/living/carbon/user = user_by_item[i]
- var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
if(!ears || !ears.damage || (ears.organ_flags & ORGAN_FAILING) || IS_ROBOTIC_ORGAN(ears))
continue
ears.deaf = max(ears.deaf - 0.25 * seconds_per_tick, (ears.damage < ears.maxHealth ? 0 : 1)) // Do not clear deafness if our ears are too damaged
diff --git a/code/datums/elements/eyestab.dm b/code/datums/elements/eyestab.dm
index a6757f67fb3..7821b26fab8 100644
--- a/code/datums/elements/eyestab.dm
+++ b/code/datums/elements/eyestab.dm
@@ -77,7 +77,7 @@
target.add_mood_event("eye_stab", /datum/mood_event/eye_stab)
log_combat(user, target, "attacked", "[item.name]", "(Combat mode: [user.combat_mode ? "On" : "Off"])")
- var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
if (!eyes)
return
diff --git a/code/datums/elements/frozen.dm b/code/datums/elements/frozen.dm
index df857cdd6ef..b65d44096bd 100644
--- a/code/datums/elements/frozen.dm
+++ b/code/datums/elements/frozen.dm
@@ -20,11 +20,11 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
target_obj.add_atom_colour(GLOB.freon_color_matrix, TEMPORARY_COLOUR_PRIORITY)
target_obj.alpha -= 25
- if (isinternalorgan(target))
- var/obj/item/organ/internal/organ = target
+ if(isorgan(target))
+ var/obj/item/organ/organ = target
organ.organ_flags |= ORGAN_FROZEN
else if (isbodypart(target))
- for(var/obj/item/organ/internal/organ in target_obj.contents)
+ for(var/obj/item/organ/organ in target_obj.contents)
organ.organ_flags |= ORGAN_FROZEN
RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved))
@@ -40,11 +40,11 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
obj_source.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, GLOB.freon_color_matrix)
obj_source.alpha += 25
- if (isinternalorgan(source))
- var/obj/item/organ/internal/organ = source
+ if (isorgan(source))
+ var/obj/item/organ/organ = source
organ.organ_flags &= ~ORGAN_FROZEN
else if (isbodypart(source))
- for(var/obj/item/organ/internal/organ in obj_source.contents)
+ for(var/obj/item/organ/organ in obj_source.contents)
organ.organ_flags &= ~ORGAN_FROZEN
return ..()
diff --git a/code/datums/elements/kneejerk.dm b/code/datums/elements/kneejerk.dm
index 78c0ba7654d..52b2e00e19c 100644
--- a/code/datums/elements/kneejerk.dm
+++ b/code/datums/elements/kneejerk.dm
@@ -28,7 +28,7 @@
var/selected_zone = user.zone_selected
var/obj/item/bodypart/leg/right = target.get_bodypart(BODY_ZONE_R_LEG)
var/obj/item/bodypart/leg/left = target.get_bodypart(BODY_ZONE_L_LEG)
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!ishuman(target))
return
diff --git a/code/datums/instability_meltdown.dm b/code/datums/instability_meltdown.dm
index d8e6fbd77ac..4e3a82fd376 100644
--- a/code/datums/instability_meltdown.dm
+++ b/code/datums/instability_meltdown.dm
@@ -72,8 +72,9 @@
/datum/instability_meltdown/organ_vomit/meltdown(mob/living/carbon/human/victim)
var/list/elligible_organs = list()
- for(var/obj/item/organ/internal/internal_organ in victim.organs) //make sure we dont get an implant or cavity item
- elligible_organs += internal_organ
+ for(var/obj/item/organ/organ as anything in victim.organs) //make sure we dont get an implant or cavity item
+ if(!(organ.organ_flags & ORGAN_EXTERNAL))
+ elligible_organs += organ
victim.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 10)
if(!elligible_organs.len)
return
diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm
index 9d6252855d3..e46467327ed 100644
--- a/code/datums/martial/boxing.dm
+++ b/code/datums/martial/boxing.dm
@@ -107,7 +107,7 @@
if(honor_check(defender))
var/strength_bonus = HAS_TRAIT(attacker, TRAIT_STRENGTH) ? 2 : 0 //Investing into genetic strength improvements makes you a better boxer
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = attacker.get_organ_slot(ORGAN_SLOT_SPINE) //Getting a cyberspine also pushes you further than just mere meat
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = attacker.get_organ_slot(ORGAN_SLOT_SPINE) //Getting a cyberspine also pushes you further than just mere meat
if(istype(potential_spine))
strength_bonus *= potential_spine.strength_bonus
diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm
index ce8b8bfdea8..816dd1698ab 100644
--- a/code/datums/mutations/body.dm
+++ b/code/datums/mutations/body.dm
@@ -583,7 +583,7 @@
explosion(owner, light_impact_range = 2, adminlog = TRUE, explosion_cause = src)
for(var/mob/living/carbon/human/splashed in view(2, owner))
- var/obj/item/organ/internal/eyes/eyes = splashed.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = splashed.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes)
to_chat(splashed, span_userdanger("You are blinded by a shower of blood!"))
eyes.apply_organ_damage(5)
@@ -611,7 +611,7 @@
if(.)//cant add
return TRUE
- var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
if(brain)
brain.Remove(owner, special = TRUE, movement_flags = NO_ID_TRANSFER)
brain.zone = BODY_ZONE_CHEST
@@ -636,7 +636,7 @@
if(!successful)
stack_trace("HARS mutation head regeneration failed! (usually caused by headless syndrome having a head)")
return TRUE
- var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
if(brain)
brain.Remove(owner, special = TRUE, movement_flags = NO_ID_TRANSFER)
brain.zone = initial(brain.zone)
diff --git a/code/datums/mutations/tongue_spike.dm b/code/datums/mutations/tongue_spike.dm
index d5db738213f..c6a48a32a14 100644
--- a/code/datums/mutations/tongue_spike.dm
+++ b/code/datums/mutations/tongue_spike.dm
@@ -30,7 +30,7 @@
to_chat(cast_on, span_notice("You concentrate really hard, but nothing happens."))
return
- var/obj/item/organ/internal/tongue/to_fire = locate() in cast_on.organs
+ var/obj/item/organ/tongue/to_fire = locate() in cast_on.organs
if(!to_fire)
to_chat(cast_on, span_notice("You don't have a tongue to shoot!"))
return
diff --git a/code/datums/quirks/negative_quirks/addict.dm b/code/datums/quirks/negative_quirks/addict.dm
index 5eb88795bdc..62262dc3bf7 100644
--- a/code/datums/quirks/negative_quirks/addict.dm
+++ b/code/datums/quirks/negative_quirks/addict.dm
@@ -145,15 +145,15 @@
quirk_holder.add_mob_memory(/datum/memory/key/quirk_smoker, protagonist = quirk_holder, preferred_brand = initial(drug_container_type.name))
// smoker lungs have 25% less health and healing
var/mob/living/carbon/carbon_holder = quirk_holder
- var/obj/item/organ/internal/lungs/smoker_lungs = null
- var/obj/item/organ/internal/lungs/old_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/smoker_lungs = null
+ var/obj/item/organ/lungs/old_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
if(old_lungs && IS_ORGANIC_ORGAN(old_lungs))
if(isplasmaman(carbon_holder))
- smoker_lungs = /obj/item/organ/internal/lungs/plasmaman/plasmaman_smoker
+ smoker_lungs = /obj/item/organ/lungs/plasmaman/plasmaman_smoker
else if(isethereal(carbon_holder))
- smoker_lungs = /obj/item/organ/internal/lungs/ethereal/ethereal_smoker
+ smoker_lungs = /obj/item/organ/lungs/ethereal/ethereal_smoker
else
- smoker_lungs = /obj/item/organ/internal/lungs/smoker_lungs
+ smoker_lungs = /obj/item/organ/lungs/smoker_lungs
if(!isnull(smoker_lungs))
smoker_lungs = new smoker_lungs
smoker_lungs.Insert(carbon_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
@@ -217,7 +217,7 @@
quirk_holder.add_mob_memory(/datum/memory/key/quirk_alcoholic, protagonist = quirk_holder, preferred_brandy = initial(favorite_alcohol.name))
// alcoholic livers have 25% less health and healing
- var/obj/item/organ/internal/liver/alcohol_liver = quirk_holder.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/alcohol_liver = quirk_holder.get_organ_slot(ORGAN_SLOT_LIVER)
if(alcohol_liver && IS_ORGANIC_ORGAN(alcohol_liver)) // robotic livers aren't affected
alcohol_liver.maxHealth = alcohol_liver.maxHealth * 0.75
alcohol_liver.healing_factor = alcohol_liver.healing_factor * 0.75
diff --git a/code/datums/quirks/negative_quirks/photophobia.dm b/code/datums/quirks/negative_quirks/photophobia.dm
index ea9ef428a50..89be1c82676 100644
--- a/code/datums/quirks/negative_quirks/photophobia.dm
+++ b/code/datums/quirks/negative_quirks/photophobia.dm
@@ -27,23 +27,23 @@
COMSIG_CARBON_LOSE_ORGAN,
COMSIG_MOVABLE_MOVED,))
quirk_holder.clear_mood_event(MOOD_CATEGORY_PHOTOPHOBIA)
- var/obj/item/organ/internal/eyes/normal_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/normal_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
if(istype(normal_eyes))
normal_eyes.flash_protect = initial(normal_eyes.flash_protect)
-/datum/quirk/photophobia/proc/check_eyes(obj/item/organ/internal/eyes/sensitive_eyes)
+/datum/quirk/photophobia/proc/check_eyes(obj/item/organ/eyes/sensitive_eyes)
SIGNAL_HANDLER
if(!istype(sensitive_eyes))
return
update_eyes(sensitive_eyes)
-/datum/quirk/photophobia/proc/update_eyes(obj/item/organ/internal/eyes/target_eyes)
+/datum/quirk/photophobia/proc/update_eyes(obj/item/organ/eyes/target_eyes)
if(!istype(target_eyes))
return
target_eyes.flash_protect = max(target_eyes.flash_protect - severity, FLASH_PROTECTION_HYPER_SENSITIVE) // NOVA EDIT CHANGE - ORIGINAL: target_eyes.flash_protect = max(target_eyes.flash_protect - 1, FLASH_PROTECTION_HYPER_SENSITIVE)
target_eyes.refresh() // NOVA EDIT ADDITION
-/datum/quirk/photophobia/proc/restore_eyes(obj/item/organ/internal/eyes/normal_eyes)
+/datum/quirk/photophobia/proc/restore_eyes(obj/item/organ/eyes/normal_eyes)
SIGNAL_HANDLER
if(!istype(normal_eyes))
return
diff --git a/code/datums/quirks/negative_quirks/prosthetic_organ.dm b/code/datums/quirks/negative_quirks/prosthetic_organ.dm
index 4a377699b40..2b0f20b0d9f 100644
--- a/code/datums/quirks/negative_quirks/prosthetic_organ.dm
+++ b/code/datums/quirks/negative_quirks/prosthetic_organ.dm
@@ -46,16 +46,16 @@
var/obj/item/organ/prosthetic
switch(organ_slot)
if(ORGAN_SLOT_HEART)
- prosthetic = new /obj/item/organ/internal/heart/cybernetic/surplus
+ prosthetic = new /obj/item/organ/heart/cybernetic/surplus
slot_string = "heart"
if(ORGAN_SLOT_LUNGS)
- prosthetic = new /obj/item/organ/internal/lungs/cybernetic/surplus
+ prosthetic = new /obj/item/organ/lungs/cybernetic/surplus
slot_string = "lungs"
if(ORGAN_SLOT_LIVER)
- prosthetic = new /obj/item/organ/internal/liver/cybernetic/surplus
+ prosthetic = new /obj/item/organ/liver/cybernetic/surplus
slot_string = "liver"
if(ORGAN_SLOT_STOMACH)
- prosthetic = new /obj/item/organ/internal/stomach/cybernetic/surplus
+ prosthetic = new /obj/item/organ/stomach/cybernetic/surplus
slot_string = "stomach"
medical_record_text = "During physical examination, patient was found to have a low-budget prosthetic [slot_string]. \
Removal of these organs is known to be dangerous to the patient as well as the practitioner."
diff --git a/code/datums/quirks/negative_quirks/scarred_eye.dm b/code/datums/quirks/negative_quirks/scarred_eye.dm
index 49628545cfa..11b3f16f8aa 100644
--- a/code/datums/quirks/negative_quirks/scarred_eye.dm
+++ b/code/datums/quirks/negative_quirks/scarred_eye.dm
@@ -35,7 +35,7 @@
/datum/quirk/item_quirk/scarred_eye/add(client/client_source)
var/mob/living/carbon/human/human_owner = quirk_holder
- var/obj/item/organ/internal/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
if (isnull(eyes))
return
@@ -57,7 +57,7 @@
/datum/quirk/item_quirk/scarred_eye/remove()
var/mob/living/carbon/human/human_owner = quirk_holder
- var/obj/item/organ/internal/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
if (!isnull(eyes))
eyes.fix_scar(RIGHT_EYE_SCAR)
eyes.fix_scar(LEFT_EYE_SCAR)
diff --git a/code/datums/quirks/negative_quirks/tin_man.dm b/code/datums/quirks/negative_quirks/tin_man.dm
index e6d411bc772..0afd8874bed 100644
--- a/code/datums/quirks/negative_quirks/tin_man.dm
+++ b/code/datums/quirks/negative_quirks/tin_man.dm
@@ -11,10 +11,10 @@
/datum/quirk/tin_man/add_unique(client/client_source)
var/mob/living/carbon/human/human_holder = quirk_holder
var/static/list/organ_slots = list(
- ORGAN_SLOT_HEART = /obj/item/organ/internal/heart/cybernetic/surplus,
- ORGAN_SLOT_LUNGS = /obj/item/organ/internal/lungs/cybernetic/surplus,
- ORGAN_SLOT_LIVER = /obj/item/organ/internal/liver/cybernetic/surplus,
- ORGAN_SLOT_STOMACH = /obj/item/organ/internal/stomach/cybernetic/surplus,
+ ORGAN_SLOT_HEART = /obj/item/organ/heart/cybernetic/surplus,
+ ORGAN_SLOT_LUNGS = /obj/item/organ/lungs/cybernetic/surplus,
+ ORGAN_SLOT_LIVER = /obj/item/organ/liver/cybernetic/surplus,
+ ORGAN_SLOT_STOMACH = /obj/item/organ/stomach/cybernetic/surplus,
)
var/list/possible_organ_slots = organ_slots.Copy()
if(HAS_TRAIT(human_holder, TRAIT_NOBLOOD))
diff --git a/code/datums/quirks/neutral_quirks/deviant_tastes.dm b/code/datums/quirks/neutral_quirks/deviant_tastes.dm
index 566b469c7a7..5be181f96b5 100644
--- a/code/datums/quirks/neutral_quirks/deviant_tastes.dm
+++ b/code/datums/quirks/neutral_quirks/deviant_tastes.dm
@@ -9,7 +9,7 @@
mail_goodies = list(/obj/item/food/urinalcake, /obj/item/food/badrecipe) // Mhhhmmm yummy
/datum/quirk/deviant_tastes/add(client/client_source)
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
var/liked_foodtypes = tongue.liked_foodtypes
@@ -17,7 +17,7 @@
tongue.disliked_foodtypes = liked_foodtypes
/datum/quirk/deviant_tastes/remove()
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
diff --git a/code/datums/quirks/neutral_quirks/gamer.dm b/code/datums/quirks/neutral_quirks/gamer.dm
index 0ab2e780480..9055b09ce7f 100644
--- a/code/datums/quirks/neutral_quirks/gamer.dm
+++ b/code/datums/quirks/neutral_quirks/gamer.dm
@@ -13,7 +13,7 @@
var/gaming_withdrawal_timer = TIMER_ID_NULL
/datum/quirk/gamer/add(client/client_source)
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(tongue)
// Gamer diet
tongue.liked_foodtypes = JUNKFOOD
@@ -26,7 +26,7 @@
gaming_withdrawal_timer = addtimer(CALLBACK(src, PROC_REF(enter_withdrawal)), GAMING_WITHDRAWAL_TIME, TIMER_STOPPABLE)
/datum/quirk/gamer/remove()
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(tongue)
tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
UnregisterSignal(quirk_holder, COMSIG_MOB_WON_VIDEOGAME)
diff --git a/code/datums/quirks/neutral_quirks/heretochromatic.dm b/code/datums/quirks/neutral_quirks/heretochromatic.dm
index 311cbf66868..96982b4089a 100644
--- a/code/datums/quirks/neutral_quirks/heretochromatic.dm
+++ b/code/datums/quirks/neutral_quirks/heretochromatic.dm
@@ -22,12 +22,11 @@
human_holder.eye_color_right = color
human_holder.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK)
- var/obj/item/organ/internal/eyes/eyes_of_the_holder = quirk_holder.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes_of_the_holder = quirk_holder.get_organ_by_type(/obj/item/organ/eyes)
if(!eyes_of_the_holder)
return
eyes_of_the_holder.eye_color_right = color
- eyes_of_the_holder.old_eye_color_right = color
eyes_of_the_holder.refresh()
if(was_not_hetero)
@@ -39,7 +38,7 @@
human_holder.eye_color_right = human_holder.eye_color_left
UnregisterSignal(human_holder, COMSIG_CARBON_LOSE_ORGAN)
-/datum/quirk/heterochromatic/proc/check_eye_removal(datum/source, obj/item/organ/internal/eyes/removed)
+/datum/quirk/heterochromatic/proc/check_eye_removal(datum/source, obj/item/organ/eyes/removed)
SIGNAL_HANDLER
if(!istype(removed))
diff --git a/code/datums/quirks/neutral_quirks/pineapple_hater.dm b/code/datums/quirks/neutral_quirks/pineapple_hater.dm
index f17eb4224ec..858963e0a36 100644
--- a/code/datums/quirks/neutral_quirks/pineapple_hater.dm
+++ b/code/datums/quirks/neutral_quirks/pineapple_hater.dm
@@ -15,13 +15,13 @@
)
/datum/quirk/pineapple_hater/add(client/client_source)
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
tongue.disliked_foodtypes |= PINEAPPLE
/datum/quirk/pineapple_hater/remove()
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
tongue.disliked_foodtypes = initial(tongue.disliked_foodtypes)
diff --git a/code/datums/quirks/neutral_quirks/pineapple_liker.dm b/code/datums/quirks/neutral_quirks/pineapple_liker.dm
index c342e14769c..d2de14a0e81 100644
--- a/code/datums/quirks/neutral_quirks/pineapple_liker.dm
+++ b/code/datums/quirks/neutral_quirks/pineapple_liker.dm
@@ -9,13 +9,13 @@
mail_goodies = list(/obj/item/food/pizzaslice/pineapple)
/datum/quirk/pineapple_liker/add(client/client_source)
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
tongue.liked_foodtypes |= PINEAPPLE
/datum/quirk/pineapple_liker/remove()
- var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
diff --git a/code/datums/quirks/positive_quirks/chip_connector.dm b/code/datums/quirks/positive_quirks/chip_connector.dm
index c12809bbfd2..6fcc5bf9d31 100644
--- a/code/datums/quirks/positive_quirks/chip_connector.dm
+++ b/code/datums/quirks/positive_quirks/chip_connector.dm
@@ -7,7 +7,7 @@
lose_text = span_danger("You don't feel so CONNECTED anymore.")
medical_record_text = "Patient has a cybernetic implant on their back of their head that lets them install and remove skillchips at will. Gross."
mail_goodies = list()
- var/obj/item/organ/internal/cyberimp/brain/connector/connector
+ var/obj/item/organ/cyberimp/brain/connector/connector
/datum/quirk/chip_connector/New()
. = ..()
diff --git a/code/datums/quirks/positive_quirks/chipped.dm b/code/datums/quirks/positive_quirks/chipped.dm
index 30c226c1300..7f43fc07b5b 100644
--- a/code/datums/quirks/positive_quirks/chipped.dm
+++ b/code/datums/quirks/positive_quirks/chipped.dm
@@ -42,7 +42,7 @@
quirk_holder_carbon.implant_skillchip(installed_chip, force = TRUE)
installed_chip.try_activate_skillchip(silent = FALSE, force = TRUE)
- var/obj/item/organ/internal/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN)
itchy_timer = addtimer(CALLBACK(src, PROC_REF(cause_itchy), itchy_brain), rand(5 SECONDS, 10 MINUTES)) // they get The Itch from a poor quality install every so often
/datum/quirk/chipped/remove()
@@ -50,7 +50,7 @@
deltimer(itchy_timer)
. = ..()
-/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/internal/brain/itchy_brain)
+/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/brain/itchy_brain)
itchy_brain.apply_organ_damage(rand(1, 5), maximum = itchy_brain.maxHealth * 0.3)
to_chat(itchy_brain.owner, span_warning("Your [itchy_brain] itches."))
diff --git a/code/datums/quirks/positive_quirks/friendly.dm b/code/datums/quirks/positive_quirks/friendly.dm
index 943bc2c4b84..26b42f554f9 100644
--- a/code/datums/quirks/positive_quirks/friendly.dm
+++ b/code/datums/quirks/positive_quirks/friendly.dm
@@ -12,12 +12,12 @@
/datum/quirk/friendly/add_unique(client/client_source)
var/mob/living/carbon/human/human_quirkholder = quirk_holder
- var/obj/item/organ/internal/heart/holder_heart = human_quirkholder.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/holder_heart = human_quirkholder.get_organ_slot(ORGAN_SLOT_HEART)
if(isnull(holder_heart) || isnull(holder_heart.reagents))
return
holder_heart.reagents.maximum_volume = 20
// We have a bigger heart full of love!
holder_heart.reagents.add_reagent(/datum/reagent/love, 2.5)
// Like, physically bigger.
- holder_heart.reagents.add_reagent(/datum/reagent/consumable/nutriment, 5)
+ holder_heart.reagents.add_reagent(/datum/reagent/consumable/nutriment/organ_tissue, 5)
holder_heart.transform = holder_heart.transform.Scale(1.5)
diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm
index 3598bd764ca..fadcbb85709 100644
--- a/code/datums/saymode.dm
+++ b/code/datums/saymode.dm
@@ -64,7 +64,7 @@
/datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language)
if(iscarbon(user))
var/mob/living/carbon/C = user
- var/obj/item/organ/internal/vocal_cords/V = C.get_organ_slot(ORGAN_SLOT_VOICE)
+ var/obj/item/organ/vocal_cords/V = C.get_organ_slot(ORGAN_SLOT_VOICE)
if(V?.can_speak_with())
V.handle_speech(message) //message
V.speak_with(message) //action
diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm
index 8e3c7e55616..c1a928fa6cd 100644
--- a/code/datums/station_traits/positive_traits.dm
+++ b/code/datums/station_traits/positive_traits.dm
@@ -258,54 +258,54 @@
trait_to_give = STATION_TRAIT_CYBERNETIC_REVOLUTION
/// List of all job types with the cybernetics they should receive.
var/static/list/job_to_cybernetic = list(
- /datum/job/assistant = /obj/item/organ/internal/heart/cybernetic, //real cardiac
- /datum/job/atmospheric_technician = /obj/item/organ/internal/cyberimp/mouth/breathing_tube,
- /datum/job/bartender = /obj/item/organ/internal/liver/cybernetic/tier3,
- /datum/job/bitrunner = /obj/item/organ/internal/eyes/robotic/thermals,
- /datum/job/botanist = /obj/item/organ/internal/cyberimp/chest/nutriment,
- /datum/job/captain = /obj/item/organ/internal/heart/cybernetic/tier3,
- /datum/job/cargo_technician = /obj/item/organ/internal/stomach/cybernetic/tier2,
- /datum/job/chaplain = /obj/item/organ/internal/cyberimp/brain/anti_drop,
- /datum/job/chemist = /obj/item/organ/internal/liver/cybernetic/tier2,
- /datum/job/chief_engineer = /obj/item/organ/internal/cyberimp/chest/thrusters,
- /datum/job/chief_medical_officer = /obj/item/organ/internal/cyberimp/chest/reviver,
- /datum/job/clown = /obj/item/organ/internal/cyberimp/brain/anti_stun, //HONK!
- /datum/job/cook = /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
- /datum/job/coroner = /obj/item/organ/internal/tongue/bone, //hes got a bone to pick with you
- /datum/job/curator = /obj/item/organ/internal/cyberimp/brain/connector,
- /datum/job/detective = /obj/item/organ/internal/lungs/cybernetic/tier3,
- /datum/job/doctor = /obj/item/organ/internal/cyberimp/arm/surgery,
- /datum/job/geneticist = /obj/item/organ/internal/fly, //we don't care about implants, we have cancer.
- /datum/job/head_of_personnel = /obj/item/organ/internal/eyes/robotic,
- /datum/job/head_of_security = /obj/item/organ/internal/eyes/robotic/thermals,
- /datum/job/human_ai = /obj/item/organ/internal/brain/cybernetic,
- /datum/job/janitor = /obj/item/organ/internal/eyes/robotic/xray,
- /datum/job/lawyer = /obj/item/organ/internal/heart/cybernetic/tier2,
- /datum/job/mime = /obj/item/organ/internal/tongue/robot, //...
- /datum/job/paramedic = /obj/item/organ/internal/cyberimp/eyes/hud/medical,
- /datum/job/prisoner = /obj/item/organ/internal/eyes/robotic/shield,
- /datum/job/psychologist = /obj/item/organ/internal/ears/cybernetic/whisper,
- /datum/job/pun_pun = /obj/item/organ/internal/cyberimp/arm/strongarm,
- /datum/job/quartermaster = /obj/item/organ/internal/stomach/cybernetic/tier3,
- /datum/job/research_director = /obj/item/organ/internal/cyberimp/bci,
- /datum/job/roboticist = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic,
- /datum/job/scientist = /obj/item/organ/internal/ears/cybernetic,
- /datum/job/security_officer = /obj/item/organ/internal/cyberimp/arm/flash,
- /datum/job/shaft_miner = /obj/item/organ/internal/monster_core/rush_gland,
- /datum/job/station_engineer = /obj/item/organ/internal/cyberimp/arm/toolset,
- /datum/job/warden = /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /datum/job/assistant = /obj/item/organ/heart/cybernetic, //real cardiac
+ /datum/job/atmospheric_technician = /obj/item/organ/cyberimp/mouth/breathing_tube,
+ /datum/job/bartender = /obj/item/organ/liver/cybernetic/tier3,
+ /datum/job/bitrunner = /obj/item/organ/eyes/robotic/thermals,
+ /datum/job/botanist = /obj/item/organ/cyberimp/chest/nutriment,
+ /datum/job/captain = /obj/item/organ/heart/cybernetic/tier3,
+ /datum/job/cargo_technician = /obj/item/organ/stomach/cybernetic/tier2,
+ /datum/job/chaplain = /obj/item/organ/cyberimp/brain/anti_drop,
+ /datum/job/chemist = /obj/item/organ/liver/cybernetic/tier2,
+ /datum/job/chief_engineer = /obj/item/organ/cyberimp/chest/thrusters,
+ /datum/job/chief_medical_officer = /obj/item/organ/cyberimp/chest/reviver,
+ /datum/job/clown = /obj/item/organ/cyberimp/brain/anti_stun, //HONK!
+ /datum/job/cook = /obj/item/organ/cyberimp/chest/nutriment/plus,
+ /datum/job/coroner = /obj/item/organ/tongue/bone, //hes got a bone to pick with you
+ /datum/job/curator = /obj/item/organ/cyberimp/brain/connector,
+ /datum/job/detective = /obj/item/organ/lungs/cybernetic/tier3,
+ /datum/job/doctor = /obj/item/organ/cyberimp/arm/surgery,
+ /datum/job/geneticist = /obj/item/organ/fly, //we don't care about implants, we have cancer.
+ /datum/job/head_of_personnel = /obj/item/organ/eyes/robotic,
+ /datum/job/head_of_security = /obj/item/organ/eyes/robotic/thermals,
+ /datum/job/human_ai = /obj/item/organ/brain/cybernetic,
+ /datum/job/janitor = /obj/item/organ/eyes/robotic/xray,
+ /datum/job/lawyer = /obj/item/organ/heart/cybernetic/tier2,
+ /datum/job/mime = /obj/item/organ/tongue/robot, //...
+ /datum/job/paramedic = /obj/item/organ/cyberimp/eyes/hud/medical,
+ /datum/job/prisoner = /obj/item/organ/eyes/robotic/shield,
+ /datum/job/psychologist = /obj/item/organ/ears/cybernetic/whisper,
+ /datum/job/pun_pun = /obj/item/organ/cyberimp/arm/strongarm,
+ /datum/job/quartermaster = /obj/item/organ/stomach/cybernetic/tier3,
+ /datum/job/research_director = /obj/item/organ/cyberimp/bci,
+ /datum/job/roboticist = /obj/item/organ/cyberimp/eyes/hud/diagnostic,
+ /datum/job/scientist = /obj/item/organ/ears/cybernetic,
+ /datum/job/security_officer = /obj/item/organ/cyberimp/arm/flash,
+ /datum/job/shaft_miner = /obj/item/organ/monster_core/rush_gland,
+ /datum/job/station_engineer = /obj/item/organ/cyberimp/arm/toolset,
+ /datum/job/warden = /obj/item/organ/cyberimp/eyes/hud/security,
// NOVA EDIT ADDITION START - MODULAR JOBS
- /datum/job/virologist = /obj/item/organ/internal/lungs/cybernetic/tier2,
- /datum/job/blueshield = /obj/item/organ/internal/cyberimp/brain/anti_stun,
- /datum/job/nanotrasen_consultant = /obj/item/organ/internal/heart/cybernetic/tier3,
- /datum/job/barber = /obj/item/organ/internal/ears/cybernetic/whisper,
- /datum/job/corrections_officer = /obj/item/organ/internal/cyberimp/arm/flash,
- /datum/job/orderly = /obj/item/organ/internal/cyberimp/brain/anti_drop,
- /datum/job/science_guard = /obj/item/organ/internal/cyberimp/arm/flash,
- /datum/job/customs_agent = /obj/item/organ/internal/cyberimp/eyes/hud/security,
- /datum/job/bouncer = /obj/item/organ/internal/cyberimp/arm/strongarm,
- /datum/job/engineering_guard = /obj/item/organ/internal/cyberimp/arm/flash,
- /datum/job/telecomms_specialist = /obj/item/organ/internal/ears/cybernetic/xray,
+ /datum/job/virologist = /obj/item/organ/lungs/cybernetic/tier2,
+ /datum/job/blueshield = /obj/item/organ/cyberimp/brain/anti_stun,
+ /datum/job/nanotrasen_consultant = /obj/item/organ/heart/cybernetic/tier3,
+ /datum/job/barber = /obj/item/organ/ears/cybernetic/whisper,
+ /datum/job/corrections_officer = /obj/item/organ/cyberimp/arm/flash,
+ /datum/job/orderly = /obj/item/organ/cyberimp/brain/anti_drop,
+ /datum/job/science_guard = /obj/item/organ/cyberimp/arm/flash,
+ /datum/job/customs_agent = /obj/item/organ/cyberimp/eyes/hud/security,
+ /datum/job/bouncer = /obj/item/organ/cyberimp/arm/strongarm,
+ /datum/job/engineering_guard = /obj/item/organ/cyberimp/arm/flash,
+ /datum/job/telecomms_specialist = /obj/item/organ/ears/cybernetic/xray,
// NOVA EDIT END
)
@@ -325,7 +325,7 @@
var/mob/living/silicon/ai/ai = spawned
ai.eyeobj.relay_speech = TRUE //surveillance upgrade. the ai gets cybernetics too.
return
- var/obj/item/organ/internal/cybernetic = new cybernetic_type()
+ var/obj/item/organ/cybernetic = new cybernetic_type()
cybernetic.Insert(spawned, special = TRUE, movement_flags = DELETE_IF_REPLACED)
/datum/station_trait/luxury_escape_pods
diff --git a/code/datums/status_effects/debuffs/drunk.dm b/code/datums/status_effects/debuffs/drunk.dm
index 928841f1049..e0f61d91584 100644
--- a/code/datums/status_effects/debuffs/drunk.dm
+++ b/code/datums/status_effects/debuffs/drunk.dm
@@ -138,7 +138,7 @@
// Handle the Ballmer Peak.
// If our owner is a scientist (has the trait "TRAIT_BALLMER_SCIENTIST"), there's a 5% chance
// that they'll say one of the special "ballmer message" lines, depending their drunk-ness level.
- var/obj/item/organ/internal/liver/liver_organ = owner.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver_organ = owner.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver_organ && HAS_TRAIT(liver_organ, TRAIT_BALLMER_SCIENTIST) && prob(5))
if(drunk_value >= BALLMER_PEAK_LOW_END && drunk_value <= BALLMER_PEAK_HIGH_END)
owner.say(pick_list_replacements(VISTA_FILE, "ballmer_good_msg"), forced = "ballmer")
diff --git a/code/datums/status_effects/drug_effects.dm b/code/datums/status_effects/drug_effects.dm
index 849d3cb4d1e..7e8466f3372 100644
--- a/code/datums/status_effects/drug_effects.dm
+++ b/code/datums/status_effects/drug_effects.dm
@@ -65,19 +65,13 @@
duration = 10 SECONDS
alert_type = /atom/movable/screen/alert/status_effect/stoned
status_type = STATUS_EFFECT_REFRESH
- var/original_eye_color_left
- var/original_eye_color_right
/datum/status_effect/stoned/on_apply()
if(!ishuman(owner))
return FALSE
var/mob/living/carbon/human/human_owner = owner
- original_eye_color_left = human_owner.eye_color_left
- original_eye_color_right = human_owner.eye_color_right
human_owner.add_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis) //slows you down
- human_owner.eye_color_left = BLOODCULT_EYE //makes cult eyes less obvious
- human_owner.eye_color_right = BLOODCULT_EYE //makes cult eyes less obvious
- human_owner.update_body() //updates eye color
+ human_owner.add_eye_color(BLOODCULT_EYE, EYE_COLOR_WEED_PRIORITY) //makes cult eyes less obvious
human_owner.add_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type) // impairs motor coordination and dilates blood vessels in eyes
human_owner.add_mood_event("stoned", /datum/mood_event/stoned) //improves mood
human_owner.sound_environment_override = SOUND_ENVIRONMENT_DRUGGED //not realistic but very immersive
@@ -88,9 +82,7 @@
return
var/mob/living/carbon/human/human_owner = owner
human_owner.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis)
- human_owner.eye_color_left = original_eye_color_left
- human_owner.eye_color_right = original_eye_color_right
- human_owner.update_body()
+ human_owner.remove_eye_color(EYE_COLOR_WEED_PRIORITY)
human_owner.remove_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type)
human_owner.clear_mood_event("stoned")
human_owner.sound_environment_override = SOUND_ENVIRONMENT_NONE
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index 90f9a3c3097..d65c9fbfca3 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -547,7 +547,7 @@
if(QDELETED(human_mob))
return
if(prob(1))//low chance of the alternative reality returning to monkey
- var/obj/item/organ/external/tail/monkey/monkey_tail = new ()
+ var/obj/item/organ/tail/monkey/monkey_tail = new ()
monkey_tail.Insert(human_mob, movement_flags = DELETE_IF_REPLACED)
var/datum/species/human_species = human_mob.dna?.species
if(human_species)
diff --git a/code/datums/wounds/cranial_fissure.dm b/code/datums/wounds/cranial_fissure.dm
index 071b6d19e70..f45aa165957 100644
--- a/code/datums/wounds/cranial_fissure.dm
+++ b/code/datums/wounds/cranial_fissure.dm
@@ -66,7 +66,7 @@
if (source.stat == DEAD)
return
- var/obj/item/organ/internal/brain/brain = source.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/brain = source.get_organ_by_type(/obj/item/organ/brain)
if (isnull(brain))
return
@@ -91,7 +91,7 @@
if (victim.body_position != LYING_DOWN)
return FALSE
- var/obj/item/organ/internal/eyes/eyes = victim.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes = victim.get_organ_by_type(/obj/item/organ/eyes)
if (isnull(eyes))
victim.balloon_alert(user, "no eyes to take!")
return TRUE
@@ -131,9 +131,9 @@
return TRUE
-/datum/wound/cranial_fissure/proc/still_has_eyes(obj/item/organ/internal/eyes/eyes)
+/datum/wound/cranial_fissure/proc/still_has_eyes(obj/item/organ/eyes/eyes)
PRIVATE_PROC(TRUE)
- return victim?.get_organ_by_type(/obj/item/organ/internal/eyes) == eyes
+ return victim?.get_organ_by_type(/obj/item/organ/eyes) == eyes
#undef CRANIAL_FISSURE_FILTER_DISPLACEMENT
diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm
index 8b5529f5112..fa357d47fe9 100644
--- a/code/datums/wounds/pierce.dm
+++ b/code/datums/wounds/pierce.dm
@@ -262,7 +262,7 @@
var/right_side = FALSE
/datum/wound/pierce/bleed/severe/eye/apply_wound(obj/item/bodypart/limb, silent, datum/wound/old_wound, smited, attack_direction, wound_source, replacing, right_side)
- var/obj/item/organ/internal/eyes/eyes = locate() in limb
+ var/obj/item/organ/eyes/eyes = locate() in limb
if (!istype(eyes))
return FALSE
. = ..()
@@ -294,7 +294,7 @@
can_be_randomly_generated = FALSE
/datum/wound_pregen_data/flesh_pierce/open_puncture/eye/can_be_applied_to(obj/item/bodypart/limb, list/suggested_wounding_types, datum/wound/old_wound, random_roll, duplicates_allowed, care_about_existing_wounds)
- if (isnull(locate(/obj/item/organ/internal/eyes) in limb))
+ if (isnull(locate(/obj/item/organ/eyes) in limb))
return FALSE
return ..()
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index aaa56433b27..93d6adcd773 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -364,7 +364,7 @@ GLOBAL_LIST_EMPTY(objectives) //NOVA EDIT ADDITION
var/human_check = TRUE
/datum/objective/protect/check_completion()
- var/obj/item/organ/internal/brain/brain_target
+ var/obj/item/organ/brain/brain_target
if(isnull(target))
return FALSE
if(human_check)
diff --git a/code/game/machinery/dna_infuser/dna_infusion.dm b/code/game/machinery/dna_infuser/dna_infusion.dm
index 9b85ae856e2..82e562fb7ed 100644
--- a/code/game/machinery/dna_infuser/dna_infusion.dm
+++ b/code/game/machinery/dna_infuser/dna_infusion.dm
@@ -67,7 +67,7 @@
if(old_organ)
if((old_organ.type != new_organ) && !IS_ROBOTIC_ORGAN(old_organ))
continue // Old organ can be mutated!
- else if(ispath(new_organ, /obj/item/organ/external))
+ else if(new_organ::organ_flags & ORGAN_EXTERNAL)
continue // External organ can be grown!
// Internal organ is either missing, or is non-organic.
potential_new_organs -= new_organ
diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm
index ff951c587c0..e69a78f132d 100644
--- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm
+++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm
@@ -19,10 +19,10 @@
/mob/living/basic/mining/goliath,
)
output_organs = list(
- /obj/item/organ/internal/brain/goliath,
- /obj/item/organ/internal/eyes/night_vision/goliath,
- /obj/item/organ/internal/heart/goliath,
- /obj/item/organ/internal/lungs/lavaland/goliath,
+ /obj/item/organ/brain/goliath,
+ /obj/item/organ/eyes/night_vision/goliath,
+ /obj/item/organ/heart/goliath,
+ /obj/item/organ/lungs/lavaland/goliath,
)
infusion_desc = "armored tendril-like"
tier = DNA_MUTANT_TIER_ONE
@@ -43,10 +43,10 @@
/mob/living/basic/carp,
)
output_organs = list(
- /obj/item/organ/internal/brain/carp,
- /obj/item/organ/internal/heart/carp,
- /obj/item/organ/internal/lungs/carp,
- /obj/item/organ/internal/tongue/carp,
+ /obj/item/organ/brain/carp,
+ /obj/item/organ/heart/carp,
+ /obj/item/organ/lungs/carp,
+ /obj/item/organ/tongue/carp,
)
infusion_desc = "nomadic"
tier = DNA_MUTANT_TIER_ONE
@@ -67,10 +67,10 @@
/obj/item/food/deadmouse,
)
output_organs = list(
- /obj/item/organ/internal/eyes/night_vision/rat,
- /obj/item/organ/internal/heart/rat,
- /obj/item/organ/internal/stomach/rat,
- /obj/item/organ/internal/tongue/rat,
+ /obj/item/organ/eyes/night_vision/rat,
+ /obj/item/organ/heart/rat,
+ /obj/item/organ/stomach/rat,
+ /obj/item/organ/tongue/rat,
)
infusion_desc = "skittish"
tier = DNA_MUTANT_TIER_ONE
@@ -97,10 +97,10 @@
/mob/living/basic/cockroach,
)
output_organs = list(
- /obj/item/organ/internal/heart/roach,
- /obj/item/organ/internal/stomach/roach,
- /obj/item/organ/internal/liver/roach,
- /obj/item/organ/internal/appendix/roach,
+ /obj/item/organ/heart/roach,
+ /obj/item/organ/stomach/roach,
+ /obj/item/organ/liver/roach,
+ /obj/item/organ/appendix/roach,
)
infusion_desc = "kafkaesque" // Gregor Samsa !!
tier = DNA_MUTANT_TIER_ONE
@@ -128,9 +128,9 @@
/obj/item/fish,
)
output_organs = list(
- /obj/item/organ/internal/lungs/fish,
- /obj/item/organ/internal/stomach/fish,
- /obj/item/organ/external/tail/fish,
+ /obj/item/organ/lungs/fish,
+ /obj/item/organ/stomach/fish,
+ /obj/item/organ/tail/fish,
)
infusion_desc = "piscine"
tier = DNA_MUTANT_TIER_ONE
@@ -158,7 +158,7 @@
var/list/organs = ..()
if(infused_from.required_fluid_type == AQUARIUM_FLUID_AIR || HAS_TRAIT(infused_from, TRAIT_FISH_AMPHIBIOUS))
- organs -= /obj/item/organ/internal/lungs/fish
+ organs -= /obj/item/organ/lungs/fish
return organs
@@ -172,7 +172,7 @@
"spit ink to blind foes",
)
output_organs = list(
- /obj/item/organ/internal/tongue/inky
+ /obj/item/organ/tongue/inky
)
tier = DNA_MUTANT_TIER_ONE
@@ -187,7 +187,7 @@
"drink like a fish",
)
output_organs = list(
- /obj/item/organ/internal/liver/fish
+ /obj/item/organ/liver/fish
)
tier = DNA_MUTANT_TIER_ONE
unreachable_effect = TRUE
@@ -208,7 +208,7 @@
/mob/living/basic/crab,
)
output_organs = list(
- /obj/item/organ/internal/lungs/fish/amphibious,
+ /obj/item/organ/lungs/fish/amphibious,
)
infusion_desc = "semi-aquatic"
tier = DNA_MUTANT_TIER_ONE
diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm
index 1620607d5f0..045fa669c4f 100644
--- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm
+++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm
@@ -22,9 +22,9 @@
/obj/item/food/meat/slab/gondola,
)
output_organs = list(
- /obj/item/organ/internal/heart/gondola,
- /obj/item/organ/internal/tongue/gondola,
- /obj/item/organ/internal/liver/gondola,
+ /obj/item/organ/heart/gondola,
+ /obj/item/organ/tongue/gondola,
+ /obj/item/organ/liver/gondola,
)
infusion_desc = "observant"
tier = DNA_MUTANT_TIER_TWO
diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm
index e93cffd5143..e4d93a587f8 100644
--- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm
+++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm
@@ -17,12 +17,12 @@
"this is a bad idea",
)
output_organs = list(
- /obj/item/organ/internal/appendix/fly,
- /obj/item/organ/internal/eyes/fly,
- /obj/item/organ/internal/heart/fly,
- /obj/item/organ/internal/lungs/fly,
- /obj/item/organ/internal/stomach/fly,
- /obj/item/organ/internal/tongue/fly,
+ /obj/item/organ/appendix/fly,
+ /obj/item/organ/eyes/fly,
+ /obj/item/organ/heart/fly,
+ /obj/item/organ/lungs/fly,
+ /obj/item/organ/stomach/fly,
+ /obj/item/organ/tongue/fly,
)
infusion_desc = "fly-like"
tier = DNA_MUTANT_TIER_ZERO
@@ -41,7 +41,7 @@
/mob/living/basic/pet/fox,
)
output_organs = list(
- /obj/item/organ/internal/ears/fox,
+ /obj/item/organ/ears/fox,
)
infusion_desc = "inexcusable"
tier = DNA_MUTANT_TIER_ZERO
@@ -61,10 +61,10 @@
/mob/living/basic/mothroach,
)
output_organs = list(
- /obj/item/organ/external/antennae,
- /obj/item/organ/external/wings/moth,
- /obj/item/organ/internal/eyes/moth,
- /obj/item/organ/internal/tongue/moth,
+ /obj/item/organ/antennae,
+ /obj/item/organ/wings/moth,
+ /obj/item/organ/eyes/moth,
+ /obj/item/organ/tongue/moth,
)
infusion_desc = "fluffy"
tier = DNA_MUTANT_TIER_ZERO
@@ -84,11 +84,11 @@
/mob/living/basic/lizard,
)
output_organs = list(
- /obj/item/organ/external/horns,
- /obj/item/organ/external/frills,
- /obj/item/organ/external/snout,
- /obj/item/organ/external/tail/lizard,
- /obj/item/organ/internal/tongue/lizard,
+ /obj/item/organ/horns,
+ /obj/item/organ/frills,
+ /obj/item/organ/snout,
+ /obj/item/organ/tail/lizard,
+ /obj/item/organ/tongue/lizard,
)
infusion_desc = "scaly"
tier = DNA_MUTANT_TIER_ZERO
@@ -105,8 +105,8 @@
/mob/living/basic/pet/cat,
)
output_organs = list(
- /obj/item/organ/internal/ears/cat,
- /obj/item/organ/external/tail/cat,
+ /obj/item/organ/ears/cat,
+ /obj/item/organ/tail/cat,
)
infusion_desc = "domestic"
tier = DNA_MUTANT_TIER_ZERO
diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
index 622cafaa7bf..1e4bc41ae41 100644
--- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
@@ -15,7 +15,7 @@
///Carp lungs! You can breathe in space! Oh... you can't breathe on the station, you need low oxygen environments.
/// Inverts behavior of lungs. Bypasses suffocation due to space / lack of gas, but also allows Oxygen to suffocate.
-/obj/item/organ/internal/lungs/carp
+/obj/item/organ/lungs/carp
name = "mutated carp-lungs"
desc = "Carp DNA infused into what was once some normal lungs."
// Oxygen causes suffocation.
@@ -27,14 +27,14 @@
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = CARP_COLORS
-/obj/item/organ/internal/lungs/carp/Initialize(mapload)
+/obj/item/organ/lungs/carp/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their neck has odd gills.", BODY_ZONE_HEAD)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
ADD_TRAIT(src, TRAIT_SPACEBREATHING, REF(src))
///occasionally sheds carp teeth, stronger melee (bite) attacks, but you can't cover your mouth anymore.
-/obj/item/organ/internal/tongue/carp
+/obj/item/organ/tongue/carp
name = "mutated carp-jaws"
desc = "Carp DNA infused into what was once some normal teeth."
@@ -45,12 +45,12 @@
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = CARP_COLORS
-/obj/item/organ/internal/tongue/carp/Initialize(mapload)
+/obj/item/organ/tongue/carp/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their teeth are big and sharp.", BODY_ZONE_PRECISE_MOUTH)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
-/obj/item/organ/internal/tongue/carp/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/carp/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
. = ..()
if(!ishuman(tongue_owner))
return
@@ -60,14 +60,14 @@
var/datum/species/rec_species = human_receiver.dna.species
rec_species.update_no_equip_flags(tongue_owner, rec_species.no_equip_flags | ITEM_SLOT_MASK)
-/obj/item/organ/internal/tongue/carp/on_bodypart_insert(obj/item/bodypart/head)
+/obj/item/organ/tongue/carp/on_bodypart_insert(obj/item/bodypart/head)
. = ..()
head.unarmed_damage_low = 10
head.unarmed_damage_high = 15
head.unarmed_effectiveness = 15
head.unarmed_attack_effect = ATTACK_EFFECT_BITE
-/obj/item/organ/internal/tongue/carp/on_mob_remove(mob/living/carbon/tongue_owner)
+/obj/item/organ/tongue/carp/on_mob_remove(mob/living/carbon/tongue_owner)
. = ..()
if(!ishuman(tongue_owner))
return
@@ -77,14 +77,14 @@
var/datum/species/rec_species = human_receiver.dna.species
rec_species.update_no_equip_flags(tongue_owner, initial(rec_species.no_equip_flags))
-/obj/item/organ/internal/tongue/carp/on_bodypart_remove(obj/item/bodypart/head)
+/obj/item/organ/tongue/carp/on_bodypart_remove(obj/item/bodypart/head)
. = ..()
head.unarmed_damage_low = initial(head.unarmed_damage_low)
head.unarmed_damage_high = initial(head.unarmed_damage_high)
head.unarmed_effectiveness = initial(head.unarmed_effectiveness)
head.unarmed_attack_effect = initial(head.unarmed_attack_effect)
-/obj/item/organ/internal/tongue/carp/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/tongue/carp/on_life(seconds_per_tick, times_fired)
. = ..()
if(owner.stat != CONSCIOUS || !prob(0.1))
return
@@ -99,7 +99,7 @@
icon_state = "carptooth"
///carp brain. you need to occasionally go to a new zlevel. think of it as... walking your dog!
-/obj/item/organ/internal/brain/carp
+/obj/item/organ/brain/carp
name = "mutated carp-brain"
desc = "Carp DNA infused into what was once a normal brain."
@@ -114,35 +114,35 @@
///how much time the timer is given
var/cooldown_time = 10 MINUTES
-/obj/item/organ/internal/brain/carp/Initialize(mapload)
+/obj/item/organ/brain/carp/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
AddElement(/datum/element/noticable_organ, "%PRONOUN_They seem%PRONOUN_s unable to stay still.")
-/obj/item/organ/internal/brain/carp/on_mob_insert(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/carp/on_mob_insert(mob/living/carbon/brain_owner)
. = ..()
cooldown_timer = addtimer(CALLBACK(src, PROC_REF(unsatisfied_nomad)), cooldown_time, TIMER_STOPPABLE|TIMER_OVERRIDE|TIMER_UNIQUE)
RegisterSignal(brain_owner, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(satisfied_nomad))
//technically you could get around the mood issue by extracting and reimplanting the brain but it will be far easier to just go one z there and back
-/obj/item/organ/internal/brain/carp/on_mob_remove(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/carp/on_mob_remove(mob/living/carbon/brain_owner)
. = ..()
UnregisterSignal(brain_owner, COMSIG_MOVABLE_Z_CHANGED)
deltimer(cooldown_timer)
-/obj/item/organ/internal/brain/carp/get_attacking_limb(mob/living/carbon/human/target)
+/obj/item/organ/brain/carp/get_attacking_limb(mob/living/carbon/human/target)
return owner.get_bodypart(BODY_ZONE_HEAD)
-/obj/item/organ/internal/brain/carp/proc/unsatisfied_nomad()
+/obj/item/organ/brain/carp/proc/unsatisfied_nomad()
owner.add_mood_event("nomad", /datum/mood_event/unsatisfied_nomad)
-/obj/item/organ/internal/brain/carp/proc/satisfied_nomad()
+/obj/item/organ/brain/carp/proc/satisfied_nomad()
SIGNAL_HANDLER
owner.clear_mood_event("nomad")
cooldown_timer = addtimer(CALLBACK(src, PROC_REF(unsatisfied_nomad)), cooldown_time, TIMER_STOPPABLE|TIMER_OVERRIDE|TIMER_UNIQUE)
/// makes you cold resistant, but heat-weak.
-/obj/item/organ/internal/heart/carp
+/obj/item/organ/heart/carp
name = "mutated carp-heart"
desc = "Carp DNA infused into what was once a normal heart."
@@ -153,7 +153,7 @@
organ_traits = list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE)
-/obj/item/organ/internal/heart/carp/Initialize(mapload)
+/obj/item/organ/heart/carp/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their skin has small patches of scales growing on it.", BODY_ZONE_CHEST)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
diff --git a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
index 7ac41ab28c0..aa479f1d316 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
@@ -40,7 +40,7 @@
else
ADD_TRAIT(owner, TRAIT_GRABRESISTANCE, REF(src))
owner.add_mood_event("fish_organs_bonus", /datum/mood_event/fish_water)
- if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+ if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
add_speed_buff()
owner.mind?.adjust_experience(/datum/skill/fishing, SKILL_EXP_JOURNEYMAN, silent = TRUE)
@@ -62,7 +62,7 @@
if(ishuman(owner))
var/mob/living/carbon/human/human = owner
human.physiology.damage_resistance -= 8
- if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+ if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
remove_speed_buff()
owner.mind?.adjust_experience(/datum/skill/fishing, -SKILL_EXP_JOURNEYMAN, silent = TRUE)
@@ -86,11 +86,11 @@
SIGNAL_HANDLER
if(HAS_TRAIT(owner, TRAIT_IS_WET)) //remove the debuffs from being dry
remove_debuff()
- if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+ if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
add_speed_buff()
return
apply_debuff()
- if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+ if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
remove_speed_buff()
/datum/status_effect/organ_set_bonus/fish/proc/apply_debuff()
@@ -125,7 +125,7 @@
/datum/status_effect/organ_set_bonus/fish/proc/check_tail(mob/living/carbon/source, obj/item/organ/organ, special)
SIGNAL_HANDLER
- if(!HAS_TRAIT(owner, TRAIT_IS_WET) || !istype(organ, /obj/item/organ/external/tail/fish))
+ if(!HAS_TRAIT(owner, TRAIT_IS_WET) || !istype(organ, /obj/item/organ/tail/fish))
return
var/obj/item/organ/tail = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(tail != organ)
@@ -152,7 +152,7 @@
///Tail for fish DNA-infused spacemen. It provides a speed buff while in water. It's also needed for the crawl speed bonus once the threshold is reached.
-/obj/item/organ/external/tail/fish
+/obj/item/organ/tail/fish
name = "fish tail"
desc = "A severed tail from some sort of marine creature... or a fish-infused spaceman. It's smooth, faintly wet and definitely not flopping."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -180,29 +180,29 @@
/// The amount of fillets this gets processed into
var/fillet_amount = 5
-/obj/item/organ/external/tail/fish/Initialize(mapload)
+/obj/item/organ/tail/fish/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish)
var/time_to_fillet = fillet_amount * 0.5 SECONDS
AddElement(/datum/element/processable, TOOL_KNIFE, fillet_type, fillet_amount, time_to_fillet, screentip_verb = "Cut")
-/obj/item/organ/external/tail/fish/on_mob_insert(mob/living/carbon/owner)
+/obj/item/organ/tail/fish/on_mob_insert(mob/living/carbon/owner)
. = ..()
owner.AddElementTrait(TRAIT_WADDLING, type, /datum/element/waddling)
RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_location))
check_location(owner, null)
-/obj/item/organ/external/tail/fish/on_mob_remove(mob/living/carbon/owner)
+/obj/item/organ/tail/fish/on_mob_remove(mob/living/carbon/owner)
. = ..()
owner.remove_traits(list(TRAIT_WADDLING, TRAIT_NO_STAGGER), type)
owner.remove_movespeed_modifier(/datum/movespeed_modifier/fish_on_water)
owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/fish_on_water)
UnregisterSignal(owner, COMSIG_MOVABLE_MOVED)
-/obj/item/organ/external/tail/fish/get_greyscale_color_from_draw_color()
+/obj/item/organ/tail/fish/get_greyscale_color_from_draw_color()
set_greyscale(bodypart_overlay.draw_color)
-/obj/item/organ/external/tail/fish/proc/check_location(mob/living/carbon/source, atom/movable/old_loc, dir, forced)
+/obj/item/organ/tail/fish/proc/check_location(mob/living/carbon/source, atom/movable/old_loc, dir, forced)
SIGNAL_HANDLER
var/was_water = istype(old_loc, /turf/open/water)
var/is_water = istype(source.loc, /turf/open/water) && !HAS_TRAIT(source.loc, TRAIT_TURF_IGNORE_SLOWDOWN)
@@ -240,7 +240,7 @@
///Lungs that replace the need of oxygen with water vapor or being wet
-/obj/item/organ/internal/lungs/fish
+/obj/item/organ/lungs/fish
name = "mutated gills"
desc = "Fish DNA infused on what once was a normal pair of lungs that now require spacemen to breathe water vapor, or keep themselves covered in water."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -258,7 +258,7 @@
var/has_gills = TRUE
-/obj/item/organ/internal/lungs/fish/Initialize(mapload)
+/obj/item/organ/lungs/fish/Initialize(mapload)
. = ..()
add_gas_reaction(/datum/gas/water_vapor, always = PROC_REF(breathe_water))
respiration_type |= RESPIRATION_OXYGEN //after all, we get oxygen from water
@@ -269,26 +269,26 @@
AddComponent(/datum/component/bubble_icon_override, "fish", BUBBLE_ICON_PRIORITY_ORGAN)
AddComponent(/datum/component/speechmod, replacements = strings("crustacean_replacement.json", "crustacean"))
-/obj/item/organ/internal/lungs/fish/Destroy()
+/obj/item/organ/lungs/fish/Destroy()
QDEL_NULL(gills)
return ..()
-/obj/item/organ/internal/lungs/fish/on_bodypart_insert(obj/item/bodypart/limb)
+/obj/item/organ/lungs/fish/on_bodypart_insert(obj/item/bodypart/limb)
. = ..()
if(gills)
limb.add_bodypart_overlay(gills)
-/obj/item/organ/internal/lungs/fish/on_bodypart_remove(obj/item/bodypart/limb)
+/obj/item/organ/lungs/fish/on_bodypart_remove(obj/item/bodypart/limb)
. = ..()
if(gills)
limb.remove_bodypart_overlay(gills)
-/obj/item/organ/internal/lungs/fish/on_mob_remove(mob/living/carbon/owner)
+/obj/item/organ/lungs/fish/on_mob_remove(mob/living/carbon/owner)
. = ..()
owner.clear_alert(ALERT_NOT_ENOUGH_WATER)
/// Requires the spaceman to have either water vapor or be wet.
-/obj/item/organ/internal/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp)
+/obj/item/organ/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp)
var/need_to_breathe = !HAS_TRAIT(src, TRAIT_SPACEBREATHING) && !HAS_TRAIT(breather, TRAIT_IS_WET)
if(water_pp < safe_water_level && need_to_breathe)
on_low_water(breather, breath, water_pp)
@@ -305,7 +305,7 @@
breather.adjustOxyLoss(-5)
/// Called when there isn't enough water to breath
-/obj/item/organ/internal/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
+/obj/item/organ/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
breather.throw_alert(ALERT_NOT_ENOUGH_WATER, /atom/movable/screen/alert/not_enough_water)
var/gas_breathed = handle_suffocation(breather, water_pp, safe_water_level, breath.gases[/datum/gas/water_vapor][MOLES])
if(water_pp)
@@ -325,10 +325,10 @@
)
/// Subtype of gills that allow the mob to optionally breathe water.
-/obj/item/organ/internal/lungs/fish/amphibious
+/obj/item/organ/lungs/fish/amphibious
name = "mutated semi-aquatic lungs"
desc = "DNA from an amphibious or semi-aquatic creature infused on a pair lungs. Enjoy breathing underwater without drowning outside water."
- safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min
+ safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min
has_gills = FALSE
/**
* If false, we don't breathe air since we've got water instead.
@@ -336,7 +336,7 @@
*/
var/should_breathe_oxygen = FALSE
-/obj/item/organ/internal/lungs/fish/amphibious/Initialize(mapload)
+/obj/item/organ/lungs/fish/amphibious/Initialize(mapload)
. = ..()
/**
* We're setting the gas reaction for breathing oxygen here,
@@ -344,18 +344,18 @@
* and we want breathe_water() to run before breathe_oxygen,
* so that if we're breathing water vapor (or are wet), we won't have to breathe oxygen.
*/
- safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min
+ safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min
add_gas_reaction(/datum/gas/oxygen, always = PROC_REF(breathe_oxygen))
-/obj/item/organ/internal/lungs/fish/amphibious/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
+/obj/item/organ/lungs/fish/amphibious/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
should_breathe_oxygen = FALSE //assume we don't have to breathe oxygen until we fail to breathe water
return ..()
-/obj/item/organ/internal/lungs/fish/amphibious/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
+/obj/item/organ/lungs/fish/amphibious/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
should_breathe_oxygen = TRUE
return
-/obj/item/organ/internal/lungs/fish/amphibious/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
+/obj/item/organ/lungs/fish/amphibious/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
if(!should_breathe_oxygen)
if(breather.failed_last_breath) //in case we had neither oxygen nor water last tick.
breather.clear_alert(ALERT_NOT_ENOUGH_OXYGEN)
@@ -363,7 +363,7 @@
return ..()
///Fish infuser organ, allows mobs to safely eat raw fish.
-/obj/item/organ/internal/stomach/fish
+/obj/item/organ/stomach/fish
name = "mutated fish-stomach"
desc = "Fish DNA infused into a stomach now permeated by the faint smell of salt and slightly putrefied fish."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -382,13 +382,13 @@
"putrid fish" = 1,
)
-/obj/item/organ/internal/stomach/fish/Initialize(mapload)
+/obj/item/organ/stomach/fish/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish)
///Organ from fish with the ink production trait. Doesn't count toward the organ set bonus but is buffed once it's active.
-/obj/item/organ/internal/tongue/inky
+/obj/item/organ/tongue/inky
name = "ink-secreting tongue"
desc = "A black tongue linked to two swollen black sacs underneath the palate."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -403,12 +403,12 @@
"the sea" = 0.2,
)
-/obj/item/organ/internal/tongue/inky/Initialize(mapload)
+/obj/item/organ/tongue/inky/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "Slick black ink seldom rivulets from %PRONOUN_their mouth.", BODY_ZONE_PRECISE_MOUTH)
///Organ from fish with the toxic trait. Allows the user to use tetrodotoxin as a healing chem instead of a toxin.
-/obj/item/organ/internal/liver/fish
+/obj/item/organ/liver/fish
name = "mutated fish-liver"
desc = "Fish DNA infused into a stomach that now uses tetrodotoxin as regenerative material. It also processes alcohol quite well."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -418,7 +418,7 @@
organ_traits = list(TRAIT_TETRODOTOXIN_HEALING, TRAIT_ALCOHOL_TOLERANCE) //drink like a fish :^)
liver_resistance = parent_type::liver_resistance * 1.5
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/iron = 5, /datum/reagent/toxin/tetrodotoxin = 5)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/iron = 5, /datum/reagent/toxin/tetrodotoxin = 5)
grind_results = list(/datum/reagent/consumable/nutriment/peptides = 5, /datum/reagent/toxin/tetrodotoxin = 5)
// Seafood instead of meat, because it's a fish organ
@@ -426,7 +426,7 @@
// Just fish, the toxin isn't obvious
food_tastes = list("fish" = 1)
-/obj/item/organ/internal/liver/fish/Initialize(mapload)
+/obj/item/organ/liver/fish/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish)
diff --git a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
index 4fb894394cb..23f9a377ab6 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
@@ -19,7 +19,7 @@
to_chat(new_fly, span_danger("Too much fly DNA! Your skin begins to discolor into a horrible black as you become more fly than person!"))
new_fly.set_species(/datum/species/fly)
-/obj/item/organ/internal/eyes/fly
+/obj/item/organ/eyes/fly
name = "fly eyes"
desc = "These eyes seem to stare back no matter the direction you look at it from."
eye_icon_state = "flyeyes"
@@ -27,11 +27,11 @@
flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
native_fov = NONE //flies can see all around themselves.
-/obj/item/organ/internal/eyes/fly/Initialize(mapload)
+/obj/item/organ/eyes/fly/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
-/obj/item/organ/internal/tongue/fly
+/obj/item/organ/tongue/fly
name = "proboscis"
desc = "A freakish looking meat tube that apparently can take in liquids."
icon = 'icons/obj/medical/organs/fly_organs.dmi'
@@ -61,56 +61,56 @@
)
// NOVA EDIT ADDITION END
-/obj/item/organ/internal/tongue/fly/New(class, timer, datum/mutation/human/copymut)
+/obj/item/organ/tongue/fly/New(class, timer, datum/mutation/human/copymut)
. = ..()
AddComponent(/datum/component/speechmod, replacements = CONFIG_GET(flag/russian_text_formation) ? russian_speech_replacements : speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) // NOVA EDIT CHANGE - ORIGINAL:AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech)))
-/obj/item/organ/internal/tongue/fly/Initialize(mapload)
+/obj/item/organ/tongue/fly/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
-/obj/item/organ/internal/tongue/fly/get_possible_languages()
+/obj/item/organ/tongue/fly/get_possible_languages()
return ..() + /datum/language/buzzwords
-/obj/item/organ/internal/heart/fly
+/obj/item/organ/heart/fly
desc = FLY_INFUSED_ORGAN_DESC
-/obj/item/organ/internal/heart/fly/Initialize(mapload)
+/obj/item/organ/heart/fly/Initialize(mapload)
. = ..()
name = odd_organ_name()
icon_state = FLY_INFUSED_ORGAN_ICON
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
AddElement(/datum/element/update_icon_blocker)
-/obj/item/organ/internal/lungs/fly
+/obj/item/organ/lungs/fly
desc = FLY_INFUSED_ORGAN_DESC
-/obj/item/organ/internal/lungs/fly/Initialize(mapload)
+/obj/item/organ/lungs/fly/Initialize(mapload)
. = ..()
name = odd_organ_name()
icon_state = FLY_INFUSED_ORGAN_ICON
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
-/obj/item/organ/internal/liver/fly
+/obj/item/organ/liver/fly
desc = FLY_INFUSED_ORGAN_DESC
alcohol_tolerance = 0.007 //flies eat vomit, so a lower alcohol tolerance is perfect!
-/obj/item/organ/internal/liver/fly/Initialize(mapload)
+/obj/item/organ/liver/fly/Initialize(mapload)
. = ..()
name = odd_organ_name()
icon_state = FLY_INFUSED_ORGAN_ICON
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
-/obj/item/organ/internal/stomach/fly
+/obj/item/organ/stomach/fly
desc = FLY_INFUSED_ORGAN_DESC
-/obj/item/organ/internal/stomach/fly/Initialize(mapload)
+/obj/item/organ/stomach/fly/Initialize(mapload)
. = ..()
name = odd_organ_name()
icon_state = FLY_INFUSED_ORGAN_ICON
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
-/obj/item/organ/internal/stomach/fly/after_eat(edible)
+/obj/item/organ/stomach/fly/after_eat(edible)
var/mob/living/carbon/body = owner
ASSERT(istype(body))
// we do not lose any nutrition as a fly when vomiting out food
@@ -122,28 +122,28 @@
)
return ..()
-/obj/item/organ/internal/appendix/fly
+/obj/item/organ/appendix/fly
desc = FLY_INFUSED_ORGAN_DESC
-/obj/item/organ/internal/appendix/fly/Initialize(mapload)
+/obj/item/organ/appendix/fly/Initialize(mapload)
. = ..()
name = odd_organ_name()
icon_state = FLY_INFUSED_ORGAN_ICON
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
-/obj/item/organ/internal/appendix/fly/update_appearance(updates=ALL)
+/obj/item/organ/appendix/fly/update_appearance(updates=ALL)
return ..(updates & ~(UPDATE_NAME|UPDATE_ICON)) //don't set name or icon thank you
//useless organs we throw in just to fuck with surgeons a bit more. they aren't part of a bonus, just the (absolute) state of flies
-/obj/item/organ/internal/fly
+/obj/item/organ/fly
desc = FLY_INFUSED_ORGAN_DESC
-/obj/item/organ/internal/fly/Initialize(mapload)
+/obj/item/organ/fly/Initialize(mapload)
. = ..()
name = odd_organ_name()
icon_state = FLY_INFUSED_ORGAN_ICON
-/obj/item/organ/internal/fly/groin //appendix is the only groin organ so we gotta have one of these too lol
+/obj/item/organ/fly/groin //appendix is the only groin organ so we gotta have one of these too lol
zone = BODY_ZONE_PRECISE_GROIN
#undef FLY_INFUSED_ORGAN_DESC
diff --git a/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm
index 3fecac3bb6d..4c1f701e355 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears/fox
+/obj/item/organ/ears/fox
name = "fox ears"
icon = 'icons/obj/clothing/head/costume.dmi'
worn_icon = 'icons/mob/clothing/head/costume.dmi'
@@ -6,4 +6,6 @@
visual = TRUE
damage_multiplier = 2
+ //dna_block = DNA_EARS_BLOCK // NOVA EDIT REMOVAL - Customization - We have our own system to handle DNA.
+ bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears
sprite_accessory_override = /datum/sprite_accessory/ears/fox
diff --git a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
index 3962d59b845..5a06aa8e8c2 100644
--- a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
@@ -12,7 +12,7 @@
bonus_traits = list(TRAIT_LAVA_IMMUNE)
///goliath eyes, simple night vision
-/obj/item/organ/internal/eyes/night_vision/goliath
+/obj/item/organ/eyes/night_vision/goliath
name = "goliath eyes"
desc = "goliath DNA infused into what was once some normal eyes."
@@ -29,13 +29,13 @@
high_light_cutoff = list(50, 10, 40)
organ_traits = list(TRAIT_UNNATURAL_RED_GLOWY_EYES)
-/obj/item/organ/internal/eyes/night_vision/goliath/Initialize(mapload)
+/obj/item/organ/eyes/night_vision/goliath/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes are blood red and stone-like.", BODY_ZONE_PRECISE_EYES)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
///goliath lungs! You can breathe lavaland air mix but can't breath pure O2 from a tank anymore.
-/obj/item/organ/internal/lungs/lavaland/goliath
+/obj/item/organ/lungs/lavaland/goliath
name = "mutated goliath-lungs"
desc = "goliath DNA infused into what was once some normal lungs."
@@ -44,13 +44,13 @@
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GOLIATH_COLORS
-/obj/item/organ/internal/lungs/lavaland/goliath/Initialize(mapload)
+/obj/item/organ/lungs/lavaland/goliath/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their back is covered in small tendrils.", BODY_ZONE_CHEST)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
///goliath brain. you can't use gloves but one of your arms becomes a tendril hammer that can be used to mine!
-/obj/item/organ/internal/brain/goliath
+/obj/item/organ/brain/goliath
name = "mutated goliath-brain"
desc = "goliath DNA infused into what was once a normal brain."
@@ -62,12 +62,12 @@
var/obj/item/goliath_infuser_hammer/hammer
-/obj/item/organ/internal/brain/goliath/Initialize(mapload)
+/obj/item/organ/brain/goliath/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their arm is just a mass of plate and tendrils.", BODY_ZONE_CHEST)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
-/obj/item/organ/internal/brain/goliath/on_mob_insert(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/goliath/on_mob_insert(mob/living/carbon/brain_owner)
. = ..()
if(!ishuman(brain_owner))
return
@@ -79,7 +79,7 @@
hammer = new/obj/item/goliath_infuser_hammer
brain_owner.put_in_hands(hammer)
-/obj/item/organ/internal/brain/goliath/on_mob_remove(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/goliath/on_mob_remove(mob/living/carbon/brain_owner)
. = ..()
UnregisterSignal(brain_owner)
if(!ishuman(brain_owner))
@@ -159,7 +159,7 @@
target.throw_at(get_edge_target_turf(target, get_cardinal_dir(src, target)), rand(1, 2), prob(60) ? 1 : 4, user)
/// goliath heart gives you the ability to survive ash storms.
-/obj/item/organ/internal/heart/goliath
+/obj/item/organ/heart/goliath
name = "mutated goliath-heart"
desc = "goliath DNA infused into what was once a normal heart."
@@ -170,7 +170,7 @@
organ_traits = list(TRAIT_ASHSTORM_IMMUNE)
-/obj/item/organ/internal/heart/goliath/Initialize(mapload)
+/obj/item/organ/heart/goliath/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their skin has visible hard plates growing from within.", BODY_ZONE_CHEST)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
index 9fcf7e483bb..82c9c9fc8e8 100644
--- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
@@ -16,7 +16,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
bonus_traits = list(TRAIT_RESISTHEAT, TRAIT_RESISTCOLD, TRAIT_NOBREATH, TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE)
/// makes you a pacifist and turns most mobs neutral towards you
-/obj/item/organ/internal/heart/gondola
+/obj/item/organ/heart/gondola
name = "mutated gondola-heart"
desc = "Gondola DNA infused into what was once a normal heart."
@@ -28,13 +28,13 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
///keeps track of whether the receiver actually gained factions
var/list/factions_to_remove = list()
-/obj/item/organ/internal/heart/gondola/Initialize(mapload)
+/obj/item/organ/heart/gondola/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola)
AddElement(/datum/element/noticable_organ, "%PRONOUN_They radiate%PRONOUN_s an aura of serenity.")
AddElement(/datum/element/update_icon_blocker)
-/obj/item/organ/internal/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(!(FACTION_HOSTILE in receiver.faction))
factions_to_remove += FACTION_HOSTILE
@@ -42,7 +42,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
factions_to_remove += FACTION_MINING
receiver.faction |= list(FACTION_HOSTILE, FACTION_MINING)
-/obj/item/organ/internal/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags)
+/obj/item/organ/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags)
. = ..()
for(var/faction in factions_to_remove)
heartless.faction -= faction
@@ -50,7 +50,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
factions_to_remove = list()
/// Zen (tounge): You can no longer speak, but get a powerful positive moodlet
-/obj/item/organ/internal/tongue/gondola
+/obj/item/organ/tongue/gondola
name = "mutated gondola-tongue"
desc = "Gondola DNA infused into what was once a normal tongue."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -59,21 +59,21 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
greyscale_colors = GONDOLA_COLORS
organ_traits = list(TRAIT_MUTE)
-/obj/item/organ/internal/tongue/gondola/Initialize(mapload)
+/obj/item/organ/tongue/gondola/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is permanently affixed into a relaxed smile.", BODY_ZONE_PRECISE_MOUTH)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola)
-/obj/item/organ/internal/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
. = ..()
tongue_owner.add_mood_event("gondola_zen", /datum/mood_event/gondola_serenity)
-/obj/item/organ/internal/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags)
tongue_owner.clear_mood_event("gondola_zen")
return ..()
/// Loving arms: your hands become unable to hold much of anything but your hugs now infuse the subject with pax.
-/obj/item/organ/internal/liver/gondola
+/obj/item/organ/liver/gondola
name = "mutated gondola-liver"
desc = "Gondola DNA infused into what was once a normal liver."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -81,13 +81,13 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GONDOLA_COLORS
-/obj/item/organ/internal/liver/gondola/Initialize(mapload)
+/obj/item/organ/liver/gondola/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola)
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their left arm has small needles breaching the skin all over it.", BODY_ZONE_L_ARM)
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their right arm has small needles breaching the skin all over it.", BODY_ZONE_R_ARM)
-/obj/item/organ/internal/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags)
+/obj/item/organ/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags)
. = ..()
var/has_left = liver_owner.has_left_hand(check_disabled = FALSE)
var/has_right = liver_owner.has_right_hand(check_disabled = FALSE)
@@ -102,19 +102,19 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
RegisterSignal(liver_owner, COMSIG_LIVING_TRY_PULL, PROC_REF(on_owner_try_pull))
RegisterSignal(liver_owner, COMSIG_CARBON_HELPED, PROC_REF(on_hug))
-/obj/item/organ/internal/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags)
+/obj/item/organ/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags)
. = ..()
UnregisterSignal(liver_owner, list(COMSIG_HUMAN_EQUIPPING_ITEM, COMSIG_LIVING_TRY_PULL, COMSIG_CARBON_HELPED))
/// signal sent when prompting if an item can be equipped
-/obj/item/organ/internal/liver/gondola/proc/on_owner_equipping_item(mob/living/carbon/human/owner, obj/item/equip_target, slot)
+/obj/item/organ/liver/gondola/proc/on_owner_equipping_item(mob/living/carbon/human/owner, obj/item/equip_target, slot)
SIGNAL_HANDLER
if(equip_target.w_class > WEIGHT_CLASS_TINY)
equip_target.balloon_alert(owner, "too weak to hold this!")
return COMPONENT_BLOCK_EQUIP
/// signal sent when owner tries to pull an item
-/obj/item/organ/internal/liver/gondola/proc/on_owner_try_pull(mob/living/carbon/owner, atom/movable/target, force)
+/obj/item/organ/liver/gondola/proc/on_owner_try_pull(mob/living/carbon/owner, atom/movable/target, force)
SIGNAL_HANDLER
if(isliving(target))
var/mob/living/living_target = target
@@ -127,7 +127,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
item_target.balloon_alert(owner, "too weak to pull this!")
return COMSIG_LIVING_CANCEL_PULL
-/obj/item/organ/internal/liver/gondola/proc/on_hug(mob/living/carbon/human/source, mob/living/carbon/hugged)
+/obj/item/organ/liver/gondola/proc/on_hug(mob/living/carbon/human/source, mob/living/carbon/hugged)
SIGNAL_HANDLER
var/list/covered_body_zones = source.get_covered_body_zones()
diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
index 4f8d38aa999..f10dcefb0d5 100644
--- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
@@ -12,7 +12,7 @@
bonus_traits = list(TRAIT_VENTCRAWLER_NUDE)
///way better night vision, super sensitive. lotta things work like this, huh?
-/obj/item/organ/internal/eyes/night_vision/rat
+/obj/item/organ/eyes/night_vision/rat
name = "mutated rat-eyes"
desc = "Rat DNA infused into what was once a normal pair of eyes."
flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
@@ -27,13 +27,13 @@
medium_light_cutoff = list(30, 20, 5)
high_light_cutoff = list(45, 35, 10)
-/obj/item/organ/internal/eyes/night_vision/rat/Initialize(mapload)
+/obj/item/organ/eyes/night_vision/rat/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes have deep, shifty black pupils, surrounded by a sickening yellow sclera.", BODY_ZONE_PRECISE_EYES)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
///increases hunger, disgust recovers quicker, expands what is defined as "food"
-/obj/item/organ/internal/stomach/rat
+/obj/item/organ/stomach/rat
name = "mutated rat-stomach"
desc = "Rat DNA infused into what was once a normal stomach."
disgust_metabolism = 3
@@ -44,13 +44,13 @@
greyscale_colors = RAT_COLORS
hunger_modifier = 10
-/obj/item/organ/internal/stomach/rat/Initialize(mapload)
+/obj/item/organ/stomach/rat/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is drooling excessively.", BODY_ZONE_PRECISE_MOUTH)
/// makes you smaller, walk over tables, and take 1.5x damage
-/obj/item/organ/internal/heart/rat
+/obj/item/organ/heart/rat
name = "mutated rat-heart"
desc = "Rat DNA infused into what was once a normal heart."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -58,13 +58,13 @@
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = RAT_COLORS
-/obj/item/organ/internal/heart/rat/Initialize(mapload)
+/obj/item/organ/heart/rat/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
AddElement(/datum/element/noticable_organ, "%PRONOUN_They hunch%PRONOUN_es over unnaturally!")
AddElement(/datum/element/update_icon_blocker)
-/obj/item/organ/internal/heart/rat/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/heart/rat/on_mob_insert(mob/living/carbon/receiver)
. = ..()
if(!ishuman(receiver))
return
@@ -74,7 +74,7 @@
//but 1.5 damage
human_receiver.physiology?.damage_resistance -= 50
-/obj/item/organ/internal/heart/rat/on_mob_remove(mob/living/carbon/heartless, special)
+/obj/item/organ/heart/rat/on_mob_remove(mob/living/carbon/heartless, special)
. = ..()
if(!ishuman(heartless))
return
@@ -84,7 +84,7 @@
human_heartless.physiology?.damage_resistance += 50
/// you occasionally squeak, and have some rat related verbal tics
-/obj/item/organ/internal/tongue/rat
+/obj/item/organ/tongue/rat
name = "mutated rat-tongue"
desc = "Rat DNA infused into what was once a normal tongue."
icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -97,12 +97,12 @@
disliked_foodtypes = NONE //but a rat can eat anything without issue
toxic_foodtypes = NONE
-/obj/item/organ/internal/tongue/rat/Initialize(mapload)
+/obj/item/organ/tongue/rat/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their teeth are oddly shaped and yellowing.", BODY_ZONE_PRECISE_MOUTH)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
-/obj/item/organ/internal/tongue/rat/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/rat/modify_speech(datum/source, list/speech_args)
. = ..()
var/message = LOWER_TEXT(speech_args[SPEECH_MESSAGE])
if(message == "hi" || message == "hi.")
@@ -110,23 +110,23 @@
if(message == "hi?")
speech_args[SPEECH_MESSAGE] = "Um... cheesed to meet you?"
-/obj/item/organ/internal/tongue/rat/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/rat/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
. = ..()
RegisterSignal(tongue_owner, COMSIG_CARBON_ITEM_GIVEN, PROC_REF(its_on_the_mouse))
-/obj/item/organ/internal/tongue/rat/on_mob_remove(mob/living/carbon/tongue_owner)
+/obj/item/organ/tongue/rat/on_mob_remove(mob/living/carbon/tongue_owner)
. = ..()
UnregisterSignal(tongue_owner, COMSIG_CARBON_ITEM_GIVEN)
-/obj/item/organ/internal/tongue/rat/proc/on_item_given(mob/living/carbon/offerer, mob/living/taker, obj/item/given)
+/obj/item/organ/tongue/rat/proc/on_item_given(mob/living/carbon/offerer, mob/living/taker, obj/item/given)
SIGNAL_HANDLER
INVOKE_ASYNC(src, PROC_REF(its_on_the_mouse), offerer, taker)
-/obj/item/organ/internal/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker)
+/obj/item/organ/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker)
offerer.say("For you, it's on the mouse.")
taker.add_mood_event("it_was_on_the_mouse", /datum/mood_event/it_was_on_the_mouse)
-/obj/item/organ/internal/tongue/rat/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/tongue/rat/on_life(seconds_per_tick, times_fired)
. = ..()
if(prob(5))
owner.emote("squeaks")
diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
index b31a64d9bb8..2b32ad85702 100644
--- a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
@@ -46,7 +46,7 @@
/// Roach heart:
/// Reduces damage taken from brute attacks from behind,
/// but increases duration of knockdowns
-/obj/item/organ/internal/heart/roach
+/obj/item/organ/heart/roach
name = "mutated roach-heart"
desc = "Roach DNA infused into what was once a normal heart."
maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -61,18 +61,18 @@
COOLDOWN_DECLARE(harden_effect_cd)
-/obj/item/organ/internal/heart/roach/Initialize(mapload)
+/obj/item/organ/heart/roach/Initialize(mapload)
. = ..()
AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have hardened, somewhat translucent skin.")
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
AddElement(/datum/element/update_icon_blocker)
roach_shell = new()
-/obj/item/organ/internal/heart/roach/Destroy()
+/obj/item/organ/heart/roach/Destroy()
QDEL_NULL(roach_shell)
return ..()
-/obj/item/organ/internal/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
if(!ishuman(organ_owner))
return
@@ -83,11 +83,11 @@
RegisterSignal(human_owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(do_block_effect))
human_owner.physiology.knockdown_mod *= 3
-/obj/item/organ/internal/heart/roach/on_bodypart_insert(obj/item/bodypart/limb)
+/obj/item/organ/heart/roach/on_bodypart_insert(obj/item/bodypart/limb)
. = ..()
limb.add_bodypart_overlay(roach_shell)
-/obj/item/organ/internal/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
if(!ishuman(organ_owner) || QDELETED(organ_owner))
return
@@ -97,7 +97,7 @@
UnregisterSignal(human_owner, list(COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, COMSIG_MOB_AFTER_APPLY_DAMAGE))
human_owner.physiology.knockdown_mod /= 3
-/obj/item/organ/internal/heart/roach/on_bodypart_remove(obj/item/bodypart/limb)
+/obj/item/organ/heart/roach/on_bodypart_remove(obj/item/bodypart/limb)
. = ..()
limb.remove_bodypart_overlay(roach_shell)
@@ -107,7 +107,7 @@
*
* Adds a 0.5 modifier to attacks from the back
*/
-/obj/item/organ/internal/heart/roach/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/roach/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
SIGNAL_HANDLER
if(!is_blocking(source, damage_amount, damagetype, attack_direction))
@@ -120,7 +120,7 @@
*
* Does a special effect if we blocked damage with our back
*/
-/obj/item/organ/internal/heart/roach/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/roach/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
SIGNAL_HANDLER
if(!is_blocking(source, damage_dealt, damagetype, attack_direction))
@@ -133,7 +133,7 @@
COOLDOWN_START(src, harden_effect_cd, 5 SECONDS) // Cooldown resets EVERY time we get hit
/// Checks if the passed mob is in a valid state to be blocking damage with the roach shell
-/obj/item/organ/internal/heart/roach/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
+/obj/item/organ/heart/roach/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
if(damage_amount < 5 || damagetype != BRUTE || !attack_direction)
return
if(!ishuman(blocker) || blocker.stat >= UNCONSCIOUS)
@@ -160,7 +160,7 @@
/// Roach stomach:
/// Makes disgust a non-issue, very slightly worse at passing off reagents
/// Also makes you more hungry
-/obj/item/organ/internal/stomach/roach
+/obj/item/organ/stomach/roach
name = "mutated roach-stomach"
desc = "Roach DNA infused into what was once a normal stomach."
maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -173,13 +173,13 @@
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = ROACH_COLORS
-/obj/item/organ/internal/stomach/roach/Initialize(mapload)
+/obj/item/organ/stomach/roach/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
/// Roach liver:
/// Purges toxins at a higher threshold, but takes more damage from them if not purged
-/obj/item/organ/internal/liver/roach
+/obj/item/organ/liver/roach
name = "mutated roach-liver"
desc = "Roach DNA infused into what was once a normal liver."
maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -191,11 +191,11 @@
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = ROACH_COLORS
-/obj/item/organ/internal/liver/roach/Initialize(mapload)
+/obj/item/organ/liver/roach/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
-/obj/item/organ/internal/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
if(!ishuman(organ_owner))
return
@@ -203,7 +203,7 @@
var/mob/living/carbon/human/human_owner = owner
human_owner.physiology.tox_mod *= 2
-/obj/item/organ/internal/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
if(!ishuman(organ_owner) || QDELETED(organ_owner))
return
@@ -213,7 +213,7 @@
/// Roach appendix:
/// No appendicitus! weee!
-/obj/item/organ/internal/appendix/roach
+/obj/item/organ/appendix/roach
name = "mutated roach-appendix"
desc = "Roach DNA infused into what was once a normal appendix. It could get worse?"
maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -223,11 +223,11 @@
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = ROACH_COLORS
-/obj/item/organ/internal/appendix/roach/Initialize(mapload)
+/obj/item/organ/appendix/roach/Initialize(mapload)
. = ..()
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
-/obj/item/organ/internal/appendix/roach/become_inflamed()
+/obj/item/organ/appendix/roach/become_inflamed()
return
#undef ROACH_ORGAN_COLOR
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index 0c84e401d6c..3848717cc37 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -7,7 +7,7 @@
density = TRUE
obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open
interaction_flags_mouse_drop = NEED_DEXTERITY
- occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/internal/brain)
+ occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/brain)
circuit = /obj/item/circuitboard/machine/dnascanner
var/locked = FALSE
diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm
index 0bc227fcdb9..54a5cf29c05 100644
--- a/code/game/machinery/medical_kiosk.dm
+++ b/code/game/machinery/medical_kiosk.dm
@@ -292,7 +292,7 @@
chemical_list += list(list("name" = reagent.name, "volume" = round(reagent.volume, 0.01)))
if(reagent.overdosed)
overdose_list += list(list("name" = reagent.name))
- var/obj/item/organ/internal/stomach/belly = patient.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = patient.get_organ_slot(ORGAN_SLOT_STOMACH)
if(belly?.reagents.reagent_list.len) //include the stomach contents if it exists
for(var/bile in belly.reagents.reagent_list)
var/datum/reagent/bit = bile
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 166410cfccf..134fa7731d0 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -171,7 +171,7 @@
not_eaten += 1
continue
- if (istype(thing, /obj/item/organ/internal/brain) || istype(thing, /obj/item/dullahan_relay))
+ if (istype(thing, /obj/item/organ/brain) || istype(thing, /obj/item/dullahan_relay))
living_detected = TRUE
if (istype(thing, /obj/item/mmi))
diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm
index e651c8a3e24..0bc59ded98d 100644
--- a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm
@@ -391,7 +391,7 @@
var/fraction = (seconds_per_tick SECONDS) / initial(lifetime)
reagents.copy_to(smoker, reagents.total_volume, fraction)
- reagents.expose(smoker, INGEST, fraction)
+ reagents.expose(smoker, INHALE, fraction)
return TRUE
/// Helper to quickly create a cloud of reagent smoke
diff --git a/code/game/objects/effects/spawners/random/medical.dm b/code/game/objects/effects/spawners/random/medical.dm
index b0f7a4aeaf5..02462afe113 100644
--- a/code/game/objects/effects/spawners/random/medical.dm
+++ b/code/game/objects/effects/spawners/random/medical.dm
@@ -25,20 +25,20 @@
icon_state = "eyes"
spawn_loot_count = 3
loot = list(
- /obj/item/organ/internal/heart/gland/egg = 7,
- /obj/item/organ/internal/heart/gland/plasma = 7,
- /obj/item/organ/internal/heart/gland/chem = 5,
- /obj/item/organ/internal/heart/gland/mindshock = 5,
- /obj/item/organ/internal/heart/gland/transform = 5,
- /obj/item/organ/internal/heart/gland/spiderman = 5,
- /obj/item/organ/internal/heart/gland/slime = 4,
- /obj/item/organ/internal/heart/gland/trauma = 4,
- /obj/item/organ/internal/heart/gland/electric = 3,
- /obj/item/organ/internal/monster_core/regenerative_core = 2,
- /obj/item/organ/internal/monster_core/rush_gland = 2,
- /obj/item/organ/internal/monster_core/brimdust_sac = 2,
- /obj/item/organ/internal/heart/gland/ventcrawling = 1,
- /obj/item/organ/internal/body_egg/alien_embryo = 1,
+ /obj/item/organ/heart/gland/egg = 7,
+ /obj/item/organ/heart/gland/plasma = 7,
+ /obj/item/organ/heart/gland/chem = 5,
+ /obj/item/organ/heart/gland/mindshock = 5,
+ /obj/item/organ/heart/gland/transform = 5,
+ /obj/item/organ/heart/gland/spiderman = 5,
+ /obj/item/organ/heart/gland/slime = 4,
+ /obj/item/organ/heart/gland/trauma = 4,
+ /obj/item/organ/heart/gland/electric = 3,
+ /obj/item/organ/monster_core/regenerative_core = 2,
+ /obj/item/organ/monster_core/rush_gland = 2,
+ /obj/item/organ/monster_core/brimdust_sac = 2,
+ /obj/item/organ/heart/gland/ventcrawling = 1,
+ /obj/item/organ/body_egg/alien_embryo = 1,
)
/obj/effect/spawner/random/medical/memeorgans
@@ -46,23 +46,23 @@
icon_state = "eyes"
spawn_loot_count = 5
loot = list(
- /obj/item/organ/internal/ears/penguin,
- /obj/item/organ/internal/ears/cat,
- /obj/item/organ/internal/eyes/moth,
- /obj/item/organ/internal/eyes/snail,
- /obj/item/organ/internal/tongue/bone,
- /obj/item/organ/internal/tongue/fly,
- /obj/item/organ/internal/tongue/snail,
- /obj/item/organ/internal/tongue/lizard,
- /obj/item/organ/internal/tongue/alien,
- /obj/item/organ/internal/tongue/ethereal,
- /obj/item/organ/internal/tongue/robot,
- /obj/item/organ/internal/tongue/zombie,
- /obj/item/organ/internal/appendix,
- /obj/item/organ/internal/liver/fly,
- /obj/item/organ/internal/lungs/plasmaman,
- /obj/item/organ/external/tail/cat,
- /obj/item/organ/external/tail/lizard,
+ /obj/item/organ/ears/penguin,
+ /obj/item/organ/ears/cat,
+ /obj/item/organ/eyes/moth,
+ /obj/item/organ/eyes/snail,
+ /obj/item/organ/tongue/bone,
+ /obj/item/organ/tongue/fly,
+ /obj/item/organ/tongue/snail,
+ /obj/item/organ/tongue/lizard,
+ /obj/item/organ/tongue/alien,
+ /obj/item/organ/tongue/ethereal,
+ /obj/item/organ/tongue/robot,
+ /obj/item/organ/tongue/zombie,
+ /obj/item/organ/appendix,
+ /obj/item/organ/liver/fly,
+ /obj/item/organ/lungs/plasmaman,
+ /obj/item/organ/tail/cat,
+ /obj/item/organ/tail/lizard,
)
/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner
diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm
index f82de9c49a7..d84ebfa5c13 100644
--- a/code/game/objects/items/airlock_painter.dm
+++ b/code/game/objects/items/airlock_painter.dm
@@ -73,7 +73,7 @@
return TRUE
/obj/item/airlock_painter/suicide_act(mob/living/user)
- var/obj/item/organ/internal/lungs/L = user.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/L = user.get_organ_slot(ORGAN_SLOT_LUNGS)
if(can_use(user) && L)
user.visible_message(span_suicide("[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm
index d8b48e0789b..d5769ceb8d7 100644
--- a/code/game/objects/items/body_egg.dm
+++ b/code/game/objects/items/body_egg.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/body_egg
+/obj/item/organ/body_egg
name = "body egg"
desc = "All slimy and yuck."
icon_state = "innards"
@@ -6,47 +6,47 @@
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_PARASITE_EGG
-/obj/item/organ/internal/body_egg/on_find(mob/living/finder)
+/obj/item/organ/body_egg/on_find(mob/living/finder)
..()
to_chat(finder, span_warning("You found an unknown alien organism in [owner]'s [zone]!"))
-/obj/item/organ/internal/body_egg/Initialize(mapload)
+/obj/item/organ/body_egg/Initialize(mapload)
. = ..()
if(iscarbon(loc))
Insert(loc)
-/obj/item/organ/internal/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
egg_owner.add_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT)
egg_owner.med_hud_set_status()
INVOKE_ASYNC(src, PROC_REF(AddInfectionImages), egg_owner)
-/obj/item/organ/internal/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
. = ..()
egg_owner.remove_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT)
egg_owner.med_hud_set_status()
INVOKE_ASYNC(src, PROC_REF(RemoveInfectionImages), egg_owner)
-/obj/item/organ/internal/body_egg/on_death(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/on_death(seconds_per_tick, times_fired)
. = ..()
if(!owner)
return
egg_process(seconds_per_tick, times_fired)
-/obj/item/organ/internal/body_egg/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/on_life(seconds_per_tick, times_fired)
. = ..()
egg_process(seconds_per_tick, times_fired)
-/obj/item/organ/internal/body_egg/proc/egg_process(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/proc/egg_process(seconds_per_tick, times_fired)
return
-/obj/item/organ/internal/body_egg/proc/RefreshInfectionImage()
+/obj/item/organ/body_egg/proc/RefreshInfectionImage()
RemoveInfectionImages()
AddInfectionImages()
-/obj/item/organ/internal/body_egg/proc/AddInfectionImages()
+/obj/item/organ/body_egg/proc/AddInfectionImages()
return
-/obj/item/organ/internal/body_egg/proc/RemoveInfectionImages()
+/obj/item/organ/body_egg/proc/RemoveInfectionImages()
return
diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm
index aa51d71c5ed..e99ed4b3320 100644
--- a/code/game/objects/items/choice_beacon.dm
+++ b/code/game/objects/items/choice_beacon.dm
@@ -147,12 +147,12 @@
augment_list = list()
// cyberimplants range from a nice bonus to fucking broken bullshit so no subtypesof
var/list/selectable_types = list(
- /obj/item/organ/internal/cyberimp/brain/anti_drop,
- /obj/item/organ/internal/cyberimp/arm/toolset,
- /obj/item/organ/internal/cyberimp/arm/surgery,
- /obj/item/organ/internal/cyberimp/chest/thrusters,
- /obj/item/organ/internal/lungs/cybernetic/tier3,
- /obj/item/organ/internal/liver/cybernetic/tier3,
+ /obj/item/organ/cyberimp/brain/anti_drop,
+ /obj/item/organ/cyberimp/arm/toolset,
+ /obj/item/organ/cyberimp/arm/surgery,
+ /obj/item/organ/cyberimp/chest/thrusters,
+ /obj/item/organ/lungs/cybernetic/tier3,
+ /obj/item/organ/liver/cybernetic/tier3,
)
for(var/obj/item/organ/organ as anything in selectable_types)
augment_list[initial(organ.name)] = organ
diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm
index b4ee67ea9d7..015babebce0 100644
--- a/code/game/objects/items/cigarettes.dm
+++ b/code/game/objects/items/cigarettes.dm
@@ -452,12 +452,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return
how_long_have_we_been_smokin += seconds_per_tick * (1 SECONDS)
- reagents.expose(smoker, INGEST, min(to_smoke / reagents.total_volume, 1))
- var/obj/item/organ/internal/lungs/lungs = smoker.get_organ_slot(ORGAN_SLOT_LUNGS)
+ reagents.expose(smoker, INHALE, min(to_smoke / reagents.total_volume, 1))
+ var/obj/item/organ/lungs/lungs = smoker.get_organ_slot(ORGAN_SLOT_LUNGS)
if(lungs && IS_ORGANIC_ORGAN(lungs))
var/smoker_resistance = HAS_TRAIT(smoker, TRAIT_SMOKER) ? 0.5 : 1
smoker.adjustOrganLoss(ORGAN_SLOT_LUNGS, lung_harm * smoker_resistance)
- if(!reagents.trans_to(smoker, to_smoke, methods = INGEST, ignore_stomach = TRUE))
+ if(!reagents.trans_to(smoker, to_smoke, methods = INHALE, ignore_stomach = TRUE))
reagents.remove_all(to_smoke)
/obj/item/cigarette/process(seconds_per_tick)
@@ -1011,7 +1011,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
e.start(src)
qdel(src)
- if(!reagents.trans_to(vaper, REAGENTS_METABOLISM, methods = INGEST, ignore_stomach = TRUE))
+ if(!reagents.trans_to(vaper, REAGENTS_METABOLISM, methods = INHALE, ignore_stomach = TRUE))
reagents.remove_all(REAGENTS_METABOLISM)
/obj/item/vape/process(seconds_per_tick)
diff --git a/code/game/objects/items/climbingrope.dm b/code/game/objects/items/climbingrope.dm
index 57eaa06935c..936858bbae7 100644
--- a/code/game/objects/items/climbingrope.dm
+++ b/code/game/objects/items/climbingrope.dm
@@ -59,7 +59,7 @@
// Misc bonuses to the climb speed.
var/misc_multiplier = 1
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
misc_multiplier *= potential_spine.athletics_boost_multiplier
@@ -68,6 +68,7 @@
if(do_after(user, final_climb_time, target))
user.forceMove(target)
uses--
+ user.mind?.adjust_experience(/datum/skill/athletics, 50) //get some experience for our trouble, especially since this costs us a climbing rope use
if(uses <= 0)
user.visible_message(span_warning("[src] snaps and tears apart!"))
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 7184db90932..d6b13b8bfa0 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -589,7 +589,7 @@
if(do_after(user, 3 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process
user.visible_message(span_notice("[user] places [src] on [H]'s chest."), span_warning("You place [src] on [H]'s chest."))
playsound(src, 'sound/machines/defib/defib_charge.ogg', 75, FALSE)
- var/obj/item/organ/internal/heart = H.get_organ_by_type(/obj/item/organ/internal/heart)
+ var/obj/item/organ/heart = H.get_organ_by_type(/obj/item/organ/heart)
if(do_after(user, 2 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total
if((!combat && !req_defib) || (req_defib && !defib.combat))
for(var/obj/item/clothing/C in H.get_equipped_items())
@@ -679,7 +679,7 @@
iterated_part.emp_act(EMP_LIGHT)
for (var/obj/item/organ/iterated_organ as anything in H.organs)
iterated_organ.emp_act(EMP_LIGHT)
- var/obj/item/organ/internal/brain/brain_organ = H.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain_organ = H.get_organ_slot(ORGAN_SLOT_BRAIN)
if (istype(brain_organ))
var/datum/brain_trauma/trauma = brain_organ.gain_trauma_type(SYNTH_DEFIBBED_TRAUMA_SEVERITY, TRAUMA_LIMIT_BASIC)
if (!QDELETED(trauma))
@@ -688,7 +688,7 @@
do_success()
return
- else if (!H.get_organ_by_type(/obj/item/organ/internal/heart))
+ else if (!H.get_organ_by_type(/obj/item/organ/heart))
user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's heart is missing. Operation aborted."))
playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
else if(H.undergoing_cardiac_arrest())
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 657d054f11c..94b7e14fe80 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -112,8 +112,8 @@
to_chat(user, span_warning("You're going to need to remove that [(M.head && M.head.flags_cover & HEADCOVERSEYES) ? "helmet" : (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSEYES) ? "mask": "glasses"] first!"))
return
- var/obj/item/organ/internal/eyes/E = M.get_organ_slot(ORGAN_SLOT_EYES)
- var/obj/item/organ/internal/brain = M.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/eyes/E = M.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/brain = M.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!E)
to_chat(user, span_warning("[M] doesn't have any eyes!"))
return
@@ -889,7 +889,7 @@
if(!fuel)
user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but it's empty!"))
return SHAME
- var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes)
user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but [user.p_they()] don't have any!"))
return SHAME
diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm
index 3a4cdf2ffa0..e880f9e46a1 100644
--- a/code/game/objects/items/devices/scanners/health_analyzer.dm
+++ b/code/game/objects/items/devices/scanners/health_analyzer.dm
@@ -336,7 +336,7 @@
// Cybernetics
var/list/cyberimps
- for(var/obj/item/organ/internal/cyberimp/cyberimp in humantarget.organs)
+ for(var/obj/item/organ/cyberimp/cyberimp in humantarget.organs)
if(IS_ROBOTIC_ORGAN(cyberimp) && !(cyberimp.organ_flags & ORGAN_HIDDEN))
LAZYADD(cyberimps, cyberimp.examine_title(user))
if(LAZYLEN(cyberimps))
@@ -486,7 +486,7 @@
render_block.Cut()
// Stomach reagents
- var/obj/item/organ/internal/stomach/belly = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = target.get_organ_slot(ORGAN_SLOT_STOMACH)
if(belly)
if(belly.reagents.reagent_list.len)
for(var/bile in belly.reagents.reagent_list)
diff --git a/code/game/objects/items/drug_items.dm b/code/game/objects/items/drug_items.dm
index d25c9571455..7f31b155a26 100644
--- a/code/game/objects/items/drug_items.dm
+++ b/code/game/objects/items/drug_items.dm
@@ -44,6 +44,8 @@
reagent_flags = TRANSPARENT
spillable = FALSE
list_reagents = list(/datum/reagent/drug/blastoff = 10)
+ reagent_consumption_method = INHALE
+ consumption_sound = 'sound/effects/spray2.ogg'
/obj/item/reagent_containers/cup/blastoff_ampoule/update_icon_state()
. = ..()
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
index 1eae1693735..1f428236e82 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/dualsaber.dm
@@ -86,7 +86,7 @@
user.visible_message(span_suicide("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!"))
var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code
- var/obj/item/organ/internal/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea
var/randdir
for(var/i in 1 to 24)//like a headless chicken!
diff --git a/code/game/objects/items/dyespray.dm b/code/game/objects/items/dyespray.dm
index 1893774b21b..8cc721b5c12 100644
--- a/code/game/objects/items/dyespray.dm
+++ b/code/game/objects/items/dyespray.dm
@@ -29,11 +29,34 @@
return //NOVA EDIT ADDITION
var/mob/living/carbon/human/human_target = target
- var/beard_or_hair = tgui_alert(user, "What do you want to dye?", "Character Preference", list("Hair", "Facial Hair"))
- if(!beard_or_hair || !user.can_perform_action(src, NEED_DEXTERITY))
+ var/list/dyables = list("Hair", "Facial Hair")
+ for(var/obj/item/organ/organ as anything in human_target.organs)
+ if(!istype(organ.bodypart_overlay, /datum/bodypart_overlay/mutant))
+ continue
+ var/datum/bodypart_overlay/mutant/overlay = organ.bodypart_overlay
+ if(overlay.dyable && overlay.sprite_datum.color_src)
+ dyables += list("External Body Parts")
+ break
+ var/obj/item/bodypart/head/head = human_target.get_bodypart(BODY_ZONE_HEAD)
+ if(!head || !(head.head_flags & HEAD_HAIR) || HAS_TRAIT(human_target, TRAIT_BALD))
+ dyables -= "Hair"
+ if(!head || !(head.head_flags & HEAD_FACIAL_HAIR) || HAS_TRAIT(human_target, TRAIT_SHAVED))
+ dyables -= "Facial Hair"
+ if(!length(dyables))
+ if(target != user)
+ to_chat(user, span_warning("[human_target] doesn't have anything that can be dyed."))
+ else
+ to_chat(user, span_warning("You have nothing to dye."))
+ return
+ var/what_to_dye = tgui_alert(user, "What do you want to dye?", "Character Preference", dyables)
+ if(!what_to_dye || !user.can_perform_action(src, NEED_DEXTERITY))
+ return
+
+ if(what_to_dye == "External Bodyparts/Organs")
+ dye_organ(target, user)
return
- var/list/choices = beard_or_hair == "Hair" ? SSaccessories.hair_gradients_list : SSaccessories.facial_hair_gradients_list
+ var/list/choices = what_to_dye == "Hair" ? SSaccessories.hair_gradients_list : SSaccessories.facial_hair_gradients_list
var/new_grad_style = tgui_input_list(user, "Choose a color pattern", "Character Preference", choices)
if(isnull(new_grad_style))
return
@@ -47,7 +70,7 @@
to_chat(user, span_notice("You start applying the hair dye..."))
if(!do_after(user, 3 SECONDS, target))
return
- if(beard_or_hair == "Hair")
+ if(what_to_dye == "Hair")
human_target.set_hair_gradient_style(new_grad_style, update = FALSE)
human_target.set_hair_gradient_color(new_grad_color, update = TRUE)
else
@@ -55,3 +78,47 @@
human_target.set_facial_hair_gradient_color(new_grad_color, update = TRUE)
playsound(src, 'sound/effects/spray.ogg', 10, vary = TRUE)
*/
+
+/obj/item/dyespray/proc/dye_organ(mob/living/carbon/human/target, mob/user)
+ var/list/dyables = list()
+ var/list/choices = list()
+ for(var/obj/item/organ/organ as anything in target.organs)
+ if(!istype(organ.bodypart_overlay, /datum/bodypart_overlay/mutant))
+ continue
+ var/datum/bodypart_overlay/mutant/overlay = organ.bodypart_overlay
+ if(overlay.dyable && overlay.sprite_datum.color_src)
+ var/choice_name = full_capitalize(organ.name)
+ dyables[choice_name] = organ
+ choices += choice_name
+ if(!length(choices))
+ return
+ var/what_to_dye = tgui_alert(user, "What do you want to dye?", "Character Preference", choices)
+ if(!what_to_dye || !user.can_perform_action(src, NEED_DEXTERITY))
+ return
+
+ var/obj/item/organ/selected = dyables[what_to_dye]
+ if(QDELETED(selected) || !(selected in target.organs))
+ return
+
+ var/datum/bodypart_overlay/mutant/overlay = selected.bodypart_overlay
+ if(overlay.dye_color)
+ var/remove_dye = tgui_alert(user, "Do you want to un-dye [selected]?", "Character Preference", list("Yes", "No"))
+ if(isnull(remove_dye) || !user.can_perform_action(src, NEED_DEXTERITY))
+ return
+ if(QDELETED(selected) || !(selected in target.organs))
+ return
+ if(remove_dye == "Yes")
+ overlay.set_dye_color(null, selected)
+ return
+
+ var/default_color = overlay.dye_color || overlay.draw_color
+ var/new_color = input(user, "Choose a color for [selected]:", "Character Preference", default_color) as color|null
+ if(isnull(new_color) || new_color == default_color || !user.can_perform_action(src, NEED_DEXTERITY))
+ return
+ if(QDELETED(selected) || !(selected in target.organs))
+ return
+ if(!do_after(user, 4.5 SECONDS, target))
+ return
+ if(QDELETED(selected) || !(selected in target.organs))
+ return
+ overlay.set_dye_color(new_color, selected)
diff --git a/code/game/objects/items/food/donuts.dm b/code/game/objects/items/food/donuts.dm
index 922ed2eaa66..993ada424ad 100644
--- a/code/game/objects/items/food/donuts.dm
+++ b/code/game/objects/items/food/donuts.dm
@@ -45,7 +45,7 @@
///Override for checkliked in edible component, because all cops LOVE donuts
/obj/item/food/donut/proc/check_liked(mob/living/carbon/human/consumer)
- var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
if(!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
return FOOD_LIKED
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index b3ad6ce0b40..4c289e60efb 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -611,7 +611,7 @@
AddComponent(/datum/component/edible, check_liked = CALLBACK(src, PROC_REF(check_liked)))
/obj/item/food/pickle/proc/check_liked(mob/living/carbon/human/consumer)
- var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
if(!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM))
return FOOD_LIKED
diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm
index 8dc706d8723..6ac9bdf97c1 100644
--- a/code/game/objects/items/hand_items.dm
+++ b/code/game/objects/items/hand_items.dm
@@ -635,7 +635,7 @@
if(!iscarbon(target))
return
var/mob/living/carbon/heartbreakee = target
- var/obj/item/organ/internal/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot(ORGAN_SLOT_HEART)
dont_go_breakin_my_heart.apply_organ_damage(999)
// Based on energy gun characteristics
diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm
index 9c9ebc3c9bd..b87bf0f593e 100644
--- a/code/game/objects/items/melee/baton.dm
+++ b/code/game/objects/items/melee/baton.dm
@@ -352,7 +352,7 @@
/obj/item/melee/baton/telescopic/suicide_act(mob/living/user)
var/mob/living/carbon/human/human_user = user
- var/obj/item/organ/internal/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/brain)
user.visible_message(span_suicide("[user] stuffs [src] up [user.p_their()] nose and presses the 'extend' button! It looks like [user.p_theyre()] trying to clear [user.p_their()] mind."))
if(active)
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 1917f98ba2c..adde7bba3c1 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -95,7 +95,7 @@
*/
/obj/item/melee/sabre/proc/attempt_bane(element_owner, mob/living/carbon/criminal)
SIGNAL_HANDLER
- var/obj/item/organ/internal/liver/liver = criminal.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = criminal.get_organ_slot(ORGAN_SLOT_LIVER)
if(isnull(liver) || !HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
return COMPONENT_CANCEL_BANING
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index fdfd2b5568e..443fd3bb64f 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -239,7 +239,7 @@
else if(istype(W, /obj/item/bodypart/head/robot))
var/obj/item/bodypart/head/robot/HD = W
- if(locate(/obj/item/organ/internal) in HD)
+ if(locate(/obj/item/organ) in HD)
to_chat(user, span_warning("There are organs inside [HD]!"))
return
if(head)
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 586e1461527..2f399bd35b9 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -435,7 +435,7 @@
/obj/item/lighter,
/obj/item/mining_scanner,
/obj/item/multitool,
- /obj/item/organ/internal/monster_core,
+ /obj/item/organ/monster_core,
/obj/item/pickaxe,
/obj/item/radio,
/obj/item/reagent_containers/cup/glass,
@@ -479,7 +479,7 @@
for(var/i in 1 to 2)
new /obj/item/reagent_containers/hypospray/medipen/survival(src)
for(var/i in 1 to 2)
- var/obj/item/organ/internal/monster_core/core = new /obj/item/organ/internal/monster_core/regenerative_core/legion(src)
+ var/obj/item/organ/monster_core/core = new /obj/item/organ/monster_core/regenerative_core/legion(src)
core.preserve()
/obj/item/storage/belt/mining/primitive
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index 120b91a40ff..e6dad759c83 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -385,7 +385,7 @@
. = ..()
if(.)
return
- if(user.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+ if(user.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
switch(status)
if(BURSTING)
to_chat(user, span_notice("The child is hatching out."))
@@ -457,7 +457,7 @@
return
var/mob/living/carbon/C = AM
- if(C.stat == CONSCIOUS && C.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
+ if(C.stat == CONSCIOUS && C.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
return
Burst(kill=FALSE)
diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm
index 131e08808fb..3a6d6d3ee4a 100644
--- a/code/game/objects/structures/beds_chairs/alien_nest.dm
+++ b/code/game/objects/structures/beds_chairs/alien_nest.dm
@@ -26,7 +26,7 @@
if(!length(buckled_mobs))
return
- if(hero.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+ if(hero.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
unbuckle_mob(captive)
add_fingerprint(hero)
return
@@ -59,9 +59,9 @@
if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.incapacitated || M.buckled )
return
- if(M.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+ if(M.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
return
- if(!user.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+ if(!user.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
return
if(has_buckled_mobs())
diff --git a/code/game/objects/structures/gym/punching_bag.dm b/code/game/objects/structures/gym/punching_bag.dm
index bba9e4f715c..bea51bc1d8c 100644
--- a/code/game/objects/structures/gym/punching_bag.dm
+++ b/code/game/objects/structures/gym/punching_bag.dm
@@ -58,7 +58,7 @@
if (is_heavy_gravity)
stamina_exhaustion *= 1.5
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
stamina_exhaustion *= potential_spine.athletics_boost_multiplier
diff --git a/code/game/objects/structures/gym/weight_machine.dm b/code/game/objects/structures/gym/weight_machine.dm
index 352ef65ff00..b36e35245c2 100644
--- a/code/game/objects/structures/gym/weight_machine.dm
+++ b/code/game/objects/structures/gym/weight_machine.dm
@@ -172,7 +172,7 @@
// total stamina drain of 1 workout calculated based on the workout length
var/stamina_exhaustion = FLOOR(user.maxHealth / workout_reps / WORKOUT_LENGTH, 0.1)
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
stamina_exhaustion *= potential_spine.athletics_boost_multiplier
diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm
index fb082b72456..f9d490a29b2 100644
--- a/code/game/objects/structures/icemoon/cave_entrance.dm
+++ b/code/game/objects/structures/icemoon/cave_entrance.dm
@@ -150,7 +150,7 @@ GLOBAL_LIST_INIT(ore_probability, list(
if(3)
new /obj/item/reagent_containers/cup/bottle/potion/flight(loc)
if(4)
- new /obj/item/organ/internal/heart/cursed/wizard(loc)
+ new /obj/item/organ/heart/cursed/wizard(loc)
if(5)
new /obj/item/jacobs_ladder(loc)
if(6)
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index 17f81eb2428..80b3a10e8e9 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -112,21 +112,21 @@
// Misc bonuses to the climb speed.
var/misc_multiplier = 1
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
misc_multiplier *= potential_spine.athletics_boost_multiplier
var/final_travel_time = (travel_time - fitness_level) * misc_multiplier
if(do_after(user, final_travel_time, target = src, interaction_key = DOAFTER_SOURCE_CLIMBING_LADDER))
- travel(user, going_up)
+ travel(user, going_up, grant_exp = TRUE)
/// The message shown when the player starts climbing the ladder
/obj/structure/ladder/proc/show_initial_fluff_message(mob/user, going_up)
var/up_down = going_up ? "up" : "down"
user.balloon_alert_to_viewers("climbing [up_down]...")
-/obj/structure/ladder/proc/travel(mob/user, going_up = TRUE, is_ghost = FALSE)
+/obj/structure/ladder/proc/travel(mob/user, going_up = TRUE, is_ghost = FALSE, grant_exp = FALSE)
var/obj/structure/ladder/ladder = going_up ? up : down
if(!ladder)
balloon_alert(user, "there's nothing that way!")
@@ -138,6 +138,9 @@
var/turf/target = get_turf(ladder)
user.zMove(target = target, z_move_flags = ZMOVE_CHECK_PULLEDBY|ZMOVE_ALLOW_BUCKLED|ZMOVE_INCLUDE_PULLED)
+ if(grant_exp)
+ user.mind?.adjust_experience(/datum/skill/athletics, 10) //get a little experience for our trouble
+
if(!is_ghost)
show_final_fluff_message(user, ladder, going_up)
diff --git a/code/game/objects/structures/lavaland/gulag_vent.dm b/code/game/objects/structures/lavaland/gulag_vent.dm
index 8cb530e31b1..d6e30cf1fe3 100644
--- a/code/game/objects/structures/lavaland/gulag_vent.dm
+++ b/code/game/objects/structures/lavaland/gulag_vent.dm
@@ -33,7 +33,7 @@
var/boulder_lift_speed = 8 SECONDS
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = living_user.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = living_user.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
boulder_lift_speed *= potential_spine.athletics_boost_multiplier
diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm
index d27a2e8e1cd..895602bb017 100644
--- a/code/game/objects/structures/petrified_statue.dm
+++ b/code/game/objects/structures/petrified_statue.dm
@@ -77,7 +77,7 @@
petrified_mob.investigate_log("has been dusted by statue deconstruction.", INVESTIGATE_DEATHS)
if(iscarbon(petrified_mob) && brain)
var/mob/living/carbon/petrified_carbon = petrified_mob
- var/obj/item/organ/internal/brain/carbon_brain = petrified_carbon.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/carbon_brain = petrified_carbon.get_organ_slot(ORGAN_SLOT_BRAIN)
carbon_brain.Remove(petrified_carbon)
carbon_brain.forceMove(get_turf(src))
carbon_brain.name = "petrified [carbon_brain.name]"
diff --git a/code/game/objects/structures/signs/sign_eyechart.dm b/code/game/objects/structures/signs/sign_eyechart.dm
index eaaa3bb2428..de0db7d0074 100644
--- a/code/game/objects/structures/signs/sign_eyechart.dm
+++ b/code/game/objects/structures/signs/sign_eyechart.dm
@@ -35,7 +35,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/eyechart, 32)
else if(isdog(user) || iscat(user))
colorblind = TRUE // i know these pets are not colorblind in the conventional sense, but it's an easter egg, ok?
- var/obj/item/organ/internal/eyes/eye = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eye = user.get_organ_slot(ORGAN_SLOT_EYES)
// eye null checks here are for mobs without eyes.
// humans missing eyes will be caught by the is_blind check above.
var/eye_goodness = isnull(eye) ? 0 : eye.damage
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 6a03adbdfb1..08a730110a9 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -288,7 +288,7 @@
tableplace_delay = 2.75 SECONDS
skills_space = " quickly"
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
tableplace_delay *= potential_spine.athletics_boost_multiplier
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 92c77e0b12a..10e9bd1299d 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -669,7 +669,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
clear_reagents_to_vomit_pool(vomiter, throw_up, purge_ratio)
/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V, purge_ratio = 0.1)
- var/obj/item/organ/internal/stomach/belly = M.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = M.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!belly?.reagents.total_volume)
return
var/chemicals_lost = belly.reagents.total_volume * purge_ratio
diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm
index c58d63581bd..93b398397c2 100644
--- a/code/modules/admin/verbs/adminfun.dm
+++ b/code/modules/admin/verbs/adminfun.dm
@@ -110,7 +110,7 @@ ADMIN_VERB(mass_zombie_infection, R_ADMIN, "Mass Zombie Infection", "Infects all
for(var/i in GLOB.human_list)
var/mob/living/carbon/human/H = i
- new /obj/item/organ/internal/zombie_infection/nodamage(H)
+ new /obj/item/organ/zombie_infection/nodamage(H)
message_admins("[key_name_admin(user)] added a latent zombie infection to all humans.")
log_admin("[key_name(user)] added a latent zombie infection to all humans.")
@@ -121,7 +121,7 @@ ADMIN_VERB(mass_zombie_cure, R_ADMIN, "Mass Zombie Cure", "Removes the zombie in
if(confirm != "Yes")
return
- for(var/obj/item/organ/internal/zombie_infection/nodamage/I in GLOB.zombie_infection_list)
+ for(var/obj/item/organ/zombie_infection/nodamage/I in GLOB.zombie_infection_list)
qdel(I)
message_admins("[key_name_admin(user)] cured all zombies.")
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index 368f6f4d6f4..26cf1222113 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -517,8 +517,8 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
if(H.dna.species.id == SPECIES_HUMAN)
if(H.dna.features["tail_human"] == "None" || H.dna.features["ears"] == "None")
- var/obj/item/organ/internal/ears/cat/ears = new
- var/obj/item/organ/external/tail/cat/tail = new
+ var/obj/item/organ/ears/cat/ears = new
+ var/obj/item/organ/tail/cat/tail = new
ears.Insert(H, movement_flags = DELETE_IF_REPLACED)
tail.Insert(H, movement_flags = DELETE_IF_REPLACED)
var/list/honorifics = list("[MALE]" = list("kun"), "[FEMALE]" = list("chan","tan"), "[NEUTER]" = list("san"), "[PLURAL]" = list("san")) //John Robust -> Robust-kun
diff --git a/code/modules/admin/verbs/selectequipment.dm b/code/modules/admin/verbs/selectequipment.dm
index 415130fa1b7..96534967702 100644
--- a/code/modules/admin/verbs/selectequipment.dm
+++ b/code/modules/admin/verbs/selectequipment.dm
@@ -213,7 +213,7 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(select_equipment, R_FUN, "Select Equipment", mob/ta
for(var/obj/item/item in human_target.get_equipped_items(includes_flags))
qdel(item)
- var/obj/item/organ/internal/brain/human_brain = human_target.get_organ_slot(BRAIN)
+ var/obj/item/organ/brain/human_brain = human_target.get_organ_slot(BRAIN)
human_brain.destroy_all_skillchips() // get rid of skillchips to prevent runtimes
if(dresscode != "Naked")
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index 8bd5f3f8432..d33bb48887f 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -98,7 +98,7 @@
//Equip
var/mob/living/carbon/human/new_abductor = owner.current
new_abductor.set_species(/datum/species/abductor)
- var/obj/item/organ/internal/tongue/abductor/abductor_tongue = new_abductor.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/abductor/abductor_tongue = new_abductor.get_organ_slot(ORGAN_SLOT_TONGUE)
abductor_tongue.mothership = "[team.name]"
new_abductor.real_name = "[team.name] [sub_role]"
diff --git a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
index a02d89e6b1d..296eef07e81 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
@@ -29,7 +29,7 @@
accept_hand = 1
time = 32
var/obj/item/organ/IC = null
- var/list/organ_types = list(/obj/item/organ/internal/heart)
+ var/list/organ_types = list(/obj/item/organ/heart)
/datum/surgery_step/extract_organ/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
for(var/atom/A in target.organs)
@@ -50,7 +50,7 @@
/datum/surgery_step/gland_insert
name = "insert gland"
- implements = list(/obj/item/organ/internal/heart/gland = 100)
+ implements = list(/obj/item/organ/heart/gland = 100)
time = 32
/datum/surgery_step/gland_insert/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -59,6 +59,6 @@
/datum/surgery_step/gland_insert/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message(span_notice("[user] inserts [tool] into [target]."), span_notice("You insert [tool] into [target]."))
user.temporarilyRemoveItemFromInventory(tool, TRUE)
- var/obj/item/organ/internal/heart/gland/gland = tool
+ var/obj/item/organ/heart/gland/gland = tool
gland.Insert(target, 2)
return 1
diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
index 9f6d10677d1..d70dc3f0e67 100644
--- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
+++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
@@ -178,7 +178,7 @@
/obj/item/abductor/mind_device/proc/mind_control(atom/target, mob/living/user)
if(iscarbon(target))
var/mob/living/carbon/carbon_target = target
- var/obj/item/organ/internal/heart/gland/target_gland = carbon_target.get_organ_slot("heart")
+ var/obj/item/organ/heart/gland/target_gland = carbon_target.get_organ_slot("heart")
if(!istype(target_gland))
to_chat(user, span_warning("Your target does not have an experimental gland!"))
return
@@ -448,7 +448,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
species = span_notice("[human_victim.dna.species.name]")
if(IS_CHANGELING(human_victim))
species = span_warning("Changeling lifeform")
- var/obj/item/organ/internal/heart/gland/temp = locate() in human_victim.organs
+ var/obj/item/organ/heart/gland/temp = locate() in human_victim.organs
if(temp)
helptext = span_warning("Experimental gland detected!")
else
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index d1f240b7f68..b991a16b831 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland
+/obj/item/organ/heart/gland
name = "fleshy mass"
desc = "A nausea-inducing hunk of twisting flesh and metal."
icon = 'icons/obj/antags/abductor.dmi'
@@ -22,31 +22,31 @@
var/mind_control_duration = 1800
var/active_mind_control = FALSE
-/obj/item/organ/internal/heart/gland/Initialize(mapload)
+/obj/item/organ/heart/gland/Initialize(mapload)
. = ..()
icon_state = pick(list("health", "spider", "slime", "emp", "species", "egg", "vent", "mindshock", "viral"))
AddElement(/datum/element/update_icon_blocker)
-/obj/item/organ/internal/heart/gland/examine(mob/user)
+/obj/item/organ/heart/gland/examine(mob/user)
. = ..()
if(HAS_MIND_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || isobserver(user))
. += span_notice("It is \a [abductor_hint]")
-/obj/item/organ/internal/heart/gland/Stop()
+/obj/item/organ/heart/gland/Stop()
return FALSE
-/obj/item/organ/internal/heart/gland/proc/ownerCheck()
+/obj/item/organ/heart/gland/proc/ownerCheck()
if(ishuman(owner))
return TRUE
if(!human_only && iscarbon(owner))
return TRUE
return FALSE
-/obj/item/organ/internal/heart/gland/proc/Start()
+/obj/item/organ/heart/gland/proc/Start()
active = 1
COOLDOWN_START(src, activation_cooldown, rand(cooldown_low, cooldown_high))
-/obj/item/organ/internal/heart/gland/proc/update_gland_hud()
+/obj/item/organ/heart/gland/proc/update_gland_hud()
if(!owner)
return
var/image/holder = owner.hud_list[GLAND_HUD]
@@ -59,7 +59,7 @@
else
holder.icon_state = "hudgland_spent"
-/obj/item/organ/internal/heart/gland/proc/mind_control(command, mob/living/user)
+/obj/item/organ/heart/gland/proc/mind_control(command, mob/living/user)
if(!ownerCheck() || !mind_control_uses || active_mind_control)
return FALSE
mind_control_uses--
@@ -75,7 +75,7 @@
addtimer(CALLBACK(src, PROC_REF(clear_mind_control)), mind_control_duration)
return TRUE
-/obj/item/organ/internal/heart/gland/proc/clear_mind_control()
+/obj/item/organ/heart/gland/proc/clear_mind_control()
if(!ownerCheck() || !active_mind_control)
return FALSE
owner.balloon_alert(owner, "compulsion forgotten")
@@ -84,7 +84,7 @@
active_mind_control = FALSE
return TRUE
-/obj/item/organ/internal/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags)
+/obj/item/organ/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags)
. = ..()
active = FALSE
if(initial(uses) == 1)
@@ -93,7 +93,7 @@
hud.remove_atom_from_hud(gland_owner)
clear_mind_control()
-/obj/item/organ/internal/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
if(special != 2 && uses) // Special 2 means abductor surgery
@@ -102,7 +102,7 @@
hud.add_atom_to_hud(gland_owner)
update_gland_hud()
-/obj/item/organ/internal/heart/gland/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/gland/on_life(seconds_per_tick, times_fired)
if(!active)
return
if(!ownerCheck())
@@ -115,5 +115,5 @@
if(!uses)
active = FALSE
-/obj/item/organ/internal/heart/gland/proc/activate()
+/obj/item/organ/heart/gland/proc/activate()
return
diff --git a/code/modules/antagonists/abductor/equipment/glands/access.dm b/code/modules/antagonists/abductor/equipment/glands/access.dm
index 8e8ff9a7ef9..29be30c0cfc 100644
--- a/code/modules/antagonists/abductor/equipment/glands/access.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/access.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/access
+/obj/item/organ/heart/gland/access
abductor_hint = "anagraphic electro-scrambler. After it activates, grants the abductee intrinsic all access."
cooldown_low = 600
cooldown_high = 1200
@@ -7,6 +7,6 @@
mind_control_uses = 3
mind_control_duration = 900
-/obj/item/organ/internal/heart/gland/access/activate()
+/obj/item/organ/heart/gland/access/activate()
to_chat(owner, span_notice("You feel like a VIP for some reason."))
owner.AddComponent(/datum/component/simple_access, SSid_access.get_region_access_list(list(REGION_ALL_GLOBAL)), src)
diff --git a/code/modules/antagonists/abductor/equipment/glands/blood.dm b/code/modules/antagonists/abductor/equipment/glands/blood.dm
index 522354fac3a..b1d40852673 100644
--- a/code/modules/antagonists/abductor/equipment/glands/blood.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/blood.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/blood
+/obj/item/organ/heart/gland/blood
abductor_hint = "pseudonuclear hemo-destabilizer. Periodically randomizes the abductee's bloodtype into a random reagent."
cooldown_low = 1200
cooldown_high = 1800
@@ -9,7 +9,7 @@
mind_control_uses = 3
mind_control_duration = 1500
-/obj/item/organ/internal/heart/gland/blood/activate()
+/obj/item/organ/heart/gland/blood/activate()
if(!ishuman(owner) || !owner.dna.species)
return
var/mob/living/carbon/human/H = owner
diff --git a/code/modules/antagonists/abductor/equipment/glands/chem.dm b/code/modules/antagonists/abductor/equipment/glands/chem.dm
index 965d8f2fc20..54644bd8e9f 100644
--- a/code/modules/antagonists/abductor/equipment/glands/chem.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/chem.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/chem
+/obj/item/organ/heart/gland/chem
abductor_hint = "intrinsic pharma-provider. The abductee constantly produces random chemicals inside their bloodstream. They also quickly regenerate toxin damage."
cooldown_low = 50
cooldown_high = 50
@@ -8,12 +8,12 @@
mind_control_duration = 1200
var/list/possible_reagents = list()
-/obj/item/organ/internal/heart/gland/chem/Initialize(mapload)
+/obj/item/organ/heart/gland/chem/Initialize(mapload)
. = ..()
for(var/R in subtypesof(/datum/reagent/drug) + subtypesof(/datum/reagent/medicine) + typesof(/datum/reagent/toxin))
possible_reagents += R
-/obj/item/organ/internal/heart/gland/chem/activate()
+/obj/item/organ/heart/gland/chem/activate()
var/chem_to_add = pick(possible_reagents)
owner.reagents.add_reagent(chem_to_add, 2)
owner.adjustToxLoss(-5, forced = TRUE)
diff --git a/code/modules/antagonists/abductor/equipment/glands/egg.dm b/code/modules/antagonists/abductor/equipment/glands/egg.dm
index 938caeeb361..67c3efd42cb 100644
--- a/code/modules/antagonists/abductor/equipment/glands/egg.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/egg.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/egg
+/obj/item/organ/heart/gland/egg
abductor_hint = "roe/enzymatic synthesizer. The abductee will periodically lay eggs filled with random reagents."
cooldown_low = 300
cooldown_high = 400
@@ -9,7 +9,7 @@
mind_control_uses = 2
mind_control_duration = 1800
-/obj/item/organ/internal/heart/gland/egg/activate()
+/obj/item/organ/heart/gland/egg/activate()
owner.visible_message(span_alertalien("[owner] [pick(EGG_LAYING_MESSAGES)]"))
var/turf/T = owner.drop_location()
new /obj/item/food/egg/gland(T)
diff --git a/code/modules/antagonists/abductor/equipment/glands/electric.dm b/code/modules/antagonists/abductor/equipment/glands/electric.dm
index e0b3df0f19c..77c6cfdfeec 100644
--- a/code/modules/antagonists/abductor/equipment/glands/electric.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/electric.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/electric
+/obj/item/organ/heart/gland/electric
abductor_hint = "electron accumulator/discharger. The abductee becomes fully immune to electric shocks. Additionally, they will randomly discharge electric bolts."
cooldown_low = 800
cooldown_high = 1200
@@ -7,20 +7,20 @@
mind_control_uses = 2
mind_control_duration = 900
-/obj/item/organ/internal/heart/gland/electric/on_mob_insert(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/electric/on_mob_insert(mob/living/carbon/gland_owner)
. = ..()
ADD_TRAIT(gland_owner, TRAIT_SHOCKIMMUNE, ABDUCTOR_GLAND_TRAIT)
-/obj/item/organ/internal/heart/gland/electric/on_mob_remove(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/electric/on_mob_remove(mob/living/carbon/gland_owner)
. = ..()
REMOVE_TRAIT(gland_owner, TRAIT_SHOCKIMMUNE, ABDUCTOR_GLAND_TRAIT)
-/obj/item/organ/internal/heart/gland/electric/activate()
+/obj/item/organ/heart/gland/electric/activate()
owner.visible_message(span_danger("[owner]'s skin starts emitting electric arcs!"),\
span_warning("You feel electric energy building up inside you!"))
playsound(get_turf(owner), SFX_SPARKS, 100, TRUE, -1, SHORT_RANGE_SOUND_EXTRARANGE)
addtimer(CALLBACK(src, PROC_REF(zap)), rand(3 SECONDS, 10 SECONDS))
-/obj/item/organ/internal/heart/gland/electric/proc/zap()
+/obj/item/organ/heart/gland/electric/proc/zap()
tesla_zap(source = owner, zap_range = 4, power = 8e3, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN)
playsound(get_turf(owner), 'sound/effects/magic/lightningshock.ogg', 50, TRUE)
diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm
index 83ba7a7ffbd..13761ba0cdb 100644
--- a/code/modules/antagonists/abductor/equipment/glands/heal.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm
@@ -1,6 +1,6 @@
#define REJECTION_VOMIT_FLAGS (MOB_VOMIT_BLOOD | MOB_VOMIT_STUN | MOB_VOMIT_KNOCKDOWN | MOB_VOMIT_FORCE)
-/obj/item/organ/internal/heart/gland/heal
+/obj/item/organ/heart/gland/heal
abductor_hint = "organic replicator. Forcibly ejects damaged and robotic organs from the abductee and regenerates them. Additionally, forcibly removes reagents (via vomit) from the abductee if they have moderate toxin damage or poison within the bloodstream, and regenerates blood to a healthy threshold if too low. The abductee will also reject implants such as mindshields."
cooldown_low = 200
cooldown_high = 400
@@ -10,7 +10,7 @@
mind_control_uses = 3
mind_control_duration = 3000
-/obj/item/organ/internal/heart/gland/heal/activate()
+/obj/item/organ/heart/gland/heal/activate()
if(!(owner.mob_biotypes & MOB_ORGANIC))
return
@@ -19,31 +19,31 @@
return
for(var/organ in owner.organs)
- if(istype(organ, /obj/item/organ/internal/cyberimp))
+ if(istype(organ, /obj/item/organ/cyberimp))
reject_cyberimp(organ)
return
- var/obj/item/organ/internal/appendix/appendix = owner.get_organ_slot(ORGAN_SLOT_APPENDIX)
+ var/obj/item/organ/appendix/appendix = owner.get_organ_slot(ORGAN_SLOT_APPENDIX)
if((!appendix && !HAS_TRAIT(owner, TRAIT_NOHUNGER)) || (appendix && ((appendix.organ_flags & ORGAN_FAILING) || IS_ROBOTIC_ORGAN(appendix))))
replace_appendix(appendix)
return
- var/obj/item/organ/internal/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
if((!liver && !HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM)) || (liver && ((liver.damage > liver.high_threshold) || IS_ROBOTIC_ORGAN(liver))))
replace_liver(liver)
return
- var/obj/item/organ/internal/lungs/lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
if((!lungs && !HAS_TRAIT(owner, TRAIT_NOBREATH)) || (lungs && ((lungs.damage > lungs.high_threshold) || IS_ROBOTIC_ORGAN(lungs))))
replace_lungs(lungs)
return
- var/obj/item/organ/internal/stomach/stomach = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/stomach = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
if((!stomach && !HAS_TRAIT(owner, TRAIT_NOHUNGER)) || (stomach && ((stomach.damage > stomach.high_threshold) || IS_ROBOTIC_ORGAN(stomach))))
replace_stomach(stomach)
return
- var/obj/item/organ/internal/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes || (eyes && ((eyes.damage > eyes.low_threshold) || IS_ROBOTIC_ORGAN(eyes))))
replace_eyes(eyes)
return
@@ -78,19 +78,19 @@
replace_chest(chest)
return
-/obj/item/organ/internal/heart/gland/heal/proc/reject_implant(obj/item/implant/implant)
+/obj/item/organ/heart/gland/heal/proc/reject_implant(obj/item/implant/implant)
owner.visible_message(span_warning("[owner] vomits up a tiny mangled implant!"), span_userdanger("You suddenly vomit up a tiny mangled implant!"))
owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
implant.removed(owner)
qdel(implant)
-/obj/item/organ/internal/heart/gland/heal/proc/reject_cyberimp(obj/item/organ/internal/cyberimp/implant)
+/obj/item/organ/heart/gland/heal/proc/reject_cyberimp(obj/item/organ/cyberimp/implant)
owner.visible_message(span_warning("[owner] vomits up his [implant.name]!"), span_userdanger("You suddenly vomit up your [implant.name]!"))
owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
implant.Remove(owner)
implant.forceMove(owner.drop_location())
-/obj/item/organ/internal/heart/gland/heal/proc/replace_appendix(obj/item/organ/internal/appendix/appendix)
+/obj/item/organ/heart/gland/heal/proc/replace_appendix(obj/item/organ/appendix/appendix)
if(appendix)
owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
appendix.Remove(owner)
@@ -99,13 +99,13 @@
else
to_chat(owner, span_warning("You feel a weird rumble in your bowels..."))
- var/appendix_type = /obj/item/organ/internal/appendix
+ var/appendix_type = /obj/item/organ/appendix
if(owner?.dna?.species?.mutantappendix)
appendix_type = owner.dna.species.mutantappendix
- var/obj/item/organ/internal/appendix/new_appendix = new appendix_type()
+ var/obj/item/organ/appendix/new_appendix = new appendix_type()
new_appendix.Insert(owner)
-/obj/item/organ/internal/heart/gland/heal/proc/replace_liver(obj/item/organ/internal/liver/liver)
+/obj/item/organ/heart/gland/heal/proc/replace_liver(obj/item/organ/liver/liver)
if(liver)
owner.visible_message(span_warning("[owner] vomits up his [liver.name]!"), span_userdanger("You suddenly vomit up your [liver.name]!"))
owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
@@ -114,13 +114,13 @@
else
to_chat(owner, span_warning("You feel a weird rumble in your bowels..."))
- var/liver_type = /obj/item/organ/internal/liver
+ var/liver_type = /obj/item/organ/liver
if(owner?.dna?.species?.mutantliver)
liver_type = owner.dna.species.mutantliver
- var/obj/item/organ/internal/liver/new_liver = new liver_type()
+ var/obj/item/organ/liver/new_liver = new liver_type()
new_liver.Insert(owner)
-/obj/item/organ/internal/heart/gland/heal/proc/replace_lungs(obj/item/organ/internal/lungs/lungs)
+/obj/item/organ/heart/gland/heal/proc/replace_lungs(obj/item/organ/lungs/lungs)
if(lungs)
owner.visible_message(span_warning("[owner] vomits up his [lungs.name]!"), span_userdanger("You suddenly vomit up your [lungs.name]!"))
owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
@@ -129,13 +129,13 @@
else
to_chat(owner, span_warning("You feel a weird rumble inside your chest..."))
- var/lung_type = /obj/item/organ/internal/lungs
+ var/lung_type = /obj/item/organ/lungs
if(owner.dna.species && owner.dna.species.mutantlungs)
lung_type = owner.dna.species.mutantlungs
- var/obj/item/organ/internal/lungs/new_lungs = new lung_type()
+ var/obj/item/organ/lungs/new_lungs = new lung_type()
new_lungs.Insert(owner)
-/obj/item/organ/internal/heart/gland/heal/proc/replace_stomach(obj/item/organ/internal/stomach/stomach)
+/obj/item/organ/heart/gland/heal/proc/replace_stomach(obj/item/organ/stomach/stomach)
if(stomach)
owner.visible_message(span_warning("[owner] vomits up his [stomach.name]!"), span_userdanger("You suddenly vomit up your [stomach.name]!"))
owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
@@ -144,13 +144,13 @@
else
to_chat(owner, span_warning("You feel a weird rumble in your bowels..."))
- var/stomach_type = /obj/item/organ/internal/stomach
+ var/stomach_type = /obj/item/organ/stomach
if(owner?.dna?.species?.mutantstomach)
stomach_type = owner.dna.species.mutantstomach
- var/obj/item/organ/internal/stomach/new_stomach = new stomach_type()
+ var/obj/item/organ/stomach/new_stomach = new stomach_type()
new_stomach.Insert(owner)
-/obj/item/organ/internal/heart/gland/heal/proc/replace_eyes(obj/item/organ/internal/eyes/eyes)
+/obj/item/organ/heart/gland/heal/proc/replace_eyes(obj/item/organ/eyes/eyes)
if(eyes)
owner.visible_message(span_warning("[owner]'s [eyes.name] fall out of their sockets!"), span_userdanger("Your [eyes.name] fall out of their sockets!"))
playsound(owner, 'sound/effects/splat.ogg', 50, TRUE)
@@ -161,15 +161,15 @@
addtimer(CALLBACK(src, PROC_REF(finish_replace_eyes)), rand(10 SECONDS, 20 SECONDS))
-/obj/item/organ/internal/heart/gland/heal/proc/finish_replace_eyes()
- var/eye_type = /obj/item/organ/internal/eyes
+/obj/item/organ/heart/gland/heal/proc/finish_replace_eyes()
+ var/eye_type = /obj/item/organ/eyes
if(owner.dna.species && owner.dna.species.mutanteyes)
eye_type = owner.dna.species.mutanteyes
- var/obj/item/organ/internal/eyes/new_eyes = new eye_type()
+ var/obj/item/organ/eyes/new_eyes = new eye_type()
new_eyes.Insert(owner)
owner.visible_message(span_warning("A pair of new eyes suddenly inflates into [owner]'s eye sockets!"), span_userdanger("A pair of new eyes suddenly inflates into your eye sockets!"))
-/obj/item/organ/internal/heart/gland/heal/proc/replace_limb(body_zone, obj/item/bodypart/limb)
+/obj/item/organ/heart/gland/heal/proc/replace_limb(body_zone, obj/item/bodypart/limb)
if(limb)
owner.visible_message(span_warning("[owner]'s [limb.plaintext_zone] suddenly detaches from [owner.p_their()] body!"), span_userdanger("Your [limb.plaintext_zone] suddenly detaches from your body!"))
playsound(owner, SFX_DESECRATION, 50, TRUE, -1)
@@ -179,18 +179,18 @@
addtimer(CALLBACK(src, PROC_REF(finish_replace_limb), body_zone), rand(15 SECONDS, 30 SECONDS))
-/obj/item/organ/internal/heart/gland/heal/proc/finish_replace_limb(body_zone)
+/obj/item/organ/heart/gland/heal/proc/finish_replace_limb(body_zone)
owner.visible_message(span_warning("With a loud snap, [owner]'s [parse_zone(body_zone)] rapidly grows back from [owner.p_their()] body!"),
span_userdanger("With a loud snap, your [parse_zone(body_zone)] rapidly grows back from your body!"),
span_warning("Your hear a loud snap."))
playsound(owner, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
owner.regenerate_limb(body_zone)
-/obj/item/organ/internal/heart/gland/heal/proc/replace_blood()
+/obj/item/organ/heart/gland/heal/proc/replace_blood()
owner.visible_message(span_warning("[owner] starts vomiting huge amounts of blood!"), span_userdanger("You suddenly start vomiting huge amounts of blood!"))
keep_replacing_blood()
-/obj/item/organ/internal/heart/gland/heal/proc/keep_replacing_blood()
+/obj/item/organ/heart/gland/heal/proc/keep_replacing_blood()
var/keep_going = FALSE
owner.vomit(vomit_flags = (MOB_VOMIT_BLOOD | MOB_VOMIT_FORCE), lost_nutrition = 0, distance = 3)
owner.Stun(15)
@@ -209,7 +209,7 @@
if(keep_going)
addtimer(CALLBACK(src, PROC_REF(keep_replacing_blood)), 3 SECONDS)
-/obj/item/organ/internal/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest)
+/obj/item/organ/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest)
if(!IS_ORGANIC_LIMB(chest))
owner.visible_message(span_warning("[owner]'s [chest.name] rapidly expels its mechanical components, replacing them with flesh!"), span_userdanger("Your [chest.name] rapidly expels its mechanical components, replacing them with flesh!"))
playsound(owner, 'sound/effects/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE)
diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
index 1a3f140c341..a4aa88b8da9 100644
--- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/mindshock
+/obj/item/organ/heart/gland/mindshock
abductor_hint = "neural crosstalk uninhibitor. The abductee emits a disrupting psychic wave every so often. This will either stun, cause hallucinations or deal random brain damage to people nearby."
cooldown_low = 40 SECONDS
cooldown_high = 70 SECONDS
@@ -8,7 +8,7 @@
mind_control_duration = 120 SECONDS
var/list/mob/living/carbon/human/broadcasted_mobs = list()
-/obj/item/organ/internal/heart/gland/mindshock/activate()
+/obj/item/organ/heart/gland/mindshock/activate()
to_chat(owner, span_notice("You get a headache."))
var/turf/owner_turf = get_turf(owner)
@@ -30,7 +30,7 @@
if(3)
target.adjust_hallucinations(120 SECONDS)
-/obj/item/organ/internal/heart/gland/mindshock/mind_control(command, mob/living/user)
+/obj/item/organ/heart/gland/mindshock/mind_control(command, mob/living/user)
if(!ownerCheck() || !mind_control_uses || active_mind_control)
return FALSE
mind_control_uses--
@@ -62,7 +62,7 @@
update_gland_hud()
return TRUE
-/obj/item/organ/internal/heart/gland/mindshock/clear_mind_control()
+/obj/item/organ/heart/gland/mindshock/clear_mind_control()
if(!active_mind_control || !LAZYLEN(broadcasted_mobs))
return FALSE
for(var/target_mob in broadcasted_mobs)
diff --git a/code/modules/antagonists/abductor/equipment/glands/plasma.dm b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
index 76cd806bb42..6b4a6150f74 100644
--- a/code/modules/antagonists/abductor/equipment/glands/plasma.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/plasma
+/obj/item/organ/heart/gland/plasma
abductor_hint = "effluvium sanguine-synonym emitter. The abductee randomly emits clouds of plasma."
cooldown_low = 1200
cooldown_high = 1800
@@ -7,12 +7,12 @@
mind_control_uses = 1
mind_control_duration = 800
-/obj/item/organ/internal/heart/gland/plasma/activate()
+/obj/item/organ/heart/gland/plasma/activate()
to_chat(owner, span_warning("You feel bloated."))
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), owner, span_userdanger("A massive stomachache overcomes you.")), 15 SECONDS)
addtimer(CALLBACK(src, PROC_REF(vomit_plasma)), 20 SECONDS)
-/obj/item/organ/internal/heart/gland/plasma/proc/vomit_plasma()
+/obj/item/organ/heart/gland/plasma/proc/vomit_plasma()
if(!owner)
return
owner.visible_message(span_danger("[owner] vomits a cloud of plasma!"))
diff --git a/code/modules/antagonists/abductor/equipment/glands/quantum.dm b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
index a2a4a9149e7..1991287981c 100644
--- a/code/modules/antagonists/abductor/equipment/glands/quantum.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/quantum
+/obj/item/organ/heart/gland/quantum
abductor_hint = "quantic de-observation matrix. Periodically links with a random person in view, then the abductee later swaps positions with that person."
cooldown_low = 150
cooldown_high = 150
@@ -8,7 +8,7 @@
mind_control_duration = 1200
var/mob/living/carbon/entangled_mob
-/obj/item/organ/internal/heart/gland/quantum/activate()
+/obj/item/organ/heart/gland/quantum/activate()
if(entangled_mob)
return
for(var/mob/M in oview(owner, 7))
@@ -18,7 +18,7 @@
addtimer(CALLBACK(src, PROC_REF(quantum_swap)), rand(1 MINUTES, 4 MINUTES))
return
-/obj/item/organ/internal/heart/gland/quantum/proc/quantum_swap()
+/obj/item/organ/heart/gland/quantum/proc/quantum_swap()
if(QDELETED(entangled_mob))
entangled_mob = null
return
@@ -30,7 +30,7 @@
if(!active_mind_control) //Do not reset entangled mob while mind control is active
entangled_mob = null
-/obj/item/organ/internal/heart/gland/quantum/mind_control(command, mob/living/user)
+/obj/item/organ/heart/gland/quantum/mind_control(command, mob/living/user)
if(..())
if(entangled_mob && ishuman(entangled_mob) && (entangled_mob.stat < DEAD))
to_chat(entangled_mob, span_userdanger("You suddenly feel an irresistible compulsion to follow an order..."))
@@ -41,7 +41,7 @@
user.log_message("mirrored an abductor mind control message to [key_name(entangled_mob)]: [command]", LOG_GAME)
update_gland_hud()
-/obj/item/organ/internal/heart/gland/quantum/clear_mind_control()
+/obj/item/organ/heart/gland/quantum/clear_mind_control()
if(active_mind_control)
to_chat(entangled_mob, span_userdanger("You feel the compulsion fade, and you completely forget about your previous orders."))
entangled_mob.clear_alert(ALERT_MIND_CONTROL)
diff --git a/code/modules/antagonists/abductor/equipment/glands/slime.dm b/code/modules/antagonists/abductor/equipment/glands/slime.dm
index 6d3287ecae6..252afdaa45e 100644
--- a/code/modules/antagonists/abductor/equipment/glands/slime.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/slime.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/slime
+/obj/item/organ/heart/gland/slime
abductor_hint = "gastric animation galvanizer. The abductee occasionally vomits slimes. Slimes will no longer attack the abductee."
cooldown_low = 600
cooldown_high = 1200
@@ -7,17 +7,17 @@
mind_control_uses = 1
mind_control_duration = 2400
-/obj/item/organ/internal/heart/gland/slime/on_mob_insert(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/slime/on_mob_insert(mob/living/carbon/gland_owner)
. = ..()
gland_owner.faction |= FACTION_SLIME
gland_owner.grant_language(/datum/language/slime, source = LANGUAGE_GLAND)
-/obj/item/organ/internal/heart/gland/slime/on_mob_remove(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/slime/on_mob_remove(mob/living/carbon/gland_owner)
. = ..()
gland_owner.faction -= FACTION_SLIME
gland_owner.remove_language(/datum/language/slime, source = LANGUAGE_GLAND)
-/obj/item/organ/internal/heart/gland/slime/activate()
+/obj/item/organ/heart/gland/slime/activate()
to_chat(owner, span_warning("You feel nauseated!"))
owner.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 20)
diff --git a/code/modules/antagonists/abductor/equipment/glands/spider.dm b/code/modules/antagonists/abductor/equipment/glands/spider.dm
index 52ff520a876..44150d9ed80 100644
--- a/code/modules/antagonists/abductor/equipment/glands/spider.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/spider.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/spiderman
+/obj/item/organ/heart/gland/spiderman
abductor_hint = "araneae cloister accelerator. The abductee occasionally exhales spider pheromones and will spawn spiderlings."
cooldown_low = 450
cooldown_high = 900
@@ -7,7 +7,7 @@
mind_control_uses = 2
mind_control_duration = 2400
-/obj/item/organ/internal/heart/gland/spiderman/activate()
+/obj/item/organ/heart/gland/spiderman/activate()
to_chat(owner, span_warning("You feel something crawling in your skin."))
owner.faction |= FACTION_SPIDER
var/mob/living/basic/spider/growing/spiderling/spider = new(owner.drop_location())
diff --git a/code/modules/antagonists/abductor/equipment/glands/transform.dm b/code/modules/antagonists/abductor/equipment/glands/transform.dm
index 3ea10c77255..f13418a9082 100644
--- a/code/modules/antagonists/abductor/equipment/glands/transform.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/transform.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/transform
+/obj/item/organ/heart/gland/transform
abductor_hint = "anthropmorphic transmorphosizer. The abductee will occasionally change appearance and species."
cooldown_low = 900
cooldown_high = 1800
@@ -8,7 +8,7 @@
mind_control_uses = 7
mind_control_duration = 300
-/obj/item/organ/internal/heart/gland/transform/activate()
+/obj/item/organ/heart/gland/transform/activate()
to_chat(owner, span_notice("You feel unlike yourself."))
randomize_human(owner)
var/species = pick(list(/datum/species/human, /datum/species/lizard, /datum/species/moth, /datum/species/fly))
diff --git a/code/modules/antagonists/abductor/equipment/glands/trauma.dm b/code/modules/antagonists/abductor/equipment/glands/trauma.dm
index 5fab30332ef..844cc795a94 100644
--- a/code/modules/antagonists/abductor/equipment/glands/trauma.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/trauma.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/trauma
+/obj/item/organ/heart/gland/trauma
abductor_hint = "white matter randomiser. The abductee occasionally gains a random brain trauma, up to five times. The traumas can range from basic to deep-rooted."
cooldown_low = 800
cooldown_high = 1200
@@ -7,7 +7,7 @@
mind_control_uses = 3
mind_control_duration = 1800
-/obj/item/organ/internal/heart/gland/trauma/activate()
+/obj/item/organ/heart/gland/trauma/activate()
to_chat(owner, span_warning("You feel a spike of pain in your head."))
if(prob(33))
owner.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY))
diff --git a/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm b/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm
index c7e3a74e4f9..ed0cc5bbed2 100644
--- a/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/ventcrawling
+/obj/item/organ/heart/gland/ventcrawling
abductor_hint = "pliant cartilage enabler. The abductee can crawl through vents without trouble."
cooldown_low = 1800
cooldown_high = 2400
@@ -7,6 +7,6 @@
mind_control_uses = 4
mind_control_duration = 1800
-/obj/item/organ/internal/heart/gland/ventcrawling/activate()
+/obj/item/organ/heart/gland/ventcrawling/activate()
to_chat(owner, span_notice("You feel very stretchy."))
ADD_TRAIT(owner, TRAIT_VENTCRAWLER_ALWAYS, type)
diff --git a/code/modules/antagonists/abductor/equipment/glands/viral.dm b/code/modules/antagonists/abductor/equipment/glands/viral.dm
index c3d82af9674..9aa4a26e549 100644
--- a/code/modules/antagonists/abductor/equipment/glands/viral.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/viral.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/viral
+/obj/item/organ/heart/gland/viral
abductor_hint = "contamination incubator. The abductee becomes a carrier of a random advanced disease - of which they are unaffected by."
cooldown_low = 1800
cooldown_high = 2400
@@ -7,13 +7,13 @@
mind_control_uses = 1
mind_control_duration = 1800
-/obj/item/organ/internal/heart/gland/viral/activate()
+/obj/item/organ/heart/gland/viral/activate()
to_chat(owner, span_warning("You feel sick."))
var/datum/disease/advance/A = random_virus(pick(2,6),6)
A.carrier = TRUE
owner.ForceContractDisease(A, FALSE, TRUE)
-/obj/item/organ/internal/heart/gland/viral/proc/random_virus(max_symptoms, max_level)
+/obj/item/organ/heart/gland/viral/proc/random_virus(max_symptoms, max_level)
if(max_symptoms > VIRUS_SYMPTOM_LIMIT)
max_symptoms = VIRUS_SYMPTOM_LIMIT
var/datum/disease/advance/A = new /datum/disease/advance()
diff --git a/code/modules/antagonists/abductor/equipment/orderable_gear.dm b/code/modules/antagonists/abductor/equipment/orderable_gear.dm
index b133bf3f8a5..aa6ef608f6c 100644
--- a/code/modules/antagonists/abductor/equipment/orderable_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/orderable_gear.dm
@@ -53,7 +53,7 @@ GLOBAL_LIST_INIT(abductor_gear, subtypesof(/datum/abductor_gear))
name = "Superlingual Matrix"
description = "A mysterious structure that allows for instant communication between users. Using it inhand will attune it to your mothership's channel. Pretty impressive until you need to eat something."
id = "superlingual_matrix"
- build_path = list(/obj/item/organ/internal/tongue/abductor = 1)
+ build_path = list(/obj/item/organ/tongue/abductor = 1)
category = CATEGORY_MISC_GEAR
/datum/abductor_gear/mental_interface
diff --git a/code/modules/antagonists/abductor/machinery/dispenser.dm b/code/modules/antagonists/abductor/machinery/dispenser.dm
index 416153c50e5..8254247f9dd 100644
--- a/code/modules/antagonists/abductor/machinery/dispenser.dm
+++ b/code/modules/antagonists/abductor/machinery/dispenser.dm
@@ -14,7 +14,7 @@
/obj/machinery/abductor/gland_dispenser/Initialize(mapload)
. = ..()
- gland_types = subtypesof(/obj/item/organ/internal/heart/gland)
+ gland_types = subtypesof(/obj/item/organ/heart/gland)
gland_types = shuffle(gland_types)
gland_colors = new/list(gland_types.len)
amounts = new/list(gland_types.len)
@@ -62,7 +62,7 @@
return TRUE
/obj/machinery/abductor/gland_dispenser/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/organ/internal/heart/gland))
+ if(istype(W, /obj/item/organ/heart/gland))
if(!user.transferItemToLoc(W, src))
return
for(var/i in 1 to gland_colors.len)
diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm
index c4e59c505bf..324ec4381e1 100644
--- a/code/modules/antagonists/abductor/machinery/experiment.dm
+++ b/code/modules/antagonists/abductor/machinery/experiment.dm
@@ -137,7 +137,7 @@
if(occupant.stat == DEAD)
say("Specimen deceased - please provide fresh sample.")
return "Specimen deceased."
- var/obj/item/organ/internal/heart/gland/GlandTest = locate() in occupant.organs
+ var/obj/item/organ/heart/gland/GlandTest = locate() in occupant.organs
if(!GlandTest)
say("Experimental dissection not detected!")
return "No glands detected!"
@@ -158,7 +158,7 @@
user_abductor.team.abductees += occupant.mind
occupant.mind.add_antag_datum(/datum/antagonist/abductee)
- for(var/obj/item/organ/internal/heart/gland/G in occupant.organs)
+ for(var/obj/item/organ/heart/gland/G in occupant.organs)
G.Start()
point_reward++
if(point_reward > 0)
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index f15dfd27164..615a3d7a325 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -161,7 +161,7 @@
make_brain_decoy(living_mob)
/datum/antagonist/changeling/proc/make_brain_decoy(mob/living/ling)
- var/obj/item/organ/internal/brain/our_ling_brain = ling.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/our_ling_brain = ling.get_organ_slot(ORGAN_SLOT_BRAIN)
if(isnull(our_ling_brain) || our_ling_brain.decoy_override)
return
diff --git a/code/modules/antagonists/changeling/headslug_eggs.dm b/code/modules/antagonists/changeling/headslug_eggs.dm
index 75c0881c551..e2238d9d7e7 100644
--- a/code/modules/antagonists/changeling/headslug_eggs.dm
+++ b/code/modules/antagonists/changeling/headslug_eggs.dm
@@ -1,7 +1,7 @@
#define EGG_INCUBATION_TIME (4 MINUTES)
/// The actual organ that the changeling headslug implants into a dead host.
-/obj/item/organ/internal/body_egg/changeling_egg
+/obj/item/organ/body_egg/changeling_egg
name = "changeling egg"
desc = "Twitching and disgusting."
/// The mind of the original changeling that gave forth to the headslug mob.
@@ -11,20 +11,20 @@
/// When this egg last got removed from a body. If -1, the egg hasn't been removed from a body.
var/removal_time = -1
-/obj/item/organ/internal/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
hatch_time = world.time + (removal_time == -1 ? EGG_INCUBATION_TIME : (hatch_time - removal_time))
-/obj/item/organ/internal/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
. = ..()
removal_time = world.time
-/obj/item/organ/internal/body_egg/changeling_egg/egg_process(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/changeling_egg/egg_process(seconds_per_tick, times_fired)
if(owner && hatch_time <= world.time)
pop()
/// Once the egg is fully grown, we gib the host and spawn a monkey (with the changeling's player controlling it). Very descriptive proc name.
-/obj/item/organ/internal/body_egg/changeling_egg/proc/pop()
+/obj/item/organ/body_egg/changeling_egg/proc/pop()
var/mob/living/carbon/human/spawned_monkey = new(owner)
spawned_monkey.set_species(/datum/species/monkey)
diff --git a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
index dec2fa6a76e..52a5d371cf0 100644
--- a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
+++ b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
@@ -16,7 +16,7 @@
/datum/action/changeling/augmented_eyesight/on_purchase(mob/user) //The ability starts inactive, so we should be protected from flashes.
. = ..()
- var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
RegisterSignal(user, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(eye_implanted))
RegisterSignal(user, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(eye_removed))
if(!isnull(ling_eyes))
@@ -27,7 +27,7 @@
if(!istype(user))
return FALSE
- var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
if(isnull(ling_eyes))
user.balloon_alert(user, "no eyes!")
return FALSE
@@ -50,7 +50,7 @@
return TRUE
/datum/action/changeling/augmented_eyesight/Remove(mob/user)
- var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
if(!isnull(ling_eyes))
ling_eyes.flash_protect = initial(ling_eyes.flash_protect)
@@ -64,7 +64,7 @@
/datum/action/changeling/augmented_eyesight/proc/eye_implanted(mob/living/source, obj/item/organ/gained, special)
SIGNAL_HANDLER
- var/obj/item/organ/internal/eyes/ling_eyes = gained
+ var/obj/item/organ/eyes/ling_eyes = gained
if(!istype(ling_eyes))
return
if(active)
@@ -76,7 +76,7 @@
/datum/action/changeling/augmented_eyesight/proc/eye_removed(mob/living/source, obj/item/organ/removed, special)
SIGNAL_HANDLER
- var/obj/item/organ/internal/eyes/ling_eyes = removed
+ var/obj/item/organ/eyes/ling_eyes = removed
if(!istype(ling_eyes))
return
ling_eyes.flash_protect = initial(ling_eyes.flash_protect)
diff --git a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm
index c33b36a785f..bd498b58482 100644
--- a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm
+++ b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm
@@ -37,7 +37,7 @@
animate(cling, color = COLOR_DARK, time = 3 SECONDS) // Darkens their overall appearance
var/datum/antagonist/changeling/changeling_data = cling.mind?.has_antag_datum(/datum/antagonist/changeling)
changeling_data?.chem_recharge_slowdown -= recharge_slowdown //Slows down chem regeneration
- var/obj/item/organ/internal/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/eyes)
if(!istype(eyes))
return
eyes.lighting_cutoff = LIGHTING_CUTOFF_MEDIUM // Adds barely usable, kinda shit night vision
@@ -53,7 +53,7 @@
animate(cling, color = null, time = 3 SECONDS)
var/datum/antagonist/changeling/changeling_data = cling.mind?.has_antag_datum(/datum/antagonist/changeling)
changeling_data?.chem_recharge_slowdown += recharge_slowdown
- var/obj/item/organ/internal/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/eyes)
if(!istype(eyes))
return
eyes.lighting_cutoff = LIGHTING_CUTOFF_VISIBLE
@@ -64,7 +64,7 @@
/datum/action/changeling/darkness_adaptation/proc/eye_implanted(mob/living/source, obj/item/organ/gained, special)
SIGNAL_HANDLER
- var/obj/item/organ/internal/eyes/eyes = gained
+ var/obj/item/organ/eyes/eyes = gained
if(!istype(eyes))
return
if(is_active)
@@ -76,7 +76,7 @@
/datum/action/changeling/darkness_adaptation/proc/eye_removed(mob/living/source, obj/item/organ/removed, special)
SIGNAL_HANDLER
- var/obj/item/organ/internal/eyes/eyes = removed
+ var/obj/item/organ/eyes/eyes = removed
if(!istype(eyes))
return
eyes.flash_protect = initial(eyes.flash_protect)
diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm
index c4f2376f755..1af11d3ad15 100644
--- a/code/modules/antagonists/changeling/powers/headcrab.dm
+++ b/code/modules/antagonists/changeling/powers/headcrab.dm
@@ -22,7 +22,7 @@
explosion(user, light_impact_range = 2, adminlog = TRUE, explosion_cause = src)
for(var/mob/living/carbon/human/blinded_human in range(2, user))
- var/obj/item/organ/internal/eyes/eyes = blinded_human.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = blinded_human.get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes || blinded_human.is_blind())
continue
to_chat(blinded_human, span_userdanger("You are blinded by a shower of blood!"))
diff --git a/code/modules/antagonists/changeling/powers/mmi_talk.dm b/code/modules/antagonists/changeling/powers/mmi_talk.dm
index 2fe90d08318..ecd64890c42 100644
--- a/code/modules/antagonists/changeling/powers/mmi_talk.dm
+++ b/code/modules/antagonists/changeling/powers/mmi_talk.dm
@@ -15,7 +15,7 @@
* Set when created via the ling decoy component.
* If the brain ends up being qdelled, this action will also be qdelled, and thus this ref is cleared.
*/
- VAR_FINAL/obj/item/organ/internal/brain/brain_ref
+ VAR_FINAL/obj/item/organ/brain/brain_ref
/// A map view of the area around the MMI.
VAR_FINAL/atom/movable/screen/map_view/mmi_view
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index f6b42bf19f2..158b32df216 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -632,7 +632,7 @@
/obj/item/clothing/head/helmet/changeling_hivehead/attackby(obj/item/attacking_item, mob/user, params)
. = ..()
- if(!istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core/legion) || !holds_reagents)
+ if(!istype(attacking_item, /obj/item/organ/monster_core/regenerative_core/legion) || !holds_reagents)
return
visible_message(span_boldwarning("As [user] shoves [attacking_item] into [src], [src] begins to mutate."))
var/mob/living/carbon/wearer = loc
diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm
index b05bb38ae31..18f04727ff3 100644
--- a/code/modules/antagonists/changeling/powers/panacea.dm
+++ b/code/modules/antagonists/changeling/powers/panacea.dm
@@ -12,10 +12,10 @@
to_chat(user, span_notice("We cleanse impurities from our form."))
..()
var/list/bad_organs = list(
- user.get_organ_by_type(/obj/item/organ/internal/empowered_borer_egg), // NOVA EDIT ADDITION
- user.get_organ_by_type(/obj/item/organ/internal/body_egg),
- user.get_organ_by_type(/obj/item/organ/internal/legion_tumour),
- user.get_organ_by_type(/obj/item/organ/internal/zombie_infection),
+ user.get_organ_by_type(/obj/item/organ/empowered_borer_egg), // NOVA EDIT ADDITION
+ user.get_organ_by_type(/obj/item/organ/body_egg),
+ user.get_organ_by_type(/obj/item/organ/legion_tumour),
+ user.get_organ_by_type(/obj/item/organ/zombie_infection),
)
diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm
index 8873ef73a49..b6d6f550d05 100644
--- a/code/modules/antagonists/changeling/powers/shriek.dm
+++ b/code/modules/antagonists/changeling/powers/shriek.dm
@@ -18,7 +18,7 @@
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!IS_CHANGELING(C))
- var/obj/item/organ/internal/ears/ears = C.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = C.get_organ_slot(ORGAN_SLOT_EARS)
if(ears)
ears.adjustEarDamage(0, 30)
C.adjust_confusion(25 SECONDS)
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index cd5c24ced7a..4fa2d453cdc 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -237,7 +237,7 @@
dna_cost = 1
/datum/action/changeling/sting/blind/sting_action(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes)
user.balloon_alert(user, "no eyes!")
return FALSE
diff --git a/code/modules/antagonists/clown_ops/clownop.dm b/code/modules/antagonists/clown_ops/clownop.dm
index 8dbcb3c232d..2fd2daa7489 100644
--- a/code/modules/antagonists/clown_ops/clownop.dm
+++ b/code/modules/antagonists/clown_ops/clownop.dm
@@ -29,7 +29,7 @@
/datum/antagonist/nukeop/clownop/equip_op()
. = ..()
var/mob/living/current_mob = owner.current
- var/obj/item/organ/internal/liver/liver = current_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = current_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver)
ADD_TRAIT(liver, TRAIT_COMEDY_METABOLISM, CLOWNOP_TRAIT)
@@ -61,7 +61,7 @@
/datum/antagonist/nukeop/leader/clownop/equip_op()
. = ..()
var/mob/living/L = owner.current
- var/obj/item/organ/internal/liver/liver = L.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = L.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver)
ADD_TRAIT(liver, TRAIT_COMEDY_METABOLISM, CLOWNOP_TRAIT)
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index e334b17e360..af7254119dd 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -1092,7 +1092,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
/mob/living/carbon/human/cult_ghost/get_organs_for_zone(zone, include_children)
. = ..()
- for(var/obj/item/organ/internal/brain/B in .) //they're not that smart, really
+ for(var/obj/item/organ/brain/B in .) //they're not that smart, really
. -= B
diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm
index bbd1fc9ee03..5b73476a3af 100644
--- a/code/modules/antagonists/fugitive/fugitive_outfits.dm
+++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm
@@ -66,7 +66,7 @@
/datum/outfit/synthetic/post_equip(mob/living/carbon/human/H, visuals_only = FALSE)
if(visuals_only)
return
- var/obj/item/organ/internal/eyes/robotic/glow/eyes = new()
+ var/obj/item/organ/eyes/robotic/glow/eyes = new()
eyes.Insert(H, movement_flags = DELETE_IF_REPLACED)
/datum/outfit/invisible_man
diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm
index 007dc15bbc4..d4fdf79dfbb 100644
--- a/code/modules/antagonists/heretic/heretic_knowledge.dm
+++ b/code/modules/antagonists/heretic/heretic_knowledge.dm
@@ -581,15 +581,15 @@
/datum/heretic_knowledge/knowledge_ritual/New()
. = ..()
var/static/list/potential_organs = list(
- /obj/item/organ/internal/appendix,
- /obj/item/organ/external/tail,
- /obj/item/organ/internal/eyes,
- /obj/item/organ/internal/tongue,
- /obj/item/organ/internal/ears,
- /obj/item/organ/internal/heart,
- /obj/item/organ/internal/liver,
- /obj/item/organ/internal/stomach,
- /obj/item/organ/internal/lungs,
+ /obj/item/organ/appendix,
+ /obj/item/organ/tail,
+ /obj/item/organ/eyes,
+ /obj/item/organ/tongue,
+ /obj/item/organ/ears,
+ /obj/item/organ/heart,
+ /obj/item/organ/liver,
+ /obj/item/organ/stomach,
+ /obj/item/organ/lungs,
)
var/static/list/potential_easy_items = list(
diff --git a/code/modules/antagonists/heretic/items/corrupted_organs.dm b/code/modules/antagonists/heretic/items/corrupted_organs.dm
index 335279c9553..fec25094bb7 100644
--- a/code/modules/antagonists/heretic/items/corrupted_organs.dm
+++ b/code/modules/antagonists/heretic/items/corrupted_organs.dm
@@ -1,17 +1,17 @@
/// Renders you unable to see people who were heretics at the time that this organ is gained
-/obj/item/organ/internal/eyes/corrupt
+/obj/item/organ/eyes/corrupt
name = "corrupt orbs"
desc = "These eyes have seen something they shouldn't have."
organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// The override images we are applying
var/list/hallucinations
-/obj/item/organ/internal/eyes/corrupt/Initialize(mapload)
+/obj/item/organ/eyes/corrupt/Initialize(mapload)
. = ..()
AddElement(/datum/element/corrupted_organ)
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes have wide dilated pupils, and no iris. Something is moving in the darkness.", BODY_ZONE_PRECISE_EYES)
-/obj/item/organ/internal/eyes/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/eyes/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if (!organ_owner.client)
return
@@ -28,7 +28,7 @@
if (LAZYLEN(hallucinations))
organ_owner.client.images |= hallucinations
-/obj/item/organ/internal/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
if (!LAZYLEN(hallucinations))
return
@@ -37,26 +37,26 @@
/// Sometimes speak in incomprehensible tongues
-/obj/item/organ/internal/tongue/corrupt
+/obj/item/organ/tongue/corrupt
name = "corrupt tongue"
desc = "This one tells only lies."
organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
-/obj/item/organ/internal/tongue/corrupt/Initialize(mapload)
+/obj/item/organ/tongue/corrupt/Initialize(mapload)
. = ..()
AddElement(/datum/element/corrupted_organ)
AddElement(/datum/element/noticable_organ, "The inside of %PRONOUN_Their mouth is full of stars.", BODY_ZONE_PRECISE_MOUTH)
-/obj/item/organ/internal/tongue/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/tongue/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
RegisterSignal(organ_owner, COMSIG_MOB_SAY, PROC_REF(on_spoken))
-/obj/item/organ/internal/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_MOB_SAY)
/// When the mob speaks, sometimes put it in a different language
-/obj/item/organ/internal/tongue/corrupt/proc/on_spoken(mob/living/organ_owner, list/speech_args)
+/obj/item/organ/tongue/corrupt/proc/on_spoken(mob/living/organ_owner, list/speech_args)
SIGNAL_HANDLER
if (organ_owner.has_reagent(/datum/reagent/water/holywater) || prob(60))
return
@@ -64,7 +64,7 @@
/// Randomly secretes alcohol or hallucinogens when you're drinking something
-/obj/item/organ/internal/liver/corrupt
+/obj/item/organ/liver/corrupt
name = "corrupt liver"
desc = "After what you've seen you could really go for a drink."
organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
@@ -83,20 +83,20 @@
/datum/reagent/drug/mushroomhallucinogen,
)
-/obj/item/organ/internal/liver/corrupt/Initialize(mapload)
+/obj/item/organ/liver/corrupt/Initialize(mapload)
. = ..()
AddElement(/datum/element/corrupted_organ)
-/obj/item/organ/internal/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank))
-/obj/item/organ/internal/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS)
/// If we drank something, add a little extra
-/obj/item/organ/internal/liver/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
+/obj/item/organ/liver/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
SIGNAL_HANDLER
if (!(methods & INGEST))
return
@@ -108,7 +108,7 @@
/// Rapidly become hungry if you are not digesting blood
-/obj/item/organ/internal/stomach/corrupt
+/obj/item/organ/stomach/corrupt
name = "corrupt stomach"
desc = "This parasite demands an unwholesome diet in order to be satisfied."
organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
@@ -119,21 +119,21 @@
/// How long until we prompt the player to drink blood again?
COOLDOWN_DECLARE(message_cooldown)
-/obj/item/organ/internal/stomach/corrupt/Initialize(mapload)
+/obj/item/organ/stomach/corrupt/Initialize(mapload)
. = ..()
AddElement(/datum/element/corrupted_organ)
AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have an unhealthy pallor.")
-/obj/item/organ/internal/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank))
-/obj/item/organ/internal/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS)
/// Check if we drank a little blood
-/obj/item/organ/internal/stomach/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
+/obj/item/organ/stomach/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
SIGNAL_HANDLER
if (!(methods & INGEST))
return
@@ -148,7 +148,7 @@
deltimer(thirst_timer)
thirst_timer = addtimer(VARSET_CALLBACK(src, thirst_satiated, FALSE), 3 MINUTES, TIMER_STOPPABLE | TIMER_DELETE_ME)
-/obj/item/organ/internal/stomach/corrupt/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/corrupt/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
if (thirst_satiated || human.has_reagent(/datum/reagent/water/holywater))
return ..()
@@ -174,18 +174,18 @@
/// Occasionally bombards you with spooky hands and lets everyone hear your pulse.
-/obj/item/organ/internal/heart/corrupt
+/obj/item/organ/heart/corrupt
name = "corrupt heart"
desc = "What corruption is this spreading along with the blood?"
organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// How long until the next heart?
COOLDOWN_DECLARE(hand_cooldown)
-/obj/item/organ/internal/heart/corrupt/Initialize(mapload)
+/obj/item/organ/heart/corrupt/Initialize(mapload)
. = ..()
AddElement(/datum/element/corrupted_organ)
-/obj/item/organ/internal/heart/corrupt/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/corrupt/on_life(seconds_per_tick, times_fired)
. = ..()
if (!COOLDOWN_FINISHED(src, hand_cooldown) || IS_IN_MANSUS(owner) || !owner.needs_heart() || !is_beating() || owner.has_reagent(/datum/reagent/water/holywater))
return
@@ -194,7 +194,7 @@
/// Sometimes cough out some kind of dangerous gas
-/obj/item/organ/internal/lungs/corrupt
+/obj/item/organ/lungs/corrupt
name = "corrupt lungs"
desc = "Some things SHOULD be drowned in tar."
organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
@@ -209,11 +209,11 @@
/datum/gas/plasma = 20,
)
-/obj/item/organ/internal/lungs/corrupt/Initialize(mapload)
+/obj/item/organ/lungs/corrupt/Initialize(mapload)
. = ..()
AddElement(/datum/element/corrupted_organ)
-/obj/item/organ/internal/lungs/corrupt/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
+/obj/item/organ/lungs/corrupt/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
. = ..()
if (!. || IS_IN_MANSUS(owner) || breather.has_reagent(/datum/reagent/water/holywater) || !prob(cough_chance))
return
@@ -229,19 +229,19 @@
/// It's full of worms
-/obj/item/organ/internal/appendix/corrupt
+/obj/item/organ/appendix/corrupt
name = "corrupt appendix"
desc = "What kind of dark, cosmic force is even going to bother to corrupt an appendix?"
organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// How likely are we to spawn worms?
var/worm_chance = 2
-/obj/item/organ/internal/appendix/corrupt/Initialize(mapload)
+/obj/item/organ/appendix/corrupt/Initialize(mapload)
. = ..()
AddElement(/datum/element/corrupted_organ)
AddElement(/datum/element/noticable_organ, "%PRONOUN_Their abdomen is distended... and wiggling.", BODY_ZONE_PRECISE_GROIN)
-/obj/item/organ/internal/appendix/corrupt/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/appendix/corrupt/on_life(seconds_per_tick, times_fired)
. = ..()
if (owner.stat != CONSCIOUS || owner.has_reagent(/datum/reagent/water/holywater) || IS_IN_MANSUS(owner) || !SPT_PROB(worm_chance, seconds_per_tick))
return
diff --git a/code/modules/antagonists/heretic/items/eldritch_painting.dm b/code/modules/antagonists/heretic/items/eldritch_painting.dm
index a88e7016386..8dd3d7ef6e1 100644
--- a/code/modules/antagonists/heretic/items/eldritch_painting.dm
+++ b/code/modules/antagonists/heretic/items/eldritch_painting.dm
@@ -129,14 +129,14 @@
// A list made of the organs and bodyparts the heretic can get
var/static/list/random_bodypart_or_organ = list(
- /obj/item/organ/internal/brain,
- /obj/item/organ/internal/lungs,
- /obj/item/organ/internal/eyes,
- /obj/item/organ/internal/ears,
- /obj/item/organ/internal/heart,
- /obj/item/organ/internal/liver,
- /obj/item/organ/internal/stomach,
- /obj/item/organ/internal/appendix,
+ /obj/item/organ/brain,
+ /obj/item/organ/lungs,
+ /obj/item/organ/eyes,
+ /obj/item/organ/ears,
+ /obj/item/organ/heart,
+ /obj/item/organ/liver,
+ /obj/item/organ/stomach,
+ /obj/item/organ/appendix,
/obj/item/bodypart/arm/left,
/obj/item/bodypart/arm/right,
/obj/item/bodypart/leg/left,
diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
index 99f0eeaeba2..402bbd9537d 100644
--- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
@@ -111,7 +111,7 @@
It can also be forced onto a heathen, to make them unable to take it off..."
gain_text = "The Nightwatcher was lost. That's what the Watch believed. Yet he walked the world, unnoticed by the masses."
required_atoms = list(
- /obj/item/organ/internal/liver = 1,
+ /obj/item/organ/liver = 1,
/obj/item/melee/baton/security = 1, // Technically means a cattleprod is valid
/obj/item/clothing/mask = 1,
/obj/item/flashlight/flare/candle = 4,
diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
index 33bedad5195..8ade390e4d9 100644
--- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
@@ -225,7 +225,7 @@
gain_text = "I could not continue alone. I was able to summon The Uncanny Man to help me see more. \
The screams... once constant, now silenced by their wretched appearance. Nothing was out of reach."
required_atoms = list(
- /obj/item/organ/internal/eyes = 1,
+ /obj/item/organ/eyes = 1,
/obj/effect/decal/cleanable/blood = 1,
/obj/item/bodypart/arm/left = 1,
)
@@ -261,9 +261,9 @@
An ever shapeshifting mass of flesh, it knew well my goals. The Marshal approved."
required_atoms = list(
- /obj/item/organ/external/tail = 1,
- /obj/item/organ/internal/stomach = 1,
- /obj/item/organ/internal/tongue = 1,
+ /obj/item/organ/tail = 1,
+ /obj/item/organ/stomach = 1,
+ /obj/item/organ/tongue = 1,
/obj/item/pen = 1,
/obj/item/paper = 1,
)
diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
index 499d2444048..2ab75e96c5a 100644
--- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
@@ -100,7 +100,7 @@
gain_text = "At the head of the parade he stood, the moon condensed into one mass, a reflection of the soul."
required_atoms = list(
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/heart = 1,
/obj/item/stack/sheet/glass = 2,
/obj/item/clothing/neck/tie = 1,
)
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm
index 87086de6e00..782ec6ec55d 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm
@@ -68,15 +68,15 @@
return
var/list/removable_organs = list()
- for(var/obj/item/organ/internal/bodypart_organ in organ_storage.contents)
- if(bodypart_organ.organ_flags & ORGAN_UNREMOVABLE)
+ for(var/obj/item/organ/bodypart_organ in organ_storage.contents)
+ if(bodypart_organ.organ_flags & (ORGAN_EXTERNAL|ORGAN_UNREMOVABLE))
continue
removable_organs += bodypart_organ
if (!length(removable_organs))
return // This one is a little more possible but they're probably already in pretty bad shape by this point
- var/obj/item/organ/internal/removing_organ = pick(removable_organs)
+ var/obj/item/organ/removing_organ = pick(removable_organs)
if (carbon_owner.vomit(vomit_flags = VOMIT_CATEGORY_BLOOD))
carbon_owner.visible_message(span_boldwarning("[carbon_owner] vomits out [carbon_owner.p_their()] [removing_organ]"))
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
index 5ce9c89ab2a..9a69eb2db61 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
@@ -31,13 +31,13 @@
var/list/return_timers
/// Evil organs we can put in people
var/static/list/grantable_organs = list(
- /obj/item/organ/internal/appendix/corrupt,
- /obj/item/organ/internal/eyes/corrupt,
- /obj/item/organ/internal/heart/corrupt,
- /obj/item/organ/internal/liver/corrupt,
- /obj/item/organ/internal/lungs/corrupt,
- /obj/item/organ/internal/stomach/corrupt,
- /obj/item/organ/internal/tongue/corrupt,
+ /obj/item/organ/appendix/corrupt,
+ /obj/item/organ/eyes/corrupt,
+ /obj/item/organ/heart/corrupt,
+ /obj/item/organ/liver/corrupt,
+ /obj/item/organ/lungs/corrupt,
+ /obj/item/organ/stomach/corrupt,
+ /obj/item/organ/tongue/corrupt,
)
/datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force)
@@ -422,7 +422,7 @@
/datum/heretic_knowledge/hunt_and_sacrifice/proc/curse_organs(mob/living/carbon/human/sac_target)
var/usable_organs = grantable_organs.Copy()
if (isplasmaman(sac_target))
- usable_organs -= /obj/item/organ/internal/lungs/corrupt // Their lungs are already more cursed than anything I could give them
+ usable_organs -= /obj/item/organ/lungs/corrupt // Their lungs are already more cursed than anything I could give them
var/total_implant = rand(2, 4)
@@ -430,7 +430,7 @@
if (!length(usable_organs))
return
var/organ_path = pick_n_take(usable_organs)
- var/obj/item/organ/internal/to_give = new organ_path
+ var/obj/item/organ/to_give = new organ_path
to_give.Insert(sac_target)
new /obj/effect/gibspawner/human/bodypartless(get_turf(sac_target))
diff --git a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm
index 6672c9e7da8..b4470f9c7fb 100644
--- a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm
@@ -16,7 +16,7 @@
gain_text = "Piercing eyes guided them through the mundane. Neither darkness nor terror could stop them."
required_atoms = list(
- /obj/item/organ/internal/eyes = 1,
+ /obj/item/organ/eyes = 1,
/obj/item/shard = 1,
/obj/item/flashlight/flare/candle = 1,
)
diff --git a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
index f4d9d80717b..03b4fc477ad 100644
--- a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
@@ -20,7 +20,7 @@
required_atoms = list(
/obj/effect/decal/cleanable/ash = 1,
- /obj/item/organ/internal/liver = 1,
+ /obj/item/organ/liver = 1,
/obj/item/stack/sheet/mineral/plasma = 1,
)
mob_to_summon = /mob/living/basic/heretic_summon/fire_shark
diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
index 5a3a042e609..f8a3cdf465b 100644
--- a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
@@ -37,7 +37,7 @@
gain_text = "The mansus holds many a curio, some are not meant for the mortal eye."
required_atoms = list(
- /obj/item/organ/internal/lungs = 1,
+ /obj/item/organ/lungs = 1,
/obj/item/stack/rods = 3,
/obj/item/storage/belt = 1,
)
@@ -69,11 +69,11 @@
/datum/heretic_knowledge/painting/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc)
- if(locate(/obj/item/organ/internal/eyes) in atoms)
+ if(locate(/obj/item/organ/eyes) in atoms)
src.result_atoms = list(/obj/item/wallframe/painting/eldritch/weeping)
src.required_atoms = list(
/obj/item/canvas = 1,
- /obj/item/organ/internal/eyes = 1,
+ /obj/item/organ/eyes = 1,
)
return TRUE
diff --git a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm
index 3818aeb7224..953590124f6 100644
--- a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm
@@ -65,7 +65,7 @@
required_atoms = list(
/obj/item/wirecutters = 1,
/obj/effect/decal/cleanable/vomit = 1,
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/heart = 1,
)
duration = 0.5 MINUTES
duration_modifier = 4
diff --git a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
index 110cbbeb28e..664db996926 100644
--- a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
@@ -165,7 +165,7 @@
/obj/item/stack/sheet/mineral/titanium = 5,
/obj/item/clothing/suit/armor = 1,
/obj/item/assembly/flash = 1,
- /obj/item/organ/internal/lungs = 1,
+ /obj/item/organ/lungs = 1,
)
cost = 1
diff --git a/code/modules/antagonists/heretic/knowledge/starting_lore.dm b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
index 8c61f13f495..d6c9d1bc216 100644
--- a/code/modules/antagonists/heretic/knowledge/starting_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
@@ -48,7 +48,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
research_tree_icon_state = "living_heart"
research_tree_icon_frame = 1
/// The typepath of the organ type required for our heart.
- var/required_organ_type = /obj/item/organ/internal/heart
+ var/required_organ_type = /obj/item/organ/heart
/datum/heretic_knowledge/living_heart/on_research(mob/user, datum/antagonist/heretic/our_heretic)
. = ..()
@@ -61,9 +61,9 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
// If a heretic is made from a species without a heart, we need to find a backup.
if(!where_to_put_our_heart)
var/static/list/backup_organs = list(
- ORGAN_SLOT_LUNGS = /obj/item/organ/internal/lungs,
- ORGAN_SLOT_LIVER = /obj/item/organ/internal/liver,
- ORGAN_SLOT_STOMACH = /obj/item/organ/internal/stomach,
+ ORGAN_SLOT_LUNGS = /obj/item/organ/lungs,
+ ORGAN_SLOT_LIVER = /obj/item/organ/liver,
+ ORGAN_SLOT_STOMACH = /obj/item/organ/stomach,
)
for(var/backup_slot in backup_organs)
@@ -197,7 +197,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
desc = "Allows you to transmute a sheet of glass and a pair of eyes to create an Amber Focus. \
A focus must be worn in order to cast more advanced spells."
required_atoms = list(
- /obj/item/organ/internal/eyes = 1,
+ /obj/item/organ/eyes = 1,
/obj/item/stack/sheet/glass = 1,
)
result_atoms = list(/obj/item/clothing/neck/heretic_focus)
diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm
index 071284ac193..7f8b5795c01 100644
--- a/code/modules/antagonists/heretic/knowledge/void_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm
@@ -217,7 +217,7 @@
heavy_storm = new(user, 10)
if(ishuman(user))
var/mob/living/carbon/human/ascended_human = user
- var/obj/item/organ/internal/eyes/heretic_eyes = ascended_human.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/heretic_eyes = ascended_human.get_organ_slot(ORGAN_SLOT_EYES)
heretic_eyes?.color_cutoffs = list(30, 30, 30)
ascended_human.update_sight()
diff --git a/code/modules/antagonists/heretic/magic/moon_smile.dm b/code/modules/antagonists/heretic/magic/moon_smile.dm
index f6f88894efd..2ded0134a04 100644
--- a/code/modules/antagonists/heretic/magic/moon_smile.dm
+++ b/code/modules/antagonists/heretic/magic/moon_smile.dm
@@ -40,7 +40,7 @@
cast_on.adjust_temp_blindness(moon_smile_duration + 1 SECONDS)
cast_on.set_eye_blur_if_lower(moon_smile_duration + 2 SECONDS)
- var/obj/item/organ/internal/ears/ears = cast_on.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = cast_on.get_organ_slot(ORGAN_SLOT_EARS)
//adjustEarDamage takes deafness duration parameter in one unit per two seconds, instead of the normal time, so we divide by two seconds
ears?.adjustEarDamage(0, (moon_smile_duration + 1 SECONDS) / (2 SECONDS))
diff --git a/code/modules/antagonists/nightmare/nightmare_organs.dm b/code/modules/antagonists/nightmare/nightmare_organs.dm
index 4aaacb77e5f..ddfe675d412 100644
--- a/code/modules/antagonists/nightmare/nightmare_organs.dm
+++ b/code/modules/antagonists/nightmare/nightmare_organs.dm
@@ -4,7 +4,7 @@
#define HEART_SPECIAL_SHADOWIFY 2
-/obj/item/organ/internal/brain/shadow/nightmare
+/obj/item/organ/brain/shadow/nightmare
name = "tumorous mass"
desc = "A fleshy growth that was dug out of the skull of a Nightmare."
icon = 'icons/obj/medical/organs/organs.dmi'
@@ -15,7 +15,7 @@
///Our associated terrorize spell, for antagonist nightmares
var/datum/action/cooldown/spell/pointed/terrorize/terrorize_spell
-/obj/item/organ/internal/brain/shadow/nightmare/on_mob_insert(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/shadow/nightmare/on_mob_insert(mob/living/carbon/brain_owner)
. = ..()
if(brain_owner.dna.species.id != SPECIES_NIGHTMARE)
@@ -29,7 +29,7 @@
terrorize_spell = new(src)
terrorize_spell.Grant(brain_owner)
-/obj/item/organ/internal/brain/shadow/nightmare/on_mob_remove(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/shadow/nightmare/on_mob_remove(mob/living/carbon/brain_owner)
. = ..()
QDEL_NULL(our_jaunt)
QDEL_NULL(terrorize_spell)
@@ -62,7 +62,7 @@
playsound(source, SFX_BULLET_MISS, 75, TRUE)
return COMPONENT_BULLET_PIERCED
-/obj/item/organ/internal/heart/nightmare
+/obj/item/organ/heart/nightmare
name = "heart of darkness"
desc = "An alien organ that twists and writhes when exposed to light."
visual = TRUE
@@ -72,13 +72,13 @@
color = COLOR_CRAYON_BLACK
decay_factor = 0
// No love is to be found in a heart so twisted.
- food_reagents = list(/datum/reagent/consumable/nutriment = 5)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5)
/// How many life ticks in the dark the owner has been dead for. Used for nightmare respawns.
var/respawn_progress = 0
/// The armblade granted to the host of this heart.
var/obj/item/light_eater/blade
-/obj/item/organ/internal/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target)
+/obj/item/organ/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target)
if(M != user)
return ..()
user.visible_message(
@@ -94,23 +94,23 @@
user.temporarilyRemoveItemFromInventory(src, TRUE)
Insert(user)
-/obj/item/organ/internal/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special)
+/obj/item/organ/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special)
. = ..()
if(special != HEART_SPECIAL_SHADOWIFY)
blade = new/obj/item/light_eater
heart_owner.put_in_hands(blade)
-/obj/item/organ/internal/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special)
+/obj/item/organ/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special)
. = ..()
respawn_progress = 0
if(blade && special != HEART_SPECIAL_SHADOWIFY)
heart_owner.visible_message(span_warning("\The [blade] disintegrates!"))
QDEL_NULL(blade)
-/obj/item/organ/internal/heart/nightmare/Stop()
+/obj/item/organ/heart/nightmare/Stop()
return FALSE
-/obj/item/organ/internal/heart/nightmare/on_death(seconds_per_tick, times_fired)
+/obj/item/organ/heart/nightmare/on_death(seconds_per_tick, times_fired)
if(!owner)
return
var/turf/T = get_turf(owner)
@@ -134,7 +134,7 @@
playsound(owner, 'sound/effects/hallucinations/far_noise.ogg', 50, TRUE)
respawn_progress = 0
-/obj/item/organ/internal/heart/nightmare/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/heart/nightmare/get_availability(datum/species/owner_species, mob/living/owner_mob)
if(isnightmare(owner_mob))
return TRUE
return ..()
diff --git a/code/modules/antagonists/nightmare/nightmare_species.dm b/code/modules/antagonists/nightmare/nightmare_species.dm
index 38db2dfae86..e81819e44fc 100644
--- a/code/modules/antagonists/nightmare/nightmare_species.dm
+++ b/code/modules/antagonists/nightmare/nightmare_species.dm
@@ -24,8 +24,8 @@
TRAIT_NEVER_WOUNDED,
)
- mutantheart = /obj/item/organ/internal/heart/nightmare
- mutantbrain = /obj/item/organ/internal/brain/shadow/nightmare
+ mutantheart = /obj/item/organ/heart/nightmare
+ mutantbrain = /obj/item/organ/brain/shadow/nightmare
bodypart_overrides = list(
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/shadow/nightmare,
BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/shadow/nightmare,
diff --git a/code/modules/antagonists/obsessed/obsessed.dm b/code/modules/antagonists/obsessed/obsessed.dm
index ff4232ab2dc..cd58d6fec5d 100644
--- a/code/modules/antagonists/obsessed/obsessed.dm
+++ b/code/modules/antagonists/obsessed/obsessed.dm
@@ -41,7 +41,7 @@
if(!istype(C))
to_chat(admin, "[roundend_category] come from a brain trauma, so they need to at least be a carbon!")
return
- if(!C.get_organ_by_type(/obj/item/organ/internal/brain)) // If only I had a brain
+ if(!C.get_organ_by_type(/obj/item/organ/brain)) // If only I had a brain
to_chat(admin, "[roundend_category] come from a brain trauma, so they need to HAVE A BRAIN.")
return
message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner)] into [name].")
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index dc35b766843..a339b0cc264 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -186,7 +186,7 @@
/datum/antagonist/rev/head/on_removal()
if(give_hud)
var/mob/living/carbon/C = owner.current
- var/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate/S = C.get_organ_slot(ORGAN_SLOT_HUD)
+ var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = C.get_organ_slot(ORGAN_SLOT_HUD)
if(S)
S.Remove(C)
return ..()
@@ -365,7 +365,7 @@
to_chat(carbon_owner, "The Syndicate were unfortunately unable to get you a flash.")
if(give_hud)
- var/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate/hud = new()
+ var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/hud = new()
hud.Insert(carbon_owner)
if(carbon_owner.get_quirk(/datum/quirk/body_purist))
to_chat(carbon_owner, "Being a body purist, you would never accept cybernetic implants. Upon hearing this, your employers signed you up for a special program, which... for \
diff --git a/code/modules/antagonists/spy/spy_bounty.dm b/code/modules/antagonists/spy/spy_bounty.dm
index ccab7952a9c..1aa318fb682 100644
--- a/code/modules/antagonists/spy/spy_bounty.dm
+++ b/code/modules/antagonists/spy/spy_bounty.dm
@@ -621,10 +621,10 @@
/obj/item/bodypart/arm/right,
/obj/item/bodypart/leg/left,
/obj/item/bodypart/leg/right,
- /obj/item/organ/internal/stomach,
- /obj/item/organ/internal/appendix,
- /obj/item/organ/internal/liver,
- /obj/item/organ/internal/eyes,
+ /obj/item/organ/stomach,
+ /obj/item/organ/appendix,
+ /obj/item/organ/liver,
+ /obj/item/organ/eyes,
)
return ..()
diff --git a/code/modules/antagonists/traitor/objectives/eyesnatching.dm b/code/modules/antagonists/traitor/objectives/eyesnatching.dm
index 7d664b20d36..2ddad4913f0 100644
--- a/code/modules/antagonists/traitor/objectives/eyesnatching.dm
+++ b/code/modules/antagonists/traitor/objectives/eyesnatching.dm
@@ -81,7 +81,7 @@
continue
var/mob/living/carbon/human/targets_current = possible_target.current
- if(!targets_current.get_organ_by_type(/obj/item/organ/internal/eyes))
+ if(!targets_current.get_organ_by_type(/obj/item/organ/eyes))
continue
possible_targets += possible_target
@@ -110,7 +110,7 @@
AddComponent(/datum/component/traitor_objective_register, target, fail_signals = list(COMSIG_QDELETING))
return TRUE
-/datum/traitor_objective/target_player/eyesnatching/proc/check_eye_removal(datum/source, obj/item/organ/internal/eyes/removed)
+/datum/traitor_objective/target_player/eyesnatching/proc/check_eye_removal(datum/source, obj/item/organ/eyes/removed)
SIGNAL_HANDLER
if(!istype(removed))
@@ -159,7 +159,7 @@
if(used || !istype(target) || !target.Adjacent(user)) //Works only once, no TK use
return ..()
- var/obj/item/organ/internal/eyes/eyeballies = target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyeballies = target.get_organ_slot(ORGAN_SLOT_EYES)
var/obj/item/bodypart/head/head = target.get_bodypart(BODY_ZONE_HEAD)
if(!head || !eyeballies || target.is_eyes_covered())
@@ -224,7 +224,7 @@
if(used)
. += span_notice("It has been used up.")
-/obj/item/eyesnatcher/proc/eyeballs_exist(obj/item/organ/internal/eyes/eyeballies, obj/item/bodypart/head/head, mob/living/carbon/human/target)
+/obj/item/eyesnatcher/proc/eyeballs_exist(obj/item/organ/eyes/eyeballies, obj/item/bodypart/head/head, mob/living/carbon/human/target)
if(!eyeballies || QDELETED(eyeballies))
return FALSE
if(!head || QDELETED(head))
@@ -232,7 +232,7 @@
if(eyeballies.owner != target)
return FALSE
- var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
//got different eyes or doesn't own the head... somehow
if(head.owner != target || eyes != eyeballies)
return FALSE
diff --git a/code/modules/antagonists/voidwalker/voidwalker_organs.dm b/code/modules/antagonists/voidwalker/voidwalker_organs.dm
index e6e3d028ac8..23f1c6fb2fe 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_organs.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_organs.dm
@@ -1,5 +1,5 @@
/// Voidwalker eyes with nightvision and thermals
-/obj/item/organ/internal/eyes/voidwalker
+/obj/item/organ/eyes/voidwalker
name = "blackened orbs"
desc = "These orbs will withstand the light of the sun, yet still see within the darkest voids."
eye_icon_state = null
@@ -9,7 +9,7 @@
sight_flags = SEE_MOBS
/// Voidwalker brain stacked with a lot of the abilities
-/obj/item/organ/internal/brain/voidwalker
+/obj/item/organ/brain/voidwalker
name = "cosmic brain"
desc = "A mind fully integrated into the cosmic thread."
icon = 'icons/obj/medical/organs/shadow_organs.dmi'
@@ -30,7 +30,7 @@
/// Our brain transmit telepathy spell
var/datum/action/transmit = /datum/action/cooldown/spell/list_target/telepathy/voidwalker
-/obj/item/organ/internal/brain/voidwalker/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/brain/voidwalker/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
RegisterSignal(organ_owner, COMSIG_ATOM_ENTERING, PROC_REF(on_atom_entering))
@@ -52,7 +52,7 @@
glass_breaker = new/obj/item/void_eater
organ_owner.put_in_hands(glass_breaker)
-/obj/item/organ/internal/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_ENTER_AREA)
@@ -75,7 +75,7 @@
if(glass_breaker)
qdel(glass_breaker)
-/obj/item/organ/internal/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering)
+/obj/item/organ/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering)
SIGNAL_HANDLER
if(!isturf(entering))
@@ -90,7 +90,7 @@
else
organ_owner.remove_movespeed_modifier(speed_modifier)
-/obj/item/organ/internal/brain/voidwalker/on_death()
+/obj/item/organ/brain/voidwalker/on_death()
. = ..()
var/turf/spawn_loc = get_turf(owner)
diff --git a/code/modules/antagonists/voidwalker/voidwalker_species.dm b/code/modules/antagonists/voidwalker/voidwalker_species.dm
index 5b50c3da69e..8c417c97773 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_species.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_species.dm
@@ -35,8 +35,8 @@
no_equip_flags = ITEM_SLOT_OCLOTHING | ITEM_SLOT_ICLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_MASK | ITEM_SLOT_HEAD | ITEM_SLOT_FEET | ITEM_SLOT_BACK | ITEM_SLOT_EARS | ITEM_SLOT_EYES
- mutantbrain = /obj/item/organ/internal/brain/voidwalker
- mutanteyes = /obj/item/organ/internal/eyes/voidwalker
+ mutantbrain = /obj/item/organ/brain/voidwalker
+ mutanteyes = /obj/item/organ/eyes/voidwalker
mutantheart = null
mutantlungs = null
mutanttongue = null
diff --git a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
index 9bf5b3c2664..f88c09188cf 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
@@ -63,7 +63,7 @@
hewmon.balloon_alert(user, "shattering...")
if(do_after(user, 4 SECONDS, hewmon))
new /obj/effect/spawner/random/glass_shards (spawnloc)
- var/obj/item/organ/brain = hewmon.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain = hewmon.get_organ_by_type(/obj/item/organ/brain)
if(brain)
brain.Remove(hewmon)
brain.forceMove(spawnloc)
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index ef2a40636d0..e56f651a095 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -311,7 +311,7 @@
head = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire)
//Provides a decent heal, need to pump every 6 seconds
-/obj/item/organ/internal/heart/cursed/wizard
+/obj/item/organ/heart/cursed/wizard
pump_delay = 6 SECONDS
heal_brute = 25
heal_burn = 25
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index 6e448637dba..88b21cf8971 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -313,7 +313,7 @@
var/datum/weakref/arm
/obj/item/assembly/flash/armimplant/burn_out()
- var/obj/item/organ/internal/cyberimp/arm/flash/real_arm = arm.resolve()
+ var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve()
if(real_arm?.owner)
to_chat(real_arm.owner, span_warning("Your photon projector implant overheats and deactivates!"))
real_arm.Retract()
@@ -322,7 +322,7 @@
/obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null)
if(overheat)
- var/obj/item/organ/internal/cyberimp/arm/flash/real_arm = arm.resolve()
+ var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve()
if(real_arm?.owner)
to_chat(real_arm.owner, span_warning("Your photon projector is running too hot to be used again so quickly!"))
return FALSE
diff --git a/code/modules/awaymissions/pamphlet.dm b/code/modules/awaymissions/pamphlet.dm
index be8aa9de890..67a56ed9b32 100644
--- a/code/modules/awaymissions/pamphlet.dm
+++ b/code/modules/awaymissions/pamphlet.dm
@@ -53,7 +53,7 @@
cybernetic augments by Synthman Co. to you in this rare exclusive offer! With this letter, you are being gifted a \
special limited edition choice NTSDA-certified grade-A cybernetic implant, FREE OF CHARGE! Build up your body to \
GREATNESS with Synthman's new exclusive line of cybernetic products! Become greater, stronger, and BETTER today!"
- var/obj/item/organ/internal/heart/cybernetic/sample
+ var/obj/item/organ/heart/cybernetic/sample
/obj/item/paper/pamphlet/cybernetics/Initialize(mapload)
. = ..()
diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm
index cc66fa72196..357dba08bb9 100644
--- a/code/modules/bitrunning/server/obj_generation.dm
+++ b/code/modules/bitrunning/server/obj_generation.dm
@@ -187,7 +187,7 @@
if(failed)
to_chat(neo, span_warning("One of your disks failed to load. Check for duplicate or inactive disks."))
- var/obj/item/organ/internal/brain/neo_brain = neo.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/neo_brain = neo.get_organ_slot(ORGAN_SLOT_BRAIN)
for(var/obj/item/skillchip/skill_chip as anything in neo_brain?.skillchips)
if(!skill_chip.active)
continue
diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm
index 5205c2afc22..3483c28d8d5 100644
--- a/code/modules/cargo/bounties/medical.dm
+++ b/code/modules/cargo/bounties/medical.dm
@@ -3,11 +3,11 @@
description = "Commander Johnson is in critical condition after suffering yet another heart attack. Doctors say he needs a new heart fast. Ship one, pronto! We'll take a cybernetic one if need be, but only if it's upgraded."
reward = CARGO_CRATE_VALUE * 5
wanted_types = list(
- /obj/item/organ/internal/heart = TRUE,
- /obj/item/organ/internal/heart/synth = FALSE,
- /obj/item/organ/internal/heart/cybernetic = FALSE,
- /obj/item/organ/internal/heart/cybernetic/tier2 = TRUE,
- /obj/item/organ/internal/heart/cybernetic/tier3 = TRUE,
+ /obj/item/organ/heart = TRUE,
+ /obj/item/organ/heart/synth = FALSE, // NOVA EDIT ADDITION
+ /obj/item/organ/heart/cybernetic = FALSE,
+ /obj/item/organ/heart/cybernetic/tier2 = TRUE,
+ /obj/item/organ/heart/cybernetic/tier3 = TRUE,
)
/datum/bounty/item/medical/lung
@@ -16,18 +16,18 @@
reward = CARGO_CRATE_VALUE * 10
required_count = 3
wanted_types = list(
- /obj/item/organ/internal/lungs = TRUE,
- /obj/item/organ/internal/lungs/synth = FALSE,
- /obj/item/organ/internal/lungs/cybernetic = FALSE,
- /obj/item/organ/internal/lungs/cybernetic/tier2 = TRUE,
- /obj/item/organ/internal/lungs/cybernetic/tier3 = TRUE,
+ /obj/item/organ/lungs = TRUE,
+ /obj/item/organ/lungs/synth = FALSE, // NOVA EDIT ADDITION
+ /obj/item/organ/lungs/cybernetic = FALSE,
+ /obj/item/organ/lungs/cybernetic/tier2 = TRUE,
+ /obj/item/organ/lungs/cybernetic/tier3 = TRUE,
)
/datum/bounty/item/medical/appendix
name = "Appendix"
description = "Chef Gibb of Central Command wants to prepare a meal using a very special delicacy: an appendix. If you ship one, he'll pay."
reward = CARGO_CRATE_VALUE * 5 //there are no synthetic appendixes
- wanted_types = list(/obj/item/organ/internal/appendix = TRUE)
+ wanted_types = list(/obj/item/organ/appendix = TRUE)
/datum/bounty/item/medical/ears
name = "Ears"
@@ -35,12 +35,12 @@
reward = CARGO_CRATE_VALUE * 10
required_count = 3
wanted_types = list(
- /obj/item/organ/internal/ears = TRUE,
- /obj/item/organ/internal/ears/synth = FALSE,
- /obj/item/organ/internal/ears/cybernetic = FALSE,
- /obj/item/organ/internal/ears/cybernetic/upgraded = TRUE,
- /obj/item/organ/internal/ears/cybernetic/whisper = TRUE,
- /obj/item/organ/internal/ears/cybernetic/xray = TRUE,
+ /obj/item/organ/ears = TRUE,
+ /obj/item/organ/ears/synth = FALSE, // NOVA EDIT ADDITION
+ /obj/item/organ/ears/cybernetic = FALSE,
+ /obj/item/organ/ears/cybernetic/upgraded = TRUE,
+ /obj/item/organ/ears/cybernetic/whisper = TRUE,
+ /obj/item/organ/ears/cybernetic/xray = TRUE,
)
/datum/bounty/item/medical/liver
@@ -49,11 +49,11 @@
reward = CARGO_CRATE_VALUE * 10
required_count = 3
wanted_types = list(
- /obj/item/organ/internal/liver = TRUE,
- /obj/item/organ/internal/liver/synth = FALSE,
- /obj/item/organ/internal/liver/cybernetic = FALSE,
- /obj/item/organ/internal/liver/cybernetic/tier2 = TRUE,
- /obj/item/organ/internal/liver/cybernetic/tier3 = TRUE,
+ /obj/item/organ/liver = TRUE,
+ /obj/item/organ/liver/synth = FALSE, // NOVA EDIT ADDITION
+ /obj/item/organ/liver/cybernetic = FALSE,
+ /obj/item/organ/liver/cybernetic/tier2 = TRUE,
+ /obj/item/organ/liver/cybernetic/tier3 = TRUE,
)
/datum/bounty/item/medical/eye
@@ -62,9 +62,9 @@
reward = CARGO_CRATE_VALUE * 10
required_count = 3
wanted_types = list(
- /obj/item/organ/internal/eyes = TRUE,
- /obj/item/organ/internal/eyes/synth = FALSE,
- /obj/item/organ/internal/eyes/robotic = FALSE,
+ /obj/item/organ/eyes = TRUE,
+ /obj/item/organ/eyes/synth = FALSE, // NOVA EDIT ADDITION
+ /obj/item/organ/eyes/robotic = FALSE,
)
/datum/bounty/item/medical/tongue
@@ -72,22 +72,25 @@
description = "A recent attack by Mime extremists has left staff at Station 23 speechless. Ship some spare tongues."
reward = CARGO_CRATE_VALUE * 10
required_count = 3
+ // wanted_types = list(/obj/item/organ/tongue = TRUE) // NOVA EDIT REMOVAL
+ // NOVA EDIT ADDITION START
wanted_types = list(
- /obj/item/organ/internal/tongue = TRUE,
- /obj/item/organ/internal/tongue/synth = FALSE,
+ /obj/item/organ/tongue = TRUE,
+ /obj/item/organ/tongue/synth = FALSE,
)
+ // NOVA EDIT ADDITION END
/datum/bounty/item/medical/lizard_tail
name = "Lizard Tail"
description = "The Wizard Federation has made off with Nanotrasen's supply of lizard tails. While CentCom is dealing with the wizards, can the station spare a tail of their own?"
reward = CARGO_CRATE_VALUE * 6
- wanted_types = list(/obj/item/organ/external/tail/lizard = TRUE)
+ wanted_types = list(/obj/item/organ/tail/lizard = TRUE)
/datum/bounty/item/medical/cat_tail
name = "Cat Tail"
description = "Central Command has run out of heavy duty pipe cleaners. Can you ship over a cat tail to help us out?"
reward = CARGO_CRATE_VALUE * 6
- wanted_types = list(/obj/item/organ/external/tail/cat = TRUE)
+ wanted_types = list(/obj/item/organ/tail/cat = TRUE)
/datum/bounty/item/medical/chainsaw
name = "Chainsaw"
diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm
index 268ac2ea033..8f395b5152f 100644
--- a/code/modules/cargo/bounties/special.dm
+++ b/code/modules/cargo/bounties/special.dm
@@ -4,12 +4,12 @@
reward = CARGO_CRATE_VALUE * 50
required_count = 3
wanted_types = list(
- /obj/item/organ/internal/brain/alien = TRUE,
- /obj/item/organ/internal/alien = TRUE,
- /obj/item/organ/internal/body_egg/alien_embryo = TRUE,
- /obj/item/organ/internal/liver/alien = TRUE,
- /obj/item/organ/internal/tongue/alien = TRUE,
- /obj/item/organ/internal/eyes/alien = TRUE,
+ /obj/item/organ/brain/alien = TRUE,
+ /obj/item/organ/alien = TRUE,
+ /obj/item/organ/body_egg/alien_embryo = TRUE,
+ /obj/item/organ/liver/alien = TRUE,
+ /obj/item/organ/tongue/alien = TRUE,
+ /obj/item/organ/eyes/alien = TRUE,
)
/datum/bounty/item/syndicate_documents
diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm
index 7102db0dd8f..6b621beeaeb 100644
--- a/code/modules/cargo/exports/lavaland.dm
+++ b/code/modules/cargo/exports/lavaland.dm
@@ -8,10 +8,10 @@
/obj/item/immortality_talisman,
/obj/item/book_of_babel,
/obj/item/wisp_lantern,
- /obj/item/organ/internal/cyberimp/arm/shard/katana,
+ /obj/item/organ/cyberimp/arm/shard/katana,
/obj/item/clothing/glasses/godeye,
/obj/item/clothing/neck/necklace/memento_mori,
- /obj/item/organ/internal/heart/cursed/wizard,
+ /obj/item/organ/heart/cursed/wizard,
/obj/item/clothing/suit/hooded/cloak/drake,
/obj/item/ship_in_a_bottle,
/obj/item/clothing/shoes/clown_shoes/banana_shoes,
@@ -48,7 +48,7 @@
export_types = list(
/obj/item/hierophant_club,
/obj/item/melee/cleaving_saw,
- /obj/item/organ/internal/vocal_cords/colossus,
+ /obj/item/organ/vocal_cords/colossus,
/obj/machinery/anomalous_crystal,
/obj/item/mayhem,
/obj/item/soulscythe,
diff --git a/code/modules/cargo/exports/organs.dm b/code/modules/cargo/exports/organs.dm
index 784af1c8574..ec042a8613e 100644
--- a/code/modules/cargo/exports/organs.dm
+++ b/code/modules/cargo/exports/organs.dm
@@ -4,51 +4,51 @@
/datum/export/organ/heart
cost = CARGO_CRATE_VALUE * 0.2 //For the man who has everything and nothing.
unit_name = "humanoid heart"
- export_types = list(/obj/item/organ/internal/heart)
+ export_types = list(/obj/item/organ/heart)
/datum/export/organ/eyes
cost = CARGO_CRATE_VALUE * 0.1
unit_name = "humanoid eyes"
- export_types = list(/obj/item/organ/internal/eyes)
+ export_types = list(/obj/item/organ/eyes)
/datum/export/organ/ears
cost = CARGO_CRATE_VALUE * 0.1
unit_name = "humanoid ears"
- export_types = list(/obj/item/organ/internal/ears)
+ export_types = list(/obj/item/organ/ears)
/datum/export/organ/liver
cost = CARGO_CRATE_VALUE * 0.1
unit_name = "humanoid liver"
- export_types = list(/obj/item/organ/internal/liver)
+ export_types = list(/obj/item/organ/liver)
/datum/export/organ/lungs
cost = CARGO_CRATE_VALUE * 0.1
unit_name = "humanoid lungs"
- export_types = list(/obj/item/organ/internal/lungs)
+ export_types = list(/obj/item/organ/lungs)
/datum/export/organ/stomach
cost = CARGO_CRATE_VALUE * 0.1
unit_name = "humanoid stomach"
- export_types = list(/obj/item/organ/internal/stomach)
+ export_types = list(/obj/item/organ/stomach)
/datum/export/organ/tongue
cost = CARGO_CRATE_VALUE * 0.1
unit_name = "humanoid tounge"
- export_types = list(/obj/item/organ/internal/tongue)
+ export_types = list(/obj/item/organ/tongue)
/datum/export/organ/external/tail/lizard
cost = CARGO_CRATE_VALUE * 1.25
unit_name = "lizard tail"
- export_types = list(/obj/item/organ/external/tail/lizard)
+ export_types = list(/obj/item/organ/tail/lizard)
/datum/export/organ/external/tail/cat
cost = CARGO_CRATE_VALUE * 1.5
unit_name = "cat tail"
- export_types = list(/obj/item/organ/external/tail/cat)
+ export_types = list(/obj/item/organ/tail/cat)
/datum/export/organ/ears/cat
cost = CARGO_CRATE_VALUE
unit_name = "cat ears"
- export_types = list(/obj/item/organ/internal/ears/cat)
+ export_types = list(/obj/item/organ/ears/cat)
diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm
index 3005cfd7fca..d021fa8665f 100644
--- a/code/modules/cargo/packs/medical.dm
+++ b/code/modules/cargo/packs/medical.dm
@@ -188,7 +188,7 @@
name = "Strong-Arm Implant Set"
desc = "A crate containing two implants, which can be surgically implanted to empower the strength of human arms. Warranty void if exposed to electromagnetic pulses."
cost = CARGO_CRATE_VALUE * 6
- contains = list(/obj/item/organ/internal/cyberimp/arm/strongarm = 2)
+ contains = list(/obj/item/organ/cyberimp/arm/strongarm = 2)
crate_name = "Strong-Arm implant crate"
discountable = SUPPLY_PACK_RARE_DISCOUNTABLE
diff --git a/code/modules/client/preferences/species.dm b/code/modules/client/preferences/species.dm
index 9829a929213..de609d360c7 100644
--- a/code/modules/client/preferences/species.dm
+++ b/code/modules/client/preferences/species.dm
@@ -38,7 +38,7 @@
target.dna.update_body_size()
for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS))
- var/obj/item/organ/external/genital/gent = target.get_organ_slot(organ_key)
+ var/obj/item/organ/genital/gent = target.get_organ_slot(organ_key)
if(gent)
gent.aroused = prefs.arousal_preview
gent.update_sprite_suffix()
diff --git a/code/modules/client/preferences/species_features/basic.dm b/code/modules/client/preferences/species_features/basic.dm
index 21459697f86..e2802b3d29d 100644
--- a/code/modules/client/preferences/species_features/basic.dm
+++ b/code/modules/client/preferences/species_features/basic.dm
@@ -32,20 +32,18 @@
if(!hetero)
target.eye_color_right = value
- var/obj/item/organ/internal/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/eyes)
if (!eyes_organ || !istype(eyes_organ))
return
if (!initial(eyes_organ.eye_color_left))
eyes_organ.eye_color_left = value
- eyes_organ.old_eye_color_left = value
if(hetero) // Don't override the snowflakes please
return
if (!initial(eyes_organ.eye_color_right))
eyes_organ.eye_color_right = value
- eyes_organ.old_eye_color_right = value
eyes_organ.refresh()
/datum/preference/color/eye_color/create_default_value()
diff --git a/code/modules/client/preferences/species_features/felinid.dm b/code/modules/client/preferences/species_features/felinid.dm
index ef2d49f33e8..0dcf1e4a383 100644
--- a/code/modules/client/preferences/species_features/felinid.dm
+++ b/code/modules/client/preferences/species_features/felinid.dm
@@ -4,7 +4,7 @@
savefile_identifier = PREFERENCE_CHARACTER
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
can_randomize = FALSE
- relevant_external_organ = /obj/item/organ/external/tail/cat
+ relevant_external_organ = /obj/item/organ/tail/cat
/datum/preference/choiced/tail_felinid/init_possible_values()
return assoc_to_keys_features(SSaccessories.tails_list_felinid)
@@ -21,7 +21,7 @@
savefile_identifier = PREFERENCE_CHARACTER
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
can_randomize = FALSE
- relevant_external_organ = /obj/item/organ/internal/ears/cat
+ relevant_external_organ = /obj/item/organ/ears/cat
/datum/preference/choiced/felinid_ears/init_possible_values()
return assoc_to_keys_features(SSaccessories.ears_list)
diff --git a/code/modules/client/preferences/species_features/lizard.dm b/code/modules/client/preferences/species_features/lizard.dm
index dd9ebe437b4..18b28d1b85b 100644
--- a/code/modules/client/preferences/species_features/lizard.dm
+++ b/code/modules/client/preferences/species_features/lizard.dm
@@ -160,7 +160,7 @@
savefile_key = "feature_lizard_spines"
savefile_identifier = PREFERENCE_CHARACTER
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
- relevant_external_organ = /obj/item/organ/external/spines
+ relevant_external_organ = /obj/item/organ/spines
/datum/preference/choiced/lizard_spines/init_possible_values()
return assoc_to_keys_features(SSaccessories.spines_list)
@@ -172,7 +172,7 @@
savefile_key = "feature_lizard_tail"
savefile_identifier = PREFERENCE_CHARACTER
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
- relevant_external_organ = /obj/item/organ/external/tail/lizard
+ relevant_external_organ = /obj/item/organ/tail/lizard
/datum/preference/choiced/lizard_tail/init_possible_values()
return assoc_to_keys_features(SSaccessories.tails_list_lizard)
diff --git a/code/modules/client/preferences/species_features/monkey.dm b/code/modules/client/preferences/species_features/monkey.dm
index 65bee35edef..845a8096158 100644
--- a/code/modules/client/preferences/species_features/monkey.dm
+++ b/code/modules/client/preferences/species_features/monkey.dm
@@ -3,7 +3,7 @@
savefile_key = "feature_monkey_tail"
savefile_identifier = PREFERENCE_CHARACTER
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
- relevant_external_organ = /obj/item/organ/external/tail/monkey
+ relevant_external_organ = /obj/item/organ/tail/monkey
can_randomize = FALSE
/datum/preference/choiced/monkey_tail/init_possible_values()
diff --git a/code/modules/client/preferences/species_features/mushperson.dm b/code/modules/client/preferences/species_features/mushperson.dm
index a6a0c6a8fe1..e16c647f99e 100644
--- a/code/modules/client/preferences/species_features/mushperson.dm
+++ b/code/modules/client/preferences/species_features/mushperson.dm
@@ -3,7 +3,7 @@
savefile_key = "feature_mushperson_cap"
savefile_identifier = PREFERENCE_CHARACTER
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
- relevant_external_organ = /obj/item/organ/external/mushroom_cap
+ relevant_external_organ = /obj/item/organ/mushroom_cap
/datum/preference/choiced/mushroom_cap/init_possible_values()
return assoc_to_keys_features(GLOB.caps_list)
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 9fd87da4635..44a71d6cd45 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -53,7 +53,7 @@
/obj/item/clothing/glasses/proc/thermal_overload()
if(ishuman(src.loc))
var/mob/living/carbon/human/H = src.loc
- var/obj/item/organ/internal/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
if(!H.is_blind())
if(H.glasses == src)
to_chat(H, span_danger("[src] overloads and blinds you!"))
@@ -456,7 +456,7 @@
if(!user.get_organ_slot(ORGAN_SLOT_EYES))
to_chat(user, span_warning("You have no eyes to apply the contacts to!"))
return
- var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
to_chat(user, span_notice("You begin applying the contact lenses to your eyes..."))
if(!do_after(user, 3 SECONDS, src))
diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm
index f084b7e9a91..09df92bb8c4 100644
--- a/code/modules/clothing/gloves/special.dm
+++ b/code/modules/clothing/gloves/special.dm
@@ -216,7 +216,7 @@
var/mob/living/wearer = loc
var/stamina_exhaustion = 2 + challenge.difficulty * 0.02
var/is_heavy_gravity = wearer.has_gravity() > STANDARD_GRAVITY
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = wearer.get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = wearer.get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
stamina_exhaustion *= potential_spine.athletics_boost_multiplier
if(HAS_TRAIT(wearer, TRAIT_STRENGTH))
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index a15a59f05ad..640867a7c93 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -707,7 +707,7 @@
if(human_examined.is_mouth_covered())
final_message += "\tYou can't see [examining.p_their()] mouth."
else
- var/obj/item/organ/internal/tongue/has_tongue = human_examined.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/has_tongue = human_examined.get_organ_slot(ORGAN_SLOT_TONGUE)
var/pill_count = 0
for(var/datum/action/item_action/activate_pill/pill in human_examined.actions)
pill_count++
@@ -724,7 +724,7 @@
if(human_examined.is_ears_covered())
final_message += "\tYou can't see [examining.p_their()] ears."
else
- var/obj/item/organ/internal/ears/has_ears = human_examined.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/has_ears = human_examined.get_organ_slot(ORGAN_SLOT_EARS)
if(has_ears)
if(has_ears.deaf)
final_message += "\tDamaged eardrums in [examining.p_their()] ear canals."
@@ -736,7 +736,7 @@
if(human_examined.is_eyes_covered())
final_message += "\tYou can't see [examining.p_their()] eyes."
else
- var/obj/item/organ/internal/eyes/has_eyes = human_examined.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/has_eyes = human_examined.get_organ_slot(ORGAN_SLOT_EYES)
if(has_eyes)
final_message += "\tA pair of [has_eyes.damage ? "" : "healthy "][has_eyes.name]."
else
diff --git a/code/modules/clothing/head/tinfoilhat.dm b/code/modules/clothing/head/tinfoilhat.dm
index 74ce320a8ab..c1e6df6c30c 100644
--- a/code/modules/clothing/head/tinfoilhat.dm
+++ b/code/modules/clothing/head/tinfoilhat.dm
@@ -109,7 +109,7 @@
";WE REPEAT OUR LIVES DAILY WITHOUT FURTHER QUESTIONS!!"
)
user.say(pick(conspiracy_line), forced=type)
- var/obj/item/organ/internal/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
if(brain)
brain.set_organ_damage(BRAIN_DAMAGE_DEATH)
return OXYLOSS
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index a02c7d1debf..6d97c116ab1 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -234,10 +234,10 @@
var/heart_strength
var/pulse_pressure
- var/obj/item/organ/internal/heart/heart = carbon_patient.get_organ_slot(ORGAN_SLOT_HEART)
- var/obj/item/organ/internal/lungs/lungs = carbon_patient.get_organ_slot(ORGAN_SLOT_LUNGS)
- var/obj/item/organ/internal/liver/liver = carbon_patient.get_organ_slot(ORGAN_SLOT_LIVER)
- var/obj/item/organ/internal/appendix/appendix = carbon_patient.get_organ_slot(ORGAN_SLOT_APPENDIX)
+ var/obj/item/organ/heart/heart = carbon_patient.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/lungs/lungs = carbon_patient.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/liver/liver = carbon_patient.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/appendix/appendix = carbon_patient.get_organ_slot(ORGAN_SLOT_APPENDIX)
var/render_list = list()//information will be packaged in a list for clean display to the user
diff --git a/code/modules/deathmatch/deathmatch_lobby.dm b/code/modules/deathmatch/deathmatch_lobby.dm
index a79bd3aa21d..8bd324a5b7b 100644
--- a/code/modules/deathmatch/deathmatch_lobby.dm
+++ b/code/modules/deathmatch/deathmatch_lobby.dm
@@ -156,7 +156,7 @@
// register death handling.
RegisterSignals(new_player, list(COMSIG_LIVING_DEATH, COMSIG_MOB_GHOSTIZED, COMSIG_QDELETING), PROC_REF(player_died))
// NOVA EDIT ADDITION START - Synth brains don't drop here - let them delete with the mob
- var/obj/item/organ/internal/brain/synth/synth_brain = new_player.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/synth/synth_brain = new_player.get_organ_slot(ORGAN_SLOT_BRAIN)
if(istype(synth_brain))
synth_brain.drop_when_organ_spilling = FALSE
// NOVA EDIT ADDITION END
diff --git a/code/modules/events/brain_trauma.dm b/code/modules/events/brain_trauma.dm
index b9d1c4188b5..5a00436d0fc 100644
--- a/code/modules/events/brain_trauma.dm
+++ b/code/modules/events/brain_trauma.dm
@@ -17,7 +17,7 @@
continue
if(H.stat == DEAD) // What are you doing in this list
continue
- if(!H.get_organ_by_type(/obj/item/organ/internal/brain)) // If only I had a brain
+ if(!H.get_organ_by_type(/obj/item/organ/brain)) // If only I had a brain
continue
if(!(H.mind.assigned_role.job_flags & JOB_CREW_MEMBER)) //please stop giving my centcom admin gimmicks full body paralysis
continue
diff --git a/code/modules/events/creep_awakening.dm b/code/modules/events/creep_awakening.dm
index 648c2cc9db0..0dfa87ddfa3 100644
--- a/code/modules/events/creep_awakening.dm
+++ b/code/modules/events/creep_awakening.dm
@@ -19,7 +19,7 @@
continue
if(H.mind.has_antag_datum(/datum/antagonist/obsessed))
continue
- if(!H.get_organ_by_type(/obj/item/organ/internal/brain))
+ if(!H.get_organ_by_type(/obj/item/organ/brain))
continue
H.gain_trauma(/datum/brain_trauma/special/obsessed)
announce_to_ghosts(H)
diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm
index 8cc87a60df5..833afd35bbc 100644
--- a/code/modules/events/holiday/halloween.dm
+++ b/code/modules/events/holiday/halloween.dm
@@ -61,5 +61,5 @@
/obj/item/food/candy,
/obj/item/food/candiedapple,
/obj/item/food/chocolatebar,
- /obj/item/organ/internal/brain ) // OH GOD THIS ISN'T CANDY!
+ /obj/item/organ/brain ) // OH GOD THIS ISN'T CANDY!
new type(src)
diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm
index 0b4f5abf866..b5c7967de4e 100644
--- a/code/modules/experisci/experiment/experiments.dm
+++ b/code/modules/experisci/experiment/experiments.dm
@@ -437,7 +437,7 @@
. = ..()
if (!.)
return
- var/obj/item/organ/internal/brain/scanned_brain = check.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/scanned_brain = check.get_organ_slot(ORGAN_SLOT_BRAIN)
if (isnull(scanned_brain))
experiment_handler.announce_message("Subject is brainless!")
return FALSE
diff --git a/code/modules/experisci/handheld_scanner.dm b/code/modules/experisci/handheld_scanner.dm
index 390937e0dd4..67850aedd28 100644
--- a/code/modules/experisci/handheld_scanner.dm
+++ b/code/modules/experisci/handheld_scanner.dm
@@ -46,7 +46,7 @@
/obj/item/experi_scanner/proc/make_meat_toilet(mob/living/carbon/user)
///The suicide victim's brain that will be placed inside the toilet's cistern
- var/obj/item/organ/internal/brain/toilet_brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/toilet_brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
///The toilet we're about to unleash unto this cursed plane of existence
var/obj/structure/toilet/greyscale/result_toilet = new (drop_location())
diff --git a/code/modules/explorer_drone/exploration_events/trader.dm b/code/modules/explorer_drone/exploration_events/trader.dm
index c4d4b5ac94b..443ec5fd36d 100644
--- a/code/modules/explorer_drone/exploration_events/trader.dm
+++ b/code/modules/explorer_drone/exploration_events/trader.dm
@@ -89,7 +89,7 @@
requires_translator = FALSE
required_site_traits = list(EXPLORATION_SITE_HABITABLE,EXPLORATION_SITE_CIVILIZED)
band_values = list(EXOSCANNER_BAND_LIFE=1)
- required_path = list(/obj/item/organ/internal/heart,/obj/item/organ/internal/liver,/obj/item/organ/internal/stomach,/obj/item/organ/internal/eyes)
+ required_path = list(/obj/item/organ/heart,/obj/item/organ/liver,/obj/item/organ/stomach,/obj/item/organ/eyes)
traded_path = list(/obj/item/implanter/explosive)
amount = 1
diff --git a/code/modules/food_and_drinks/recipes/soup_mixtures.dm b/code/modules/food_and_drinks/recipes/soup_mixtures.dm
index 88cb4d27e41..cefaf65bc32 100644
--- a/code/modules/food_and_drinks/recipes/soup_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/soup_mixtures.dm
@@ -661,7 +661,7 @@
required_reagents = list(/datum/reagent/water = 50)
required_ingredients = list(
/obj/item/food/grown/tomato = 2,
- /obj/item/organ/internal/eyes = 1,
+ /obj/item/organ/eyes = 1,
)
results = list(
/datum/reagent/consumable/nutriment/soup/eyeball = 20,
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm
index 8f78cb01ebc..d0517272d77 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm
@@ -155,8 +155,8 @@
/datum/crafting_recipe/food/breaddog
name = "Living dog/bread hybrid"
reqs = list(
- /obj/item/organ/internal/brain = 1,
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/brain = 1,
+ /obj/item/organ/heart = 1,
/obj/item/food/bread/plain = 2,
/obj/item/food/meat/slab = 3,
/datum/reagent/blood = 30,
@@ -216,8 +216,8 @@
name = "Bread cat/bread hybrid"
reqs = list(
/obj/item/food/bread/plain = 1,
- /obj/item/organ/internal/ears/cat = 1,
- /obj/item/organ/external/tail/cat = 1,
+ /obj/item/organ/ears/cat = 1,
+ /obj/item/organ/tail/cat = 1,
/obj/item/food/meat/slab = 3,
/datum/reagent/blood = 50,
/datum/reagent/medicine/strange_reagent = 5
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
index 4e7c63413ec..2953f8408ac 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
@@ -39,7 +39,7 @@
/datum/crafting_recipe/food/appendixburger
name = "Appendix burger"
reqs = list(
- /obj/item/organ/internal/appendix = 1,
+ /obj/item/organ/appendix = 1,
/obj/item/food/bun = 1
)
result = /obj/item/food/burger/appendix
@@ -48,7 +48,7 @@
/datum/crafting_recipe/food/brainburger
name = "Brain burger"
reqs = list(
- /obj/item/organ/internal/brain = 1,
+ /obj/item/organ/brain = 1,
/obj/item/food/bun = 1
)
result = /obj/item/food/burger/brain
@@ -306,8 +306,8 @@
reqs = list(
/obj/item/food/bun = 1,
/obj/item/food/patty/plain = 1,
- /obj/item/organ/internal/ears/cat = 1,
- /obj/item/organ/external/tail/cat = 1,
+ /obj/item/organ/ears/cat = 1,
+ /obj/item/organ/tail/cat = 1,
)
result = /obj/item/food/burger/catburger
category = CAT_BURGER
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
index 4b56874eb7c..86956ba861c 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
@@ -90,7 +90,7 @@
/datum/crafting_recipe/food/braincake
name = "Brain cake"
reqs = list(
- /obj/item/organ/internal/brain = 1,
+ /obj/item/organ/brain = 1,
/obj/item/food/cake/plain = 1
)
result = /obj/item/food/cake/brain
@@ -218,8 +218,8 @@
/datum/crafting_recipe/food/cak
name = "Living cat/cake hybrid"
reqs = list(
- /obj/item/organ/internal/brain = 1,
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/brain = 1,
+ /obj/item/organ/heart = 1,
/obj/item/food/cake/birthday = 1,
/obj/item/food/meat/slab = 3,
/datum/reagent/blood = 30,
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm
index 5a754361ffb..5a7947c569e 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm
@@ -11,10 +11,10 @@
name = "Lizard Wine"
time = 40
reqs = list(
- /obj/item/organ/external/tail/lizard = 1,
+ /obj/item/organ/tail/lizard = 1,
/datum/reagent/consumable/ethanol = 100
)
- blacklist = list(/obj/item/organ/external/tail/lizard/fake)
+ blacklist = list(/obj/item/organ/tail/lizard/fake)
result = /obj/item/reagent_containers/cup/glass/bottle/lizardwine
category = CAT_DRINK
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
index 7b253f32ce1..d9f9cd16fe9 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
@@ -25,11 +25,11 @@
/obj/item/food/grown/carrot = 1,
/obj/item/food/grown/chili = 1,
/obj/item/food/grown/onion = 1,
- /obj/item/organ/internal/lungs = 1,
+ /obj/item/organ/lungs = 1,
/obj/item/reagent_containers/cup/bowl = 1,
)
blacklist = list(
- /obj/item/organ/internal/lungs/cybernetic,
+ /obj/item/organ/lungs/cybernetic,
)
result = /obj/item/food/shredded_lungs
@@ -38,10 +38,10 @@
/datum/crafting_recipe/food/tsatsikh
name = "Tsatsikh"
reqs = list(
- /obj/item/organ/internal/heart = 1,
- /obj/item/organ/internal/liver = 1,
- /obj/item/organ/internal/lungs = 1,
- /obj/item/organ/internal/stomach = 1,
+ /obj/item/organ/heart = 1,
+ /obj/item/organ/liver = 1,
+ /obj/item/organ/lungs = 1,
+ /obj/item/organ/stomach = 1,
/datum/reagent/consumable/salt = 2,
/datum/reagent/consumable/blackpepper = 2
)
@@ -51,7 +51,7 @@
/datum/crafting_recipe/food/liver_pate
name = "Liver pate"
reqs = list(
- /obj/item/organ/internal/liver = 1,
+ /obj/item/organ/liver = 1,
/obj/item/food/meat/rawcutlet = 1,
/obj/item/food/grown/onion = 1
)
@@ -104,8 +104,8 @@
/datum/crafting_recipe/food/brain_pate
name = "Eyeball-and-brain pate"
reqs = list(
- /obj/item/organ/internal/brain = 1,
- /obj/item/organ/internal/eyes = 1,
+ /obj/item/organ/brain = 1,
+ /obj/item/organ/eyes = 1,
/obj/item/food/grown/onion = 1,
/datum/reagent/consumable/salt = 3
)
@@ -305,7 +305,7 @@
/obj/item/food/root_flatbread = 1,
/obj/item/food/grown/cucumber = 2,
/obj/item/food/egg = 1,
- /obj/item/organ/internal/liver = 1
+ /obj/item/organ/liver = 1
)
result = /obj/item/food/pizza/flatbread/zmorgast
category = CAT_LIZARD
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
index 804956cbeed..9244f4c54f3 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
@@ -33,7 +33,7 @@
name = "Lizard tail kebab"
reqs = list(
/obj/item/stack/rods = 1,
- /obj/item/organ/external/tail/lizard = 1
+ /obj/item/organ/tail/lizard = 1
)
result = /obj/item/food/kebab/tail
category = CAT_MEAT
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm
index 840d3a8c08b..3dbd7093a74 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm
@@ -107,7 +107,7 @@
time = 40
reqs = list(
/obj/item/food/meat/steak/goliath = 1,
- /obj/item/organ/internal/monster_core/regenerative_core/legion = 1,
+ /obj/item/organ/monster_core/regenerative_core/legion = 1,
/datum/reagent/consumable/ketchup = 2,
/datum/reagent/consumable/capsaicin = 2
)
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
index 4b78482867a..86ae81e5bbd 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
@@ -154,8 +154,8 @@
/datum/crafting_recipe/food/butterbear //ITS ALIVEEEEEE!
name = "Living bear/butter hybrid"
reqs = list(
- /obj/item/organ/internal/brain = 1,
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/brain = 1,
+ /obj/item/organ/heart = 1,
/obj/item/food/butter = 4,
/obj/item/food/meat/slab = 5,
/datum/reagent/blood = 50,
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
index 8798f7cd880..522f6e9f695 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
@@ -423,7 +423,7 @@
time = 15
name = "Deluxe Meat-pocket"
reqs = list(
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/heart = 1,
/obj/item/food/meatball = 1,
/obj/item/food/meat/slab = 1,
/obj/item/food/grown/herbs = 1
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 6e09ee3497c..db47c5625e3 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -39,7 +39,7 @@
///Clowns will always like bananas.
/obj/item/food/grown/banana/proc/check_liked(mob/living/carbon/human/consumer)
- var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
if (!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM))
return FOOD_LIKED
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index c95102d9b0e..b99ddaf7e94 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -159,7 +159,7 @@
if(length(mind_traits))
spawned.mind.add_traits(mind_traits, JOB_TRAIT)
- var/obj/item/organ/internal/liver/liver = spawned.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = spawned.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && length(liver_traits))
liver.add_traits(liver_traits, JOB_TRAIT)
diff --git a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm
index d5eb15d0c47..a0e8bd47d3c 100644
--- a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm
+++ b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm
@@ -49,7 +49,7 @@
/datum/outfit/job/assistant/gimmick/cyborg/post_equip(mob/living/carbon/human/equipped, visuals_only)
. = ..()
- var/obj/item/organ/internal/tongue/robot/robotongue = new ()
+ var/obj/item/organ/tongue/robot/robotongue = new ()
robotongue.Insert(equipped, movement_flags = DELETE_IF_REPLACED)
/datum/outfit/job/assistant/gimmick/skater
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
index 069b36482ea..09d4bc28564 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
@@ -45,7 +45,7 @@
rods[nullrod_type] = initial(nullrod_type.menu_description)
//special non-nullrod subtyped shit
rods[/obj/item/gun/ballistic/bow/divine/with_quiver] = "A divine bow and 10 quivered holy arrows."
- rods[/obj/item/organ/internal/cyberimp/arm/shard/scythe] = "A shard that implants itself into your arm, \
+ rods[/obj/item/organ/cyberimp/arm/shard/scythe] = "A shard that implants itself into your arm, \
allowing you to conjure forth a vorpal scythe. \
Allows you to behead targets for empowered strikes. \
Harms you if you dismiss the scythe without first causing harm to a creature. \
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
index e6f34b894b3..d2f6f61251d 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
@@ -5,17 +5,17 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and
#define SCYTHE_SATED 1
#define SCYTHE_EMPOWERED 2
-/obj/item/organ/internal/cyberimp/arm/shard/scythe
+/obj/item/organ/cyberimp/arm/shard/scythe
name = "sinister shard"
desc = "This shard seems to be directly linked to some sinister entity. It might be your god! It also gives you a really horrible rash when you hold onto it for too long."
items_to_create = list(/obj/item/vorpalscythe)
-/obj/item/organ/internal/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(receiver.mind)
ADD_TRAIT(receiver.mind, TRAIT_MORBID, ORGAN_TRAIT)
-/obj/item/organ/internal/cyberimp/arm/shard/scythe/Retract()
+/obj/item/organ/cyberimp/arm/shard/scythe/Retract()
var/obj/item/vorpalscythe/scythe = active_item
if(!scythe)
return FALSE
diff --git a/code/modules/jobs/job_types/station_trait/human_ai.dm b/code/modules/jobs/job_types/station_trait/human_ai.dm
index b328679795a..f0626d11152 100644
--- a/code/modules/jobs/job_types/station_trait/human_ai.dm
+++ b/code/modules/jobs/job_types/station_trait/human_ai.dm
@@ -128,7 +128,7 @@
if(visuals_only)
return
if(!equipped.get_quirk(/datum/quirk/body_purist))
- var/obj/item/organ/internal/tongue/robot/cybernetic = new()
+ var/obj/item/organ/tongue/robot/cybernetic = new()
cybernetic.Insert(equipped, special = TRUE, movement_flags = DELETE_IF_REPLACED)
//you only get respect if you go all the way, man.
ADD_TRAIT(equipped, TRAIT_COMMISSIONED, INNATE_TRAIT)
diff --git a/code/modules/library/skill_learning/skill_station.dm b/code/modules/library/skill_learning/skill_station.dm
index 2dec45a6abf..dc42dd7db90 100644
--- a/code/modules/library/skill_learning/skill_station.dm
+++ b/code/modules/library/skill_learning/skill_station.dm
@@ -229,7 +229,7 @@
.["slots_max"] = null
return
- var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
// If there's no brain, we don't need to worry either.
if(QDELETED(occupant_brain))
@@ -272,7 +272,7 @@
return TRUE
var/chipref = params["ref"]
var/mob/living/carbon/carbon_occupant = occupant
- var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
if(QDELETED(carbon_occupant) || QDELETED(occupant_brain))
return TRUE
var/obj/item/skillchip/to_be_removed = locate(chipref) in occupant_brain.skillchips
@@ -297,7 +297,7 @@
stack_trace("[usr] tried to toggle skillchip activation when [src] was in an invalid state.")
return TRUE
var/mob/living/carbon/carbon_occupant = occupant
- var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
if(QDELETED(carbon_occupant) || QDELETED(occupant_brain))
return TRUE
var/obj/item/skillchip/to_be_removed = locate(chipref) in occupant_brain.skillchips
diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm
index eddaf300e08..5ca3f784ecb 100644
--- a/code/modules/library/skill_learning/skillchip.dm
+++ b/code/modules/library/skill_learning/skillchip.dm
@@ -42,7 +42,7 @@
/// Set to TRUE when the skill chip's effects are applied. Set to FALSE when they're not.
var/active = FALSE
/// Brain that holds this skillchip.
- var/obj/item/organ/internal/brain/holding_brain
+ var/obj/item/organ/brain/holding_brain
/obj/item/skillchip/Initialize(mapload, is_removable = TRUE)
. = ..()
@@ -131,7 +131,7 @@
* Arguments:
* * owner_brain - The brain that this skillchip was implanted in to.
*/
-/obj/item/skillchip/proc/on_implant(obj/item/organ/internal/brain/owner_brain)
+/obj/item/skillchip/proc/on_implant(obj/item/organ/brain/owner_brain)
if(holding_brain)
CRASH("Skillchip is trying to be implanted into [owner_brain], but it's already implanted in [holding_brain]")
@@ -205,7 +205,7 @@
* Arguments:
* * skillchip - The skillchip you're intending to activate. Does not activate the chip.
*/
-/obj/item/skillchip/proc/has_activate_incompatibility(obj/item/organ/internal/brain/brain)
+/obj/item/skillchip/proc/has_activate_incompatibility(obj/item/organ/brain/brain)
if(QDELETED(brain))
return "No brain detected."
@@ -255,7 +255,7 @@
return "Incompatible lifeform detected."
// No brain
- var/obj/item/organ/internal/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(QDELETED(brain))
return "No brain detected."
@@ -274,7 +274,7 @@
* Arguments:
* * brain - The brain to check for implantability with.
*/
-/obj/item/skillchip/proc/has_brain_incompatibility(obj/item/organ/internal/brain/brain)
+/obj/item/skillchip/proc/has_brain_incompatibility(obj/item/organ/brain/brain)
if(!istype(brain))
stack_trace("Attempted to check incompatibility with invalid brain object [brain].")
return "Incompatible brain."
diff --git a/code/modules/lost_crew/damages/decay.dm b/code/modules/lost_crew/damages/decay.dm
index 666e63d3bed..55674894474 100644
--- a/code/modules/lost_crew/damages/decay.dm
+++ b/code/modules/lost_crew/damages/decay.dm
@@ -11,7 +11,7 @@
// * 0.5 because life ticks happen about every 2 seconds (we really need a way to get the current life tickspeed)
var/decay_ticks = max_decay_time * severity * 0.5
- for(var/obj/item/organ/internal/internal in body.organs)
+ for(var/obj/item/organ/internal in body.organs)
internal.apply_organ_damage(decay_ticks * internal.decay_factor)
return TRUE
diff --git a/code/modules/lost_crew/lost_crew_manager.dm b/code/modules/lost_crew/lost_crew_manager.dm
index c19b6c6bb13..a8930262731 100644
--- a/code/modules/lost_crew/lost_crew_manager.dm
+++ b/code/modules/lost_crew/lost_crew_manager.dm
@@ -57,7 +57,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new)
if(!HAS_TRAIT(new_body, TRAIT_HUSK))
paper.name = "DO NOT REMOVE BRAIN"
paper.add_raw_text("Body swapping is not covered by medical insurance for unhusked bodies. Chemical brain explosives have been administered to enforce stipend.")
- var/obj/item/organ/internal/brain/boombrain = new_body.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/boombrain = new_body.get_organ_by_type(/obj/item/organ/brain)
//I swear to fuck I will explode you. you're not clever
//everyone thought of this, but I am the fool for having any faith
//in people actually wanting to play the job in an interesting manner
@@ -68,7 +68,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new)
paper.name = "BODYSWAPPING PERMITTED"
paper.add_raw_text("Body swapping is covered by medical insurance in case of husking and a lack of skill in the practictioner.")
- var/obj/item/organ/internal/brain/hersens = new_body.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/hersens = new_body.get_organ_by_type(/obj/item/organ/brain)
hersens.AddComponent(
/datum/component/ghostrole_on_revive, \
/* refuse_revival_if_failed = */ TRUE, \
@@ -76,7 +76,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new)
)
/// Set a timer for awarding succes and drop some awesome deathlore
-/datum/lost_crew_manager/proc/on_succesful_revive(obj/item/organ/internal/brain/brain, list/death_lore, list/datum/callback/on_revive_and_player_occupancy)
+/datum/lost_crew_manager/proc/on_succesful_revive(obj/item/organ/brain/brain, list/death_lore, list/datum/callback/on_revive_and_player_occupancy)
var/mob/living/carbon/human/owner = brain.owner
owner.mind.add_antag_datum(/datum/antagonist/recovered_crew) //for tracking mostly
diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm
index c49b5c13996..172c0e2f9e5 100644
--- a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm
+++ b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm
@@ -29,13 +29,13 @@
/obj/structure/closet/crate/secure/freezer/commsagent/PopulateContents()
. = ..() //Contains a variety of less exotic tongues (And tongue accessories) for the comms agent to mess with.
- new /obj/item/organ/internal/tongue(src)
- new /obj/item/organ/internal/tongue/lizard(src)
- new /obj/item/organ/internal/tongue/fly(src)
- new /obj/item/organ/internal/tongue/zombie(src)
- new /obj/item/organ/internal/tongue/bone(src)
- new /obj/item/organ/internal/tongue/robot(src) //DANGER! CRYSTAL HYPERSTRUCTURE-
- new /obj/item/organ/internal/tongue/ethereal(src)
+ new /obj/item/organ/tongue(src)
+ new /obj/item/organ/tongue/lizard(src)
+ new /obj/item/organ/tongue/fly(src)
+ new /obj/item/organ/tongue/zombie(src)
+ new /obj/item/organ/tongue/bone(src)
+ new /obj/item/organ/tongue/robot(src) //DANGER! CRYSTAL HYPERSTRUCTURE-
+ new /obj/item/organ/tongue/ethereal(src)
new /obj/item/autosurgeon/syndicate/commsagent(src)
new /obj/item/book/granter/sign_language(src)
new /obj/item/clothing/gloves/radio(src)
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
index a91d033f1ee..d40d9178f3a 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
@@ -73,27 +73,27 @@
var/stored_organ
/// Types of organ we can spawn
var/static/list/allowed_organs = list(
- /obj/item/organ/internal/heart/gland/egg = 7,
- /obj/item/organ/internal/heart/gland/plasma = 7,
- /obj/item/organ/internal/alien/plasmavessel = 5,
- /obj/item/organ/internal/heart/gland/chem = 5,
- /obj/item/organ/internal/heart/gland/mindshock = 5,
- /obj/item/organ/internal/heart/gland/spiderman = 5,
- /obj/item/organ/internal/heart/gland/transform = 5,
- /obj/item/organ/internal/heart/gland/slime = 4,
- /obj/item/organ/internal/heart/gland/trauma = 4,
- /obj/item/organ/internal/heart/carp = 3,
- /obj/item/organ/internal/heart/rat = 3,
- /obj/item/organ/internal/heart/gland/electric = 3,
- /obj/item/organ/internal/monster_core/brimdust_sac = 3,
- /obj/item/organ/internal/monster_core/regenerative_core = 3,
- /obj/item/organ/internal/monster_core/rush_gland = 3,
- /obj/item/organ/internal/tongue/carp = 3,
- /obj/item/organ/internal/alien/acid = 2,
- /obj/item/organ/internal/alien/resinspinner = 2,
- /obj/item/organ/internal/eyes/night_vision/goliath = 2,
- /obj/item/organ/internal/eyes/night_vision/rat = 2,
- /obj/item/organ/internal/heart/gland/ventcrawling = 1,
+ /obj/item/organ/heart/gland/egg = 7,
+ /obj/item/organ/heart/gland/plasma = 7,
+ /obj/item/organ/alien/plasmavessel = 5,
+ /obj/item/organ/heart/gland/chem = 5,
+ /obj/item/organ/heart/gland/mindshock = 5,
+ /obj/item/organ/heart/gland/spiderman = 5,
+ /obj/item/organ/heart/gland/transform = 5,
+ /obj/item/organ/heart/gland/slime = 4,
+ /obj/item/organ/heart/gland/trauma = 4,
+ /obj/item/organ/heart/carp = 3,
+ /obj/item/organ/heart/rat = 3,
+ /obj/item/organ/heart/gland/electric = 3,
+ /obj/item/organ/monster_core/brimdust_sac = 3,
+ /obj/item/organ/monster_core/regenerative_core = 3,
+ /obj/item/organ/monster_core/rush_gland = 3,
+ /obj/item/organ/tongue/carp = 3,
+ /obj/item/organ/alien/acid = 2,
+ /obj/item/organ/alien/resinspinner = 2,
+ /obj/item/organ/eyes/night_vision/goliath = 2,
+ /obj/item/organ/eyes/night_vision/rat = 2,
+ /obj/item/organ/heart/gland/ventcrawling = 1,
)
/obj/structure/meateor_fluff/flesh_pod/Initialize(mapload)
diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm
index 36fdad25d84..ba135081532 100644
--- a/code/modules/meteors/meteor_types.dm
+++ b/code/modules/meteors/meteor_types.dm
@@ -379,7 +379,7 @@
hits = 2
heavy = TRUE
meteorsound = 'sound/effects/blob/blobattack.ogg'
- meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/internal/heart, /obj/item/organ/internal/lungs, /obj/item/organ/internal/tongue, /obj/item/organ/internal/appendix/)
+ meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/heart, /obj/item/organ/lungs, /obj/item/organ/tongue, /obj/item/organ/appendix/)
var/meteorgibs = /obj/effect/gibspawner/generic
threat = 2
signature = "culinary material"
@@ -391,7 +391,7 @@
meteordrop += pick(subtypesof(path))
for(var/path in meteordrop)
- if(path == /obj/item/organ/internal/tongue)
+ if(path == /obj/item/organ/tongue)
meteordrop -= path
meteordrop += pick(typesof(path))
return ..()
@@ -412,12 +412,12 @@
//Meaty Ore Xeno edition
/obj/effect/meteor/meaty/xeno
color = "#5EFF00"
- meteordrop = list(/obj/item/food/meat/slab/xeno, /obj/item/organ/internal/tongue/alien)
+ meteordrop = list(/obj/item/food/meat/slab/xeno, /obj/item/organ/tongue/alien)
meteorgibs = /obj/effect/gibspawner/xeno
signature = "exotic culinary material"
/obj/effect/meteor/meaty/xeno/Initialize(mapload)
- meteordrop += subtypesof(/obj/item/organ/internal/alien)
+ meteordrop += subtypesof(/obj/item/organ/alien)
return ..()
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
diff --git a/code/modules/mining/boulder_processing/boulder.dm b/code/modules/mining/boulder_processing/boulder.dm
index 57a143a0d33..e345f870f78 100644
--- a/code/modules/mining/boulder_processing/boulder.dm
+++ b/code/modules/mining/boulder_processing/boulder.dm
@@ -9,7 +9,10 @@
icon_state = "ore"
icon = 'icons/obj/ore.dmi'
item_flags = NO_MAT_REDEMPTION | SLOWS_WHILE_IN_HAND
- throw_range = 2
+ w_class = WEIGHT_CLASS_HUGE
+ throwforce = 30 // Under normal circumstances, pretty much nobody can throw this.
+ throw_range = 0
+ tk_throw_range = 1 // Sorry, this is too cheesy, but maybe you can smash down doors with it.
throw_speed = 0.5
slowdown = 1.5
drag_slowdown = 1.5 // It's still a big rock.
@@ -28,6 +31,7 @@
register_context()
AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_unwielded = 0, force_wielded = 5) //Heavy as all hell, it's a boulder, dude.
AddComponent(/datum/component/sisyphus_awarder)
+ AddElement(/datum/element/bane, mob_biotypes = MOB_SPECIAL, added_damage = 20, requires_combat_mode = FALSE)
/obj/item/boulder/Destroy(force)
SSore_generation.available_boulders -= src
@@ -144,6 +148,7 @@
to_chat(user, span_notice("You finish working on \the [src], and it crumbles into ore."))
playsound(src, 'sound/effects/rock/rock_break.ogg', 50)
user.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * 0.2)
+ user.mind?.adjust_experience(/datum/skill/athletics, MINING_SKILL_BOULDER_SIZE_XP * 0.2)
qdel(src)
return
var/msg = (durability == 1 ? "is crumbling!" : "looks weaker!")
diff --git a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm
index 62a3acdb447..d6767fe913b 100644
--- a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm
+++ b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm
@@ -11,7 +11,7 @@
* If implanted, you can shake off a cloud of brimdust to give this buff to people around you.area
* It will also automatically grant you one stack every 30 seconds if you are on lavaland.
*/
-/obj/item/organ/internal/monster_core/brimdust_sac
+/obj/item/organ/monster_core/brimdust_sac
name = "brimdust sac"
desc = "A strange organ from a brimdemon. You can shake it out to coat yourself in explosive powder."
icon_state = "brim_sac"
@@ -24,16 +24,16 @@
/// You will gain a stack of the buff every x seconds
COOLDOWN_DECLARE(brimdust_auto_apply_cooldown)
-/obj/item/organ/internal/monster_core/brimdust_sac/Initialize(mapload)
+/obj/item/organ/monster_core/brimdust_sac/Initialize(mapload)
. = ..()
AddComponent(/datum/component/explodable, light_impact_range = 1)
-/obj/item/organ/internal/monster_core/brimdust_sac/apply_to(mob/living/target, mob/user)
+/obj/item/organ/monster_core/brimdust_sac/apply_to(mob/living/target, mob/user)
target.apply_status_effect(user_status, BRIMDUST_STACKS_ON_USE)
qdel(src)
// Every x seconds, if on lavaland, add one stack
-/obj/item/organ/internal/monster_core/brimdust_sac/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/monster_core/brimdust_sac/on_life(seconds_per_tick, times_fired)
. = ..()
if(!COOLDOWN_FINISHED(src, brimdust_auto_apply_cooldown))
return
@@ -43,7 +43,7 @@
owner.apply_status_effect(user_status, BRIMDUST_STACKS_ON_LIFE)
/// Make a cloud which applies brimdust to everyone nearby
-/obj/item/organ/internal/monster_core/brimdust_sac/on_triggered_internal()
+/obj/item/organ/monster_core/brimdust_sac/on_triggered_internal()
var/turf/origin_turf = get_turf(owner)
do_smoke(range = 2, holder = owner, location = origin_turf, smoke_type = /obj/effect/particle_effect/fluid/smoke/bad/brimdust)
diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm
index 679f3f81dd6..b6bd54a361e 100644
--- a/code/modules/mining/equipment/monster_organs/monster_organ.dm
+++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm
@@ -11,7 +11,7 @@
/obj/item/mining_stabilizer/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isorgan(interacting_with))
return NONE
- var/obj/item/organ/internal/monster_core/target_core = interacting_with
+ var/obj/item/organ/monster_core/target_core = interacting_with
if (!istype(target_core))
balloon_alert(user, "invalid target!")
return ITEM_INTERACT_BLOCKING
@@ -29,7 +29,7 @@
* Generalised behaviour is that they will decay and become useless unless provided with serum.
* These should usually do something both when used in-hand, or when implanted into someone.
*/
-/obj/item/organ/internal/monster_core
+/obj/item/organ/monster_core
name = "monster core"
desc = "All that remains of a monster. This abstract item should not spawn. \
It will rapidly decay into uselessness. but don't worry because it's already useless."
@@ -58,11 +58,11 @@
/// Status effect applied by this organ
var/datum/status_effect/user_status
-/obj/item/organ/internal/monster_core/Initialize(mapload)
+/obj/item/organ/monster_core/Initialize(mapload)
. = ..()
decay_timer = addtimer(CALLBACK(src, PROC_REF(go_inert)), time_to_decay, TIMER_STOPPABLE)
-/obj/item/organ/internal/monster_core/examine(mob/user)
+/obj/item/organ/monster_core/examine(mob/user)
. = ..()
if(!decay_timer)
return
@@ -79,11 +79,11 @@
if(0 SECONDS to 1 MINUTES)
. += span_warning("Signs of decay have set in, but it still looks alive. It's probably about to become unusable really quickly.")
-/obj/item/organ/internal/monster_core/Destroy(force)
+/obj/item/organ/monster_core/Destroy(force)
deltimer(decay_timer)
return ..()
-/obj/item/organ/internal/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags)
+/obj/item/organ/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags)
. = ..()
if (inert)
@@ -96,7 +96,7 @@
target_carbon.visible_message(span_notice("[src] stabilizes as it's inserted."))
return TRUE
-/obj/item/organ/internal/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags)
+/obj/item/organ/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags)
if (!inert && !special)
owner.visible_message(span_notice("[src] rapidly decays as it's removed."))
go_inert()
@@ -107,7 +107,7 @@
* Returns true if successful.
* * Implanted - If true, organ has just been inserted into someone.
*/
-/obj/item/organ/internal/monster_core/proc/preserve(implanted = FALSE)
+/obj/item/organ/monster_core/proc/preserve(implanted = FALSE)
if (inert)
return FALSE
deltimer(decay_timer)
@@ -118,7 +118,7 @@
/**
* Decays the organ, it is now useless.
*/
-/obj/item/organ/internal/monster_core/proc/go_inert()
+/obj/item/organ/monster_core/proc/go_inert()
if (inert)
return FALSE
inert = TRUE
@@ -128,7 +128,7 @@
update_appearance()
return TRUE
-/obj/item/organ/internal/monster_core/update_desc()
+/obj/item/organ/monster_core/update_desc()
if (inert)
desc = desc_inert ? desc_inert : initial(desc)
return ..()
@@ -138,7 +138,7 @@
desc = initial(desc)
return ..()
-/obj/item/organ/internal/monster_core/update_icon_state()
+/obj/item/organ/monster_core/update_icon_state()
if (inert)
icon_state = icon_state_inert ? icon_state_inert : initial(icon_state)
return ..()
@@ -148,14 +148,14 @@
icon_state = initial(icon_state)
return ..()
-/obj/item/organ/internal/monster_core/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
+/obj/item/organ/monster_core/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
return NONE
try_apply(interacting_with, user)
return ITEM_INTERACT_SUCCESS
-/obj/item/organ/internal/monster_core/attack_self(mob/user)
+/obj/item/organ/monster_core/attack_self(mob/user)
if (!user.can_perform_action(src, FORBID_TELEKINESIS_REACH|ALLOW_RESTING))
return
try_apply(user, user)
@@ -167,7 +167,7 @@
* * target - Person you are applying this to.
* * user - Person who is doing the applying.
*/
-/obj/item/organ/internal/monster_core/proc/try_apply(atom/target, mob/user)
+/obj/item/organ/monster_core/proc/try_apply(atom/target, mob/user)
if (!isliving(target))
balloon_alert(user, "invalid target!")
return
@@ -187,7 +187,7 @@
* * target - Person you are applying this to.
* * user - Person who is doing the applying.
*/
-/obj/item/organ/internal/monster_core/proc/apply_to(mob/living/target, mob/user)
+/obj/item/organ/monster_core/proc/apply_to(mob/living/target, mob/user)
if (user_status)
target.apply_status_effect(user_status)
qdel(src)
@@ -196,7 +196,7 @@
* Utility proc to find the associated monster organ action and trigger it.
* Call this instead of on_triggered_internal() if the action needs to trigger automatically, or the cooldown won't happen.
*/
-/obj/item/organ/internal/monster_core/proc/trigger_organ_action(trigger_flags)
+/obj/item/organ/monster_core/proc/trigger_organ_action(trigger_flags)
var/datum/action/cooldown/monster_core_action/action = locate() in actions
action?.Trigger(trigger_flags = trigger_flags)
@@ -204,7 +204,7 @@
* Called when activated while implanted inside someone.
* This could be via clicking the associated action button or through the above method.
*/
-/obj/item/organ/internal/monster_core/proc/on_triggered_internal()
+/obj/item/organ/monster_core/proc/on_triggered_internal()
SHOULD_CALL_PARENT(FALSE)
CRASH("Someone forgot to make their organ do something when you implant it.")
@@ -221,7 +221,7 @@
. = ..()
if (!target)
return
- var/obj/item/organ/internal/monster_core/organ = target
+ var/obj/item/organ/monster_core/organ = target
if (!istype(organ))
return
organ.on_triggered_internal()
diff --git a/code/modules/mining/equipment/monster_organs/regenerative_core.dm b/code/modules/mining/equipment/monster_organs/regenerative_core.dm
index 98758d5a369..e601ac89f8c 100644
--- a/code/modules/mining/equipment/monster_organs/regenerative_core.dm
+++ b/code/modules/mining/equipment/monster_organs/regenerative_core.dm
@@ -2,7 +2,7 @@
* On use in hand, heals you over time and removes injury movement debuffs. Also makes you a bit sad.
* On use when implanted, fully heals. Automatically fully heals if you would enter crit.
*/
-/obj/item/organ/internal/monster_core/regenerative_core
+/obj/item/organ/monster_core/regenerative_core
name = "regenerative core"
desc = "All that remains of a hivelord. It can be used to help keep your body going, but it will rapidly decay into uselessness."
desc_preserved = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay."
@@ -12,30 +12,30 @@
icon_state = "hivelord_core"
icon_state_inert = "hivelord_core_decayed"
-/obj/item/organ/internal/monster_core/regenerative_core/preserve(implanted = FALSE)
+/obj/item/organ/monster_core/regenerative_core/preserve(implanted = FALSE)
if (implanted)
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "implanted"))
else
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "stabilizer"))
return ..()
-/obj/item/organ/internal/monster_core/regenerative_core/go_inert()
+/obj/item/organ/monster_core/regenerative_core/go_inert()
. = .. ()
if (!.)
return
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert"))
-/obj/item/organ/internal/monster_core/regenerative_core/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/monster_core/regenerative_core/on_life(seconds_per_tick, times_fired)
. = ..()
if (owner.health <= owner.crit_threshold)
trigger_organ_action(TRIGGER_FORCE_AVAILABLE)
-/obj/item/organ/internal/monster_core/regenerative_core/on_triggered_internal()
+/obj/item/organ/monster_core/regenerative_core/on_triggered_internal()
owner.revive(HEAL_ALL)
qdel(src)
/// Log applications and apply moodlet.
-/obj/item/organ/internal/monster_core/regenerative_core/apply_to(mob/living/target, mob/user)
+/obj/item/organ/monster_core/regenerative_core/apply_to(mob/living/target, mob/user)
target.add_mood_event(MOOD_CATEGORY_LEGION_CORE, /datum/mood_event/healsbadman)
if (target != user)
target.visible_message(span_notice("[user] forces [target] to apply [src]... Black tendrils entangle and reinforce [target.p_them()]!"))
@@ -46,7 +46,7 @@
return ..()
/// Different graphics/desc for the lavaland legion
-/obj/item/organ/internal/monster_core/regenerative_core/legion
+/obj/item/organ/monster_core/regenerative_core/legion
desc = "A strange rock that crackles with power. It can be used to heal completely, but it will rapidly decay into uselessness."
desc_preserved = "The core has been stabilized, allowing you to use it to heal completely without danger of decay."
desc_inert = "The core has decayed, and is completely useless."
diff --git a/code/modules/mining/equipment/monster_organs/rush_gland.dm b/code/modules/mining/equipment/monster_organs/rush_gland.dm
index f9cfa1b88f1..cf901269e90 100644
--- a/code/modules/mining/equipment/monster_organs/rush_gland.dm
+++ b/code/modules/mining/equipment/monster_organs/rush_gland.dm
@@ -5,7 +5,7 @@
* On use in hand, makes you run really fast for 5 seconds and ignore injury movement decrease.
* On use when implanted, run for longer and ignore all negative movement. Automatically triggers if health is low (to escape).
*/
-/obj/item/organ/internal/monster_core/rush_gland
+/obj/item/organ/monster_core/rush_gland
name = "rush gland"
icon_state = "lobster_gland"
icon_state_preserved = "lobster_gland_stable"
@@ -16,23 +16,23 @@
user_status = /datum/status_effect/lobster_rush
actions_types = list(/datum/action/cooldown/monster_core_action/adrenal_boost)
-/obj/item/organ/internal/monster_core/rush_gland/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/monster_core/rush_gland/on_life(seconds_per_tick, times_fired)
. = ..()
if (owner.health <= HEALTH_DANGER_ZONE)
trigger_organ_action()
-/obj/item/organ/internal/monster_core/rush_gland/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/monster_core/rush_gland/on_mob_insert(mob/living/carbon/organ_owner)
. = ..()
RegisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED, PROC_REF(trigger_organ_action_on_sig))
-/obj/item/organ/internal/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED)
-/obj/item/organ/internal/monster_core/rush_gland/on_triggered_internal()
+/obj/item/organ/monster_core/rush_gland/on_triggered_internal()
owner.apply_status_effect(/datum/status_effect/lobster_rush/extended)
-/obj/item/organ/internal/monster_core/rush_gland/proc/trigger_organ_action_on_sig(datum/source)
+/obj/item/organ/monster_core/rush_gland/proc/trigger_organ_action_on_sig(datum/source)
SIGNAL_HANDLER
INVOKE_ASYNC(src, PROC_REF(trigger_organ_action))
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 6b2e79ce489..d1a75bd114c 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -27,7 +27,7 @@
if(2)
new /obj/item/soulstone/anybody/mining(src)
if(3)
- new /obj/item/organ/internal/cyberimp/arm/shard/katana(src)
+ new /obj/item/organ/cyberimp/arm/shard/katana(src)
if(4)
new /obj/item/clothing/glasses/godeye(src)
if(5)
@@ -48,7 +48,7 @@
if(8)
new /obj/item/rod_of_asclepius(src)
if(9)
- new /obj/item/organ/internal/heart/cursed/wizard(src)
+ new /obj/item/organ/heart/cursed/wizard(src)
if(10)
new /obj/item/ship_in_a_bottle(src)
if(11)
@@ -154,7 +154,7 @@
var/list/choices = subtypesof(/obj/machinery/anomalous_crystal) - /obj/machinery/anomalous_crystal/theme_warp // NOVA EDIT CHANGE - Less griefing - ORIGINAL: var/list/choices = subtypesof(/obj/machinery/anomalous_crystal)
var/random_crystal = pick(choices)
new random_crystal(src)
- new /obj/item/organ/internal/vocal_cords/colossus(src)
+ new /obj/item/organ/vocal_cords/colossus(src)
/obj/structure/closet/crate/necropolis/colossus/crusher
name = "angelic colossus chest"
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index bbe1de54243..05d59f556c2 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -552,7 +552,7 @@
to_chat(exposed_human, span_userdanger("A terrible pain travels down your back as your wings change shape!"))
else
to_chat(exposed_human, span_userdanger("A terrible pain travels down your back as wings burst out!"))
- var/obj/item/organ/external/wings/functional/wings = get_wing_choice(exposed_human, chest)
+ var/obj/item/organ/wings/functional/wings = get_wing_choice(exposed_human, chest)
wings = new wings()
wings.Insert(exposed_human)
playsound(exposed_human.loc, 'sound/items/poster/poster_ripped.ogg', 50, TRUE, -1)
@@ -565,7 +565,7 @@
return wing_types[1]
var/list/radial_wings = list()
var/list/name2type = list()
- for(var/obj/item/organ/external/wings/functional/possible_type as anything in wing_types)
+ for(var/obj/item/organ/wings/functional/possible_type as anything in wing_types)
var/datum/sprite_accessory/accessory = initial(possible_type.sprite_accessory_override) //get the type
accessory = SSaccessories.sprite_accessories[initial(accessory.key)][initial(accessory.name)] //NOVA EDIT CHANGE - ORIGINAL: accessory = SSaccessories.wings_list[initial(accessory.name)] //get the singleton instance
var/image/img = image(icon = accessory.icon, icon_state = "m_wingsopen_[accessory.icon_state]_BEHIND") //Process the HUD elements
@@ -934,7 +934,7 @@
name = "Scan Target"
desc = "Contact may or may not be close."
-/obj/item/organ/internal/cyberimp/arm/shard
+/obj/item/organ/cyberimp/arm/shard
name = "dark spoon shard"
desc = "An eerie metal shard surrounded by dark energies...of soup drinking. You probably don't think you should have been able to find this."
icon = 'icons/obj/mining_zones/artefacts.dmi'
@@ -944,7 +944,7 @@
extend_sound = 'sound/items/unsheath.ogg'
retract_sound = 'sound/items/sheath.ogg'
-/obj/item/organ/internal/cyberimp/arm/shard/attack_self(mob/user, modifiers)
+/obj/item/organ/cyberimp/arm/shard/attack_self(mob/user, modifiers)
. = ..()
to_chat(user, span_userdanger("The mass goes up your arm and goes inside it!"))
playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
@@ -954,15 +954,15 @@
user.temporarilyRemoveItemFromInventory(src, TRUE)
Insert(user)
-/obj/item/organ/internal/cyberimp/arm/shard/screwdriver_act(mob/living/user, obj/item/screwtool)
+/obj/item/organ/cyberimp/arm/shard/screwdriver_act(mob/living/user, obj/item/screwtool)
return
-/obj/item/organ/internal/cyberimp/arm/shard/katana
+/obj/item/organ/cyberimp/arm/shard/katana
name = "dark shard"
desc = "An eerie metal shard surrounded by dark energies."
items_to_create = list(/obj/item/cursed_katana)
-/obj/item/organ/internal/cyberimp/arm/shard/katana/Retract()
+/obj/item/organ/cyberimp/arm/shard/katana/Retract()
var/obj/item/cursed_katana/katana = active_item
if(!katana || katana.shattered)
return FALSE
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index c532769a1d9..adb97b09800 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -275,8 +275,8 @@ Works together with spawning an observer, noted above.
if(ishuman(usr)) //following code only applies to those capable of having an ethereal heart, ie humans
var/mob/living/carbon/human/crystal_fella = usr
var/our_heart = crystal_fella.get_organ_slot(ORGAN_SLOT_HEART)
- if(istype(our_heart, /obj/item/organ/internal/heart/ethereal)) //so you got the heart?
- var/obj/item/organ/internal/heart/ethereal/ethereal_heart = our_heart
+ if(istype(our_heart, /obj/item/organ/heart/ethereal)) //so you got the heart?
+ var/obj/item/organ/heart/ethereal/ethereal_heart = our_heart
ethereal_heart.stop_crystalization_process(crystal_fella) //stops the crystallization process
stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now
diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
index 1fa30063dd5..13caade7c94 100644
--- a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
+++ b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
@@ -83,7 +83,7 @@
if(HAS_TRAIT(current_target, TRAIT_DEAF))
return
- var/obj/item/organ/internal/ears/target_ears = current_target.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/target_ears = current_target.get_organ_slot(ORGAN_SLOT_EARS)
target_ears?.adjustEarDamage(0, 5)
/mob/living/basic/bot/honkbot/ui_data(mob/user)
diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
index 363243a2833..7e572c2d92f 100644
--- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
+++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
@@ -177,6 +177,19 @@
paralyze_chance = 0
initial_size = 0.9
+/mob/living/basic/gorilla/hostile
+ name = "Feral Gorilla"
+ maxHealth = 180
+ health = 180
+ desc = "A gorilla created via \"advanced genetic science\". While not quite as strong as their wildborne brethren, this simian still packs a punch."
+ melee_damage_lower = 15
+ melee_damage_upper = 18
+ obj_damage = 25
+ speed = 0.1
+ paralyze_chance = 0
+ initial_size = 0.9
+ faction = list(FACTION_HOSTILE)
+
/mob/living/basic/gorilla/genetics/Initialize(mapload)
. = ..()
qdel(GetComponent(/datum/component/amputating_limbs))
diff --git a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm
index b83c4f253f3..6f8c2e5c96f 100644
--- a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm
+++ b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm
@@ -28,7 +28,7 @@
var/static/list/loot = list(
/obj/effect/decal/cleanable/ash,
/obj/item/clothing/suit/armor/vest,
- /obj/item/organ/internal/lungs,
+ /obj/item/organ/lungs,
/obj/item/shard,
)
AddElement(/datum/element/death_drops, loot)
diff --git a/code/modules/mob/living/basic/heretic/raw_prophet.dm b/code/modules/mob/living/basic/heretic/raw_prophet.dm
index f4ed7229a00..1d0d0f93f20 100644
--- a/code/modules/mob/living/basic/heretic/raw_prophet.dm
+++ b/code/modules/mob/living/basic/heretic/raw_prophet.dm
@@ -25,7 +25,7 @@
/mob/living/basic/heretic_summon/raw_prophet/Initialize(mapload)
. = ..()
AddElement(/datum/element/wheel)
- var/static/list/body_parts = list(/obj/effect/gibspawner/human, /obj/item/bodypart/arm/left, /obj/item/organ/internal/eyes)
+ var/static/list/body_parts = list(/obj/effect/gibspawner/human, /obj/item/bodypart/arm/left, /obj/item/organ/eyes)
AddElement(/datum/element/death_drops, body_parts)
AddComponent(/datum/component/focused_attacker)
var/on_link_message = "You feel something new enter your sphere of mind... \
diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
index 81dc34002ee..e314fe152ca 100644
--- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
+++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
@@ -31,7 +31,7 @@
butcher_results = list(
/obj/item/food/meat/slab = 2,
/obj/effect/decal/cleanable/brimdust = 1,
- /obj/item/organ/internal/monster_core/brimdust_sac = 1,
+ /obj/item/organ/monster_core/brimdust_sac = 1,
)
/// How we get blasting
var/datum/action/cooldown/mob_cooldown/brimbeam/beam
diff --git a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
index f76479dc131..286e7539624 100644
--- a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
+++ b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
@@ -29,7 +29,7 @@
/mob/living/basic/mining/hivelord/Initialize(mapload)
. = ..()
- var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core)
+ var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core)
AddElement(/datum/element/relay_attackers)
AddElement(/datum/element/death_drops, death_loot)
AddComponent(/datum/component/clickbox, icon_state = "hivelord", max_scale = INFINITY, dead_state = "hivelord_dead") // They writhe so much.
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion.dm b/code/modules/mob/living/basic/lavaland/legion/legion.dm
index 76d3f51947e..007d8b6bfa6 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion.dm
@@ -50,7 +50,7 @@
/// Create what we want to drop on death, in proc form so we can always return a static list
/mob/living/basic/mining/legion/proc/get_loot_list()
- var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core/legion)
+ var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core/legion)
return death_loot
/mob/living/basic/mining/legion/Exited(atom/movable/gone, direction)
@@ -88,7 +88,7 @@
if (prob(75))
return
// Congratulations you have won a special prize: cancer
- var/obj/item/organ/internal/legion_tumour/cancer = new()
+ var/obj/item/organ/legion_tumour/cancer = new()
cancer.Insert(consumed, special = TRUE, movement_flags = DELETE_IF_REPLACED)
/// A Legion which only drops skeletons instead of corpses which might have fun loot, so it cannot be farmed
@@ -167,5 +167,5 @@
/// Create what we want to drop on death, in proc form so we can always return a static list
/mob/living/basic/mining/legion/large/get_loot_list()
- var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core/legion = 3, /obj/effect/mob_spawn/corpse/human/legioninfested = 4)
+ var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core/legion = 3, /obj/effect/mob_spawn/corpse/human/legioninfested = 4)
return death_loot
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
index d4503230e48..984080907c2 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
@@ -1,5 +1,5 @@
/// Left behind when a legion infects you, for medical enrichment
-/obj/item/organ/internal/legion_tumour
+/obj/item/organ/legion_tumour
name = "legion tumour"
desc = "A mass of pulsing flesh and dark tendrils, containing the power to regenerate flesh at a terrible cost."
failing_desc = "pulses and writhes with horrible life, reaching towards you with its tendrils!"
@@ -27,22 +27,22 @@
'sound/mobs/non-humanoids/hiss/lowHiss4.ogg',
)
-/obj/item/organ/internal/legion_tumour/Initialize(mapload)
+/obj/item/organ/legion_tumour/Initialize(mapload)
. = ..()
animate_pulse()
-/obj/item/organ/internal/legion_tumour/apply_organ_damage(damage_amount, maximum, required_organ_flag)
+/obj/item/organ/legion_tumour/apply_organ_damage(damage_amount, maximum, required_organ_flag)
var/was_failing = organ_flags & ORGAN_FAILING
. = ..()
if (was_failing != (organ_flags & ORGAN_FAILING))
animate_pulse()
-/obj/item/organ/internal/legion_tumour/set_organ_damage(damage_amount, required_organ_flag)
+/obj/item/organ/legion_tumour/set_organ_damage(damage_amount, required_organ_flag)
. = ..()
animate_pulse()
/// Do a heartbeat animation depending on if we're failing or not
-/obj/item/organ/internal/legion_tumour/proc/animate_pulse()
+/obj/item/organ/legion_tumour/proc/animate_pulse()
animate(src, transform = matrix()) // Stop any current animation
var/speed_divider = organ_flags & ORGAN_FAILING ? 2 : 1
@@ -51,23 +51,23 @@
animate(transform = matrix(), time = 0.5 SECONDS / speed_divider, easing = SINE_EASING | EASE_IN)
animate(transform = matrix(), time = 2 SECONDS / speed_divider)
-/obj/item/organ/internal/legion_tumour/Remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/legion_tumour/Remove(mob/living/carbon/egg_owner, special, movement_flags)
. = ..()
stage = 0
elapsed_time = 0
-/obj/item/organ/internal/legion_tumour/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/legion_tumour/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
owner.log_message("has received [src] which will eventually turn them into a Legion.", LOG_VICTIM)
-/obj/item/organ/internal/legion_tumour/attack(mob/living/target, mob/living/user, params)
+/obj/item/organ/legion_tumour/attack(mob/living/target, mob/living/user, params)
if (try_apply(target, user))
qdel(src)
return
return ..()
/// Smear it on someone like a regen core, why not. Make sure they're alive though.
-/obj/item/organ/internal/legion_tumour/proc/try_apply(mob/living/target, mob/user)
+/obj/item/organ/legion_tumour/proc/try_apply(mob/living/target, mob/user)
if(!user.Adjacent(target) || !isliving(target))
return FALSE
@@ -90,7 +90,7 @@
skull.melee_attack(target)
return TRUE
-/obj/item/organ/internal/legion_tumour/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/legion_tumour/on_life(seconds_per_tick, times_fired)
. = ..()
if (QDELETED(src) || QDELETED(owner))
return
@@ -146,7 +146,7 @@
to_chat(owner, span_bolddanger("Something is moving under your skin!"))
/// Consume our host
-/obj/item/organ/internal/legion_tumour/proc/infest()
+/obj/item/organ/legion_tumour/proc/infest()
if (QDELETED(src) || QDELETED(owner))
return
owner.log_message("has been turned into a Legion by their tumour.", LOG_VICTIM)
@@ -155,7 +155,7 @@
new_legion.consume(owner)
qdel(src)
-/obj/item/organ/internal/legion_tumour/on_find(mob/living/finder)
+/obj/item/organ/legion_tumour/on_find(mob/living/finder)
. = ..()
to_chat(finder, span_warning("There's an enormous tumour in [owner]'s [zone]!"))
if(stage < 4)
diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
index d7f5a024ace..d8288360bd1 100644
--- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
+++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
@@ -22,7 +22,7 @@
butcher_results = list(
/obj/item/food/meat/slab/rawcrab = 2,
/obj/item/stack/sheet/bone = 2,
- /obj/item/organ/internal/monster_core/rush_gland = 1,
+ /obj/item/organ/monster_core/rush_gland = 1,
)
crusher_loot = /obj/item/crusher_trophy/lobster_claw
ai_controller = /datum/ai_controller/basic_controller/lobstrosity
@@ -146,7 +146,7 @@
butcher_results = list(
/obj/item/food/meat/slab/rawcrab = 1,
/obj/item/stack/sheet/bone = 1,
- /obj/item/organ/internal/monster_core/rush_gland = 1,
+ /obj/item/organ/monster_core/rush_gland = 1,
)
crusher_loot = null
ai_controller = /datum/ai_controller/basic_controller/lobstrosity/juvenile
diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm
index 3c2ab3f7c9f..3075aa6bcb7 100644
--- a/code/modules/mob/living/basic/pets/cat/cat.dm
+++ b/code/modules/mob/living/basic/pets/cat/cat.dm
@@ -12,8 +12,8 @@
unsuitable_atmos_damage = 0.5
butcher_results = list(
/obj/item/food/meat/slab = 1,
- /obj/item/organ/internal/ears/cat = 1,
- /obj/item/organ/external/tail/cat = 1,
+ /obj/item/organ/ears/cat = 1,
+ /obj/item/organ/tail/cat = 1,
/obj/item/stack/sheet/animalhide/cat = 1
)
response_help_continuous = "pets"
@@ -181,8 +181,8 @@
can_interact_with_stove = TRUE
butcher_results = list(
/obj/item/food/meat/slab = 2,
- /obj/item/organ/internal/ears/cat = 1,
- /obj/item/organ/external/tail/cat = 1,
+ /obj/item/organ/ears/cat = 1,
+ /obj/item/organ/tail/cat = 1,
/obj/item/food/breadslice/plain = 1
)
collar_icon_state = null
diff --git a/code/modules/mob/living/basic/pets/cat/keeki.dm b/code/modules/mob/living/basic/pets/cat/keeki.dm
index 4c18d22b02a..7314f9b4906 100644
--- a/code/modules/mob/living/basic/pets/cat/keeki.dm
+++ b/code/modules/mob/living/basic/pets/cat/keeki.dm
@@ -8,8 +8,8 @@
maxHealth = 50
gender = FEMALE
butcher_results = list(
- /obj/item/organ/internal/brain = 1,
- /obj/item/organ/internal/heart = 1,
+ /obj/item/organ/brain = 1,
+ /obj/item/organ/heart = 1,
/obj/item/food/cakeslice/birthday = 3,
/obj/item/food/meat/slab = 2
)
@@ -40,7 +40,7 @@
/mob/living/basic/pet/cat/cak/CheckParts(list/parts)
. = ..()
- var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents
+ var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents
if(isnull(candidate?.brainmob?.mind))
return
var/datum/mind/candidate_mind = candidate.brainmob.mind
diff --git a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm
index 9ac8e10d8f4..c5fac5f966e 100644
--- a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm
+++ b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm
@@ -91,7 +91,7 @@
maxHealth = 50
gender = NEUTER
damage_coeff = list(BRUTE = 3, BURN = 3, TOX = 1, STAMINA = 0, OXY = 1)
- butcher_results = list(/obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1, /obj/item/food/breadslice/plain = 3, \
+ butcher_results = list(/obj/item/organ/brain = 1, /obj/item/organ/heart = 1, /obj/item/food/breadslice/plain = 3, \
/obj/item/food/meat/slab = 2)
response_harm_continuous = "takes a bite out of"
response_harm_simple = "take a bite out of"
@@ -101,7 +101,7 @@
/mob/living/basic/pet/dog/breaddog/CheckParts(list/parts)
. = ..()
- var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents
+ var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents
if(!candidate || !candidate.brainmob || !candidate.brainmob.mind)
return
candidate.brainmob.mind.transfer_to(src)
diff --git a/code/modules/mob/living/basic/pets/penguin/penguin.dm b/code/modules/mob/living/basic/pets/penguin/penguin.dm
index 7f7280d5b14..0df0dfedcb2 100644
--- a/code/modules/mob/living/basic/pets/penguin/penguin.dm
+++ b/code/modules/mob/living/basic/pets/penguin/penguin.dm
@@ -133,7 +133,7 @@
density = FALSE
pass_flags = PASSMOB
mob_size = MOB_SIZE_SMALL
- butcher_results = list(/obj/item/organ/internal/ears/penguin = 1, /obj/item/food/meat/slab/penguin = 1)
+ butcher_results = list(/obj/item/organ/ears/penguin = 1, /obj/item/food/meat/slab/penguin = 1)
ai_controller = /datum/ai_controller/basic_controller/penguin/baby
can_lay_eggs = FALSE
///will it grow up?
diff --git a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
index 7a28473f1fa..e6d77586e4b 100644
--- a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
+++ b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
@@ -132,7 +132,7 @@
response_harm_simple = "take a bite out of"
attacked_sound = 'sound/items/eatfood.ogg'
death_message = "loses its false life and collapses!"
- butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1)
+ butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/brain = 1, /obj/item/organ/heart = 1)
attack_sound = 'sound/items/weapons/slap.ogg'
attack_vis_effect = ATTACK_EFFECT_DISARM
attack_verb_simple = "slap"
@@ -160,7 +160,7 @@
/mob/living/basic/bear/butter/CheckParts(list/parts) //Borrowed code from Cak, allows the brain used to actually control the bear.
. = ..()
- var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents
+ var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents
if(!candidate || !candidate.brainmob || !candidate.brainmob.mind)
return
var/datum/mind/candidate_mind = candidate.brainmob.mind
diff --git a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
index 246b025d559..926ce374faf 100644
--- a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
+++ b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
@@ -51,7 +51,7 @@
return
var/mob/living/carbon/human/attacked = target
- var/obj/item/organ/external/tail/cat/tail = attacked.get_organ_by_type(/obj/item/organ/external/tail/cat)
+ var/obj/item/organ/tail/cat/tail = attacked.get_organ_by_type(/obj/item/organ/tail/cat)
if(QDELETED(tail))
return
diff --git a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
index d7aa8903398..f2585aecd62 100644
--- a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
+++ b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
@@ -74,7 +74,7 @@
/// Simply infects the target corpse with our changeling eggs. This shouldn't fail, because all checks should have been done in check_and_implant()
/// Just to be super-duper safe to the player, we do return TRUE if all goes well and read that value in check_and_implant() to be nice to the player.
/mob/living/basic/headslug/proc/infect(mob/living/carbon/victim)
- var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim)
+ var/obj/item/organ/body_egg/changeling_egg/egg = new(victim)
egg.origin = mind
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
index 811186d43ad..fdc92d06f66 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
@@ -1,16 +1,16 @@
/// The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl
-/obj/item/organ/internal/heart/demon
+/obj/item/organ/heart/demon
name = "demon heart"
desc = "Still it beats furiously, emanating an aura of utter hate."
icon = 'icons/obj/medical/organs/organs.dmi'
icon_state = "demon_heart-on"
decay_factor = 0
-/obj/item/organ/internal/heart/demon/Initialize(mapload)
+/obj/item/organ/heart/demon/Initialize(mapload)
AddElement(/datum/element/update_icon_blocker)
return ..()
-/obj/item/organ/internal/heart/demon/attack(mob/target_mob, mob/living/carbon/user, obj/target)
+/obj/item/organ/heart/demon/attack(mob/target_mob, mob/living/carbon/user, obj/target)
if(target_mob != user)
return ..()
@@ -33,18 +33,18 @@
user.temporarilyRemoveItemFromInventory(src, TRUE)
src.Insert(user) //Consuming the heart literally replaces your heart with a demon heart. H A R D C O R E
-/obj/item/organ/internal/heart/demon/on_mob_insert(mob/living/carbon/heart_owner)
+/obj/item/organ/heart/demon/on_mob_insert(mob/living/carbon/heart_owner)
. = ..()
// Gives a non-eat-people crawl to the new owner
var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = new(heart_owner)
crawl.Grant(heart_owner)
-/obj/item/organ/internal/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
+/obj/item/organ/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
. = ..()
var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = locate() in heart_owner.actions
qdel(crawl)
-/obj/item/organ/internal/heart/demon/Stop()
+/obj/item/organ/heart/demon/Stop()
return FALSE // Always beating.
/obj/effect/decal/cleanable/blood/innards
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm
index a8073fa8329..add0ba237f8 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm
@@ -45,7 +45,7 @@
var/static/list/droppable_loot = list(
/obj/effect/decal/cleanable/blood,
/obj/effect/decal/cleanable/blood/innards,
- /obj/item/organ/internal/heart/demon,
+ /obj/item/organ/heart/demon,
)
return droppable_loot
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
index e735067b3ed..9c56ec044c7 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
@@ -100,13 +100,13 @@
if(!ishuman(target))
return TRUE
var/mob/living/carbon/human_target = target
- var/obj/item/organ/internal/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
if(isnull(eyes) || eyes.damage < 10)
return TRUE
heal_eye_damage(human_target, eyes)
return FALSE
-/mob/living/basic/eyeball/proc/heal_eye_damage(mob/living/target, obj/item/organ/internal/eyes/eyes)
+/mob/living/basic/eyeball/proc/heal_eye_damage(mob/living/target, obj/item/organ/eyes/eyes)
if(!COOLDOWN_FINISHED(src, eye_healing))
return
to_chat(target, span_warning("[src] seems to be healing your [eyes.zone]!"))
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm
index 5051f815371..27f637d3a87 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm
@@ -7,7 +7,7 @@
if(!eye_damage_threshold)
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
for(var/mob/living/carbon/blind in oview(9, living_pawn))
- var/obj/item/organ/internal/eyes/eyes = blind.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = blind.get_organ_slot(ORGAN_SLOT_EYES)
if(isnull(eyes))
continue
if(eyes.damage < eye_damage_threshold)
@@ -36,7 +36,7 @@
if(QDELETED(target))
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
- var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
var/datum/callback/callback = CALLBACK(living_pawn, TYPE_PROC_REF(/mob/living/basic/eyeball, heal_eye_damage), target, eyes)
callback.Invoke()
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm
index 17b260d03ed..f71594ea0ec 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm
@@ -34,7 +34,7 @@
var/eye_damage_threshold = owner.ai_controller.blackboard[BB_EYE_DAMAGE_THRESHOLD]
if(!eye_damage_threshold)
return TRUE
- var/obj/item/organ/internal/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes.damage > eye_damage_threshold) //we dont attack people with bad vision
return FALSE
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 9953172dff5..dbfb2a79157 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -10,7 +10,7 @@
var/mob/living/brain/brainmob = null //The current occupant.
var/mob/living/silicon/robot = null //Appears unused.
var/obj/vehicle/sealed/mecha = null //This does not appear to be used outside of reference in mecha.dm.
- var/obj/item/organ/internal/brain/brain = null //The actual brain
+ var/obj/item/organ/brain/brain = null //The actual brain
var/datum/ai_laws/laws = new()
var/force_replace_ai_name = FALSE
var/overrides_aicore_laws = FALSE // Whether the laws on the MMI, if any, override possible pre-existing laws loaded on the AI core.
@@ -35,7 +35,7 @@
if(!brain)
icon_state = "[base_icon_state]_off"
return ..()
- icon_state = "[base_icon_state]_brain[istype(brain, /obj/item/organ/internal/brain/alien) ? "_alien" : null]"
+ icon_state = "[base_icon_state]_brain[istype(brain, /obj/item/organ/brain/alien) ? "_alien" : null]"
return ..()
/obj/item/mmi/update_overlays()
@@ -51,8 +51,8 @@
/obj/item/mmi/attackby(obj/item/O, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
- if(istype(O, /obj/item/organ/internal/brain)) //Time to stick a brain in it --NEO
- var/obj/item/organ/internal/brain/newbrain = O
+ if(istype(O, /obj/item/organ/brain)) //Time to stick a brain in it --NEO
+ var/obj/item/organ/brain/newbrain = O
if(brain)
to_chat(user, span_warning("There's already a brain in the MMI!"))
return
@@ -99,7 +99,7 @@
name = "[initial(name)]: [brainmob.real_name]"
update_appearance()
- if(istype(brain, /obj/item/organ/internal/brain/alien))
+ if(istype(brain, /obj/item/organ/brain/alien))
braintype = "Xenoborg" //HISS....Beep.
else
braintype = "Cyborg"
@@ -121,7 +121,7 @@
* Arguments:
* * new_brain - Brain to be force-inserted into the MMI. Any calling code should handle proper removal of the brain from the mob, as this proc only forceMoves.
*/
-/obj/item/mmi/proc/force_brain_into(obj/item/organ/internal/brain/new_brain)
+/obj/item/mmi/proc/force_brain_into(obj/item/organ/brain/new_brain)
if(isnull(new_brain))
stack_trace("Proc called with null brain.")
return FALSE
@@ -160,7 +160,7 @@
name = "[initial(name)]: [brainmob.real_name]"
update_appearance()
- if(istype(brain, /obj/item/organ/internal/brain/alien))
+ if(istype(brain, /obj/item/organ/brain/alien))
braintype = "Xenoborg"
else
braintype = "Cyborg"
@@ -209,7 +209,7 @@
if(ishuman(L))
var/mob/living/carbon/human/H = L
- var/obj/item/organ/internal/brain/newbrain = H.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/newbrain = H.get_organ_by_type(/obj/item/organ/brain)
newbrain.Remove(H, special = TRUE, movement_flags = NO_ID_TRANSFER)
newbrain.forceMove(src)
brain = newbrain
@@ -220,7 +220,7 @@
name = "[initial(name)]: [brainmob.real_name]"
update_appearance()
- if(istype(brain, /obj/item/organ/internal/brain/alien))
+ if(istype(brain, /obj/item/organ/brain/alien))
braintype = "Xenoborg" //HISS....Beep.
else
braintype = "Cyborg"
diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm
index 17f5be02a91..ccce0269e54 100644
--- a/code/modules/mob/living/brain/brain.dm
+++ b/code/modules/mob/living/brain/brain.dm
@@ -11,7 +11,7 @@
create_dna(src)
stored_dna.initialize_dna(random_blood_type())
if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned)
- var/obj/item/organ/internal/brain/OB = new(loc) //we create a new brain organ for it.
+ var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it.
OB.brainmob = src
forceMove(OB)
if(!container?.mecha && (!container || container.immobilize)) //Unless inside a mecha, brains are rather helpless.
@@ -19,7 +19,7 @@
ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT)
/mob/living/brain/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents)
- var/obj/item/organ/internal/brain/brain_loc = loc
+ var/obj/item/organ/brain/brain_loc = loc
if(brain_loc && isnull(new_turf) && brain_loc.owner) //we're actively being put inside a new body.
return ..(old_turf, get_turf(brain_loc.owner), same_z_layer, notify_contents)
return ..()
@@ -79,10 +79,10 @@
/mob/living/brain/forceMove(atom/destination)
if(container)
return container.forceMove(destination)
- else if (istype(loc, /obj/item/organ/internal/brain))
- var/obj/item/organ/internal/brain/B = loc
+ else if (istype(loc, /obj/item/organ/brain))
+ var/obj/item/organ/brain/B = loc
B.forceMove(destination)
- else if (istype(destination, /obj/item/organ/internal/brain))
+ else if (istype(destination, /obj/item/organ/brain))
doMove(destination)
else if (istype(destination, /obj/item/mmi))
doMove(destination)
@@ -102,8 +102,8 @@
/mob/living/brain/proc/get_traumas()
. = list()
- if(istype(loc, /obj/item/organ/internal/brain))
- var/obj/item/organ/internal/brain/B = loc
+ if(istype(loc, /obj/item/organ/brain))
+ var/obj/item/organ/brain/B = loc
. = B.traumas
/mob/living/brain/get_policy_keywords()
diff --git a/code/modules/mob/living/brain/brain_cybernetic.dm b/code/modules/mob/living/brain/brain_cybernetic.dm
index d87b6d90283..c88db6dc1a1 100644
--- a/code/modules/mob/living/brain/brain_cybernetic.dm
+++ b/code/modules/mob/living/brain/brain_cybernetic.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/internal/brain/cybernetic
+/obj/item/organ/brain/cybernetic
name = "cybernetic brain"
desc = "A mechanical brain found inside of androids. Not to be confused with a positronic brain."
icon_state = "brain-c"
organ_flags = ORGAN_ROBOTIC | ORGAN_VITAL
failing_desc = "seems to be broken, and will not work without repairs."
-/obj/item/organ/internal/brain/cybernetic/brain_damage_examine()
+/obj/item/organ/brain/cybernetic/brain_damage_examine()
if(suicided)
return span_info("Its circuitry is smoking slightly. They must not have been able to handle the stress of it all.")
if(brainmob && (decoy_override || brainmob.client || brainmob.get_ghost()))
@@ -18,7 +18,7 @@
else
return span_info("This one is completely devoid of life.")
-/obj/item/organ/internal/brain/cybernetic/check_for_repair(obj/item/item, mob/user)
+/obj/item/organ/brain/cybernetic/check_for_repair(obj/item/item, mob/user)
if (item.tool_behaviour == TOOL_MULTITOOL) //attempt to repair the brain
if (brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing
to_chat(user, span_warning("[src] is far too damaged, there's nothing else we can do for it!"))
@@ -48,7 +48,7 @@
return TRUE
return FALSE
-/obj/item/organ/internal/brain/cybernetic/emp_act(severity)
+/obj/item/organ/brain/cybernetic/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index ced02095e41..44f8b14443d 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain
+/obj/item/organ/brain
name = "brain"
desc = "A piece of juicy meat found in a person's head."
icon_state = "brain"
@@ -45,21 +45,12 @@
/// We got smooth from being washed
var/smooth_brain = FALSE
-/obj/item/organ/internal/brain/Initialize(mapload)
+/obj/item/organ/brain/Initialize(mapload)
. = ..()
// Brain size logic
transform = transform.Scale(brain_size)
-/obj/item/organ/internal/brain/examine()
- . = ..()
- if (smooth_brain)
- . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...")
- if(brain_size < 1)
- . += span_notice("It is a bit on the smaller side...")
- if(brain_size > 1)
- . += span_notice("It is bigger than average...")
-
-/obj/item/organ/internal/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags)
+/obj/item/organ/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags)
. = ..()
if(!.)
return
@@ -114,7 +105,7 @@
//Update the body's icon so it doesnt appear debrained anymore
brain_owner.update_body_parts()
-/obj/item/organ/internal/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
// Delete skillchips first as parent proc sets owner to null, and skillchips need to know the brain's owner.
if(!QDELETED(organ_owner) && length(skillchips))
if(!special)
@@ -137,11 +128,11 @@
organ_owner.update_body_parts()
organ_owner.clear_mood_event("brain_damage")
-/obj/item/organ/internal/brain/update_icon_state()
- icon_state = "[initial(icon_state)][smooth_brain ? "-smooth_brain" : ""]"
+/obj/item/organ/brain/update_icon_state()
+ icon_state = "[initial(icon_state)][smooth_brain ? "-smooth" : ""]"
return ..()
-/obj/item/organ/internal/brain/proc/transfer_identity(mob/living/L)
+/obj/item/organ/brain/proc/transfer_identity(mob/living/L)
name = "[L.name]'s [initial(name)]"
if(brainmob)
if(!decoy_override)
@@ -173,7 +164,7 @@
L.mind.transfer_to(brainmob)
to_chat(brainmob, span_notice("You feel slightly disoriented. That's normal when you're just a brain."))
-/obj/item/organ/internal/brain/attackby(obj/item/item, mob/user, params)
+/obj/item/organ/brain/attackby(obj/item/item, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
if(istype(item, /obj/item/borg/apparatus/organ_storage))
@@ -215,7 +206,7 @@
visible_message(span_danger("[user] hits [src] with [item]!"))
to_chat(user, span_danger("You hit [src] with [item]!"))
-/obj/item/organ/internal/brain/proc/check_for_repair(obj/item/item, mob/user)
+/obj/item/organ/brain/proc/check_for_repair(obj/item/item, mob/user)
if(damage && item.is_drainable() && item.reagents.has_reagent(/datum/reagent/medicine/mannitol) && (organ_flags & ORGAN_ORGANIC)) //attempt to heal the brain
if(brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing
to_chat(user, span_warning("[src] is far too damaged, there's nothing else we can do for it!"))
@@ -234,18 +225,20 @@
return TRUE
return FALSE
-/obj/item/organ/internal/brain/examine(mob/user)
+/obj/item/organ/brain/examine(mob/user)
. = ..()
if(length(skillchips))
. += span_info("It has a skillchip embedded in it.")
. += brain_damage_examine()
+ if (smooth_brain)
+ . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...")
if(brain_size < 1)
. += span_notice("It is a bit on the smaller side...")
if(brain_size > 1)
. += span_notice("It is bigger than average...")
/// Needed so subtypes can override examine text while still calling parent
-/obj/item/organ/internal/brain/proc/brain_damage_examine()
+/obj/item/organ/brain/proc/brain_damage_examine()
if(suicided)
return span_info("It's started turning slightly grey. They must not have been able to handle the stress of it all.")
if(brainmob && (decoy_override || brainmob.client || brainmob.get_ghost()))
@@ -258,7 +251,7 @@
else
return span_info("This one is completely devoid of life.")
-/obj/item/organ/internal/brain/get_status_appendix(advanced, add_tooltips)
+/obj/item/organ/brain/get_status_appendix(advanced, add_tooltips)
var/list/trauma_text
for(var/datum/brain_trauma/trauma as anything in traumas)
var/trauma_desc = ""
@@ -278,7 +271,7 @@
if(LAZYLEN(trauma_text))
return "Mental trauma: [english_list(trauma_text, and_text = ", and ")]."
-/obj/item/organ/internal/brain/attack(mob/living/carbon/C, mob/user)
+/obj/item/organ/brain/attack(mob/living/carbon/C, mob/user)
if(!istype(C))
return ..()
@@ -287,7 +280,7 @@
if(user.zone_selected != BODY_ZONE_HEAD)
return ..()
- var/target_has_brain = C.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/target_has_brain = C.get_organ_by_type(/obj/item/organ/brain)
if(!target_has_brain && C.is_eyes_covered())
to_chat(user, span_warning("You're going to need to remove [C.p_their()] head cover first!"))
@@ -315,7 +308,7 @@
else
..()
-/obj/item/organ/internal/brain/Destroy() //copypasted from MMIs.
+/obj/item/organ/brain/Destroy() //copypasted from MMIs.
QDEL_NULL(brainmob)
QDEL_LIST(traumas)
@@ -323,13 +316,13 @@
owner?.mind?.set_current(null) //You aren't allowed to return to brains that don't exist
return ..()
-/obj/item/organ/internal/brain/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/brain/on_life(seconds_per_tick, times_fired)
if(damage >= BRAIN_DAMAGE_DEATH) //rip
to_chat(owner, span_userdanger("The last spark of life in your brain fizzles out..."))
owner.investigate_log("has been killed by brain damage.", INVESTIGATE_DEATHS)
owner.death()
-/obj/item/organ/internal/brain/check_damage_thresholds(mob/M)
+/obj/item/organ/brain/check_damage_thresholds(mob/M)
. = ..()
//if we're not more injured than before, return without gambling for a trauma
if(damage <= prev_damage)
@@ -362,9 +355,9 @@
else
return brain_message
-/obj/item/organ/internal/brain/before_organ_replacement(obj/item/organ/replacement)
+/obj/item/organ/brain/before_organ_replacement(obj/item/organ/replacement)
. = ..()
- var/obj/item/organ/internal/brain/replacement_brain = replacement
+ var/obj/item/organ/brain/replacement_brain = replacement
if(!istype(replacement_brain))
return
@@ -401,7 +394,7 @@
remove_trauma_from_traumas(trauma)
replacement_brain.add_trauma_to_traumas(trauma)
-/obj/item/organ/internal/brain/machine_wash(obj/machinery/washing_machine/brainwasher)
+/obj/item/organ/brain/machine_wash(obj/machinery/washing_machine/brainwasher)
. = ..()
if (can_smoothen_out && !smooth_brain)
smooth_brain = TRUE
@@ -413,19 +406,19 @@
else
set_organ_damage(BRAIN_DAMAGE_DEATH)
-/obj/item/organ/internal/brain/zombie
+/obj/item/organ/brain/zombie
name = "zombie brain"
desc = "This glob of green mass can't have much intelligence inside it."
icon_state = "brain-x"
organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE)
-/obj/item/organ/internal/brain/alien
+/obj/item/organ/brain/alien
name = "alien brain"
desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?"
icon_state = "brain-x"
organ_traits = list(TRAIT_CAN_STRIP)
-/obj/item/organ/internal/brain/primitive //No like books and stompy metal men
+/obj/item/organ/brain/primitive //No like books and stompy metal men
name = "primitive brain"
desc = "This juicy piece of meat has a clearly underdeveloped frontal lobe."
organ_traits = list(
@@ -438,7 +431,7 @@
TRAIT_BEAST_EMPATHY, // know the way of beast, calm with food
)
-/obj/item/organ/internal/brain/golem
+/obj/item/organ/brain/golem
name = "crystalline matrix"
desc = "This collection of sparkling gems somehow allows a golem to think."
icon_state = "adamantine_resonator"
@@ -447,32 +440,32 @@
organ_flags = ORGAN_MINERAL
organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP, TRAIT_ROCK_METAMORPHIC)
-/obj/item/organ/internal/brain/lustrous
+/obj/item/organ/brain/lustrous
name = "lustrous brain"
desc = "This is your brain on bluespace dust. Not even once."
icon_state = "random_fly_4"
can_smoothen_out = FALSE
organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP)
-/obj/item/organ/internal/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
organ_owner.cure_trauma_type(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE)
organ_owner.RemoveElement(/datum/element/tenacious)
-/obj/item/organ/internal/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
organ_owner.gain_trauma(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE)
organ_owner.AddElement(/datum/element/tenacious)
-/obj/item/organ/internal/brain/felinid //A bit smaller than average
+/obj/item/organ/brain/felinid //A bit smaller than average
brain_size = 0.8
-/obj/item/organ/internal/brain/lizard //A bit smaller than average
+/obj/item/organ/brain/lizard //A bit smaller than average
name = "lizard brain"
desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect it's owner to be pretty cold blooded."
organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER)
-/obj/item/organ/internal/brain/abductor
+/obj/item/organ/brain/abductor
name = "grey brain"
desc = "A piece of juicy meat found in an ayy lmao's head."
icon_state = "brain-x"
@@ -481,20 +474,20 @@
////////////////////////////////////TRAUMAS////////////////////////////////////////
-/obj/item/organ/internal/brain/proc/has_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
+/obj/item/organ/brain/proc/has_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
for(var/X in traumas)
var/datum/brain_trauma/BT = X
if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience))
return BT
-/obj/item/organ/internal/brain/proc/get_traumas_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
+/obj/item/organ/brain/proc/get_traumas_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
. = list()
for(var/X in traumas)
var/datum/brain_trauma/BT = X
if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience))
. += BT
-/obj/item/organ/internal/brain/proc/can_gain_trauma(datum/brain_trauma/trauma, resilience, natural_gain = FALSE)
+/obj/item/organ/brain/proc/can_gain_trauma(datum/brain_trauma/trauma, resilience, natural_gain = FALSE)
if(!ispath(trauma))
trauma = trauma.type
if(!initial(trauma.can_gain))
@@ -530,19 +523,19 @@
return TRUE
//Proc to use when directly adding a trauma to the brain, so extra args can be given
-/obj/item/organ/internal/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...)
+/obj/item/organ/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...)
var/list/arguments = list()
if(args.len > 2)
arguments = args.Copy(3)
. = brain_gain_trauma(trauma, resilience, arguments)
-/obj/item/organ/internal/brain/vv_edit_var(var_name, var_value)
+/obj/item/organ/brain/vv_edit_var(var_name, var_value)
. = ..()
if(var_name == NAMEOF(src, smooth_brain))
update_appearance()
//Direct trauma gaining proc. Necessary to assign a trauma to its brain. Avoid using directly.
-/obj/item/organ/internal/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments)
+/obj/item/organ/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments)
if(!can_gain_trauma(trauma, resilience))
return FALSE
@@ -572,18 +565,18 @@
/// Adds the passed trauma instance to our list of traumas and links it to our brain.
/// DOES NOT handle setting up the trauma, that's done by [proc/brain_gain_trauma]!
-/obj/item/organ/internal/brain/proc/add_trauma_to_traumas(datum/brain_trauma/trauma)
+/obj/item/organ/brain/proc/add_trauma_to_traumas(datum/brain_trauma/trauma)
trauma.brain = src
traumas += trauma
/// Removes the passed trauma instance to our list of traumas and links it to our brain
/// DOES NOT handle removing the trauma's effects, that's done by [/datum/brain_trauma/Destroy()]!
-/obj/item/organ/internal/brain/proc/remove_trauma_from_traumas(datum/brain_trauma/trauma)
+/obj/item/organ/brain/proc/remove_trauma_from_traumas(datum/brain_trauma/trauma)
trauma.brain = null
traumas -= trauma
//Add a random trauma of a certain subtype
-/obj/item/organ/internal/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience, natural_gain = FALSE)
+/obj/item/organ/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience, natural_gain = FALSE)
var/list/datum/brain_trauma/possible_traumas = list()
for(var/T in subtypesof(brain_trauma_type))
var/datum/brain_trauma/BT = T
@@ -597,12 +590,12 @@
return gain_trauma(trauma_type, resilience)
//Cure a random trauma of a certain resilience level
-/obj/item/organ/internal/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC)
+/obj/item/organ/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC)
var/list/traumas = get_traumas_type(brain_trauma_type, resilience)
if(LAZYLEN(traumas))
qdel(pick(traumas))
-/obj/item/organ/internal/brain/proc/cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC)
+/obj/item/organ/brain/proc/cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC)
var/amount_cured = 0
var/list/traumas = get_traumas_type(resilience = resilience)
for(var/X in traumas)
@@ -610,7 +603,7 @@
amount_cured++
return amount_cured
-/obj/item/organ/internal/brain/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag = NONE)
+/obj/item/organ/brain/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag = NONE)
. = ..()
if(!owner)
return FALSE
@@ -620,7 +613,7 @@
owner.clear_mood_event("brain_damage")
/// This proc lets the mob's brain decide what bodypart to attack with in an unarmed strike.
-/obj/item/organ/internal/brain/proc/get_attacking_limb(mob/living/carbon/human/target)
+/obj/item/organ/brain/proc/get_attacking_limb(mob/living/carbon/human/target)
var/obj/item/bodypart/arm/active_hand = owner.get_active_hand()
if(target.body_position == LYING_DOWN && owner.usable_legs)
var/obj/item/bodypart/found_bodypart = owner.get_bodypart((active_hand.held_index % 2) ? BODY_ZONE_L_LEG : BODY_ZONE_R_LEG)
@@ -628,8 +621,8 @@
return active_hand
/// Brains REALLY like ghosting people. we need special tricks to avoid that, namely removing the old brain with no_id_transfer
-/obj/item/organ/internal/brain/replace_into(mob/living/carbon/new_owner)
- var/obj/item/organ/internal/brain/old_brain = new_owner.get_organ_slot(ORGAN_SLOT_BRAIN)
+/obj/item/organ/brain/replace_into(mob/living/carbon/new_owner)
+ var/obj/item/organ/brain/old_brain = new_owner.get_organ_slot(ORGAN_SLOT_BRAIN)
old_brain.Remove(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER)
qdel(old_brain)
return Insert(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER | DELETE_IF_REPLACED)
diff --git a/code/modules/mob/living/brain/death.dm b/code/modules/mob/living/brain/death.dm
index 60487aa0c35..8166e9f8446 100644
--- a/code/modules/mob/living/brain/death.dm
+++ b/code/modules/mob/living/brain/death.dm
@@ -15,6 +15,6 @@
if(container)
qdel(container)//Gets rid of the MMI if there is one
if(loc)
- if(istype(loc, /obj/item/organ/internal/brain))
+ if(istype(loc, /obj/item/organ/brain))
qdel(loc)//Gets rid of the brain item
..()
diff --git a/code/modules/mob/living/brain/life.dm b/code/modules/mob/living/brain/life.dm
index 7ffe49951ec..5b016db7fba 100644
--- a/code/modules/mob/living/brain/life.dm
+++ b/code/modules/mob/living/brain/life.dm
@@ -20,10 +20,10 @@
return
if(stat != DEAD)
death()
- var/obj/item/organ/internal/brain/BR
+ var/obj/item/organ/brain/BR
if(container?.brain)
BR = container.brain
- else if(istype(loc, /obj/item/organ/internal/brain))
+ else if(istype(loc, /obj/item/organ/brain))
BR = loc
if(BR)
BR.set_organ_damage(BRAIN_DAMAGE_DEATH) //beaten to a pulp
diff --git a/code/modules/mob/living/brain/skillchip.dm b/code/modules/mob/living/brain/skillchip.dm
index 2c066c7e735..4bab004c685 100644
--- a/code/modules/mob/living/brain/skillchip.dm
+++ b/code/modules/mob/living/brain/skillchip.dm
@@ -6,7 +6,7 @@
* Arguments:
* * skillchip - The skillchip you'd like to remove.
*/
-/obj/item/organ/internal/brain/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE)
+/obj/item/organ/brain/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE)
// Check this skillchip is in the brain.
if(!(skillchip in skillchips))
stack_trace("Attempted to remove skillchip [skillchip] that wasn't in [src] skillchip list.")
@@ -27,7 +27,7 @@
* * skillchip - The skillchip you'd like to implant.
* * force - Whether or not to force the skillchip to be implanted, ignoring any checks.
*/
-/obj/item/organ/internal/brain/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE)
+/obj/item/organ/brain/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE)
// If we're not forcing the implant, so let's do some checks.
if(!force)
// Slot capacity check!
@@ -50,7 +50,7 @@
* Arguments:
* * not_removable - Special override, whether or not to force cloned chips to be non-removable, i.e. to delete on removal.
*/
-/obj/item/organ/internal/brain/proc/clone_skillchip_list(not_removable = FALSE)
+/obj/item/organ/brain/proc/clone_skillchip_list(not_removable = FALSE)
var/list/skillchip_metadata = list()
// Remove and call on_removal proc if successful.
for(var/chip in skillchips)
@@ -76,7 +76,7 @@
* Arguments:
* * silent - Whether to give the user a chat notification with the removal flavour text.
*/
-/obj/item/organ/internal/brain/proc/destroy_all_skillchips(silent = TRUE)
+/obj/item/organ/brain/proc/destroy_all_skillchips(silent = TRUE)
if(!QDELETED(owner))
for(var/chip in skillchips)
var/obj/item/skillchip/skillchip = chip
@@ -86,7 +86,7 @@
/**
* Returns the total maximum skillchip complexity supported by this brain.
*/
-/obj/item/organ/internal/brain/proc/get_max_skillchip_complexity()
+/obj/item/organ/brain/proc/get_max_skillchip_complexity()
if(!QDELETED(owner))
return max_skillchip_complexity + owner.skillchip_complexity_modifier
@@ -95,7 +95,7 @@
/**
* Returns the total current skillchip complexity used in this brain.
*/
-/obj/item/organ/internal/brain/proc/get_used_skillchip_complexity()
+/obj/item/organ/brain/proc/get_used_skillchip_complexity()
var/complexity_tally = 0
for(var/chip in skillchips)
@@ -111,13 +111,13 @@
/**
* Returns the total maximum skillchip slot capacity supported by this brain.
*/
-/obj/item/organ/internal/brain/proc/get_max_skillchip_slots()
+/obj/item/organ/brain/proc/get_max_skillchip_slots()
return max_skillchip_slots
/**
* Returns the total current skillchip slot capacity used in this brain.
*/
-/obj/item/organ/internal/brain/proc/get_used_skillchip_slots()
+/obj/item/organ/brain/proc/get_used_skillchip_slots()
var/slot_tally = 0
for(var/chip in skillchips)
@@ -130,7 +130,7 @@
/**
* Deactivates all chips currently in the brain.
*/
-/obj/item/organ/internal/brain/proc/activate_skillchip_failsafe(silent = TRUE)
+/obj/item/organ/brain/proc/activate_skillchip_failsafe(silent = TRUE)
if(QDELETED(owner))
return
@@ -154,7 +154,7 @@
to_chat(owner, span_warning("Unusual brain biology detected during regeneration. Failsafe procedure engaged. [chip_tally] skillchips have been deactivated."))
/// Disables or re-enables any extra skillchips after skillchip limit changes.
-/obj/item/organ/internal/brain/proc/update_skillchips()
+/obj/item/organ/brain/proc/update_skillchips()
var/limit = get_max_skillchip_complexity()
var/dt = limit - get_used_skillchip_complexity()
diff --git a/code/modules/mob/living/carbon/alien/adult/adult.dm b/code/modules/mob/living/carbon/alien/adult/adult.dm
index c53491e0ce7..d2c41e61a12 100644
--- a/code/modules/mob/living/carbon/alien/adult/adult.dm
+++ b/code/modules/mob/living/carbon/alien/adult/adult.dm
@@ -37,7 +37,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
AddElement(/datum/element/strippable, GLOB.strippable_alien_humanoid_items)
/mob/living/carbon/alien/adult/create_internal_organs()
- organs += new /obj/item/organ/internal/stomach/alien()
+ organs += new /obj/item/organ/stomach/alien()
return ..()
/mob/living/carbon/alien/adult/cuff_resist(obj/item/I)
@@ -127,7 +127,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
if(!can_consume(lucky_winner))
return TRUE
- var/obj/item/organ/internal/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(melting_pot))
visible_message(span_clown("[src] can't seem to consume [lucky_winner]!"), \
span_alien("You feel a pain in your... chest? You can't get [lucky_winner] down."))
diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
index 9e25a12f739..08bbf090aa1 100644
--- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
@@ -369,7 +369,7 @@ Doesn't work on other aliens/AI.*/
if(!iscarbon(owner))
return
var/mob/living/carbon/alien/adult/alieninated_owner = owner
- var/obj/item/organ/internal/stomach/alien/melting_pot = alieninated_owner.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/alien/melting_pot = alieninated_owner.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!melting_pot)
owner.visible_message(span_clown("[src] gags, and spits up a bit of purple liquid. Ewwww."), \
span_alien("You feel a pain in your... chest? There's nothing there there's nothing there no no n-"))
@@ -386,14 +386,14 @@ Doesn't work on other aliens/AI.*/
/// Gets the plasma level of this carbon's plasma vessel, or -1 if they don't have one
/mob/living/carbon/proc/getPlasma()
- var/obj/item/organ/internal/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)
+ var/obj/item/organ/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/alien/plasmavessel)
if(!vessel)
return -1
return vessel.stored_plasma
/// Adjusts the plasma level of the carbon's plasma vessel if they have one
/mob/living/carbon/proc/adjustPlasma(amount)
- var/obj/item/organ/internal/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)
+ var/obj/item/organ/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/alien/plasmavessel)
if(!vessel)
return FALSE
vessel.stored_plasma = max(vessel.stored_plasma + amount,0)
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/drone.dm b/code/modules/mob/living/carbon/alien/adult/caste/drone.dm
index ff208baabd2..c238f1013ab 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/drone.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/drone.dm
@@ -10,9 +10,9 @@
return ..()
/mob/living/carbon/alien/adult/drone/create_internal_organs()
- organs += new /obj/item/organ/internal/alien/plasmavessel/large
- organs += new /obj/item/organ/internal/alien/resinspinner
- organs += new /obj/item/organ/internal/alien/acid
+ organs += new /obj/item/organ/alien/plasmavessel/large
+ organs += new /obj/item/organ/alien/resinspinner
+ organs += new /obj/item/organ/alien/acid
return ..()
/datum/action/cooldown/alien/evolve_to_praetorian
@@ -33,7 +33,7 @@
return FALSE
var/mob/living/carbon/alien/adult/royal/evolver = owner
- var/obj/item/organ/internal/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+ var/obj/item/organ/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/alien/hivenode)
// Players are Murphy's Law. We may not expect
// there to ever be a living xeno with no hivenode,
// but they _WILL_ make it happen.
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm b/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm
index 51d9a3bce1b..3bfbe796164 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm
@@ -10,7 +10,7 @@
var/pounce_speed = 2
/mob/living/carbon/alien/adult/hunter/create_internal_organs()
- organs += new /obj/item/organ/internal/alien/plasmavessel/small
+ organs += new /obj/item/organ/alien/plasmavessel/small
..()
//Hunter verbs
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm
index 8fa142a38f0..473cdfafec2 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm
@@ -19,10 +19,10 @@
return ..()
/mob/living/carbon/alien/adult/royal/praetorian/create_internal_organs()
- organs += new /obj/item/organ/internal/alien/plasmavessel/large
- organs += new /obj/item/organ/internal/alien/resinspinner
- organs += new /obj/item/organ/internal/alien/acid
- organs += new /obj/item/organ/internal/alien/neurotoxin
+ organs += new /obj/item/organ/alien/plasmavessel/large
+ organs += new /obj/item/organ/alien/resinspinner
+ organs += new /obj/item/organ/alien/acid
+ organs += new /obj/item/organ/alien/neurotoxin
return ..()
/datum/action/cooldown/alien/evolve_to_queen
@@ -43,7 +43,7 @@
return FALSE
var/mob/living/carbon/alien/adult/royal/evolver = owner
- var/obj/item/organ/internal/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+ var/obj/item/organ/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/alien/hivenode)
if(!node || node.recent_queen_death)
return FALSE
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm
index bef621905f4..2560522c405 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm
@@ -11,7 +11,7 @@
return ..()
/mob/living/carbon/alien/adult/sentinel/create_internal_organs()
- organs += new /obj/item/organ/internal/alien/plasmavessel
- organs += new /obj/item/organ/internal/alien/acid
- organs += new /obj/item/organ/internal/alien/neurotoxin
+ organs += new /obj/item/organ/alien/plasmavessel
+ organs += new /obj/item/organ/alien/acid
+ organs += new /obj/item/organ/alien/neurotoxin
..()
diff --git a/code/modules/mob/living/carbon/alien/adult/death.dm b/code/modules/mob/living/carbon/alien/adult/death.dm
index ce99343ea2c..d71d466089c 100644
--- a/code/modules/mob/living/carbon/alien/adult/death.dm
+++ b/code/modules/mob/living/carbon/alien/adult/death.dm
@@ -15,7 +15,7 @@
for(var/mob/living/carbon/C in GLOB.alive_mob_list)
if(C == src) //Make sure not to proc it on ourselves.
continue
- var/obj/item/organ/internal/alien/hivenode/node = C.get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+ var/obj/item/organ/alien/hivenode/node = C.get_organ_by_type(/obj/item/organ/alien/hivenode)
if(istype(node)) // just in case someone would ever add a diffirent node to hivenode slot
node.queen_death()
diff --git a/code/modules/mob/living/carbon/alien/adult/queen.dm b/code/modules/mob/living/carbon/alien/adult/queen.dm
index a925b4c5460..8cbd5571977 100644
--- a/code/modules/mob/living/carbon/alien/adult/queen.dm
+++ b/code/modules/mob/living/carbon/alien/adult/queen.dm
@@ -65,11 +65,11 @@
return ..()
/mob/living/carbon/alien/adult/royal/queen/create_internal_organs()
- organs += new /obj/item/organ/internal/alien/plasmavessel/large/queen
- organs += new /obj/item/organ/internal/alien/resinspinner
- organs += new /obj/item/organ/internal/alien/acid
- organs += new /obj/item/organ/internal/alien/neurotoxin
- organs += new /obj/item/organ/internal/alien/eggsac
+ organs += new /obj/item/organ/alien/plasmavessel/large/queen
+ organs += new /obj/item/organ/alien/resinspinner
+ organs += new /obj/item/organ/alien/acid
+ organs += new /obj/item/organ/alien/neurotoxin
+ organs += new /obj/item/organ/alien/eggsac
return ..()
//Queen verbs
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index e5da7a47665..6c24358ce17 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -53,12 +53,12 @@
CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_has_trait), src, TRAIT_ADVANCEDTOOLUSER))
/mob/living/carbon/alien/create_internal_organs()
- organs += new /obj/item/organ/internal/brain/alien
- organs += new /obj/item/organ/internal/alien/hivenode
- organs += new /obj/item/organ/internal/tongue/alien
- organs += new /obj/item/organ/internal/eyes/alien
- organs += new /obj/item/organ/internal/liver/alien
- organs += new /obj/item/organ/internal/ears
+ organs += new /obj/item/organ/brain/alien
+ organs += new /obj/item/organ/alien/hivenode
+ organs += new /obj/item/organ/tongue/alien
+ organs += new /obj/item/organ/eyes/alien
+ organs += new /obj/item/organ/liver/alien
+ organs += new /obj/item/organ/ears
..()
/mob/living/carbon/alien/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) // beepsky won't hunt aliums
@@ -100,7 +100,7 @@ Des: Gives the client of the alien an image on each infected mob.
for (var/i in GLOB.mob_living_list)
var/mob/living/L = i
if(HAS_TRAIT(L, TRAIT_XENO_HOST))
- var/obj/item/organ/internal/body_egg/alien_embryo/A = L.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)
+ var/obj/item/organ/body_egg/alien_embryo/A = L.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo)
if(A)
var/I = image('icons/mob/nonhuman-player/alien.dmi', loc = L, icon_state = "infected[A.stage]")
client.images += I
@@ -139,8 +139,8 @@ Des: Removes all infected images from the alien.
mind.name = new_xeno.real_name
mind.transfer_to(new_xeno)
- var/obj/item/organ/internal/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
- var/obj/item/organ/internal/stomach/alien/frying_pan = new_xeno.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/alien/frying_pan = new_xeno.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(melting_pot) && istype(frying_pan))
for (var/atom/movable/poor_sod as anything in melting_pot.stomach_contents)
frying_pan.consume_thing(poor_sod)
diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm
index 9a6319c3092..4aeed5c2b9d 100644
--- a/code/modules/mob/living/carbon/alien/alien_defense.dm
+++ b/code/modules/mob/living/carbon/alien/alien_defense.dm
@@ -74,7 +74,7 @@ In all, this is a lot like the monkey code. /N
if(!. || QDELETED(src))
return FALSE
- var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
switch (severity)
if (EXPLODE_DEVASTATE)
gib(DROP_ALL_REMAINS)
diff --git a/code/modules/mob/living/carbon/alien/alien_say.dm b/code/modules/mob/living/carbon/alien/alien_say.dm
index 4cfdc265abf..29f55300d91 100644
--- a/code/modules/mob/living/carbon/alien/alien_say.dm
+++ b/code/modules/mob/living/carbon/alien/alien_say.dm
@@ -20,6 +20,6 @@
..(message, shown_name, TRUE)
/mob/living/carbon/hivecheck()
- var/obj/item/organ/internal/alien/hivenode/N = get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+ var/obj/item/organ/alien/hivenode/N = get_organ_by_type(/obj/item/organ/alien/hivenode)
if(N && !N.recent_queen_death) //Mob has alien hive node and is not under the dead queen special effect.
return TRUE
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index f4159813ed9..39915a0384d 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -40,7 +40,7 @@
return ..()
/mob/living/carbon/alien/larva/create_internal_organs()
- organs += new /obj/item/organ/internal/alien/plasmavessel/small/tiny
+ organs += new /obj/item/organ/alien/plasmavessel/small/tiny
..()
//This needs to be fixed
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index 52f7b8dfc47..a8de80b7058 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -14,7 +14,7 @@
if(HAS_TRAIT(src, TRAIT_GODMODE))
return
if(stat != DEAD)
- if(health <= -maxHealth || !get_organ_by_type(/obj/item/organ/internal/brain))
+ if(health <= -maxHealth || !get_organ_by_type(/obj/item/organ/brain))
death()
return
if((HAS_TRAIT(src, TRAIT_KNOCKEDOUT)))
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index ac9fd81cf97..7db1bb103cc 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -1,14 +1,14 @@
-/obj/item/organ/internal/alien
+/obj/item/organ/alien
icon_state = "acid"
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/acid = 10)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/acid = 10)
-/obj/item/organ/internal/alien/plasmavessel
+/obj/item/organ/alien/plasmavessel
name = "plasma vessel"
icon_state = "plasma"
w_class = WEIGHT_CLASS_NORMAL
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_XENO_PLASMAVESSEL
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/plasma = 10)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/plasma = 10)
actions_types = list(
/datum/action/cooldown/alien/make_structure/plant_weeds,
/datum/action/cooldown/alien/transfer,
@@ -23,7 +23,7 @@
/// The rate this organ regenerates plasma at per second.
var/plasma_rate = 5
-/obj/item/organ/internal/alien/plasmavessel/large
+/obj/item/organ/alien/plasmavessel/large
name = "large plasma vessel"
icon_state = "plasma_large"
w_class = WEIGHT_CLASS_BULKY
@@ -31,10 +31,10 @@
max_plasma = 500
plasma_rate = 7.5
-/obj/item/organ/internal/alien/plasmavessel/large/queen
+/obj/item/organ/alien/plasmavessel/large/queen
plasma_rate = 10
-/obj/item/organ/internal/alien/plasmavessel/small
+/obj/item/organ/alien/plasmavessel/small
name = "small plasma vessel"
icon_state = "plasma_small"
w_class = WEIGHT_CLASS_SMALL
@@ -42,14 +42,14 @@
max_plasma = 150
plasma_rate = 2.5
-/obj/item/organ/internal/alien/plasmavessel/small/tiny
+/obj/item/organ/alien/plasmavessel/small/tiny
name = "tiny plasma vessel"
icon_state = "plasma_tiny"
w_class = WEIGHT_CLASS_TINY
max_plasma = 100
actions_types = list(/datum/action/cooldown/alien/transfer)
-/obj/item/organ/internal/alien/plasmavessel/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/alien/plasmavessel/on_life(seconds_per_tick, times_fired)
var/delta_time = DELTA_WORLD_TIME(SSmobs)
//Instantly healing to max health in a single tick would be silly. If it takes 8 seconds to fire, then something's fucked.
var/delta_time_capped = min(delta_time, 8)
@@ -68,27 +68,27 @@
else
owner.adjustPlasma(0.1 * plasma_rate * delta_time)
-/obj/item/organ/internal/alien/plasmavessel/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/alien/plasmavessel/on_mob_insert(mob/living/carbon/organ_owner)
. = ..()
if(isalien(organ_owner))
var/mob/living/carbon/alien/target_alien = organ_owner
target_alien.updatePlasmaDisplay()
RegisterSignal(organ_owner, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item))
-/obj/item/organ/internal/alien/plasmavessel/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/alien/plasmavessel/on_mob_remove(mob/living/carbon/organ_owner)
. = ..()
if(isalien(organ_owner))
var/mob/living/carbon/alien/organ_owner_alien = organ_owner
organ_owner_alien.updatePlasmaDisplay()
UnregisterSignal(organ_owner, COMSIG_MOB_GET_STATUS_TAB_ITEMS)
-/obj/item/organ/internal/alien/plasmavessel/proc/get_status_tab_item(mob/living/carbon/source, list/items)
+/obj/item/organ/alien/plasmavessel/proc/get_status_tab_item(mob/living/carbon/source, list/items)
SIGNAL_HANDLER
items += "Plasma Stored: [stored_plasma]/[max_plasma]"
#define QUEEN_DEATH_DEBUFF_DURATION 2400
-/obj/item/organ/internal/alien/hivenode
+/obj/item/organ/alien/hivenode
name = "hive node"
icon_state = "hivenode"
zone = BODY_ZONE_HEAD
@@ -99,17 +99,17 @@
/// Indicates if the queen died recently, aliens are heavily weakened while this is active.
var/recent_queen_death = FALSE
-/obj/item/organ/internal/alien/hivenode/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/alien/hivenode/on_mob_insert(mob/living/carbon/organ_owner)
. = ..()
organ_owner.faction |= ROLE_ALIEN
-/obj/item/organ/internal/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
+/obj/item/organ/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
if(organ_owner)
organ_owner.faction -= ROLE_ALIEN
return ..()
//When the alien queen dies, all aliens suffer a penalty as punishment for failing to protect her.
-/obj/item/organ/internal/alien/hivenode/proc/queen_death()
+/obj/item/organ/alien/hivenode/proc/queen_death()
if(!owner || owner.stat == DEAD)
return
if(isalien(owner)) //Different effects for aliens than humans
@@ -132,7 +132,7 @@
addtimer(CALLBACK(src, PROC_REF(clear_queen_death)), QUEEN_DEATH_DEBUFF_DURATION)
-/obj/item/organ/internal/alien/hivenode/proc/clear_queen_death()
+/obj/item/organ/alien/hivenode/proc/clear_queen_death()
if(QDELETED(src)) //In case the node is deleted
return
recent_queen_death = FALSE
@@ -143,7 +143,7 @@
#undef QUEEN_DEATH_DEBUFF_DURATION
-/obj/item/organ/internal/alien/resinspinner
+/obj/item/organ/alien/resinspinner
name = "resin spinner"
icon_state = "spinner-x"
zone = BODY_ZONE_PRECISE_MOUTH
@@ -151,7 +151,7 @@
actions_types = list(/datum/action/cooldown/alien/make_structure/resin)
-/obj/item/organ/internal/alien/acid
+/obj/item/organ/alien/acid
name = "acid gland"
icon_state = "acid"
zone = BODY_ZONE_PRECISE_MOUTH
@@ -159,7 +159,7 @@
actions_types = list(/datum/action/cooldown/alien/acid/corrosion)
-/obj/item/organ/internal/alien/neurotoxin
+/obj/item/organ/alien/neurotoxin
name = "neurotoxin gland"
icon_state = "neurotox"
zone = BODY_ZONE_PRECISE_MOUTH
@@ -167,7 +167,7 @@
actions_types = list(/datum/action/cooldown/alien/acid/neurotoxin)
-/obj/item/organ/internal/alien/eggsac
+/obj/item/organ/alien/eggsac
name = "egg sac"
icon_state = "eggsac"
zone = BODY_ZONE_PRECISE_GROIN
@@ -176,18 +176,18 @@
actions_types = list(/datum/action/cooldown/alien/make_structure/lay_egg)
/// The stomach that lets aliens eat people/things
-/obj/item/organ/internal/stomach/alien
+/obj/item/organ/stomach/alien
name = "alien stomach"
icon_state = "stomach-x"
w_class = WEIGHT_CLASS_BULKY
actions_types = list(/datum/action/cooldown/alien/regurgitate)
var/list/atom/movable/stomach_contents = list()
-/obj/item/organ/internal/stomach/alien/Destroy()
+/obj/item/organ/stomach/alien/Destroy()
QDEL_LIST(stomach_contents)
return ..()
-/obj/item/organ/internal/stomach/alien/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/alien/on_life(seconds_per_tick, times_fired)
. = ..()
if(!owner || SSmobs.times_fired % 3 != 0)
return
@@ -198,7 +198,7 @@
continue
thing.acid_act(75, 10)
-/obj/item/organ/internal/stomach/alien/proc/consume_thing(atom/movable/thing)
+/obj/item/organ/stomach/alien/proc/consume_thing(atom/movable/thing)
RegisterSignal(thing, COMSIG_MOVABLE_MOVED, PROC_REF(content_moved))
RegisterSignal(thing, COMSIG_QDELETING, PROC_REF(content_deleted))
if(isliving(thing))
@@ -206,30 +206,30 @@
stomach_contents += thing
thing.forceMove(owner || src) // We assert that if we have no owner, we will not be nullspaced
-/obj/item/organ/internal/stomach/alien/proc/content_died(atom/movable/source)
+/obj/item/organ/stomach/alien/proc/content_died(atom/movable/source)
SIGNAL_HANDLER
qdel(source)
-/obj/item/organ/internal/stomach/alien/proc/content_deleted(atom/movable/source)
+/obj/item/organ/stomach/alien/proc/content_deleted(atom/movable/source)
SIGNAL_HANDLER
stomach_contents -= source
-/obj/item/organ/internal/stomach/alien/proc/content_moved(atom/movable/source)
+/obj/item/organ/stomach/alien/proc/content_moved(atom/movable/source)
SIGNAL_HANDLER
if(source.loc == src || source.loc == owner) // not in us? out da list then
return
stomach_contents -= source
UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_DEATH, COMSIG_QDELETING))
-/obj/item/organ/internal/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags)
RegisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE, PROC_REF(something_moved))
return ..()
-/obj/item/organ/internal/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
UnregisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE)
return ..()
-/obj/item/organ/internal/stomach/alien/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
+/obj/item/organ/stomach/alien/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
. = ..()
if(loc == null && owner)
for(var/atom/movable/thing as anything in contents)
@@ -238,12 +238,12 @@
for(var/atom/movable/thing as anything in contents)
thing.forceMove(src)
-/obj/item/organ/internal/stomach/alien/proc/something_moved(mob/living/source, mob/living/user, direction)
+/obj/item/organ/stomach/alien/proc/something_moved(mob/living/source, mob/living/user, direction)
SIGNAL_HANDLER
relaymove(user, direction)
return COMSIG_BLOCK_RELAYMOVE
-/obj/item/organ/internal/stomach/alien/relaymove(mob/living/user, direction)
+/obj/item/organ/stomach/alien/relaymove(mob/living/user, direction)
if(!(user in src.stomach_contents))
return
if(!prob(40))
@@ -327,7 +327,7 @@
owner.gib(DROP_ALL_REMAINS)
qdel(src)
-/obj/item/organ/internal/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4)
+/obj/item/organ/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4)
var/atom/spit_as = owner || src
// Throw out the stuff in our stomach
for(var/atom/movable/thing as anything in stomach_contents)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index fb90df140e6..97d4c4265de 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -1,10 +1,10 @@
// This is to replace the previous datum/disease/alien_embryo for slightly improved handling and maintainability
// It functions almost identically (see code/datums/diseases/alien_embryo.dm)
-/obj/item/organ/internal/body_egg/alien_embryo
+/obj/item/organ/body_egg/alien_embryo
name = "alien embryo"
icon = 'icons/mob/nonhuman-player/alien.dmi'
icon_state = "larva0_dead"
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/acid = 10)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/acid = 10)
///What stage of growth the embryo is at. Developed embryos give the host symptoms suggesting that an embryo is inside them.
var/stage = 0
/// Are we bursting out of the poor sucker who's the xeno mom?
@@ -12,11 +12,11 @@
/// How long does it take to advance one stage? Growth time * 5 = how long till we make a Larva!
var/growth_time = 60 SECONDS
-/obj/item/organ/internal/body_egg/alien_embryo/Initialize(mapload)
+/obj/item/organ/body_egg/alien_embryo/Initialize(mapload)
. = ..()
advance_embryo_stage()
-/obj/item/organ/internal/body_egg/alien_embryo/on_find(mob/living/finder)
+/obj/item/organ/body_egg/alien_embryo/on_find(mob/living/finder)
..()
if(stage < 5)
to_chat(finder, span_notice("It's small and weak, barely the size of a foetus."))
@@ -25,7 +25,7 @@
if(prob(10))
attempt_grow(gib_on_success = FALSE)
-/obj/item/organ/internal/body_egg/alien_embryo/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/alien_embryo/on_life(seconds_per_tick, times_fired)
. = ..()
if(QDELETED(src) || QDELETED(owner))
return
@@ -58,7 +58,7 @@
owner.adjustToxLoss(5 * seconds_per_tick) // Why is this [TOX]?
/// Controls Xenomorph Embryo growth. If embryo is fully grown (or overgrown), stop the proc. If not, increase the stage by one and if it's not fully grown (stage 6), add a timer to do this proc again after however long the growth time variable is.
-/obj/item/organ/internal/body_egg/alien_embryo/proc/advance_embryo_stage()
+/obj/item/organ/body_egg/alien_embryo/proc/advance_embryo_stage()
if(stage >= 6)
return
stage++
@@ -73,7 +73,7 @@
addtimer(CALLBACK(src, PROC_REF(advance_embryo_stage)), growth_time*slowdown)
-/obj/item/organ/internal/body_egg/alien_embryo/egg_process()
+/obj/item/organ/body_egg/alien_embryo/egg_process()
if(stage == 6 && prob(50))
for(var/datum/surgery/operations as anything in owner.surgeries)
if(operations.location != BODY_ZONE_CHEST)
@@ -85,7 +85,7 @@
attempt_grow()
/// Attempt to burst an alien outside of the host, getting a ghost to play as the xeno.
-/obj/item/organ/internal/body_egg/alien_embryo/proc/attempt_grow(gib_on_success = TRUE)
+/obj/item/organ/body_egg/alien_embryo/proc/attempt_grow(gib_on_success = TRUE)
if(QDELETED(owner) || bursting)
return
@@ -104,7 +104,7 @@
on_poll_concluded(gib_on_success, chosen_one)
/// Poll has concluded with a suitor
-/obj/item/organ/internal/body_egg/alien_embryo/proc/on_poll_concluded(gib_on_success, mob/dead/observer/ghost)
+/obj/item/organ/body_egg/alien_embryo/proc/on_poll_concluded(gib_on_success, mob/dead/observer/ghost)
if(QDELETED(owner))
return
@@ -157,7 +157,7 @@
Proc: AddInfectionImages(C)
Des: Adds the infection image to all aliens for this embryo
----------------------------------------*/
-/obj/item/organ/internal/body_egg/alien_embryo/AddInfectionImages()
+/obj/item/organ/body_egg/alien_embryo/AddInfectionImages()
for(var/mob/living/carbon/alien/alien in GLOB.player_list)
var/I = image('icons/mob/nonhuman-player/alien.dmi', loc = owner, icon_state = "infected[stage]")
alien.client?.images += I
@@ -166,7 +166,7 @@ Des: Adds the infection image to all aliens for this embryo
Proc: RemoveInfectionImage(C)
Des: Removes all images from the mob infected by this embryo
----------------------------------------*/
-/obj/item/organ/internal/body_egg/alien_embryo/RemoveInfectionImages()
+/obj/item/organ/body_egg/alien_embryo/RemoveInfectionImages()
for(var/mob/living/carbon/alien/alien in GLOB.player_list)
for(var/image/I in alien.client?.images)
var/searchfor = "infected"
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index 12eafbc3568..1a278f4aaa5 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -213,8 +213,8 @@
worn_icon_state = "[base_icon_state]_impregnated"
var/obj/item/bodypart/chest/LC = target.get_bodypart(BODY_ZONE_CHEST)
- if((!LC || IS_ORGANIC_LIMB(LC)) && !target.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
- new /obj/item/organ/internal/body_egg/alien_embryo(target)
+ if((!LC || IS_ORGANIC_LIMB(LC)) && !target.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
+ new /obj/item/organ/body_egg/alien_embryo(target)
target.log_message("was impregnated by a facehugger", LOG_GAME)
target.log_message("was impregnated by a facehugger", LOG_VICTIM, log_globally = FALSE)
if(target.stat != DEAD && istype(target.buckled, /obj/structure/bed/nest)) //Handles toggling the nest sustenance status effect if the user was already buckled to a nest.
@@ -257,7 +257,7 @@
AddComponent(/datum/component/knockoff, knockoff_chance = 40, target_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST), slots_knockoffable = slot_flags)
/obj/item/clothing/mask/facehugger/allow_attack_hand_drop(mob/living/carbon/human/user)
- if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
+ if(!real || sterile || user.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
return ..()
if(istype(user) && ishuman(loc) && stat != DEAD)
if(user == loc && user.get_item_by_slot(slot_flags) == src)
@@ -269,7 +269,7 @@
var/mob/living/carbon/human/wearer = loc
if(!istype(wearer) || user != wearer)
return
- if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
+ if(!real || sterile || user.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
return ..()
if(wearer.get_item_by_slot(slot_flags) == src && stat != DEAD)
to_chat(user, span_userdanger("[src] is latched on too tight! Get help or wait for it to let go!"))
@@ -281,7 +281,7 @@
return FALSE
if(M.stat == DEAD)
return FALSE
- if(M.get_organ_by_type(/obj/item/organ/internal/alien/hivenode))
+ if(M.get_organ_by_type(/obj/item/organ/alien/hivenode))
return FALSE
var/mob/living/carbon/C = M
if(ishuman(C) && !(C.dna.species.no_equip_flags & ITEM_SLOT_MASK))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 157987c722e..1bec7342602 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -166,6 +166,13 @@
if(start_T && end_T)
log_combat(src, thrown_thing, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
var/power_throw = 0
+ var/extra_throw_range = HAS_TRAIT(src, TRAIT_THROWINGARM) ? 2 : 0
+
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+ if(istype(potential_spine))
+ power_throw += potential_spine.added_throw_speed
+ extra_throw_range += potential_spine.added_throw_range
+
if(HAS_TRAIT(src, TRAIT_HULK))
power_throw++
if(HAS_TRAIT(src, TRAIT_DWARF))
@@ -202,11 +209,6 @@
visible_message(span_danger("[src] [verb_text][plural_s(verb_text)] [thrown_thing][power_throw_text]"), \
span_danger("You [verb_text] [thrown_thing][power_throw_text]"))
log_message("has thrown [thrown_thing] [power_throw_text]", LOG_ATTACK)
- var/extra_throw_range = HAS_TRAIT(src, TRAIT_THROWINGARM) ? 2 : 0
-
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
- if(istype(potential_spine))
- extra_throw_range += potential_spine.added_throw_range
var/drift_force = max(0.5 NEWTONS, 1 NEWTONS + power_throw)
if (isitem(thrown_thing))
@@ -598,7 +600,7 @@
lighting_cutoff = initial(lighting_cutoff)
lighting_color_cutoffs = list(lighting_cutoff_red, lighting_cutoff_green, lighting_cutoff_blue)
- var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
if(eyes)
set_invis_see(eyes.see_invisible)
new_sight |= eyes.sight_flags
@@ -654,7 +656,7 @@
for(var/obj/item/clothing/worn_item in get_equipped_items())
tint += worn_item.tint
- var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
if(eyes)
tint += eyes.tint
@@ -955,7 +957,7 @@
return ..()
/mob/living/carbon/can_be_revived()
- if(!get_organ_by_type(/obj/item/organ/internal/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK))
+ if(!get_organ_by_type(/obj/item/organ/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK))
return FALSE
//NOVA EDIT ADDITION - DNR TRAIT
if(HAS_TRAIT(src, TRAIT_DNR))
@@ -983,7 +985,7 @@
// Only check for a heart if they actually need a heart. Who would've thunk
if (needs_heart())
- var/obj/item/organ/internal/heart = get_organ_by_type(/obj/item/organ/internal/heart)
+ var/obj/item/organ/heart = get_organ_by_type(/obj/item/organ/heart)
if (!heart)
return DEFIB_FAIL_NO_HEART
@@ -991,7 +993,7 @@
if (heart.organ_flags & ORGAN_FAILING)
return DEFIB_FAIL_FAILING_HEART
- var/obj/item/organ/internal/brain/current_brain = get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain)
if (QDELETED(current_brain))
return DEFIB_FAIL_NO_BRAIN
@@ -1102,7 +1104,7 @@
add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bodypart, update = TRUE, multiplicative_slowdown = final_modification)
/mob/living/carbon/proc/create_internal_organs()
- for(var/obj/item/organ/internal/internal_organ in organs)
+ for(var/obj/item/organ/internal_organ in organs)
internal_organ.Insert(src)
/proc/cmp_organ_slot_asc(slot_a, slot_b)
@@ -1355,7 +1357,7 @@
/mob/living/carbon/proc/adjust_skillchip_complexity_modifier(delta)
skillchip_complexity_modifier += delta
- var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
if(!brain)
return
@@ -1484,7 +1486,7 @@
/// Accepts an optional timeout after which we remove the tail wagging
/// Returns true if successful, false otherwise
/mob/living/carbon/proc/wag_tail(timeout = INFINITY)
- var/obj/item/organ/external/tail/wagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/wagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(!wagged)
return FALSE
return wagged.start_wag(src, timeout)
@@ -1492,7 +1494,7 @@
/// Helper to cleanly stop all tail wagging
/// Returns true if successful, false otherwise
/mob/living/carbon/proc/unwag_tail() // can't unwag a tail
- var/obj/item/organ/external/tail/unwagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/unwagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(!unwagged)
return FALSE
return unwagged.stop_wag(src)
diff --git a/code/modules/mob/living/carbon/carbon_context.dm b/code/modules/mob/living/carbon/carbon_context.dm
index 59d3a6db71a..b376ea3e113 100644
--- a/code/modules/mob/living/carbon/carbon_context.dm
+++ b/code/modules/mob/living/carbon/carbon_context.dm
@@ -25,7 +25,7 @@
if (body_position == STANDING_UP)
if(check_zone(user.zone_selected) == BODY_ZONE_HEAD && get_bodypart(BODY_ZONE_HEAD))
context[SCREENTIP_CONTEXT_LMB] = "Headpat"
- else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/external/tail)))
+ else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/tail)))
context[SCREENTIP_CONTEXT_LMB] = "Pull tail"
else
context[SCREENTIP_CONTEXT_LMB] = "Hug"
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 5511df58083..8809c8c6195 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -4,7 +4,7 @@
. = ..()
if(is_blind() && !is_blind_from(list(UNCONSCIOUS_TRAIT, HYPNOCHAIR_TRAIT)))
return INFINITY //For all my homies that can not see in the world
- var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
if(eyes)
. += eyes.flash_protect
else
@@ -20,7 +20,7 @@
. = ..()
if(HAS_TRAIT(src, TRAIT_DEAF))
return INFINITY //For all my homies that can not hear in the world
- var/obj/item/organ/internal/ears/E = get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/E = get_organ_slot(ORGAN_SLOT_EARS)
if(!E)
return INFINITY
else
@@ -45,7 +45,7 @@
return null
/mob/living/carbon/is_pepper_proof(check_flags = ALL)
- var/obj/item/organ/internal/eyes/eyes = get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes = get_organ_by_type(/obj/item/organ/eyes)
if(eyes && eyes.pepperspray_protect)
return eyes
if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & PEPPERPROOF))
@@ -347,12 +347,12 @@
to_chat(helper, span_warning("[src] looks visibly upset as you pat [p_them()] on the head."))
//NOVA EDIT ADDITION BEGIN - EMOTES
if(HAS_TRAIT(src, TRAIT_EXCITABLE))
- var/obj/item/organ/external/tail/src_tail = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/src_tail = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(src_tail && !(src_tail.wag_flags & WAG_WAGGING))
emote("wag")
//NOVA EDIT ADDITION END
- else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/external/tail)))
+ else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/tail)))
helper.visible_message(span_notice("[helper] pulls on [src]'s tail!"), \
null, span_hear("You hear a soft patter."), DEFAULT_MESSAGE_RANGE, list(helper, src))
to_chat(helper, span_notice("You pull on [src]'s tail!"))
@@ -473,7 +473,7 @@
/mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
- var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes) //can't flash what can't see!
return
@@ -524,7 +524,7 @@
SEND_SIGNAL(src, COMSIG_CARBON_SOUNDBANG, reflist)
intensity = reflist[1]
var/ear_safety = get_ear_protection()
- var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
var/effect_amount = intensity - ear_safety
if(effect_amount > 0)
if(stun_pwr)
@@ -566,7 +566,7 @@
/mob/living/carbon/can_hear()
. = FALSE
- var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
if(ears && !HAS_TRAIT(src, TRAIT_DEAF))
. = TRUE
if(health <= hardcrit_threshold && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))
@@ -741,7 +741,7 @@
body_parts -= part
GLOB.bioscrambler_valid_parts = body_parts
- var/list/organs = subtypesof(/obj/item/organ/internal) + subtypesof(/obj/item/organ/external)
+ var/list/organs = subtypesof(/obj/item/organ) + subtypesof(/obj/item/organ)
for(var/obj/item/organ/organ_type as anything in organs)
if(!is_type_in_typecache(organ_type, GLOB.bioscrambler_organs_blacklist) && !(initial(organ_type.organ_flags) & ORGAN_ROBOTIC))
continue
diff --git a/code/modules/mob/living/carbon/carbon_say.dm b/code/modules/mob/living/carbon/carbon_say.dm
index 3e4c29fa0e8..e1dc3d27992 100644
--- a/code/modules/mob/living/carbon/carbon_say.dm
+++ b/code/modules/mob/living/carbon/carbon_say.dm
@@ -7,7 +7,7 @@
return ..()
/mob/living/carbon/could_speak_language(datum/language/language_path)
- var/obj/item/organ/internal/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE)
if(spoken_with)
// the tower of babel needs to bypass the tongue language restrictions without giving omnitongue
return HAS_MIND_TRAIT(src, TRAIT_TOWER_OF_BABEL) || spoken_with.could_speak_language(language_path)
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index abf7cdaabdd..bb341008773 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -34,7 +34,7 @@
var/atom/Tsec = drop_location()
for(var/obj/item/organ/organ as anything in organs)
- if((drop_bitflags & DROP_BRAIN) && istype(organ, /obj/item/organ/internal/brain))
+ if((drop_bitflags & DROP_BRAIN) && istype(organ, /obj/item/organ/brain))
if((drop_bitflags & DROP_BODYPARTS) && (check_zone(organ.zone) != BODY_ZONE_CHEST)) // chests can't drop
continue // the head will drop, so the brain should stay inside
@@ -43,7 +43,7 @@
organ.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5)
continue
- if((drop_bitflags & DROP_ORGANS) && !istype(organ, /obj/item/organ/internal/brain))
+ if((drop_bitflags & DROP_ORGANS) && !istype(organ, /obj/item/organ/brain))
if((drop_bitflags & DROP_BODYPARTS) && (check_zone(organ.zone) != BODY_ZONE_CHEST))
continue // only chest & groin organs will be ejected
@@ -65,7 +65,7 @@
/mob/living/carbon/set_suicide(suicide_state) //you thought that box trick was pretty clever, didn't you? well now hardmode is on, boyo.
. = ..()
- var/obj/item/organ/internal/brain/userbrain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/userbrain = get_organ_slot(ORGAN_SLOT_BRAIN)
if(userbrain)
userbrain.suicided = suicide_state
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index 1586d27a5ce..bad20ec7d16 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -51,7 +51,7 @@
if (length(status_examines))
. += status_examines
- if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/internal/brain))
+ if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/brain))
. += span_deadsay("It appears that [t_his] brain is missing...")
var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
@@ -239,7 +239,7 @@
if(CONSCIOUS)
if(HAS_TRAIT(src, TRAIT_DUMB))
. += "[t_He] [t_has] a stupid expression on [t_his] face."
- var/obj/item/organ/internal/brain/brain = get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain)
if(brain && isnull(ai_controller))
var/npc_message = ""
if(HAS_TRAIT(brain, TRAIT_GHOSTROLE_ON_REVIVE))
@@ -381,7 +381,7 @@
var/t_his = p_their()
var/t_is = p_are()
//This checks to see if the body is revivable
- var/obj/item/organ/brain = get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain = get_organ_by_type(/obj/item/organ/brain)
if(brain && HAS_TRAIT(brain, TRAIT_GHOSTROLE_ON_REVIVE))
return span_deadsay("[t_He] [t_is] limp and unresponsive; but [t_his] soul might yet come back...")
var/client_like = client || HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE)
@@ -583,7 +583,7 @@
. = list()
var/list/cybers = list()
- for(var/obj/item/organ/internal/cyberimp/cyberimp in organs)
+ for(var/obj/item/organ/cyberimp/cyberimp in organs)
if(IS_ROBOTIC_ORGAN(cyberimp) && !(cyberimp.organ_flags & ORGAN_HIDDEN))
cybers += cyberimp.examine_title(user)
if(length(cybers))
diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm
index 76cb1e25dcc..c4e44f0c512 100644
--- a/code/modules/mob/living/carbon/human/_species.dm
+++ b/code/modules/mob/living/carbon/human/_species.dm
@@ -78,23 +78,23 @@ GLOBAL_LIST_EMPTY(features_by_species)
///Internal organs that are unique to this race, like a tail or other cosmetic organs. list(typepath of organ 1, typepath of organ 2 = "Round").
var/list/mutant_organs = list()
///Replaces default brain with a different organ
- var/obj/item/organ/internal/brain/mutantbrain = /obj/item/organ/internal/brain
+ var/obj/item/organ/brain/mutantbrain = /obj/item/organ/brain
///Replaces default heart with a different organ
- var/obj/item/organ/internal/heart/mutantheart = /obj/item/organ/internal/heart
+ var/obj/item/organ/heart/mutantheart = /obj/item/organ/heart
///Replaces default lungs with a different organ
- var/obj/item/organ/internal/lungs/mutantlungs = /obj/item/organ/internal/lungs
+ var/obj/item/organ/lungs/mutantlungs = /obj/item/organ/lungs
///Replaces default eyes with a different organ
- var/obj/item/organ/internal/eyes/mutanteyes = /obj/item/organ/internal/eyes
+ var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes
///Replaces default ears with a different organ
- var/obj/item/organ/internal/ears/mutantears = /obj/item/organ/internal/ears
+ var/obj/item/organ/ears/mutantears = /obj/item/organ/ears
///Replaces default tongue with a different organ
- var/obj/item/organ/internal/tongue/mutanttongue = /obj/item/organ/internal/tongue
+ var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue
///Replaces default liver with a different organ
- var/obj/item/organ/internal/liver/mutantliver = /obj/item/organ/internal/liver
+ var/obj/item/organ/liver/mutantliver = /obj/item/organ/liver
///Replaces default stomach with a different organ
- var/obj/item/organ/internal/stomach/mutantstomach = /obj/item/organ/internal/stomach
+ var/obj/item/organ/stomach/mutantstomach = /obj/item/organ/stomach
///Replaces default appendix with a different organ.
- var/obj/item/organ/internal/appendix/mutantappendix = /obj/item/organ/internal/appendix
+ var/obj/item/organ/appendix/mutantappendix = /obj/item/organ/appendix
/// Store body marking defines. See mobs.dm for bitflags
//var/list/body_markings = list() // NOVA EDIT REMOVAL - We already have this defined as an assoc list
@@ -326,7 +326,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
if(remove_existing)
health_pct = (existing_organ.maxHealth - existing_organ.damage) / existing_organ.maxHealth
if(slot == ORGAN_SLOT_BRAIN)
- var/obj/item/organ/internal/brain/existing_brain = existing_organ
+ var/obj/item/organ/brain/existing_brain = existing_organ
existing_brain.before_organ_replacement(new_organ)
existing_brain.Remove(organ_holder, special = TRUE, movement_flags = NO_ID_TRANSFER)
else
@@ -485,7 +485,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
var/obj/item/bodypart/head/noggin = species_human.get_bodypart(BODY_ZONE_HEAD)
if(noggin?.head_flags & HEAD_EYESPRITES)
// eyes (missing eye sprites get handled by the head itself, but sadly we have to do this stupid shit here, for now)
- var/obj/item/organ/internal/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
if(eye_organ)
eye_organ.refresh(call_update = FALSE)
standing += eye_organ.generate_body_overlay(species_human)
@@ -662,7 +662,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
if(ITEM_SLOT_EYES)
if(!H.get_bodypart(BODY_ZONE_HEAD))
return FALSE
- var/obj/item/organ/internal/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes?.no_glasses)
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
@@ -851,7 +851,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
to_chat(user, span_warning("You don't want to harm [target]!"))
return FALSE
- var/obj/item/organ/internal/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
var/obj/item/bodypart/attacking_bodypart
if(brain)
attacking_bodypart = brain.get_attacking_limb(target)
@@ -1391,7 +1391,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
/datum/species/proc/spec_stun(mob/living/carbon/human/H,amount)
if((H.movement_type & FLYING) && !H.buckled)
- var/obj/item/organ/external/wings/functional/wings = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ var/obj/item/organ/wings/functional/wings = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
if(wings)
wings.toggle_flight(H)
wings.fly_slip(H)
@@ -1563,7 +1563,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
return null
var/static/list/food_flags = FOOD_FLAGS
- var/obj/item/organ/internal/tongue/fake_tongue = mutanttongue
+ var/obj/item/organ/tongue/fake_tongue = mutanttongue
return list(
"liked_food" = bitfield_to_list(initial(fake_tongue.liked_foodtypes), food_flags),
@@ -1886,7 +1886,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
var/list/to_add = list()
var/alcohol_tolerance = initial(mutantliver.alcohol_tolerance)
- var/obj/item/organ/internal/liver/base_liver = /obj/item/organ/internal/liver
+ var/obj/item/organ/liver/base_liver = /obj/item/organ/liver
var/tolerance_difference = alcohol_tolerance - initial(base_liver.alcohol_tolerance)
if (tolerance_difference != 0)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 220570faa80..672920633df 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift)
if(stat == DEAD)
return
stop_sound_channel(CHANNEL_HEARTBEAT)
- var/obj/item/organ/internal/heart/human_heart = get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/human_heart = get_organ_slot(ORGAN_SLOT_HEART)
human_heart?.beat = BEAT_NONE
human_heart?.Stop()
@@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift)
readout += "
[round(reagent.volume, 0.001)] units of [reagent.name]"
readout += "
Stomach:"
- var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
for(var/datum/reagent/bile in belly?.reagents?.reagent_list)
if(!belly.food_reagents[bile.type])
readout += "
[round(bile.volume, 0.001)] units of [bile.name]"
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index b2c316ec292..86d750436e9 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -120,7 +120,7 @@
/datum/emote/living/carbon/human/wag/run_emote(mob/user, params, type_override, intentional)
. = ..()
- var/obj/item/organ/external/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
//I am so sorry my son
//We bypass helpers here cause we already have the tail
if(oranges_accessory.wag_flags & WAG_WAGGING) //We verified the tail exists in can_run_emote()
@@ -130,14 +130,14 @@
/datum/emote/living/carbon/human/wag/select_message_type(mob/user, intentional)
. = ..()
- var/obj/item/organ/external/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(oranges_accessory.wag_flags & WAG_WAGGING)
. = "stops wagging " + message
else
. = "wags " + message
/datum/emote/living/carbon/human/wag/can_run_emote(mob/user, status_check, intentional, params)
- var/obj/item/organ/external/tail/tail = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/tail = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(tail?.wag_flags & WAG_ABLE)
return ..()
return FALSE
@@ -149,7 +149,7 @@
/datum/emote/living/carbon/human/wing/run_emote(mob/user, params, type_override, intentional)
. = ..()
- var/obj/item/organ/external/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ var/obj/item/organ/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
if(isnull(wings))
CRASH("[type] ran on a mob that has no wings!")
if(wings.wings_open)
@@ -158,12 +158,12 @@
wings.open_wings()
/datum/emote/living/carbon/human/wing/select_message_type(mob/user, intentional)
- var/obj/item/organ/external/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ var/obj/item/organ/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
var/emote_verb = wings.wings_open ? "closes" : "opens"
return "[emote_verb] [message]"
/datum/emote/living/carbon/human/wing/can_run_emote(mob/user, status_check = TRUE, intentional, params)
- if(!istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS), /obj/item/organ/external/wings/functional))
+ if(!istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS), /obj/item/organ/wings/functional))
return FALSE
return ..()
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index b0ba82f77c6..b0ce29cd1a4 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -572,12 +572,12 @@
to_chat(src, span_warning("you can't breathe!"))
return FALSE
- var/obj/item/organ/internal/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
if(isnull(human_lungs))
balloon_alert(src, "you don't have lungs!")
return FALSE
// NOVA EDIT ADDITION - Disable CPR for synth heatsink
- if(istype(human_lungs, /obj/item/organ/internal/lungs/synth))
+ if(istype(human_lungs, /obj/item/organ/lungs/synth))
balloon_alert(src, "you don't have lungs!")
return FALSE
// NOVA EDIT ADDITION END
@@ -942,7 +942,7 @@
if(result != "Yes")
return
- var/obj/item/organ/internal/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
if(isnull(target_brain))
to_chat(usr, "This mob has no brain to insert into an MMI.")
@@ -995,17 +995,21 @@
var/carrydelay = 5 SECONDS //if you have latex you are faster at grabbing
var/skills_space
var/fitness_level = mind?.get_skill_level(/datum/skill/athletics) - 1
+ var/experience_reward = 5
if(HAS_TRAIT(src, TRAIT_QUICKER_CARRY))
carrydelay -= 2 SECONDS
+ experience_reward *= 3
else if(HAS_TRAIT(src, TRAIT_QUICK_CARRY))
carrydelay -= 1 SECONDS
+ experience_reward *= 2
// can remove up to 2 seconds at legendary
carrydelay -= fitness_level * (1/3) SECONDS
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
carrydelay *= potential_spine.athletics_boost_multiplier
+ experience_reward += experience_reward * potential_spine.athletics_boost_multiplier
if(carrydelay <= 3 SECONDS)
skills_space = " very quickly"
@@ -1027,6 +1031,8 @@
visible_message(span_warning("[src] fails to fireman carry [target]!"))
return
+ mind?.adjust_experience(/datum/skill/athletics, experience_reward) //Get a bit fitter every time we fireman carry successfully. Deadlift your friends for gains!
+
return buckle_mob(target, TRUE, TRUE, CARRIER_NEEDS_ARM)
/mob/living/carbon/human/proc/piggyback(mob/living/carbon/target)
@@ -1110,6 +1116,52 @@
if(mind.assigned_role.title in SSjob.name_occupations)
.[mind.assigned_role.title] = minutes
+/mob/living/carbon/human/proc/add_eye_color_left(color, color_priority, update_body = TRUE)
+ LAZYSET(eye_color_left_overrides, "[color_priority]", color)
+ if (update_body)
+ update_body()
+
+/mob/living/carbon/human/proc/add_eye_color_right(color, color_priority, update_body = TRUE)
+ LAZYSET(eye_color_right_overrides, "[color_priority]", color)
+ if (update_body)
+ update_body()
+
+/mob/living/carbon/human/proc/add_eye_color(color, color_priority, update_body = TRUE)
+ add_eye_color_left(color, color_priority, update_body = FALSE)
+ add_eye_color_right(color, color_priority, update_body = update_body)
+
+/mob/living/carbon/human/proc/remove_eye_color(color_priority, update_body = TRUE)
+ LAZYREMOVE(eye_color_left_overrides, "[color_priority]")
+ LAZYREMOVE(eye_color_right_overrides, "[color_priority]")
+ if (update_body)
+ update_body()
+
+/mob/living/carbon/human/proc/get_right_eye_color()
+ if (!LAZYLEN(eye_color_right_overrides))
+ return eye_color_right
+
+ var/eye_color = eye_color_right
+ var/priority
+ for (var/override_priority in eye_color_right_overrides)
+ var/new_priority = text2num(override_priority)
+ if (new_priority > priority)
+ priority = new_priority
+ eye_color = eye_color_right_overrides[override_priority]
+ return eye_color
+
+/mob/living/carbon/human/proc/get_left_eye_color()
+ if (!LAZYLEN(eye_color_left_overrides))
+ return eye_color_left
+
+ var/eye_color = eye_color_left
+ var/priority
+ for (var/override_priority in eye_color_left_overrides)
+ var/new_priority = text2num(override_priority)
+ if (new_priority > priority)
+ priority = new_priority
+ eye_color = eye_color_left_overrides[override_priority]
+ return eye_color
+
/mob/living/carbon/human/monkeybrain
ai_controller = /datum/ai_controller/monkey
@@ -1227,7 +1279,7 @@
race = /datum/species/snail
/mob/living/carbon/human/species/vampire
- race = /datum/species/vampire
+ race = /datum/species/human/vampire
/mob/living/carbon/human/species/zombie
race = /datum/species/zombie
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 2a075c6c4bc..486a1e819a1 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -282,7 +282,7 @@
//200 max knockdown for EXPLODE_HEAVY
//160 max knockdown for EXPLODE_LIGHT
- var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
switch (severity)
if (EXPLODE_DEVASTATE)
if(bomb_armor < EXPLODE_GIB_THRESHOLD) //gibs the mob if their bomb armor is lower than EXPLODE_GIB_THRESHOLD
@@ -391,7 +391,7 @@
//Note we both check that the user is in cardiac arrest and can actually heartattack
//If they can't, they're missing their heart and this would runtime
if(undergoing_cardiac_arrest() && can_heartattack() && (shock_damage * siemens_coeff >= 1) && prob(25))
- var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
if(heart.Restart() && stat == CONSCIOUS)
to_chat(src, span_notice("You feel your heart beating again!"))
if (!(flags & SHOCK_NO_HUMAN_ANIM))
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index c536a43aeb5..08b421b341c 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -35,11 +35,14 @@
var/facial_hair_color = COLOR_BLACK
var/facial_hairstyle = "Shaved"
- //Eye colour
+ // Base "natural" eye color
var/eye_color_left = COLOR_BLACK
var/eye_color_right = COLOR_BLACK
/// Var used to keep track of a human mob having a heterochromatic right eye. To ensure prefs don't overwrite shit
var/eye_color_heterochromatic = FALSE
+ // Eye color overrides assoc lists - priority key to hex color
+ var/list/eye_color_left_overrides
+ var/list/eye_color_right_overrides
var/skin_tone = "caucasian1" //Skin tone
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index 66962ba4dfe..d179673edbf 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -137,7 +137,7 @@
. += "[dna.species.type]"
/mob/living/carbon/human/proc/get_eye_scars()
- var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
if (!isnull(eyes))
return eyes.scarring
diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm
index 48011902581..c5e3c7a3123 100644
--- a/code/modules/mob/living/carbon/human/human_say.dm
+++ b/code/modules/mob/living/carbon/human/human_say.dm
@@ -22,7 +22,7 @@
return ..()
/mob/living/carbon/human/get_default_say_verb()
- var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
if(isnull(tongue))
if(HAS_TRAIT(src, TRAIT_SIGN_LANG))
return "signs"
diff --git a/code/modules/mob/living/carbon/human/human_suicide.dm b/code/modules/mob/living/carbon/human/human_suicide.dm
index 318cba1587d..e6b4bbac8e0 100644
--- a/code/modules/mob/living/carbon/human/human_suicide.dm
+++ b/code/modules/mob/living/carbon/human/human_suicide.dm
@@ -22,7 +22,7 @@
if(combat_mode)
send_applicable_messages(HUMAN_COMBAT_MODE_SUICIDE_MESSAGE)
else
- var/obj/item/organ/internal/brain/userbrain = get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/userbrain = get_organ_by_type(/obj/item/organ/brain)
if(userbrain?.damage >= 75)
send_applicable_messages(HUMAN_BRAIN_DAMAGE_SUICIDE_MESSAGE)
else
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 048f7bcfe2c..6befcb5c9fe 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -79,7 +79,7 @@
return ..()
/mob/living/carbon/human/check_breath(datum/gas_mixture/breath)
- var/obj/item/organ/internal/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
if(human_lungs)
return human_lungs.check_breath(breath, src)
diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm
index 04df6a70588..db332b0efde 100644
--- a/code/modules/mob/living/carbon/human/species_types/abductors.dm
+++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm
@@ -12,11 +12,11 @@
TRAIT_NO_UNDERWEAR,
TRAIT_VIRUSIMMUNE,
)
- mutanttongue = /obj/item/organ/internal/tongue/abductor
+ mutanttongue = /obj/item/organ/tongue/abductor
mutantstomach = null
mutantheart = null
mutantlungs = null
- mutantbrain = /obj/item/organ/internal/brain/abductor
+ mutantbrain = /obj/item/organ/brain/abductor
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
bodypart_overrides = list(
diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm
index 86f745bb8be..2974155515d 100644
--- a/code/modules/mob/living/carbon/human/species_types/android.dm
+++ b/code/modules/mob/living/carbon/human/species_types/android.dm
@@ -26,15 +26,15 @@
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
meat = null
- mutantbrain = /obj/item/organ/internal/brain/cybernetic
- mutanttongue = /obj/item/organ/internal/tongue/robot
+ mutantbrain = /obj/item/organ/brain/cybernetic
+ mutanttongue = /obj/item/organ/tongue/robot
mutantstomach = null
mutantappendix = null
mutantheart = null
mutantliver = null
mutantlungs = null
- mutanteyes = /obj/item/organ/internal/eyes/robotic
- mutantears = /obj/item/organ/internal/ears/cybernetic
+ mutanteyes = /obj/item/organ/eyes/robotic
+ mutantears = /obj/item/organ/ears/cybernetic
species_language_holder = /datum/language_holder/synthetic
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index af0d8ade4bc..9251c6099d9 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -19,10 +19,10 @@
BODY_ZONE_CHEST = /obj/item/bodypart/chest,
)
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
- mutantbrain = /obj/item/organ/internal/brain/dullahan
- mutanteyes = /obj/item/organ/internal/eyes/dullahan
- mutanttongue = /obj/item/organ/internal/tongue/dullahan
- mutantears = /obj/item/organ/internal/ears/dullahan
+ mutantbrain = /obj/item/organ/brain/dullahan
+ mutanteyes = /obj/item/organ/eyes/dullahan
+ mutanttongue = /obj/item/organ/tongue/dullahan
+ mutantears = /obj/item/organ/ears/dullahan
mutantstomach = null
mutantlungs = null
skinned_type = /obj/item/stack/sheet/animalhide/human
@@ -51,7 +51,7 @@
human.put_in_hands(head)
// We want to give the head some boring old eyes just so it doesn't look too jank on the head sprite.
- var/obj/item/organ/internal/eyes/eyes = new /obj/item/organ/internal/eyes(head)
+ var/obj/item/organ/eyes/eyes = new /obj/item/organ/eyes(head)
eyes.eye_color_left = human.eye_color_left
eyes.eye_color_right = human.eye_color_right
eyes.bodypart_insert(my_head)
@@ -95,7 +95,7 @@
human.reset_perspective(human)
/datum/species/dullahan/proc/update_vision_perspective(mob/living/carbon/human/human)
- var/obj/item/organ/internal/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes)
human.update_tint()
if(eyes.tint)
@@ -106,7 +106,7 @@
prevent_perspective_change = TRUE
/datum/species/dullahan/on_owner_login(mob/living/carbon/human/owner)
- var/obj/item/organ/internal/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
if(owner_first_client_connection_handled)
if(!eyes.tint)
owner.reset_perspective(my_head, TRUE)
@@ -164,15 +164,15 @@
return to_add
-/obj/item/organ/internal/brain/dullahan
+/obj/item/organ/brain/dullahan
decoy_override = TRUE
organ_flags = ORGAN_ORGANIC //not vital
-/obj/item/organ/internal/tongue/dullahan
+/obj/item/organ/tongue/dullahan
zone = "abstract"
modifies_speech = TRUE
-/obj/item/organ/internal/tongue/dullahan/handle_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/dullahan/handle_speech(datum/source, list/speech_args)
if(ishuman(owner))
var/mob/living/carbon/human/human = owner
if(isdullahan(human))
@@ -182,10 +182,10 @@
head.say(speech_args[SPEECH_MESSAGE], spans = speech_args[SPEECH_SPANS], sanitize = FALSE, language = speech_args[SPEECH_LANGUAGE], message_range = speech_args[SPEECH_RANGE])
speech_args[SPEECH_MESSAGE] = ""
-/obj/item/organ/internal/ears/dullahan
+/obj/item/organ/ears/dullahan
zone = "abstract"
-/obj/item/organ/internal/eyes/dullahan
+/obj/item/organ/eyes/dullahan
name = "head vision"
desc = "An abstraction."
actions_types = list(/datum/action/item_action/organ_action/dullahan)
@@ -198,7 +198,7 @@
/datum/action/item_action/organ_action/dullahan/Trigger(trigger_flags)
. = ..()
- var/obj/item/organ/internal/eyes/dullahan/dullahan_eyes = target
+ var/obj/item/organ/eyes/dullahan/dullahan_eyes = target
dullahan_eyes.tint = dullahan_eyes.tint ? NONE : INFINITY
if(ishuman(owner))
@@ -247,7 +247,7 @@
return // It's so over
detached_head.real_name = wearer.real_name
detached_head.name = wearer.real_name
- var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in detached_head
+ var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in detached_head
brain.name = "[wearer.name]'s brain"
/obj/item/dullahan_relay/proc/examinate_check(mob/user, atom/source)
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 4fa4db94336..1f1d7d3af47 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -2,10 +2,10 @@
name = "\improper Ethereal"
id = SPECIES_ETHEREAL
meat = /obj/item/food/meat/slab/human/mutant/ethereal
- mutantlungs = /obj/item/organ/internal/lungs/ethereal
- mutantstomach = /obj/item/organ/internal/stomach/ethereal
- mutanttongue = /obj/item/organ/internal/tongue/ethereal
- mutantheart = /obj/item/organ/internal/heart/ethereal
+ mutantlungs = /obj/item/organ/lungs/ethereal
+ mutantstomach = /obj/item/organ/stomach/ethereal
+ mutanttongue = /obj/item/organ/tongue/ethereal
+ mutantheart = /obj/item/organ/heart/ethereal
exotic_blood = /datum/reagent/consumable/liquidelectricity //Liquid Electricity. fuck you think of something better gamer
exotic_bloodtype = "LE"
siemens_coeff = 0.5 //They thrive on energy
@@ -60,7 +60,7 @@
ethereal_light = new_ethereal.mob_light(light_type = /obj/effect/dummy/lighting_obj/moblight/species)
refresh_light_color(new_ethereal)
- var/obj/item/organ/internal/heart/ethereal/ethereal_heart = new_ethereal.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/ethereal/ethereal_heart = new_ethereal.get_organ_slot(ORGAN_SLOT_HEART)
ethereal_heart.ethereal_color = default_color
for(var/obj/item/bodypart/limb as anything in new_ethereal.bodyparts)
@@ -241,7 +241,7 @@
name = "Lustrous"
id = SPECIES_ETHEREAL_LUSTROUS
examine_limb_id = SPECIES_ETHEREAL
- mutantbrain = /obj/item/organ/internal/brain/lustrous
+ mutantbrain = /obj/item/organ/brain/lustrous
changesource_flags = MIRROR_BADMIN | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN
inherent_traits = list(
TRAIT_MUTANT_COLORS,
diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm
index 5728ef61367..090ae9447b4 100644
--- a/code/modules/mob/living/carbon/human/species_types/felinid.dm
+++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm
@@ -3,12 +3,12 @@
name = "Felinid"
id = SPECIES_FELINE
examine_limb_id = SPECIES_HUMAN
- mutantbrain = /obj/item/organ/internal/brain/felinid
- mutanttongue = /obj/item/organ/internal/tongue/cat
+ mutantbrain = /obj/item/organ/brain/felinid
+ mutanttongue = /obj/item/organ/tongue/cat
/* NOVA EDIT REMOVAL - CUSTOMIZATION
- mutantears = /obj/item/organ/internal/ears/cat
+ mutantears = /obj/item/organ/ears/cat
mutant_organs = list(
- /obj/item/organ/external/tail/cat = "Cat",
+ /obj/item/organ/tail/cat = "Cat",
)
*/ // NOVA EDIT REMOVAL END
inherent_traits = list(
@@ -44,16 +44,16 @@
target_human.dna.features["ears"] = "Cat"
/* NOVA EDIT CHANGE START - ORIGINAL
if(target_human.dna.features["ears"] == "None")
- mutantears = /obj/item/organ/internal/ears
+ mutantears = /obj/item/organ/ears
else
- var/obj/item/organ/internal/ears/cat/ears = new(FALSE, target_human.dna.features["ears"])
+ var/obj/item/organ/ears/cat/ears = new(FALSE, target_human.dna.features["ears"])
ears.Insert(target_human, movement_flags = DELETE_IF_REPLACED)
*/
if(target_human.dna.features["ears"] == "Cat")
- var/obj/item/organ/internal/ears/cat/ears = new
+ var/obj/item/organ/ears/cat/ears = new
ears.Insert(target_human, movement_flags = DELETE_IF_REPLACED)
else
- mutantears = /obj/item/organ/internal/ears
+ mutantears = /obj/item/organ/ears
// NOVA EDIT CHANGE END
return ..()
@@ -138,7 +138,7 @@
/proc/purrbation_toggle(mob/living/carbon/human/target_human, silent = FALSE)
if(!ishuman(target_human))
return
- if(!istype(target_human.get_organ_slot(ORGAN_SLOT_EARS), /obj/item/organ/internal/ears/cat))
+ if(!istype(target_human.get_organ_slot(ORGAN_SLOT_EARS), /obj/item/organ/ears/cat))
purrbation_apply(target_human, silent = silent)
. = TRUE
else
@@ -154,7 +154,7 @@
cat_species.original_felinid = FALSE
else
// This removes the spines if they exist
- var/obj/item/organ/external/spines/current_spines = soon_to_be_felinid.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
+ var/obj/item/organ/spines/current_spines = soon_to_be_felinid.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
if(current_spines)
current_spines.Remove(soon_to_be_felinid, special = TRUE)
qdel(current_spines)
@@ -163,10 +163,10 @@
// Humans get converted directly to felinids, and the key is handled in on_species_gain.
// Now when we get mob.dna.features[feature_key], it returns None, which is why the tail is invisible.
// stored_feature_id is only set once (the first time an organ is inserted), so this should be safe.
- var/obj/item/organ/internal/ears/cat/kitty_ears = new
+ var/obj/item/organ/ears/cat/kitty_ears = new
kitty_ears.Insert(soon_to_be_felinid, special = TRUE, movement_flags = DELETE_IF_REPLACED)
- if(should_visual_organ_apply_to(/obj/item/organ/external/tail/cat, soon_to_be_felinid)) //only give them a tail if they actually have sprites for it / are a compatible subspecies.
- var/obj/item/organ/external/tail/cat/kitty_tail = new
+ if(should_visual_organ_apply_to(/obj/item/organ/tail/cat, soon_to_be_felinid)) //only give them a tail if they actually have sprites for it / are a compatible subspecies.
+ var/obj/item/organ/tail/cat/kitty_tail = new
kitty_tail.Insert(soon_to_be_felinid, special = TRUE, movement_flags = DELETE_IF_REPLACED)
if(!silent)
@@ -183,24 +183,24 @@
var/datum/species/target_species = purrbated_human.dna.species
// From the previous check we know they're not a felinid, therefore removing cat ears and tail is safe
- var/obj/item/organ/external/tail/old_tail = purrbated_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
- if(istype(old_tail, /obj/item/organ/external/tail/cat))
+ var/obj/item/organ/tail/old_tail = purrbated_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ if(istype(old_tail, /obj/item/organ/tail/cat))
old_tail.Remove(purrbated_human, special = TRUE)
qdel(old_tail)
// Locate does not work on assoc lists, so we do it by hand
for(var/external_organ in target_species.mutant_organs)
if(!should_visual_organ_apply_to(external_organ, purrbated_human))
continue
- if(ispath(external_organ, /obj/item/organ/external/tail))
- var/obj/item/organ/external/tail/new_tail = new external_organ()
+ if(ispath(external_organ, /obj/item/organ/tail))
+ var/obj/item/organ/tail/new_tail = new external_organ()
new_tail.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
// Don't forget the spines we removed earlier
- else if(ispath(external_organ, /obj/item/organ/external/spines))
- var/obj/item/organ/external/spines/new_spines = new external_organ()
+ else if(ispath(external_organ, /obj/item/organ/spines))
+ var/obj/item/organ/spines/new_spines = new external_organ()
new_spines.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
- var/obj/item/organ/internal/ears/old_ears = purrbated_human.get_organ_slot(ORGAN_SLOT_EARS)
- if(istype(old_ears, /obj/item/organ/internal/ears/cat))
+ var/obj/item/organ/ears/old_ears = purrbated_human.get_organ_slot(ORGAN_SLOT_EARS)
+ if(istype(old_ears, /obj/item/organ/ears/cat))
var/obj/item/organ/new_ears = new target_species.mutantears()
new_ears.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
if(!silent)
@@ -211,7 +211,7 @@
human_for_preview.set_hairstyle("Hime Cut", update = TRUE)
/* NOVA EDIT - Making the species menu icons work better - ORIGINAL:
- var/obj/item/organ/internal/ears/cat/cat_ears = human_for_preview.get_organ_by_type(/obj/item/organ/internal/ears/cat)
+ var/obj/item/organ/ears/cat/cat_ears = human_for_preview.get_organ_by_type(/obj/item/organ/ears/cat)
if (cat_ears)
cat_ears.color = human_for_preview.hair_color
human_for_preview.update_body()
diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
index 0f2072b7773..11548c7b129 100644
--- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
@@ -4,18 +4,18 @@
id = SPECIES_FLYPERSON
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
meat = /obj/item/food/meat/slab/human/mutant/fly
- mutanteyes = /obj/item/organ/internal/eyes/fly
+ mutanteyes = /obj/item/organ/eyes/fly
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
species_language_holder = /datum/language_holder/fly
payday_modifier = 1.0
- mutanttongue = /obj/item/organ/internal/tongue/fly
- mutantheart = /obj/item/organ/internal/heart/fly
- mutantlungs = /obj/item/organ/internal/lungs/fly
- mutantliver = /obj/item/organ/internal/liver/fly
- mutantstomach = /obj/item/organ/internal/stomach/fly
- mutantappendix = /obj/item/organ/internal/appendix/fly
- mutant_organs = list(/obj/item/organ/internal/fly, /obj/item/organ/internal/fly/groin)
+ mutanttongue = /obj/item/organ/tongue/fly
+ mutantheart = /obj/item/organ/heart/fly
+ mutantlungs = /obj/item/organ/lungs/fly
+ mutantliver = /obj/item/organ/liver/fly
+ mutantstomach = /obj/item/organ/stomach/fly
+ mutantappendix = /obj/item/organ/appendix/fly
+ mutant_organs = list(/obj/item/organ/fly, /obj/item/organ/fly/groin)
bodypart_overrides = list(
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/fly,
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index ec34526351e..11be5877d4c 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -35,13 +35,13 @@
bodytemp_heat_damage_limit = BODYTEMP_HEAT_LAVALAND_SAFE
bodytemp_cold_damage_limit = BODYTEMP_COLD_ICEBOX_SAFE
- mutant_organs = list(/obj/item/organ/internal/adamantine_resonator)
- mutanteyes = /obj/item/organ/internal/eyes/golem
- mutantbrain = /obj/item/organ/internal/brain/golem
- mutanttongue = /obj/item/organ/internal/tongue/golem
- mutantstomach = /obj/item/organ/internal/stomach/golem
- mutantliver = /obj/item/organ/internal/liver/golem
- mutantappendix = /obj/item/organ/internal/appendix/golem
+ mutant_organs = list(/obj/item/organ/adamantine_resonator)
+ mutanteyes = /obj/item/organ/eyes/golem
+ mutantbrain = /obj/item/organ/brain/golem
+ mutanttongue = /obj/item/organ/tongue/golem
+ mutantstomach = /obj/item/organ/stomach/golem
+ mutantliver = /obj/item/organ/liver/golem
+ mutantappendix = /obj/item/organ/appendix/golem
bodypart_overrides = list(
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/golem,
BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/golem,
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 90757c9343b..47a627edf1c 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -17,9 +17,9 @@
TRAIT_TOXINLOVER,
TRAIT_NOBLOOD,
)
- mutanttongue = /obj/item/organ/internal/tongue/jelly
- mutantlungs = /obj/item/organ/internal/lungs/slime
- mutanteyes = /obj/item/organ/internal/eyes/jelly
+ mutanttongue = /obj/item/organ/tongue/jelly
+ mutantlungs = /obj/item/organ/lungs/slime
+ mutanteyes = /obj/item/organ/eyes/jelly
mutantheart = null
meat = /obj/item/food/meat/slab/human/mutant/slime
exotic_blood = /datum/reagent/toxin/slimejelly
@@ -178,7 +178,7 @@
plural_form = "Slimepeople"
id = SPECIES_SLIMEPERSON
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
- mutanteyes = /obj/item/organ/internal/eyes
+ mutanteyes = /obj/item/organ/eyes
var/datum/action/innate/split_body/slime_split
var/list/mob/living/carbon/bodies
var/datum/action/innate/swap_body/swap_body
@@ -488,7 +488,7 @@
BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/jelly/luminescent,
BODY_ZONE_CHEST = /obj/item/bodypart/chest/jelly/luminescent,
)
- mutanteyes = /obj/item/organ/internal/eyes
+ mutanteyes = /obj/item/organ/eyes
/// How strong is our glow
var/glow_intensity = LUMINESCENT_DEFAULT_GLOW
/// Internal dummy used to glow (very cool)
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index 346ecef9060..f8c1dd92bff 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -9,13 +9,13 @@
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE
mutant_bodyparts = list("body_markings" = "None", "legs" = "Normal Legs") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/lizard = "None")
mutant_organs = list(
- /obj/item/organ/external/horns = "None",
- /obj/item/organ/external/frills = "None",
- /obj/item/organ/external/snout = "Round",
- /obj/item/organ/external/spines = "None",
- /obj/item/organ/external/tail/lizard = "Smooth",
+ /obj/item/organ/horns = "None",
+ /obj/item/organ/frills = "None",
+ /obj/item/organ/snout = "Round",
+ /obj/item/organ/spines = "None",
+ /obj/item/organ/tail/lizard = "Smooth",
)
- mutanttongue = /obj/item/organ/internal/tongue/lizard
+ mutanttongue = /obj/item/organ/tongue/lizard
coldmod = 1.5
heatmod = 0.67
payday_modifier = 1.0
@@ -169,8 +169,8 @@ Lizard subspecies: ASHWALKERS
name = "Ash Walker"
id = SPECIES_LIZARD_ASH
examine_limb_id = SPECIES_LIZARD
- mutantlungs = /obj/item/organ/internal/lungs/lavaland
- mutantbrain = /obj/item/organ/internal/brain/primitive
+ mutantlungs = /obj/item/organ/lungs/lavaland
+ mutantbrain = /obj/item/organ/brain/primitive
inherent_traits = list(
TRAIT_MUTANT_COLORS,
TRAIT_VIRUSIMMUNE,
@@ -211,15 +211,11 @@ Lizard subspecies: SILVER SCALED
mutantlungs = null
damage_modifier = 10 //very light silvery scales soften blows
species_language_holder = /datum/language_holder/lizard/silver
- mutanttongue = /obj/item/organ/internal/tongue/lizard/silver
+ mutanttongue = /obj/item/organ/tongue/lizard/silver
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN
examine_limb_id = SPECIES_LIZARD
///stored mutcolor for when we turn back off of a silverscale.
var/old_mutcolor
- ///stored eye color for when we turn back off of a silverscale.
- var/old_eye_color_left
- ///See above
- var/old_eye_color_right
/datum/species/lizard/silverscale/get_physical_attributes()
return "Silver Scales are to lizardpeople what angels are to humans. \
@@ -228,17 +224,13 @@ Lizard subspecies: SILVER SCALED
/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load)
old_mutcolor = new_silverscale.dna.features["mcolor"]
- old_eye_color_left = new_silverscale.eye_color_left
- old_eye_color_right = new_silverscale.eye_color_right
new_silverscale.dna.features["mcolor"] = "#eeeeee"
- new_silverscale.eye_color_left = "#0000a0"
- new_silverscale.eye_color_right = "#0000a0"
+ new_silverscale.add_eye_color("#0000a0", EYE_COLOR_SPECIES_PRIORITY)
. = ..()
new_silverscale.add_filter("silver_glint", 2, list("type" = "outline", "color" = "#ffffff63", "size" = 2))
/datum/species/lizard/silverscale/on_species_loss(mob/living/carbon/human/was_silverscale, datum/species/new_species, pref_load)
was_silverscale.dna.features["mcolor"] = old_mutcolor
- was_silverscale.eye_color_left = old_eye_color_left
- was_silverscale.eye_color_right = old_eye_color_right
+ was_silverscale.remove_eye_color(EYE_COLOR_SPECIES_PRIORITY)
was_silverscale.remove_filter("silver_glint")
return ..()
diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm
index 0d332c78c58..057dffbf222 100644
--- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm
+++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm
@@ -4,10 +4,10 @@
name = "\improper Monkey"
id = SPECIES_MONKEY
mutant_organs = list(
- /obj/item/organ/external/tail/monkey = "Monkey",
+ /obj/item/organ/tail/monkey = "Monkey",
)
- mutanttongue = /obj/item/organ/internal/tongue/monkey
- mutantbrain = /obj/item/organ/internal/brain/primate
+ mutanttongue = /obj/item/organ/tongue/monkey
+ mutantbrain = /obj/item/organ/brain/primate
skinned_type = /obj/item/stack/sheet/animalhide/monkey
meat = /obj/item/food/meat/slab/monkey
knife_butcher_results = list(/obj/item/food/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1)
@@ -123,7 +123,7 @@
return to_add
-/obj/item/organ/internal/brain/primate //Ook Ook
+/obj/item/organ/brain/primate //Ook Ook
name = "Primate Brain"
desc = "This wad of meat is small, but has enlaged occipital lobes for spotting bananas."
organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE, TRAIT_GUN_NATURAL) // No literacy or advanced tool usage.
@@ -143,7 +143,7 @@
if(!.)
return
- var/obj/item/organ/internal/brain/primate/monkey_brain = target
+ var/obj/item/organ/brain/primate/monkey_brain = target
if(monkey_brain.tripping)
monkey_brain.tripping = FALSE
background_icon_state = "bg_default"
@@ -154,21 +154,21 @@
to_chat(monkey_brain.owner, span_notice("You will now stumble while while colliding with people who are in combat mode."))
build_all_button_icons()
-/obj/item/organ/internal/brain/primate/on_mob_insert(mob/living/carbon/primate)
+/obj/item/organ/brain/primate/on_mob_insert(mob/living/carbon/primate)
. = ..()
RegisterSignal(primate, COMSIG_LIVING_MOB_BUMPED, PROC_REF(on_mob_bump))
-/obj/item/organ/internal/brain/primate/on_mob_remove(mob/living/carbon/primate)
+/obj/item/organ/brain/primate/on_mob_remove(mob/living/carbon/primate)
. = ..()
UnregisterSignal(primate, COMSIG_LIVING_MOB_BUMPED)
-/obj/item/organ/internal/brain/primate/proc/on_mob_bump(mob/source, mob/living/crossing_mob)
+/obj/item/organ/brain/primate/proc/on_mob_bump(mob/source, mob/living/crossing_mob)
SIGNAL_HANDLER
if(!tripping || !crossing_mob.combat_mode)
return
crossing_mob.knockOver(owner)
-/obj/item/organ/internal/brain/primate/get_attacking_limb(mob/living/carbon/human/target)
+/obj/item/organ/brain/primate/get_attacking_limb(mob/living/carbon/human/target)
if(!HAS_TRAIT(owner, TRAIT_ADVANCEDTOOLUSER))
return owner.get_bodypart(BODY_ZONE_HEAD)
return ..()
diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
index 5bf4d6a2426..67d9a5039dc 100644
--- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
@@ -4,10 +4,10 @@
id = SPECIES_MOTH
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
mutant_bodyparts = list("moth_markings" = "None") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/moth = "None")
- //mutant_organs = list(/obj/item/organ/external/wings/moth = "Plain", /obj/item/organ/external/antennae = "Plain") // NOVA EDIT REMOVAL - Fixing moths
+ //mutant_organs = list(/obj/item/organ/wings/moth = "Plain", /obj/item/organ/antennae = "Plain") // NOVA EDIT REMOVAL - Fixing moths
meat = /obj/item/food/meat/slab/human/mutant/moth
- mutanttongue = /obj/item/organ/internal/tongue/moth
- mutanteyes = /obj/item/organ/internal/eyes/moth
+ mutanttongue = /obj/item/organ/tongue/moth
+ mutanteyes = /obj/item/organ/eyes/moth
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
species_cookie = /obj/item/food/muffin/moffin
species_language_holder = /datum/language_holder/moth
diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
index 81efd0eaadd..05406351f2f 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -6,7 +6,7 @@
fixed_mut_color = "#DBBF92"
- mutant_organs = list(/obj/item/organ/external/mushroom_cap = "Round")
+ mutant_organs = list(/obj/item/organ/mushroom_cap = "Round")
inherent_traits = list(
TRAIT_MUTANT_COLORS,
@@ -20,8 +20,8 @@
heatmod = 1.5
- mutanttongue = /obj/item/organ/internal/tongue/mush
- mutanteyes = /obj/item/organ/internal/eyes/night_vision/mushroom
+ mutanttongue = /obj/item/organ/tongue/mush
+ mutanteyes = /obj/item/organ/eyes/night_vision/mushroom
mutantlungs = null
species_language_holder = /datum/language_holder/mushroom
@@ -61,7 +61,7 @@
return "#FF4B19" //cap color, spot color uses eye color
/// A mushpersons mushroom cap organ
-/obj/item/organ/external/mushroom_cap
+/obj/item/organ/mushroom_cap
name = "mushroom cap"
desc = "These are yummie, no cap."
@@ -77,10 +77,13 @@
bodypart_overlay = /datum/bodypart_overlay/mutant/mushroom_cap
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
/// Bodypart overlay for the mushroom cap organ
/datum/bodypart_overlay/mutant/mushroom_cap
layers = EXTERNAL_ADJACENT
feature_key = "caps"
+ dyable = TRUE
/datum/bodypart_overlay/mutant/mushroom_cap/get_global_feature_list()
return SSaccessories.caps_list
@@ -90,3 +93,7 @@
return FALSE
return TRUE
+
+/datum/bodypart_overlay/mutant/mushroom_cap/override_color(obj/item/bodypart/bodypart_owner)
+ //The mushroom cap is red by default (can still be dyed)
+ return "#FF4B19"
diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
index dcfbc70ca6d..3215cc5d292 100644
--- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
@@ -19,10 +19,10 @@
inherent_biotypes = MOB_HUMANOID|MOB_MINERAL
inherent_respiration_type = RESPIRATION_PLASMA
- mutantlungs = /obj/item/organ/internal/lungs/plasmaman
- mutanttongue = /obj/item/organ/internal/tongue/bone/plasmaman
- mutantliver = /obj/item/organ/internal/liver/bone/plasmaman
- mutantstomach = /obj/item/organ/internal/stomach/bone/plasmaman
+ mutantlungs = /obj/item/organ/lungs/plasmaman
+ mutanttongue = /obj/item/organ/tongue/bone/plasmaman
+ mutantliver = /obj/item/organ/liver/bone/plasmaman
+ mutantstomach = /obj/item/organ/stomach/bone/plasmaman
mutantappendix = null
mutantheart = null
heatmod = 1.5
diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
index 577e80c9124..951a00d2e66 100644
--- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
@@ -8,7 +8,7 @@
TRAIT_PLANT_SAFE,
)
mutant_organs = list(
- // /obj/item/organ/external/pod_hair = "None", // NOVA EDIT REMOVAL - Customization (it messes up unit tests.)
+ // /obj/item/organ/pod_hair = "None", // NOVA EDIT REMOVAL - Customization (it messes up unit tests.)
)
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT
inherent_factions = list(FACTION_PLANTS, FACTION_VINES)
@@ -19,7 +19,7 @@
exotic_blood = /datum/reagent/water
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
species_language_holder = /datum/language_holder/plant
- mutanttongue = /obj/item/organ/internal/tongue/pod
+ mutanttongue = /obj/item/organ/tongue/pod
bodypart_overrides = list(
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/pod,
BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/pod,
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 1723dbaa366..f2b7ed5466c 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -16,8 +16,8 @@
inherent_factions = list(FACTION_FAITHLESS)
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC
- mutantbrain = /obj/item/organ/internal/brain/shadow
- mutanteyes = /obj/item/organ/internal/eyes/shadow
+ mutantbrain = /obj/item/organ/brain/shadow
+ mutanteyes = /obj/item/organ/eyes/shadow
mutantheart = null
mutantlungs = null
@@ -89,7 +89,7 @@
return to_add
-/obj/item/organ/internal/eyes/shadow
+/obj/item/organ/eyes/shadow
name = "burning red eyes"
desc = "Even without their shadowy owner, looking at these eyes gives you a sense of dread."
icon = 'icons/obj/medical/organs/shadow_organs.dmi'
@@ -98,14 +98,14 @@
flash_protect = FLASH_PROTECTION_SENSITIVE
/// the key to some of their powers
-/obj/item/organ/internal/brain/shadow
+/obj/item/organ/brain/shadow
name = "shadowling tumor"
desc = "Something that was once a brain, before being remolded by a shadowling. It has adapted to the dark, irreversibly."
icon = 'icons/obj/medical/organs/shadow_organs.dmi'
/// What status effect do we gain while in darkness?
var/applied_status = /datum/status_effect/shadow_regeneration
-/obj/item/organ/internal/brain/shadow/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/brain/shadow/on_life(seconds_per_tick, times_fired)
. = ..()
var/turf/owner_turf = owner.loc
if(!isturf(owner_turf))
diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm
index ca87d845a7b..d1d2345ed75 100644
--- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm
+++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm
@@ -25,11 +25,11 @@
TRAIT_XENO_IMMUNE,
)
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
- mutanttongue = /obj/item/organ/internal/tongue/bone
- mutantstomach = /obj/item/organ/internal/stomach/bone
+ mutanttongue = /obj/item/organ/tongue/bone
+ mutantstomach = /obj/item/organ/stomach/bone
mutantappendix = null
mutantheart = null
- mutantliver = /obj/item/organ/internal/liver/bone
+ mutantliver = /obj/item/organ/liver/bone
mutantlungs = null
//They can technically be in an ERT
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | ERT_SPAWN
diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm
index f7a5fbdb51e..d06adf1307a 100644
--- a/code/modules/mob/living/carbon/human/species_types/snail.dm
+++ b/code/modules/mob/living/carbon/human/species_types/snail.dm
@@ -14,8 +14,8 @@
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP
sexes = FALSE //snails are hermaphrodites
- mutanteyes = /obj/item/organ/internal/eyes/snail
- mutanttongue = /obj/item/organ/internal/tongue/snail
+ mutanteyes = /obj/item/organ/eyes/snail
+ mutanttongue = /obj/item/organ/tongue/snail
exotic_blood = /datum/reagent/lube
bodypart_overrides = list(
diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm
index 9333d598758..a12cd6876fc 100644
--- a/code/modules/mob/living/carbon/human/species_types/vampire.dm
+++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm
@@ -4,7 +4,7 @@
///maximum a vampire will drain, they will drain less if they hit their cap
#define VAMP_DRAIN_AMOUNT 50
-/datum/species/vampire
+/datum/species/human/vampire
name = "Vampire"
id = SPECIES_VAMPIRE
examine_limb_id = SPECIES_HUMAN
@@ -18,33 +18,33 @@
)
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
changesource_flags = MIRROR_BADMIN | MIRROR_PRIDE | WABBAJACK | ERT_SPAWN
- exotic_bloodtype = "U"
+ exotic_bloodtype = "V"
blood_deficiency_drain_rate = BLOOD_DEFICIENCY_MODIFIER // vampires already passively lose blood, so this just makes them lose it slightly more quickly when they have blood deficiency.
- mutantheart = /obj/item/organ/internal/heart/vampire
- mutanttongue = /obj/item/organ/internal/tongue/vampire
- mutantstomach = null
- mutantlungs = null
- skinned_type = /obj/item/stack/sheet/animalhide/human
+ mutantheart = /obj/item/organ/heart/vampire
+ mutanttongue = /obj/item/organ/tongue/vampire
///some starter text sent to the vampire initially, because vampires have shit to do to stay alive
var/info_text = "You are a Vampire. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability."
-/datum/species/vampire/check_roundstart_eligible()
+/datum/species/human/vampire/check_roundstart_eligible()
if(check_holidays(HALLOWEEN))
return TRUE
return ..()
-/datum/species/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species)
+/datum/species/human/vampire/prepare_human_for_preview(mob/living/carbon/human/human)
+ return // Skip parent proc
+
+/datum/species/human/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species)
. = ..()
to_chat(new_vampire, "[info_text]")
new_vampire.skin_tone = "albino"
new_vampire.update_body(0)
RegisterSignal(new_vampire, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness))
-/datum/species/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
+/datum/species/human/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
. = ..()
UnregisterSignal(C, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS)
-/datum/species/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired)
+/datum/species/human/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired)
. = ..()
if(istype(vampire.loc, /obj/structure/closet/crate/coffin))
var/need_mob_update = FALSE
@@ -66,27 +66,27 @@
vampire.adjust_fire_stacks(3 * seconds_per_tick)
vampire.ignite_mob()
-/datum/species/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
+/datum/species/human/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
SIGNAL_HANDLER
if(istype(attacking_item, /obj/item/nullrod/whip))
damage_mods += 2
-/datum/species/vampire/get_physical_attributes()
+/datum/species/human/vampire/get_physical_attributes()
return "Vampires are afflicted with the Thirst, needing to sate it by draining the blood out of another living creature. However, they do not need to breathe or eat normally. \
They will instantly turn into dust if they run out of blood or enter a holy area. However, coffins stabilize and heal them, and they can transform into bats!"
-/datum/species/vampire/get_species_description()
+/datum/species/human/vampire/get_species_description()
return "A classy Vampire! They descend upon Space Station Thirteen Every year to spook the crew! \"Bleeg!!\""
-/datum/species/vampire/get_species_lore()
+/datum/species/human/vampire/get_species_lore()
return list(
"Vampires are unholy beings blessed and cursed with The Thirst. \
The Thirst requires them to feast on blood to stay alive, and in return it gives them many bonuses. \
Because of this, Vampires have split into two clans, one that embraces their powers as a blessing and one that rejects it.",
)
-/datum/species/vampire/create_pref_unique_perks()
+/datum/species/human/vampire/create_pref_unique_perks()
var/list/to_add = list()
to_add += list(
@@ -115,7 +115,7 @@
return to_add
// Vampire blood is special, so it needs to be handled with its own entry.
-/datum/species/vampire/create_pref_blood_perks()
+/datum/species/human/vampire/create_pref_blood_perks()
var/list/to_add = list()
to_add += list(list(
@@ -132,7 +132,7 @@
return to_add
// There isn't a "Minor Undead" biotype, so we have to explain it in an override (see: dullahans)
-/datum/species/vampire/create_pref_biotypes_perks()
+/datum/species/human/vampire/create_pref_biotypes_perks()
var/list/to_add = list()
to_add += list(list(
@@ -147,7 +147,7 @@
return to_add
-/obj/item/organ/internal/tongue/vampire
+/obj/item/organ/tongue/vampire
name = "vampire tongue"
actions_types = list(/datum/action/item_action/organ_action/vampire)
color = COLOR_CRAYON_BLACK
@@ -161,7 +161,7 @@
. = ..()
if(iscarbon(owner))
var/mob/living/carbon/H = owner
- var/obj/item/organ/internal/tongue/vampire/V = target
+ var/obj/item/organ/tongue/vampire/V = target
if(!COOLDOWN_FINISHED(V, drain_cooldown))
to_chat(H, span_warning("You just drained blood, wait a few seconds!"))
return
@@ -197,19 +197,19 @@
if(!victim.blood_volume)
to_chat(H, span_notice("You finish off [victim]'s blood supply."))
-/obj/item/organ/internal/heart/vampire
+/obj/item/organ/heart/vampire
name = "vampire heart"
color = COLOR_CRAYON_BLACK
-/obj/item/organ/internal/heart/vampire/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/heart/vampire/on_mob_insert(mob/living/carbon/receiver)
. = ..()
RegisterSignal(receiver, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item))
-/obj/item/organ/internal/heart/vampire/on_mob_remove(mob/living/carbon/heartless)
+/obj/item/organ/heart/vampire/on_mob_remove(mob/living/carbon/heartless)
. = ..()
UnregisterSignal(heartless, COMSIG_MOB_GET_STATUS_TAB_ITEMS)
-/obj/item/organ/internal/heart/vampire/proc/get_status_tab_item(mob/living/carbon/source, list/items)
+/obj/item/organ/heart/vampire/proc/get_status_tab_item(mob/living/carbon/source, list/items)
SIGNAL_HANDLER
items += "Blood Level: [source.blood_volume]/[BLOOD_VOLUME_MAXIMUM]"
diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm
index e338d94e711..77d2765ba98 100644
--- a/code/modules/mob/living/carbon/human/species_types/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm
@@ -4,7 +4,7 @@
id = SPECIES_ZOMBIE
sexes = FALSE
meat = /obj/item/food/meat/slab/human/mutant/zombie
- mutanttongue = /obj/item/organ/internal/tongue/zombie
+ mutanttongue = /obj/item/organ/tongue/zombie
inherent_traits = list(
// SHARED WITH ALL ZOMBIES
TRAIT_EASILY_WOUNDED,
@@ -95,8 +95,9 @@
id = SPECIES_ZOMBIE_INFECTIOUS
examine_limb_id = SPECIES_ZOMBIE
damage_modifier = 20 // 120 damage to KO a zombie, which kills it
- mutanteyes = /obj/item/organ/internal/eyes/zombie
- mutantbrain = /obj/item/organ/internal/brain/zombie
+ mutanteyes = /obj/item/organ/eyes/zombie
+ mutantbrain = /obj/item/organ/brain/zombie
+ mutanttongue = /obj/item/organ/tongue/zombie
changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN
inherent_traits = list(
@@ -138,7 +139,7 @@
// Deal with the source of this zombie corruption
// Infection organ needs to be handled separately from mutant_organs
// because it persists through species transitions
- var/obj/item/organ/internal/zombie_infection/infection = new_zombie.get_organ_slot(ORGAN_SLOT_ZOMBIE)
+ var/obj/item/organ/zombie_infection/infection = new_zombie.get_organ_slot(ORGAN_SLOT_ZOMBIE)
if(isnull(infection))
infection = new()
infection.Insert(new_zombie)
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 28c9e987c46..2a08c8a7036 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -48,8 +48,8 @@
// Start of a breath chain, calls [carbon/proc/breathe()]
/mob/living/carbon/handle_breathing(seconds_per_tick, times_fired)
var/next_breath = 4
- var/obj/item/organ/internal/lungs/L = get_organ_slot(ORGAN_SLOT_LUNGS)
- var/obj/item/organ/internal/heart/H = get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/lungs/L = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/heart/H = get_organ_slot(ORGAN_SLOT_HEART)
if(L)
if(L.damage > L.high_threshold)
next_breath--
@@ -70,7 +70,7 @@
// Second link in a breath chain, calls [carbon/proc/check_breath()]
/mob/living/carbon/proc/breathe(seconds_per_tick, times_fired)
- var/obj/item/organ/internal/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
var/is_on_internals = FALSE
if(SEND_SIGNAL(src, COMSIG_CARBON_ATTEMPT_BREATHE, seconds_per_tick, times_fired) & COMSIG_CARBON_BLOCK_BREATH)
@@ -205,7 +205,7 @@
/// Indicates if there are moles of gas in the breath.
var/has_moles = breath.total_moles() != 0
- var/obj/item/organ/internal/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
// Indicates if lungs can breathe without gas.
var/can_breathe_vacuum = FALSE
if(lungs)
@@ -500,7 +500,7 @@
if(stat == DEAD)
if(reagents && (reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1) || reagents.has_reagent(/datum/reagent/cryostylane))) // No organ decay if the body contains formaldehyde.
return
- for(var/obj/item/organ/internal/organ in organs)
+ for(var/obj/item/organ/organ in organs)
// On-death is where organ decay is handled
if(organ?.owner) // organ + owner can be null due to reagent metabolization causing organ shuffling
organ.on_death(seconds_per_tick, times_fired)
@@ -513,7 +513,7 @@
for(var/slot in organs_slot)
// We don't use get_organ_slot here because we know we have the organ we want, since we're iterating the list containing em already
// This code is hot enough that it's just not worth the time
- var/obj/item/organ/internal/organ = organs_slot[slot]
+ var/obj/item/organ/organ = organs_slot[slot]
if(organ?.owner) // This exist mostly because reagent metabolization can cause organ reshuffling
organ.on_life(seconds_per_tick, times_fired)
@@ -725,7 +725,7 @@
/mob/living/carbon/get_fullness()
var/fullness = nutrition
- var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
if(!belly) //nothing to see here if we do not have a stomach
return fullness
@@ -743,7 +743,7 @@
. = ..()
if(.)
return
- var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
if(!belly)
return FALSE
return belly.reagents.has_reagent(reagent, amount, needs_metabolizing)
@@ -758,7 +758,7 @@
if(isnull(has_dna()))
return
- var/obj/item/organ/internal/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
if(liver)
return
@@ -772,7 +772,7 @@
adjustOrganLoss(pick(ORGAN_SLOT_HEART, ORGAN_SLOT_LUNGS, ORGAN_SLOT_STOMACH, ORGAN_SLOT_EYES, ORGAN_SLOT_EARS), 0.5* seconds_per_tick)
/mob/living/carbon/proc/undergoing_liver_failure()
- var/obj/item/organ/internal/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
if(liver?.organ_flags & ORGAN_FAILING)
return TRUE
@@ -792,7 +792,7 @@
/mob/living/carbon/proc/can_heartattack()
if(!needs_heart())
return FALSE
- var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
if(!heart || IS_ROBOTIC_ORGAN(heart))
return FALSE
return TRUE
@@ -812,7 +812,7 @@
* related situations (i.e not just cardiac arrest)
*/
/mob/living/carbon/proc/undergoing_cardiac_arrest()
- var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
if(istype(heart) && heart.is_beating())
return FALSE
else if(!needs_heart())
@@ -830,7 +830,7 @@
if(status && !can_heartattack())
return FALSE
- var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
if(!istype(heart))
return FALSE
diff --git a/code/modules/mob/living/carbon/skillchip.dm b/code/modules/mob/living/carbon/skillchip.dm
index 19009f21892..062ec616a51 100644
--- a/code/modules/mob/living/carbon/skillchip.dm
+++ b/code/modules/mob/living/carbon/skillchip.dm
@@ -9,7 +9,7 @@
*/
/mob/living/carbon/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE)
// Grab the brain.
- var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
// Check for the brain. No brain = no implant.
if(QDELETED(brain))
@@ -37,7 +37,7 @@
*/
/mob/living/carbon/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE)
// Check the target's brain, making sure the target exists and has a brain.
- var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
if(QDELETED(brain))
return FALSE
@@ -59,7 +59,7 @@
*/
/mob/living/carbon/proc/clone_skillchip_list(not_removable = FALSE)
// Check the target's brain, making sure the target exists and has a brain.
- var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
if(QDELETED(brain))
return list()
@@ -70,7 +70,7 @@
*/
/mob/living/carbon/proc/destroy_all_skillchips(silent = FALSE)
// Check the target's brain, making sure the target exists and has a brain.
- var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
if(QDELETED(brain))
return FALSE
diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm
index b1ca1733711..a7f46525334 100644
--- a/code/modules/mob/living/carbon/status_procs.dm
+++ b/code/modules/mob/living/carbon/status_procs.dm
@@ -16,17 +16,17 @@
/mob/living/carbon/proc/get_traumas()
. = list()
- var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
if(B)
. = B.traumas
/mob/living/carbon/proc/has_trauma_type(brain_trauma_type, resilience)
- var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
if(B)
. = B.has_trauma_type(brain_trauma_type, resilience)
/mob/living/carbon/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...)
- var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
if(B)
var/list/arguments = list()
if(args.len > 2)
@@ -34,16 +34,16 @@
. = B.brain_gain_trauma(trauma, resilience, arguments)
/mob/living/carbon/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience)
- var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
if(B)
. = B.gain_trauma_type(brain_trauma_type, resilience)
/mob/living/carbon/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience)
- var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
if(B)
. = B.cure_trauma_type(brain_trauma_type, resilience)
/mob/living/carbon/proc/cure_all_traumas(resilience)
- var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
if(B)
. = B.cure_all_traumas(resilience)
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 24462670f07..5f3313ef37f 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -310,7 +310,7 @@
if(HAS_TRAIT(src, TRAIT_GODMODE))
return FALSE
if (required_respiration_type)
- var/obj/item/organ/internal/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
if(isnull(affected_lungs))
if(!(mob_respiration_type & required_respiration_type)) // if the mob has no lungs, use mob_respiration_type
return FALSE
@@ -337,7 +337,7 @@
if(HAS_TRAIT(src, TRAIT_GODMODE))
return FALSE
- var/obj/item/organ/internal/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
if(isnull(affected_lungs))
if(!(mob_respiration_type & required_respiration_type))
return FALSE
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 51ef4e42e02..0e9f6f8372e 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -139,22 +139,27 @@
/datum/emote/living/flap/run_emote(mob/user, params, type_override, intentional)
. = ..()
- if(ishuman(user))
- var/mob/living/carbon/human/human_user = user
- var/open = FALSE
- var/obj/item/organ/external/wings/functional/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
-
- // open/close functional wings
- if(istype(wings))
- if(wings.wings_open)
- open = TRUE
- wings.close_wings()
- else
- wings.open_wings()
- addtimer(CALLBACK(wings, open ? TYPE_PROC_REF(/obj/item/organ/external/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/external/wings/functional, close_wings)), wing_time)
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/human_user = user
+ var/obj/item/organ/wings/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
- // play a flapping noise if the wing has this implemented
- wings.make_flap_sound(human_user)
+ // play a flapping noise if the wing has this implemented
+ if(!istype(wings))
+ return
+ wings.make_flap_sound(human_user)
+
+ // open/close functional wings
+ var/obj/item/organ/wings/functional/wings_functional = wings
+ if(!istype(wings_functional))
+ return
+ var/open = FALSE
+ if(wings_functional.wings_open)
+ open = TRUE
+ wings_functional.close_wings()
+ else
+ wings_functional.open_wings()
+ addtimer(CALLBACK(wings_functional, open ? TYPE_PROC_REF(/obj/item/organ/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/wings/functional, close_wings)), wing_time)
/datum/emote/living/flap/aflap
key = "aflap"
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 1fa2e11ac64..f6acc4e8add 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -66,7 +66,7 @@
// multiplier for the damage taken from falling
var/damage_softening_multiplier = 1
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
damage_softening_multiplier *= potential_spine.athletics_boost_multiplier
@@ -78,7 +78,7 @@
// If you are incapped, you probably can't brace yourself
var/can_help_themselves = !INCAPACITATED_IGNORING(src, INCAPABLE_RESTRAINTS)
if(levels <= 1 && can_help_themselves)
- var/obj/item/organ/external/wings/gliders = get_organ_by_type(/obj/item/organ/external/wings)
+ var/obj/item/organ/wings/gliders = get_organ_by_type(/obj/item/organ/wings)
if(HAS_TRAIT(src, TRAIT_FREERUNNING) || gliders?.can_soften_fall()) // the power of parkour or wings allows falling short distances unscathed
var/graceful_landing = HAS_TRAIT(src, TRAIT_CATLIKE_GRACE)
@@ -726,7 +726,7 @@
var/get_up_time = 1 SECONDS
- var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+ var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
if(istype(potential_spine))
get_up_time *= potential_spine.athletics_boost_multiplier
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 119825d02cd..36eeb7d3efe 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -675,7 +675,7 @@
/** Handles exposing a mob to reagents.
*
- * If the methods include INGEST the mob tastes the reagents.
+ * If the methods include INGEST or INHALE, the mob tastes the reagents.
* If the methods include VAPOR it incorporates permiability protection.
*/
/mob/living/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE)
@@ -683,8 +683,8 @@
if(. & COMPONENT_NO_EXPOSE_REAGENTS)
return
- if(methods & INGEST)
- taste(source)
+ if(methods & (INGEST | INHALE))
+ taste_list(reagents)
var/touch_protection = (methods & VAPOR) ? getarmor(null, BIO) * 0.01 : 0
SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_MOB, src, reagents, methods, volume_modifier, show_message, touch_protection)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 110c502ba45..323f9a688f5 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -456,7 +456,7 @@
if(hack_software)
new/obj/item/malf_upgrade(get_turf(src))
the_mmi = mmi_type
- the_mmi.brain = new /obj/item/organ/internal/brain(the_mmi)
+ the_mmi.brain = new /obj/item/organ/brain(the_mmi)
the_mmi.brain.organ_flags |= ORGAN_FROZEN
the_mmi.brain.name = "[real_name]'s brain"
the_mmi.name = "[initial(the_mmi.name)]: [real_name]"
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index ac9ca46d9b9..d33e7e7bcc1 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -64,7 +64,7 @@
//MMI stuff. Held togheter by magic. ~Miauw
if(!mmi?.brainmob)
mmi = new (src)
- mmi.brain = new /obj/item/organ/internal/brain(mmi)
+ mmi.brain = new /obj/item/organ/brain(mmi)
mmi.brain.organ_flags |= ORGAN_FROZEN
mmi.brain.name = "[real_name]'s brain"
mmi.name = "[initial(mmi.name)]: [real_name]"
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index c7171b3c555..f1e34612713 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -153,7 +153,7 @@ Difficulty: Hard
*/
/mob/living/simple_animal/hostile/megafauna/bubblegum/attackby(obj/item/W, mob/user, params)
. = ..()
- if(istype(W, /obj/item/organ/internal/tongue))
+ if(istype(W, /obj/item/organ/tongue))
user.client?.give_award(/datum/award/achievement/jobs/frenching, user)
/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index b40a793f0fc..1cf118d5876 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -274,8 +274,8 @@ While using this makes the system rely on OnFire, it still gives options for tim
/obj/structure/elite_tumor/item_interaction(mob/living/user, obj/item/attacking_item, list/modifiers)
. = NONE
- if(istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core) && activity == TUMOR_INACTIVE && !boosted)
- var/obj/item/organ/internal/monster_core/regenerative_core/core = attacking_item
+ if(istype(attacking_item, /obj/item/organ/monster_core/regenerative_core) && activity == TUMOR_INACTIVE && !boosted)
+ var/obj/item/organ/monster_core/regenerative_core/core = attacking_item
visible_message(span_boldwarning("As [user] drops the core into [src], [src] appears to swell."))
icon_state = "advanced_tumor"
boosted = TRUE
diff --git a/code/modules/mob/living/taste.dm b/code/modules/mob/living/taste.dm
index 2b88984bf41..5da5781b2ed 100644
--- a/code/modules/mob/living/taste.dm
+++ b/code/modules/mob/living/taste.dm
@@ -14,7 +14,7 @@
return DEFAULT_TASTE_SENSITIVITY
/mob/living/carbon/get_taste_sensitivity()
- var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
if(istype(tongue))
. = tongue.taste_sensitivity
else
@@ -22,28 +22,65 @@
. = DEFAULT_TASTE_SENSITIVITY
/**
- * Non destructively tastes a reagent container
+ * Non-destructively tastes a reagent container
* and gives feedback to the user.
+ * Arguments:
+ * * datum/reagents/from - Reagent holder to taste from.
**/
-/mob/living/proc/taste(datum/reagents/from)
- if(HAS_TRAIT(src, TRAIT_AGEUSIA))
+/mob/living/proc/taste_container(datum/reagents/from)
+ if(check_tasting_blocks())
return
- if(last_taste_time + 50 < world.time)
- var/taste_sensitivity = get_taste_sensitivity()
- var/text_output = from.generate_taste_message(src, taste_sensitivity)
- // We dont want to spam the same message over and over again at the
- // person. Give it a bit of a buffer.
- if(get_timed_status_effect_duration(/datum/status_effect/hallucination) > 100 SECONDS && prob(25))
- text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\
+ var/taste_sensitivity = get_taste_sensitivity()
+ var/text_output = from.generate_taste_message(src, taste_sensitivity)
+ send_taste_message(text_output)
+
+/**
+ * Non-destructively tastes a reagent list
+ * and gives feedback to the user.
+ * Arguments:
+ * * list/from - List of reagents to taste from.
+ **/
+/mob/living/proc/taste_list(list/from)
+ if(check_tasting_blocks())
+ return
+
+ var/taste_sensitivity = get_taste_sensitivity()
+ var/text_output = generate_reagents_taste_message(from, src, taste_sensitivity)
+ send_taste_message(text_output)
+
+/**
+ * Check for anything blocking/overriding our tasting.
+ * Returns TRUE on a block, FALSE if not.
+ **/
+/mob/living/proc/check_tasting_blocks()
+ if(HAS_TRAIT(src, TRAIT_AGEUSIA))
+ return TRUE
+ if(last_taste_time + 50 >= world.time)
+ return TRUE
+
+ // Sometimes, try send a replacement message if we're hallucinating
+ if(get_timed_status_effect_duration(/datum/status_effect/hallucination) > 100 SECONDS && prob(25))
+ var/text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\
"defeat","pain","bliss","revenge","poison","time","space","death","life","truth","lies","justice","memory",\
"regrets","your soul","suffering","music","noise","blood","hunger","the american way")
- if(text_output != last_taste_text || last_taste_time + 100 < world.time)
- to_chat(src, span_notice("You can taste [text_output]."))
- // "something indescribable" -> too many tastes, not enough flavor.
+ send_taste_message(text_output)
+ return TRUE
+
+ return FALSE
+
+/**
+ * Attempt to send a taste message using given tastes text.
+ **/
+/mob/living/proc/send_taste_message(tastes_text)
+ if(tastes_text == last_taste_text && last_taste_time + 100 >= world.time)
+ return
+
+ to_chat(src, span_notice("You can taste [tastes_text]."))
+ // "something indescribable" -> too many tastes, not enough flavor.
- last_taste_time = world.time
- last_taste_text = text_output
+ last_taste_time = world.time
+ last_taste_text = tastes_text
/**
* Gets food flags that this mob likes
@@ -57,7 +94,7 @@
// Handled in here since the brain trauma can't modify taste directly (/datum/brain_trauma/severe/flesh_desire)
if(HAS_TRAIT(src, TRAIT_FLESH_DESIRE))
return GORE | MEAT
- var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
. = tongue.liked_foodtypes
if(HAS_TRAIT(src, TRAIT_VEGETARIAN))
. &= ~MEAT
@@ -73,7 +110,7 @@
/mob/living/carbon/get_disliked_foodtypes()
if(HAS_TRAIT(src, TRAIT_AGEUSIA))
return NONE
- var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
. = tongue.disliked_foodtypes
if(HAS_TRAIT(src, TRAIT_VEGETARIAN))
. |= MEAT
@@ -86,7 +123,7 @@
return TOXIC
/mob/living/carbon/get_toxic_foodtypes()
- var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return ..()
if(HAS_TRAIT(src, TRAIT_FLESH_DESIRE))
@@ -140,7 +177,7 @@
return food_taste_reaction
/mob/living/carbon/get_food_taste_reaction(obj/item/food, foodtypes)
- var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
// No tongue, no tastin'
if(!tongue?.sense_of_taste || HAS_TRAIT(src, TRAIT_AGEUSIA))
// i hate that i have to do this, but we want to ensure toxic food is still BAD
diff --git a/code/modules/mob_spawn/corpses/mining_corpses.dm b/code/modules/mob_spawn/corpses/mining_corpses.dm
index 3963cefcb49..e9a4a9b0504 100644
--- a/code/modules/mob_spawn/corpses/mining_corpses.dm
+++ b/code/modules/mob_spawn/corpses/mining_corpses.dm
@@ -26,7 +26,7 @@
/obj/effect/mob_spawn/corpse/human/legioninfested/special(mob/living/carbon/human/spawned_human)
. = ..()
- var/obj/item/organ/internal/legion_tumour/cancer = new()
+ var/obj/item/organ/legion_tumour/cancer = new()
cancer.Insert(spawned_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
/// Returns the outfit worn by our corpse
diff --git a/code/modules/mob_spawn/ghost_roles/golem_roles.dm b/code/modules/mob_spawn/ghost_roles/golem_roles.dm
index 5fc643bffa6..af7cde7320d 100644
--- a/code/modules/mob_spawn/ghost_roles/golem_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/golem_roles.dm
@@ -78,7 +78,7 @@
if(!ishuman(new_spawn))
return
var/mob/living/carbon/human/new_golem = new_spawn
- var/obj/item/organ/internal/vocal_cords/adamantine/free_golem_radio = new()
+ var/obj/item/organ/vocal_cords/adamantine/free_golem_radio = new()
free_golem_radio.Insert(new_golem)
// Subtype which follows orders
diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm
index 019339584af..3081c64c82a 100644
--- a/code/modules/mod/mod_activation.dm
+++ b/code/modules/mod/mod_activation.dm
@@ -26,7 +26,7 @@
return
var/parts_to_check = parts - part
if(part.loc == src)
- if(!deploy(user, part) || (active && !delayed_seal_part(part)))
+ if(!deploy(user, part))
return
SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user)
for(var/obj/item/checking_part as anything in parts_to_check)
@@ -35,7 +35,7 @@
choose_deploy(user)
break
else
- if((active && !delayed_seal_part(part, silent = TRUE)) || !retract(user, part))
+ if(!retract(user, part))
return
SEND_SIGNAL(src, COMSIG_MOD_RETRACTED, user)
for(var/obj/item/checking_part as anything in parts_to_check)
@@ -64,12 +64,7 @@
if(deploy && part.loc == src)
if(!deploy(null, part))
continue
- if(active && !delayed_seal_part(part))
- retract(null, part)
- return
else if(!deploy && part.loc != src)
- if(active && !delayed_seal_part(part))
- return
retract(null, part)
if(deploy)
SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user)
@@ -78,7 +73,7 @@
return TRUE
/// Deploys a part of the suit onto the user.
-/obj/item/mod/control/proc/deploy(mob/user, obj/item/part)
+/obj/item/mod/control/proc/deploy(mob/user, obj/item/part, instant = FALSE)
var/datum/mod_part/part_datum = get_part_datum(part)
if(!wearer)
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
@@ -86,7 +81,7 @@
if(part.loc != src)
if(!user)
return FALSE
- balloon_alert(user, "[part.name] already deployed!")
+ balloon_alert(user, "already deployed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
if(part_datum.can_overslot)
var/obj/item/overslot = wearer.get_item_by_slot(part.slot_flags)
@@ -97,14 +92,21 @@
if(wearer.equip_to_slot_if_possible(part, part.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE))
ADD_TRAIT(part, TRAIT_NODROP, MOD_TRAIT)
wearer.update_clothing(slot_flags)
- if(!user)
+ SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part_datum)
+ if(user)
+ wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."),
+ span_notice("[part] deploy[part.p_s()] with a mechanical hiss."),
+ span_hear("You hear a mechanical hiss."))
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ if(!active || part_datum.sealed)
return TRUE
- wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."),
- span_notice("[part] deploy[part.p_s()] with a mechanical hiss."),
- span_hear("You hear a mechanical hiss."))
- playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
- SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part)
- return TRUE
+ if(instant)
+ seal_part(part, is_sealed = TRUE)
+ return TRUE
+ else if(delayed_seal_part(part))
+ return TRUE
+ balloon_alert(user, "can't seal, retracting!")
+ retract(user, part, instant = TRUE)
else
if(part_datum.overslotting)
var/obj/item/overslot = part_datum.overslotting
@@ -117,14 +119,21 @@
return FALSE
/// Retract a part of the suit from the user.
-/obj/item/mod/control/proc/retract(mob/user, obj/item/part)
+/obj/item/mod/control/proc/retract(mob/user, obj/item/part, instant = FALSE)
var/datum/mod_part/part_datum = get_part_datum(part)
if(part.loc == src)
if(!user)
return FALSE
- balloon_alert(user, "[part.name] already retracted!")
+ balloon_alert(user, "already retracted!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
+ if(active && part_datum.sealed)
+ if(instant)
+ seal_part(part, is_sealed = FALSE)
+ else if(!delayed_seal_part(part))
+ balloon_alert(user, "can't unseal!")
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ return FALSE
REMOVE_TRAIT(part, TRAIT_NODROP, MOD_TRAIT)
wearer.transferItemToLoc(part, src, force = TRUE)
if(part_datum.overslotting)
@@ -132,7 +141,7 @@
if(!QDELING(wearer) && !wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE))
wearer.dropItemToGround(overslot, force = TRUE, silent = TRUE)
wearer.update_clothing(slot_flags)
- SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part)
+ SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part_datum)
if(!user)
return TRUE
wearer.visible_message(span_notice("[wearer]'s [part.name] retract[part.p_s()] back into [src] with a mechanical hiss."),
@@ -145,7 +154,7 @@
/obj/item/mod/control/proc/toggle_activate(mob/user, force_deactivate = FALSE)
if(!wearer)
if(!force_deactivate)
- balloon_alert(user, "equip suit first!")
+ balloon_alert(user, "not equipped!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(!force_deactivate && (SEND_SIGNAL(src, COMSIG_MOD_ACTIVATE, user) & MOD_CANCEL_ACTIVATE))
@@ -156,16 +165,16 @@
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(!get_charge() && !force_deactivate)
- balloon_alert(user, "suit not powered!")
+ balloon_alert(user, "no power source!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(open && !force_deactivate)
- balloon_alert(user, "close the suit panel!")
+ balloon_alert(user, "panel open!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(activating)
if(!force_deactivate)
- balloon_alert(user, "suit already [active ? "shutting down" : "starting up"]!")
+ balloon_alert(user, "already [active ? "shutting down" : "starting up"]!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
for(var/obj/item/mod/module/module as anything in modules)
@@ -221,13 +230,12 @@
SEND_SIGNAL(src, COMSIG_MOD_TOGGLED, user)
return TRUE
-/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part, silent = FALSE)
+/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part)
. = FALSE
var/datum/mod_part/part_datum = get_part_datum(part)
if(do_after(wearer, activation_step_time, wearer, MOD_ACTIVATION_STEP_FLAGS, extra_checks = CALLBACK(src, PROC_REF(get_wearer)), hidden = TRUE))
- if(!silent)
- to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message]."))
- playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message]."))
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
seal_part(part, is_sealed = !part_datum.sealed)
return TRUE
@@ -262,6 +270,7 @@
wearer.update_obscured_slots(part.visor_flags_inv)
if((part.clothing_flags & (MASKINTERNALS|HEADINTERNALS)) && wearer.invalid_internals())
wearer.cutoff_internals()
+ SEND_SIGNAL(src, COMSIG_MOD_PART_SEALED, part_datum)
if(is_sealed)
if (!active)
return
@@ -308,12 +317,8 @@
/// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits.
/obj/item/mod/control/proc/quick_activation()
- for(var/obj/item/part as anything in get_parts())
- deploy(null, part)
- for(var/obj/item/part as anything in get_parts())
- if(part.loc == src)
- continue
- seal_part(part, is_sealed = TRUE)
control_activation(is_on = TRUE)
+ for(var/obj/item/part as anything in get_parts())
+ deploy(null, part, instant = TRUE)
#undef MOD_ACTIVATION_STEP_FLAGS
diff --git a/code/modules/mod/mod_ai.dm b/code/modules/mod/mod_ai.dm
index c268cc02ff3..e209b8ef10a 100644
--- a/code/modules/mod/mod_ai.dm
+++ b/code/modules/mod/mod_ai.dm
@@ -7,19 +7,19 @@
return
// NOVA EDIT END
if(!open) //mod must be open
- balloon_alert(user, "suit must be open to transfer!")
+ balloon_alert(user, "panel closed!")
return
switch(interaction)
if(AI_TRANS_TO_CARD)
if(!ai_assistant)
- balloon_alert(user, "no ai in suit!")
+ balloon_alert(user, "no ai in unit!")
return
balloon_alert(user, "transferring to card...")
if(!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return
if(!ai_assistant)
- balloon_alert(user, "no ai in suit!")
+ balloon_alert(user, "no ai in unit!")
return
balloon_alert(user, "ai transferred to card")
ai_exit_mod(card)
@@ -37,13 +37,13 @@
if(intAI.stat || !intAI.client)
balloon_alert(user, "ai unresponsive!")
return
- balloon_alert(user, "transferring to suit...")
+ balloon_alert(user, "transferring to unit...")
if(!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return
if(ai_assistant)
return
- balloon_alert(user, "ai transferred to suit")
+ balloon_alert(user, "ai transferred to unit")
ai_enter_mod(intAI)
card.AI = null
@@ -78,14 +78,14 @@
if (isnull(card.pai?.mind))
balloon_alert(user, "pAI unresponsive!")
return FALSE
- balloon_alert(user, "transferring to suit...")
+ balloon_alert(user, "transferring to unit...")
if (!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return FALSE
if (!user.transferItemToLoc(card, src))
balloon_alert(user, "transfer failed!")
return FALSE
- balloon_alert(user, "pAI transferred to suit")
+ balloon_alert(user, "pAI transferred to unit")
var/mob/living/silicon/pai/pai_assistant = card.pai
pai_assistant.can_transmit = TRUE
pai_assistant.can_receive = TRUE
@@ -107,14 +107,14 @@
return FALSE
if (!forced)
if (!open)
- balloon_alert(user, "suit panel closed!")
+ balloon_alert(user, "panel closed!")
return FALSE
balloon_alert(user, "uninstalling card...")
if (!do_after(user, 5 SECONDS, target = src))
balloon_alert(user, "interrupted!")
return FALSE
- balloon_alert(user, "pAI removed from suit")
+ balloon_alert(user, "pAI removed")
var/mob/living/silicon/pai/pai_helper = ai_assistant
//pai_helper.can_holo = TRUE //NOVA EDIT REMOVAL - pAI in modsuits can Holoform
pai_helper.card.forceMove(get_turf(src))
@@ -123,7 +123,7 @@
/// Called when a new ai assistant is inserted
/obj/item/mod/control/proc/on_gained_assistant(mob/living/silicon/new_helper)
ai_assistant = new_helper
- balloon_alert(new_helper, "transferred to a suit")
+ balloon_alert(new_helper, "transferred to a mod unit")
for(var/datum/action/action as anything in actions)
action.Grant(new_helper)
@@ -142,7 +142,10 @@
#define AI_FALL_TIME (1 SECONDS)
/obj/item/mod/control/relaymove(mob/user, direction)
- if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE))
+ if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE))
+ return FALSE
+ var/datum/mod_part/legs_to_move = get_part_datum_from_slot(ITEM_SLOT_FEET)
+ if(wearer && (!legs_to_move || !legs_to_move.sealed))
return FALSE
// NOVA EDIT START - pAIs in MODsuits with a bit more functionalities
if(active && !can_pai_move_suit && ispAI(ai_assistant))
@@ -159,7 +162,7 @@
if(ismovable(wearer?.loc))
return wearer.loc.relaymove(wearer, direction)
else if(wearer)
- ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT)
+ ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src))
addtimer(CALLBACK(src, PROC_REF(ai_fall)), AI_FALL_TIME, TIMER_UNIQUE | TIMER_OVERRIDE)
var/atom/movable/mover = wearer || src
return mover.try_step_multiz(direction)
@@ -172,7 +175,7 @@
/obj/item/mod/control/proc/ai_fall()
if(!wearer)
return
- REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT)
+ REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src))
/obj/item/mod/ai_minicard
name = "AI mini-card"
diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm
index 16ce70df945..3581c04e606 100644
--- a/code/modules/mod/mod_construction.dm
+++ b/code/modules/mod/mod_construction.dm
@@ -162,7 +162,7 @@
if(!istype(part, /obj/item/mod/core))
return
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "core stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "core inserted")
@@ -181,7 +181,7 @@
if(SCREWED_CORE_STEP)
if(istype(part, /obj/item/mod/construction/helmet)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "helmet stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "helmet added")
@@ -194,7 +194,7 @@
if(HELMET_STEP)
if(istype(part, /obj/item/mod/construction/chestplate)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "chestplate stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "chestplate added")
@@ -209,7 +209,7 @@
if(CHESTPLATE_STEP)
if(istype(part, /obj/item/mod/construction/gauntlets)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "gauntlets stuck to your hand!")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
balloon_alert(user, "gauntlets added")
@@ -224,10 +224,10 @@
if(GAUNTLETS_STEP)
if(istype(part, /obj/item/mod/construction/boots)) //Construct
if(!user.transferItemToLoc(part, src))
- balloon_alert(user, "boots added")
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
- balloon_alert(user, "fit [part.name]")
+ balloon_alert(user, "boots added")
boots = part
step = BOOTS_STEP
else if(part.tool_behaviour == TOOL_CROWBAR) //Deconstruct
@@ -260,13 +260,14 @@
if(istype(part, /obj/item/mod/construction/plating)) //Construct
var/obj/item/mod/construction/plating/external_plating = part
if(!user.transferItemToLoc(part, src))
+ balloon_alert(user, "it's stuck!")
return
playsound(src, 'sound/machines/click.ogg', 30, TRUE)
var/obj/item/mod = new /obj/item/mod/control(drop_location(), external_plating.theme, null, core)
core = null
qdel(src)
user.put_in_hands(mod)
- mod.balloon_alert(user, "suit finished")
+ mod.balloon_alert(user, "unit finished")
else if(part.tool_behaviour == TOOL_SCREWDRIVER) //Construct
if(part.use_tool(src, user, 0, volume=30))
balloon_alert(user, "assembly unscrewed")
diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm
index 3bf7d68c3be..132fae260ac 100644
--- a/code/modules/mod/mod_control.dm
+++ b/code/modules/mod/mod_control.dm
@@ -98,7 +98,6 @@
theme.set_up_parts(src, new_skin)
for(var/obj/item/part as anything in get_parts())
RegisterSignal(part, COMSIG_ATOM_DESTRUCTION, PROC_REF(on_part_destruction))
- RegisterSignal(part, COMSIG_QDELETING, PROC_REF(on_part_deletion))
set_wires(new /datum/wires/mod(src))
if(length(req_access))
locked = TRUE
@@ -119,14 +118,19 @@
QDEL_NULL(core)
QDEL_NULL(mod_link)
for(var/datum/mod_part/part_datum as anything in get_part_datums(all = TRUE))
+ var/obj/item/part_item = part_datum.part_item
part_datum.part_item = null
part_datum.overslotting = null
+ mod_parts -= part_datum
+ if(!QDELING(part_item))
+ qdel(part_item)
return ..()
/obj/item/mod/control/atom_destruction(damage_flag)
+ var/atom/visible_atom = wearer || src
if(wearer)
- wearer.visible_message(span_danger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE)
clean_up()
+ visible_atom.visible_message(span_bolddanger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE)
for(var/obj/item/mod/module/module as anything in modules)
uninstall(module)
if(ai_assistant)
@@ -221,12 +225,12 @@
if(user != wearer)
return ..()
if(active)
- balloon_alert(wearer, "deactivate the suit first!")
+ balloon_alert(wearer, "unit active!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
- balloon_alert(user, "retract parts first!")
+ balloon_alert(user, "parts extended!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return FALSE
@@ -234,12 +238,12 @@
if(user != wearer || !istype(over_object, /atom/movable/screen/inventory/hand))
return
if(active)
- balloon_alert(wearer, "deactivate the suit first!")
+ balloon_alert(wearer, "unit active!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
- balloon_alert(wearer, "retract parts first!")
+ balloon_alert(wearer, "parts extended!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
if(!wearer.incapacitated)
@@ -267,14 +271,15 @@
/obj/item/mod/control/screwdriver_act(mob/living/user, obj/item/screwdriver)
if(active || activating || ai_controller)
- balloon_alert(user, "deactivate suit first!")
+ balloon_alert(user, "unit active!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
balloon_alert(user, "[open ? "closing" : "opening"] cover...")
screwdriver.play_tool_sound(src, 100)
if(screwdriver.use_tool(src, user, 1 SECONDS))
if(active || activating)
- balloon_alert(user, "deactivate suit first!")
+ balloon_alert(user, "unit active!")
+ return ITEM_INTERACT_SUCCESS
screwdriver.play_tool_sound(src, 100)
balloon_alert(user, "cover [open ? "closed" : "opened"]")
open = !open
@@ -284,7 +289,7 @@
/obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar)
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(!allowed(user))
@@ -316,14 +321,14 @@
/obj/item/mod/control/tool_act(mob/living/user, obj/item/tool, list/modifiers)
if(istype(tool, /obj/item/pai_card))
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
return NONE // shoves the card in the storage anyways
insert_pai(user, tool)
return ITEM_INTERACT_SUCCESS
if(istype(tool, /obj/item/mod/paint))
var/obj/item/mod/paint/paint_kit = tool
if(active || activating)
- balloon_alert(user, "suit is active!")
+ balloon_alert(user, "unit active!")
return ITEM_INTERACT_BLOCKING
if(LAZYACCESS(modifiers, RIGHT_CLICK)) // Right click
if(paint_kit.editing_mod == src)
@@ -342,7 +347,7 @@
return ITEM_INTERACT_SUCCESS
if(istype(tool, /obj/item/mod/module))
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
install(tool, user)
@@ -350,11 +355,11 @@
return ITEM_INTERACT_SUCCESS
if(istype(tool, /obj/item/mod/core))
if(!open)
- balloon_alert(user, "open the cover first!")
+ balloon_alert(user, "cover closed!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(core)
- balloon_alert(user, "core already installed!")
+ balloon_alert(user, "already has core!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
var/obj/item/mod/core/attacking_core = tool
@@ -386,7 +391,7 @@
/obj/item/mod/control/emag_act(mob/user, obj/item/card/emag/emag_card)
locked = !locked
- balloon_alert(user, "suit access [locked ? "locked" : "unlocked"]")
+ balloon_alert(user, "access [locked ? "locked" : "unlocked"]")
return TRUE
/obj/item/mod/control/emp_act(severity)
@@ -446,12 +451,11 @@
CRASH("get_part_datum called with incorrect item [part] passed.")
/obj/item/mod/control/proc/get_part_from_slot(slot)
- slot = "[slot]"
- for(var/part_slot in mod_parts)
- if(slot != part_slot)
- continue
- var/datum/mod_part/part = mod_parts[part_slot]
- return part.part_item
+ var/datum/mod_part/part = mod_parts["[slot]"]
+ return part?.part_item
+
+/obj/item/mod/control/proc/get_part_datum_from_slot(slot)
+ return mod_parts["[slot]"]
/obj/item/mod/control/proc/set_wearer(mob/living/carbon/human/user)
if(wearer == user)
@@ -512,7 +516,9 @@
for(var/obj/item/part as anything in get_parts())
seal_part(part, is_sealed = FALSE)
for(var/obj/item/part as anything in get_parts())
- retract(null, part)
+ if(part.loc == src)
+ continue
+ INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after
if(active)
control_activation(is_on = FALSE)
mod_link?.end_call()
@@ -580,24 +586,24 @@
for(var/obj/item/mod/module/old_module as anything in modules)
if(is_type_in_list(new_module, old_module.incompatible_modules) || is_type_in_list(old_module, new_module.incompatible_modules))
if(user)
- balloon_alert(user, "[new_module] incompatible with [old_module]!")
+ balloon_alert(user, "incompatible with [old_module]!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
var/complexity_with_module = complexity
complexity_with_module += new_module.complexity
if(complexity_with_module > complexity_max)
if(user)
- balloon_alert(user, "[new_module] would make [src] too complex!")
+ balloon_alert(user, "above complexity max!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
if(!new_module.has_required_parts(mod_parts))
if(user)
- balloon_alert(user, "[new_module] incompatible with [src]'s parts!")
+ balloon_alert(user, "lacking required parts!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
if(!new_module.can_install(src))
if(user)
- balloon_alert(user, "[new_module] cannot be installed into [src]!")
+ balloon_alert(user, "can't install!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
new_module.forceMove(src)
@@ -662,6 +668,12 @@
/obj/item/mod/control/proc/check_charge(amount)
return core?.check_charge(amount) || FALSE
+/obj/item/mod/control/proc/get_chargebar_color()
+ return core?.get_chargebar_color() || "transparent"
+
+/obj/item/mod/control/proc/get_chargebar_string()
+ return core?.get_chargebar_string() || "No Core Detected"
+
/**
* Updates the wearer's hud according to the current state of the MODsuit
*/
@@ -707,6 +719,9 @@
uninstall(part)
return
if(part in get_parts())
+ if(QDELING(part) && !QDELING(src))
+ qdel(src)
+ return
var/datum/mod_part/part_datum = get_part_datum(part)
if(part_datum.sealed)
seal_part(part, is_sealed = FALSE)
@@ -715,7 +730,7 @@
if(!wearer)
part.forceMove(src)
return
- retract(wearer, part)
+ INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after
/obj/item/mod/control/proc/on_part_destruction(obj/item/part, damage_flag)
SIGNAL_HANDLER
@@ -724,14 +739,6 @@
return
atom_destruction(damage_flag)
-/obj/item/mod/control/proc/on_part_deletion(obj/item/part)
- SIGNAL_HANDLER
-
- if(QDELING(src))
- return
- part.moveToNullspace()
- qdel(src)
-
/obj/item/mod/control/proc/on_overslot_exit(obj/item/part, atom/movable/overslot, direction)
SIGNAL_HANDLER
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index 791c5347722..01e0902b6b0 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -25,30 +25,45 @@
mod.update_charge_alert()
mod = null
+/// Returns the item responsible for charging the suit, like a power cell, an ethereal's stomach, the core itself, etc.
/obj/item/mod/core/proc/charge_source()
return
+/// Returns the amount of charge in the core.
/obj/item/mod/core/proc/charge_amount()
return 0
+/// Returns the max amount of charge stored in the core.
/obj/item/mod/core/proc/max_charge_amount()
return 1
+/// Adds a set amount of charge to the core.
/obj/item/mod/core/proc/add_charge(amount)
return FALSE
+/// Subtracts a set amount of charge from the core.
/obj/item/mod/core/proc/subtract_charge(amount)
return FALSE
+/// Checks if there's enough charge in the core to use an amount of energy.
/obj/item/mod/core/proc/check_charge(amount)
return FALSE
-/**
- * Gets what icon state to display on the HUD for the charge level of this core
- */
+/// Returns what icon state to display on the HUD for the charge level of this core
/obj/item/mod/core/proc/get_charge_icon_state()
return "0"
+/// Gets what the UI should use for the charge bar color.
+/obj/item/mod/core/proc/get_chargebar_color()
+ return "bad"
+
+/// Gets what the UI should use for the charge bar text.
+/obj/item/mod/core/proc/get_chargebar_string()
+ var/charge_amount = charge_amount()
+ var/max_charge_amount = max_charge_amount()
+ return "[display_energy(charge_amount)] of [display_energy(max_charge_amount())] \
+ ([round((100 * charge_amount) / max_charge_amount, 1)]%)"
+
/obj/item/mod/core/infinite
name = "MOD infinite core"
icon_state = "mod-core-infinite"
@@ -76,6 +91,12 @@
/obj/item/mod/core/infinite/get_charge_icon_state()
return "high"
+/obj/item/mod/core/infinite/get_chargebar_color()
+ return "teal"
+
+/obj/item/mod/core/infinite/get_chargebar_string()
+ return "Infinite"
+
/obj/item/mod/core/standard
name = "MOD standard core"
icon_state = "mod-core-standard"
@@ -163,6 +184,22 @@
return "empty"
+/obj/item/mod/core/standard/get_chargebar_color()
+ if(isnull(charge_source()))
+ return "transparent"
+ switch(round(charge_amount() / max_charge_amount(), 0.01))
+ if(-INFINITY to 0.33)
+ return "bad"
+ if(0.33 to 0.66)
+ return "average"
+ if(0.66 to INFINITY)
+ return "good"
+
+/obj/item/mod/core/standard/get_chargebar_string()
+ if(isnull(charge_source()))
+ return "Power Cell Missing"
+ return ..()
+
/obj/item/mod/core/standard/proc/install_cell(new_cell)
cell = new_cell
cell.forceMove(src)
@@ -222,11 +259,11 @@
if(!istype(attacking_item, /obj/item/stock_parts/power_store/cell))
return FALSE
if(!mod.open)
- mod.balloon_alert(user, "open the cover first!")
+ mod.balloon_alert(user, "cover closed!")
playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(cell)
- mod.balloon_alert(user, "cell already installed!")
+ mod.balloon_alert(user, "already has cell!")
playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
install_cell(attacking_item)
@@ -260,41 +297,62 @@
name = "MOD ethereal core"
icon_state = "mod-core-ethereal"
desc = "A reverse engineered core of a Modular Outerwear Device. Using natural liquid electricity from Ethereals, \
- preventing the need to use external sources to convert electric charge."
+ preventing the need to use external sources to convert electric charge. As the suits are naturally charged by \
+ liquid electricity, this core makes it much more efficient, running all soft, hard, and wetware with several \
+ times less energy usage."
/// A modifier to all charge we use, ethereals don't need to spend as much energy as normal suits.
var/charge_modifier = 0.1
/obj/item/mod/core/ethereal/charge_source()
- var/obj/item/organ/internal/stomach/ethereal/ethereal_stomach = mod.wearer.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/ethereal_stomach = mod.wearer.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(ethereal_stomach))
return
return ethereal_stomach
/obj/item/mod/core/ethereal/charge_amount()
- var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source()
+ var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
return charge_source?.cell.charge() || ETHEREAL_CHARGE_NONE
/obj/item/mod/core/ethereal/max_charge_amount()
return ETHEREAL_CHARGE_FULL
/obj/item/mod/core/ethereal/add_charge(amount)
- var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source()
- if(!charge_source)
+ var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
+ if(isnull(charge_source))
return FALSE
- charge_source.adjust_charge(amount*charge_modifier)
+ charge_source.adjust_charge(amount * charge_modifier)
return TRUE
/obj/item/mod/core/ethereal/subtract_charge(amount)
- var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source()
- if(!charge_source)
+ var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
+ if(isnull(charge_source))
return FALSE
- return -charge_source.adjust_charge(-amount*charge_modifier)
+ return -charge_source.adjust_charge(-amount * charge_modifier)
/obj/item/mod/core/ethereal/check_charge(amount)
- return charge_amount() >= amount*charge_modifier
+ return charge_amount() >= amount * charge_modifier
/obj/item/mod/core/ethereal/get_charge_icon_state()
- return charge_source() ? "0" : "missing"
+ return isnull(charge_source()) ? "missing" : "0"
+
+/obj/item/mod/core/ethereal/get_chargebar_color()
+ if(isnull(charge_source()))
+ return "transparent"
+ switch(charge_amount())
+ if(-INFINITY to ETHEREAL_CHARGE_LOWPOWER)
+ return "bad"
+ if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL)
+ return "average"
+ if(ETHEREAL_CHARGE_NORMAL to ETHEREAL_CHARGE_FULL)
+ return "good"
+ if(ETHEREAL_CHARGE_FULL to INFINITY)
+ return "teal"
+
+/obj/item/mod/core/ethereal/get_chargebar_string()
+ var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
+ if(isnull(charge_source()) || isnull(charge_source.cell))
+ return "Biological Battery Missing"
+ return ..()
#define PLASMA_CORE_ORE_CHARGE (1.5 * STANDARD_CELL_CHARGE)
#define PLASMA_CORE_SHEET_CHARGE (2 * STANDARD_CELL_CHARGE)
@@ -355,6 +413,13 @@
return "empty"
+/obj/item/mod/core/plasma/get_chargebar_color()
+ switch(round(charge_amount() / max_charge_amount(), 0.01))
+ if(-INFINITY to 0.33)
+ return "bad"
+ if(0.33 to INFINITY)
+ return "purple"
+
/obj/item/mod/core/plasma/proc/on_mod_interaction(datum/source, mob/living/user, obj/item/thing)
SIGNAL_HANDLER
diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm
index e196580b99b..b5347ef5c64 100644
--- a/code/modules/mod/mod_link.dm
+++ b/code/modules/mod/mod_link.dm
@@ -217,7 +217,7 @@
if(!user.transferItemToLoc(attacked_by, src))
return
cell = attacked_by
- balloon_alert(user, "installed [cell.name]")
+ balloon_alert(user, "cell installed")
/obj/item/clothing/neck/link_scryer/update_name(updates)
. = ..()
@@ -231,7 +231,7 @@
/obj/item/clothing/neck/link_scryer/attack_hand_secondary(mob/user, list/modifiers)
if(!cell)
return SECONDARY_ATTACK_CONTINUE_CHAIN
- balloon_alert(user, "removed [cell.name]")
+ balloon_alert(user, "cell removed")
user.put_in_hands(cell)
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
@@ -413,7 +413,7 @@
if(!link_user)
return
if(HAS_TRAIT(link_user, TRAIT_IN_CALL))
- holder.balloon_alert(user, "user already in call!")
+ holder.balloon_alert(user, "already calling!")
return
var/mob/living/link_target = called.get_user_callback.Invoke()
if(!link_target)
diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm
index e3e42e55f61..2f658e9df24 100644
--- a/code/modules/mod/mod_paint.dm
+++ b/code/modules/mod/mod_paint.dm
@@ -153,10 +153,10 @@
return NONE
var/obj/item/mod/control/mod = attacked_atom
if(mod.active || mod.activating)
- balloon_alert(user, "suit is active!")
+ balloon_alert(user, "unit active!")
return ITEM_INTERACT_BLOCKING
if(!(skin in mod.theme.variants))
- balloon_alert(user, "incompatible theme!")
+ balloon_alert(user, "wrong theme for skin!")
return ITEM_INTERACT_BLOCKING
mod.theme.set_skin(mod, skin)
balloon_alert(user, "skin applied")
diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm
index 2a8ccf7b4bf..9a8e77f7e8e 100644
--- a/code/modules/mod/mod_ui.dm
+++ b/code/modules/mod/mod_ui.dm
@@ -9,8 +9,10 @@
// Suit information
var/suit_status = list(
"core_name" = core?.name,
- "cell_charge_current" = get_charge(),
- "cell_charge_max" = get_max_charge(),
+ "charge_current" = get_charge(),
+ "charge_max" = get_max_charge(),
+ "chargebar_color" = get_chargebar_color(),
+ "chargebar_string" = get_chargebar_string(),
"active" = active,
"ai_name" = ai_assistant?.name,
"has_pai" = ispAI(ai_assistant),
@@ -56,23 +58,25 @@
"configuration_data" = module.get_configuration(user),
))
data["module_custom_status"] = module_custom_status
- data["module_info"] = module_info
- return data
-
-/obj/item/mod/control/ui_static_data(mob/user)
- var/data = list()
- data["ui_theme"] = ui_theme
data["control"] = name
- data["complexity_max"] = complexity_max
+ data["module_info"] = module_info
var/part_info = list()
for(var/obj/item/part as anything in get_parts())
part_info += list(list(
"slot" = english_list(parse_slot_flags(part.slot_flags)),
"name" = part.name,
+ "deployed" = part.loc != src,
+ "ref" = REF(part),
))
data["parts"] = part_info
return data
+/obj/item/mod/control/ui_static_data(mob/user)
+ var/data = list()
+ data["ui_theme"] = ui_theme
+ data["complexity_max"] = complexity_max
+ return data
+
/obj/item/mod/control/ui_state(mob/user)
if(user == ai_assistant)
return GLOB.contained_state
@@ -89,7 +93,7 @@
if("lock")
if(!locked || allowed(ui.user))
locked = !locked
- balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]!")
+ balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]")
else
balloon_alert(ui.user, "access insufficent!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
@@ -115,6 +119,14 @@
if(!module)
return
module.pin(ui.user)
+ if("deploy")
+ var/obj/item/mod_part = locate(params["ref"]) in get_parts()
+ if(!mod_part)
+ return
+ if(mod_part.loc == src)
+ deploy(ui.user, mod_part)
+ else
+ retract(ui.user, mod_part)
if("eject_pai")
if (!ishuman(ui.user))
return
diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm
index 2403528236f..c840382da58 100644
--- a/code/modules/mod/modules/_module.dm
+++ b/code/modules/mod/modules/_module.dm
@@ -301,7 +301,7 @@
/obj/item/mod/module/proc/add_ui_data()
return list()
-/// Creates a list of configuring options for this module
+/// Creates a list of configuring options for this module, possible configs include number, bool, color, list, button.
/obj/item/mod/module/proc/get_configuration(mob/user)
return list()
@@ -496,7 +496,7 @@
balloon_alert(user, "no core!")
return
if(!core_removable)
- balloon_alert(user, "can't remove core!")
+ balloon_alert(user, "already has core!")
return
balloon_alert(user, "removing core...")
if(!do_after(user, 3 SECONDS, target = src))
diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm
index f0a92e3a051..487844bc2a0 100644
--- a/code/modules/mod/modules/module_pathfinder.dm
+++ b/code/modules/mod/modules/module_pathfinder.dm
@@ -117,19 +117,19 @@
/obj/item/implant/mod/proc/recall()
if(!module?.mod)
- balloon_alert(imp_in, "no connected suit!")
+ balloon_alert(imp_in, "no connected unit!")
return FALSE
if(module.mod.open)
- balloon_alert(imp_in, "suit is open!")
+ balloon_alert(imp_in, "cover open!")
return FALSE
if(module.mod.ai_controller)
- balloon_alert(imp_in, "already in transit!")
+ balloon_alert(imp_in, "already moving!")
return FALSE
if(ismob(get_atom_on_turf(module.mod)))
balloon_alert(imp_in, "already on someone!")
return FALSE
if(module.z != z || get_dist(imp_in, module.mod) > MOD_AI_RANGE)
- balloon_alert(imp_in, "too far away!")
+ balloon_alert(imp_in, "too far!")
return FALSE
var/datum/ai_controller/mod_ai = new /datum/ai_controller/mod(module.mod)
module.mod.ai_controller = mod_ai
diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm
index 8b770ea0913..ec550f3cfde 100644
--- a/code/modules/mod/modules/modules_antag.dm
+++ b/code/modules/mod/modules/modules_antag.dm
@@ -52,9 +52,10 @@
playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(mod.wearer, "armor boosted, EVA lost")
actual_speed_added = max(0, min(mod.slowdown_active, speed_added))
- var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES)
- if(istype(head_cover))
- ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+ if(head_cover)
+ RegisterSignal(mod, COMSIG_MOD_PART_SEALED, PROC_REF(seal_helmet))
+ seal_helmet(mod, head_cover)
var/list/mod_parts = mod.get_parts(all = TRUE)
for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
part.set_armor(part.get_armor().add_other_armor(armor_mod))
@@ -71,9 +72,10 @@
if(!deleting)
playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(mod.wearer, "armor retracts, EVA ready")
- var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES)
- if(istype(head_cover))
- REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+ if(head_cover)
+ UnregisterSignal(mod, COMSIG_MOD_PART_SEALED)
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
var/list/mod_parts = mod.get_parts(all = TRUE)
for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
part.set_armor(part.get_armor().subtract_other_armor(armor_mod))
@@ -91,6 +93,15 @@
overlay_state_active = "[initial(overlay_state_active)]-[mod.skin]"
return ..()
+/obj/item/mod/module/armor_booster/proc/seal_helmet(datum/source, datum/mod_part/part)
+ var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+ if(part != head_cover)
+ return
+ if(part.sealed)
+ ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
+ else
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
+
///Energy Shield - Gives you a rechargeable energy shield that nullifies attacks.
/obj/item/mod/module/energy_shield
name = "MOD energy shield module"
@@ -184,10 +195,10 @@
required_slots = list(ITEM_SLOT_BACK)
/obj/item/mod/module/anti_magic/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src))
/obj/item/mod/module/anti_magic/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src))
/obj/item/mod/module/anti_magic/wizard
name = "MOD magic neutralizer module"
@@ -199,10 +210,10 @@
required_slots = list()
/obj/item/mod/module/anti_magic/wizard/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src))
/obj/item/mod/module/anti_magic/wizard/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src))
///Insignia - Gives you a skin specific stripe.
/obj/item/mod/module/insignia
@@ -262,24 +273,20 @@
required_slots = list(ITEM_SLOT_FEET)
/obj/item/mod/module/noslip/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src))
/obj/item/mod/module/noslip/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src))
//Bite of 87 Springlock - Equips faster, disguised as DNA lock.
/obj/item/mod/module/springlock/bite_of_87
+ name = /obj/item/mod/module/dna_lock::name
+ desc = /obj/item/mod/module/dna_lock::desc
+ icon_state = /obj/item/mod/module/dna_lock::icon_state
+ complexity = /obj/item/mod/module/dna_lock::complexity
+ use_energy_cost = /obj/item/mod/module/dna_lock::use_energy_cost
step_change = 0.1
-/obj/item/mod/module/springlock/bite_of_87/Initialize(mapload)
- . = ..()
- var/obj/item/mod/module/dna_lock/the_dna_lock_behind_the_slaughter = /obj/item/mod/module/dna_lock
- name = initial(the_dna_lock_behind_the_slaughter.name)
- desc = initial(the_dna_lock_behind_the_slaughter.desc)
- icon_state = initial(the_dna_lock_behind_the_slaughter.icon_state)
- complexity = initial(the_dna_lock_behind_the_slaughter.complexity)
- use_energy_cost = initial(the_dna_lock_behind_the_slaughter.use_energy_cost)
-
/obj/item/mod/module/springlock/bite_of_87/on_part_activation()
..()
if(check_holidays(APRIL_FOOLS) || prob(1))
@@ -404,7 +411,7 @@
/obj/item/mod/module/chameleon/used()
if(mod.active || mod.activating)
- balloon_alert(mod.wearer, "suit active!")
+ balloon_alert(mod.wearer, "unit active!")
return FALSE
return ..()
@@ -514,18 +521,18 @@
mod.item_flags &= ~EXAMINE_SKIP
/obj/item/mod/module/infiltrator/on_part_activation()
- mod.wearer.add_traits(traits_to_add, MOD_TRAIT)
+ mod.wearer.add_traits(traits_to_add, REF(src))
RegisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH, PROC_REF(on_speech_modification))
- var/obj/item/organ/internal/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
user_tongue.temp_say_mod = "states"
var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD)
if(istype(head_cover))
head_cover.flash_protect = FLASH_PROTECTION_WELDER_HYPER_SENSITIVE
/obj/item/mod/module/infiltrator/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(traits_to_add, MOD_TRAIT)
+ mod.wearer.remove_traits(traits_to_add, REF(src))
UnregisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH)
- var/obj/item/organ/internal/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
user_tongue.temp_say_mod = initial(user_tongue.temp_say_mod)
if(deleting)
return
@@ -573,7 +580,7 @@
balloon_alert(mod.wearer, "can't reach that!")
return
if(istype(target, /obj/machinery/power/apc)) //Bit too strong for a module so this is blacklisted
- balloon_alert(mod.wearer, "cant disable apc!")
+ balloon_alert(mod.wearer, "can't disable apc!")
return
var/list/things_to_disrupt = list(target)
diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm
index aea9a415cf4..9c96d9edd82 100644
--- a/code/modules/mod/modules/modules_engineering.dm
+++ b/code/modules/mod/modules/modules_engineering.dm
@@ -62,12 +62,12 @@
var/list/active_traits = list(TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_SLIDE, TRAIT_NEGATES_GRAVITY)
/obj/item/mod/module/magboot/on_activation()
- mod.wearer.add_traits(active_traits, MOD_TRAIT)
+ mod.wearer.add_traits(active_traits, REF(src))
mod.slowdown += slowdown_active
mod.wearer.update_equipment_speed_mods()
/obj/item/mod/module/magboot/on_deactivation(display_message = TRUE, deleting = FALSE)
- mod.wearer.remove_traits(active_traits, MOD_TRAIT)
+ mod.wearer.remove_traits(active_traits, REF(src))
mod.slowdown -= slowdown_active
mod.wearer.update_equipment_speed_mods()
@@ -104,7 +104,7 @@
/obj/item/mod/module/tether/get_configuration()
. = ..()
- .["cut_tethers"] = add_ui_configuration("Cut Tethers", "pin", TRUE)
+ .["cut_tethers"] = add_ui_configuration("Cut Tethers", "button", "scissors")
/obj/item/mod/module/tether/configure_edit(key, value)
if (key != "cut_tethers")
@@ -267,14 +267,14 @@
/obj/item/mod/module/rad_protection/on_part_activation()
AddComponent(/datum/component/geiger_sound)
- ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src))
RegisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation))
for(var/obj/item/part in mod.get_parts(all = TRUE))
ADD_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT)
/obj/item/mod/module/rad_protection/on_part_deactivation(deleting = FALSE)
qdel(GetComponent(/datum/component/geiger_sound))
- REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src))
UnregisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION)
for(var/obj/item/part in mod.get_parts(all = TRUE))
REMOVE_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT)
@@ -309,10 +309,10 @@
required_slots = list(ITEM_SLOT_GLOVES)
/obj/item/mod/module/constructor/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src))
/obj/item/mod/module/constructor/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src))
/obj/item/mod/module/constructor/on_use()
rcd_scan(src, fade_time = 10 SECONDS)
@@ -332,10 +332,10 @@
required_slots = list(ITEM_SLOT_HEAD)
/obj/item/mod/module/headprotector/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
/obj/item/mod/module/headprotector/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
///Mister - Sprays water over an area.
/obj/item/mod/module/mister
diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm
index 42e4c56f55e..dc273965e81 100644
--- a/code/modules/mod/modules/modules_general.dm
+++ b/code/modules/mod/modules/modules_general.dm
@@ -148,9 +148,9 @@
if (!isnull(mod) && !isnull(mod.wearer) && mod.wearer.get_item_by_slot(slot_flags) == src)
if (!stabilize)
- ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
else
- REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
/obj/item/mod/module/jetpack/get_configuration()
. = ..()
@@ -171,11 +171,11 @@
/obj/item/mod/module/jetpack/on_activation()
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
if (!stabilize)
- ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
/obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE)
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
- REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
/obj/item/mod/module/jetpack/advanced
name = "MOD advanced ion jetpack module"
@@ -672,10 +672,10 @@
return ..()
/obj/item/mod/module/plasma_stabilizer/on_equip()
- ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src))
/obj/item/mod/module/plasma_stabilizer/on_unequip()
- REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src))
//Finally, https://pipe.miroware.io/5b52ba1d94357d5d623f74aa/mspfa/Nuke%20Ops/Panels/0648.gif can be real:
@@ -731,10 +731,10 @@
required_slots = list(ITEM_SLOT_GLOVES)
/obj/item/mod/module/signlang_radio/on_part_activation()
- ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src))
/obj/item/mod/module/signlang_radio/on_part_deactivation(deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src))
///A module that recharges the suit by an itsy tiny bit whenever the user takes a step. Originally called "magneto module" but the videogame reference sounds cooler.
/obj/item/mod/module/joint_torsion
@@ -952,7 +952,7 @@
if(!istype(tool, /obj/item/fishing_rod))
return ..()
if(equipped)
- balloon_alert(user, "remove current rod first!")
+ balloon_alert(user, "already has rod!")
if(!user.transferItemToLoc(tool, src))
user.balloon_alert(user, "it's stuck!")
equipped = tool
diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm
index 83656aaf22f..96ba42ca332 100644
--- a/code/modules/mod/modules/modules_maint.dm
+++ b/code/modules/mod/modules/modules_maint.dm
@@ -297,8 +297,8 @@
mod.wearer.AddElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY)
RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_upstairs))
RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(on_talk))
- ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
- passtable_on(mod.wearer, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
+ passtable_on(mod.wearer, REF(src))
check_upstairs() //todo at some point flip your screen around
/obj/item/mod/module/atrocinator/deactivate(display_message = TRUE, deleting = FALSE)
@@ -314,8 +314,8 @@
UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
UnregisterSignal(mod.wearer, COMSIG_MOB_SAY)
step_count = 0
- REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
- passtable_off(mod.wearer, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
+ passtable_off(mod.wearer, REF(src))
var/turf/open/openspace/current_turf = get_turf(mod.wearer)
if(istype(current_turf))
current_turf.zFall(mod.wearer, falling_from_move = TRUE)
diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm
index 154717cbcc1..7c0e1c85b05 100644
--- a/code/modules/mod/modules/modules_medical.dm
+++ b/code/modules/mod/modules/modules_medical.dm
@@ -77,13 +77,13 @@
/obj/item/mod/module/quick_carry/on_part_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT)
- ADD_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src))
+ ADD_TRAIT(mod.wearer, quick_carry_trait, REF(src))
/obj/item/mod/module/quick_carry/on_part_deactivation(deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT)
- REMOVE_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src))
+ REMOVE_TRAIT(mod.wearer, quick_carry_trait, REF(src))
/obj/item/mod/module/quick_carry/advanced
name = "MOD advanced quick carry module"
diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm
index c4e8962c447..a6ade06a909 100644
--- a/code/modules/mod/modules/modules_ninja.dm
+++ b/code/modules/mod/modules/modules_ninja.dm
@@ -73,11 +73,11 @@
/obj/item/mod/module/stealth/ninja/on_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
/obj/item/mod/module/stealth/ninja/on_deactivation(display_message = TRUE, deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
///Camera Vision - Prevents flashes, blocks tracking.
/obj/item/mod/module/welding/camera_vision
@@ -173,16 +173,16 @@
var/accepted_type = /obj/item/energy_katana
/obj/item/mod/module/weapon_recall/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src))
/obj/item/mod/module/weapon_recall/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src))
/obj/item/mod/module/weapon_recall/on_use()
if(!linked_weapon)
var/obj/item/weapon_to_link = mod.wearer.is_holding_item_of_type(accepted_type)
if(!weapon_to_link)
- balloon_alert(mod.wearer, "can't locate weapon!")
+ balloon_alert(mod.wearer, "no linked weapon!")
return
set_weapon(weapon_to_link)
balloon_alert(mod.wearer, "[linked_weapon.name] linked")
@@ -191,7 +191,7 @@
balloon_alert(mod.wearer, "already on self!")
return
var/distance = get_dist(mod.wearer, linked_weapon)
- var/in_view = (linked_weapon in view(mod.wearer))
+ var/in_view = (linked_weapon in view(mod.wearer)) && !(linked_weapon in get_turf(mod.wearer))
if(!in_view && !drain_power(use_energy_cost * distance))
balloon_alert(mod.wearer, "not enough charge!")
return
diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm
index ea9f1d01e43..8cb15d35370 100644
--- a/code/modules/mod/modules/modules_science.dm
+++ b/code/modules/mod/modules/modules_science.dm
@@ -14,10 +14,10 @@
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK)
/obj/item/mod/module/reagent_scanner/on_activation()
- ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src))
/obj/item/mod/module/reagent_scanner/on_deactivation(display_message = TRUE, deleting = FALSE)
- REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src))
/obj/item/mod/module/reagent_scanner/advanced
name = "MOD advanced reagent scanner module"
@@ -31,12 +31,12 @@
/obj/item/mod/module/reagent_scanner/advanced/on_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src))
RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion))
/obj/item/mod/module/reagent_scanner/advanced/on_deactivation(display_message = TRUE, deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src))
UnregisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION)
/obj/item/mod/module/reagent_scanner/advanced/proc/sense_explosion(datum/source, turf/epicenter,
diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm
index c25dd752755..09032318304 100644
--- a/code/modules/mod/modules/modules_security.dm
+++ b/code/modules/mod/modules/modules_security.dm
@@ -123,7 +123,7 @@
balloon_alert(mod.wearer, "nothing to holster!")
return
if(!istype(holding) || holding.w_class > WEIGHT_CLASS_BULKY)
- balloon_alert(mod.wearer, "it doesn't fit!")
+ balloon_alert(mod.wearer, "doesn't fit!")
return
if(mod.wearer.transferItemToLoc(holding, src, force = FALSE, silent = TRUE))
holstered = holding
@@ -522,11 +522,11 @@
idle_power_cost = 0
if(STORMTROOPER_MODE)
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.4
- mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src))
RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(stormtrooper_fired_gun))
if(SHARPSHOOTER_MODE)
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.6
- mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src))
RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(sharpshooter_fired_gun))
RegisterSignal(mod.wearer, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE, PROC_REF(apply_ricochet))
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant)
@@ -535,10 +535,10 @@
switch(selected_mode)
if(STORMTROOPER_MODE)
UnregisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN)
- mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src))
if(SHARPSHOOTER_MODE)
UnregisterSignal(mod.wearer, list(COMSIG_MOB_FIRED_GUN, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE))
- mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src))
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant)
/obj/item/mod/module/shooting_assistant/drain_power(amount)
@@ -582,10 +582,10 @@
required_slots = list(ITEM_SLOT_OCLOTHING)
/obj/item/mod/module/shove_blocker/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src))
/obj/item/mod/module/shove_blocker/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src))
/obj/item/mod/module/shove_blocker/locked
name = "superglued MOD bulwark module"
@@ -602,8 +602,8 @@
/obj/item/mod/module/quick_cuff/on_part_activation()
. = ..()
- ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT)
+ ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src))
/obj/item/mod/module/quick_cuff/on_part_deactivation(deleting = FALSE)
. = ..()
- REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src))
diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm
index 79d2d3779e0..70c11f069f0 100644
--- a/code/modules/mod/modules/modules_service.dm
+++ b/code/modules/mod/modules/modules_service.dm
@@ -46,7 +46,7 @@
if(!isitem(target))
return
if(!isturf(target.loc))
- balloon_alert(mod.wearer, "must be on the floor!")
+ balloon_alert(mod.wearer, "not in storage!")
return
var/obj/item/microwave_target = target
var/datum/effect_system/spark_spread/spark_effect = new()
@@ -80,7 +80,7 @@
var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET)
if(shoes)
shoes.AddComponent(/datum/component/squeak, list('sound/effects/footstep/clownstep1.ogg'=1,'sound/effects/footstep/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please
- mod.wearer.AddElementTrait(TRAIT_WADDLING, MOD_TRAIT, /datum/element/waddling)
+ mod.wearer.AddElementTrait(TRAIT_WADDLING, REF(src), /datum/element/waddling)
if(is_clown_job(mod.wearer.mind?.assigned_role))
mod.wearer.add_mood_event("clownshoes", /datum/mood_event/clownshoes)
@@ -88,6 +88,6 @@
var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET)
if(shoes && !deleting)
qdel(shoes.GetComponent(/datum/component/squeak))
- REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, MOD_TRAIT)
+ REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, REF(src))
if(is_clown_job(mod.wearer.mind?.assigned_role))
mod.wearer.clear_mood_event("clownshoes")
diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm
index 8be66e0b3e3..bc34cf8781e 100644
--- a/code/modules/mod/modules/modules_supply.dm
+++ b/code/modules/mod/modules/modules_supply.dm
@@ -61,7 +61,7 @@
return
stored_crates += picked_crate
picked_crate.forceMove(src)
- balloon_alert(mod.wearer, "picked up [picked_crate]")
+ balloon_alert(mod.wearer, "picked up crate")
drain_power(use_energy_cost)
else if(length(stored_crates))
var/turf/target_turf = get_turf(target)
@@ -407,11 +407,11 @@
))
/obj/item/mod/module/ash_accretion/on_part_activation()
- mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT)
+ mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src))
RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
/obj/item/mod/module/ash_accretion/on_part_deactivation(deleting = FALSE)
- mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT)
+ mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src))
UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
if(!traveled_tiles)
return
@@ -496,10 +496,10 @@
mod.wearer.base_pixel_y -= 4
animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y, flags = ANIMATION_PARALLEL)
mod.wearer.SpinAnimation(1.5)
- mod.wearer.add_traits(user_traits, MOD_TRAIT)
+ mod.wearer.add_traits(user_traits, REF(src))
mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6)
mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE)
- mod.wearer.add_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown)
+ mod.wearer.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere)
RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange))
@@ -509,8 +509,8 @@
mod.wearer.base_pixel_y += 4
animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y)
addtimer(CALLBACK(mod.wearer, TYPE_PROC_REF(/datum, remove_filter), list("mod_ball", "mod_blur", "mod_outline")), animate_time)
- mod.wearer.remove_traits(user_traits, MOD_TRAIT)
- mod.wearer.remove_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown)
+ mod.wearer.remove_traits(user_traits, REF(src))
+ mod.wearer.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE)
mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6)
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere)
diff --git a/code/modules/mod/modules/modules_timeline.dm b/code/modules/mod/modules/modules_timeline.dm
index c14825bf3c7..bfb22da0c20 100644
--- a/code/modules/mod/modules/modules_timeline.dm
+++ b/code/modules/mod/modules/modules_timeline.dm
@@ -133,13 +133,13 @@
///Signal fired when wearer attempts to trigger modules, if attempting while time is stopped
/obj/item/mod/module/timestopper/proc/on_module_triggered(datum/source)
SIGNAL_HANDLER
- balloon_alert(mod.wearer, "not while channelling timestop!")
+ balloon_alert(mod.wearer, "not while stopping time!")
return MOD_ABORT_USE
///Signal fired when wearer attempts to activate/deactivate suits, if attempting while time is stopped
/obj/item/mod/module/timestopper/proc/on_activate_block(datum/source, user)
SIGNAL_HANDLER
- balloon_alert(user, "not while channelling timestop!")
+ balloon_alert(user, "not while stopping time!")
return MOD_CANCEL_ACTIVATE
///Timeline Jumper - Infinite phasing. needs some special effects
diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm
index d4b6154f886..64ddc69d2ed 100644
--- a/code/modules/mod/modules/modules_visor.dm
+++ b/code/modules/mod/modules/modules_visor.dm
@@ -14,12 +14,12 @@
/obj/item/mod/module/visor/on_activation()
if(length(visor_traits))
- mod.wearer.add_traits(visor_traits, MOD_TRAIT)
+ mod.wearer.add_traits(visor_traits, REF(src))
mod.wearer.update_sight()
/obj/item/mod/module/visor/on_deactivation(display_message = TRUE, deleting = FALSE)
if(length(visor_traits))
- mod.wearer.remove_traits(visor_traits, MOD_TRAIT)
+ mod.wearer.remove_traits(visor_traits, REF(src))
mod.wearer.update_sight()
//Medical Visor - Gives you a medical HUD.
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index 78b85910d9a..4c4649afb53 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -60,7 +60,7 @@
return ..()
/obj/item/paperplane/suicide_act(mob/living/user)
- var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
user.Stun(20 SECONDS)
user.visible_message(span_suicide("[user] jams [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!"))
user.adjust_eye_blur(12 SECONDS)
@@ -109,7 +109,7 @@
if(. || !ishuman(hit_atom)) //if the plane is caught or it hits a nonhuman
return
var/mob/living/carbon/human/hit_human = hit_atom
- var/obj/item/organ/internal/eyes/eyes = hit_human.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = hit_human.get_organ_slot(ORGAN_SLOT_EYES)
if(!prob(hit_probability))
return
if(hit_human.is_eyes_covered())
diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm
index 0929066a7d3..2c5ec520a9f 100644
--- a/code/modules/power/apc/apc_attack.dm
+++ b/code/modules/power/apc/apc_attack.dm
@@ -13,7 +13,7 @@
if(!ishuman(user))
return
var/mob/living/carbon/human/apc_interactor = user
- var/obj/item/organ/internal/stomach/ethereal/maybe_ethereal_stomach = apc_interactor.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/maybe_ethereal_stomach = apc_interactor.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(maybe_ethereal_stomach))
togglelock(user)
else
@@ -27,14 +27,14 @@
if(!ishuman(user))
return
var/mob/living/carbon/human/ethereal = user
- var/obj/item/organ/internal/stomach/maybe_stomach = ethereal.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/maybe_stomach = ethereal.get_organ_slot(ORGAN_SLOT_STOMACH)
// how long we wanna wait before we show the balloon alert. don't want it to be very long in case the ethereal wants to opt-out of doing that action, just long enough to where it doesn't collide with previously queued balloon alerts.
var/alert_timer_duration = 0.75 SECONDS
- if(!istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))
+ if(!istype(maybe_stomach, /obj/item/organ/stomach/ethereal))
return
var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - ETHEREAL_APC_POWER_GAIN
- var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
+ var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach
var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell
if(!((stomach?.drain_time < world.time) && LAZYACCESS(modifiers, RIGHT_CLICK)))
return
diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm
index fd4bf689c90..6a704ad6b2e 100644
--- a/code/modules/power/lighting/light.dm
+++ b/code/modules/power/lighting/light.dm
@@ -598,9 +598,9 @@
var/protected = FALSE
if(istype(user))
- var/obj/item/organ/internal/stomach/maybe_stomach = user.get_organ_slot(ORGAN_SLOT_STOMACH)
- if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))
- var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
+ var/obj/item/organ/stomach/maybe_stomach = user.get_organ_slot(ORGAN_SLOT_STOMACH)
+ if(istype(maybe_stomach, /obj/item/organ/stomach/ethereal))
+ var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach
if(stomach.drain_time > world.time)
return
user.visible_message(span_notice("[user] clamps their hand around the [fitting], electricity jumping around inside!")) //NOVA EDIT CHANGE - Ethereal Rework 2024 - ORIGINALl: to_chat(user, span_notice("You start channeling some power through the [fitting] into your body."))
diff --git a/code/modules/power/power_store.dm b/code/modules/power/power_store.dm
index 5890260be0f..0ca9ba226f4 100644
--- a/code/modules/power/power_store.dm
+++ b/code/modules/power/power_store.dm
@@ -290,12 +290,12 @@
/obj/item/stock_parts/power_store/attack_self(mob/user)
if(ishuman(user))
var/mob/living/carbon/human/H = user
- var/obj/item/organ/internal/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH)
- if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))
+ if(istype(maybe_stomach, /obj/item/organ/stomach/ethereal))
var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - CELL_POWER_GAIN
- var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
+ var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach
var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell
if((stomach.drain_time > world.time) || !stomach)
return
diff --git a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
index c07ec7bbe89..3cb6c8fd82c 100644
--- a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
+++ b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
@@ -95,7 +95,7 @@
var/mob/living/carbon/jedi = user
to_chat(jedi, span_userdanger("That was a really dense idea."))
jedi.ghostize()
- var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs
+ var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs
if(rip_u)
rip_u.Remove(jedi)
qdel(rip_u)
diff --git a/code/modules/power/supermatter/supermatter_hit_procs.dm b/code/modules/power/supermatter/supermatter_hit_procs.dm
index 11b42d71446..167ee7988b1 100644
--- a/code/modules/power/supermatter/supermatter_hit_procs.dm
+++ b/code/modules/power/supermatter/supermatter_hit_procs.dm
@@ -59,7 +59,7 @@
to_chat(jedi, span_userdanger("That was a really dense idea."))
jedi.investigate_log("had [jedi.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS)
jedi.ghostize()
- var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs
+ var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs
if(rip_u)
rip_u.Remove(jedi)
qdel(rip_u)
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index eb5ad47a88c..15e262edc54 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -163,7 +163,7 @@
return
var/mob/living/carbon/jedi = user
to_chat(jedi, span_userdanger("That was a shockingly dumb idea."))
- var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs
+ var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs
jedi.ghostize(jedi)
if(rip_u)
qdel(rip_u)
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 4024420b698..de641df6dbf 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -615,7 +615,7 @@
#define BRAINS_BLOWN_THROW_SPEED 1
/obj/item/gun/ballistic/suicide_act(mob/living/user)
- var/obj/item/organ/internal/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
if (B && chambered && chambered.loaded_projectile && can_trigger_gun(user) && chambered.loaded_projectile.damage > 0)
user.visible_message(span_suicide("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!"))
sleep(2.5 SECONDS)
diff --git a/code/modules/reagents/chemistry/holder/holder.dm b/code/modules/reagents/chemistry/holder/holder.dm
index 1112ad052d8..4315ea63bd9 100644
--- a/code/modules/reagents/chemistry/holder/holder.dm
+++ b/code/modules/reagents/chemistry/holder/holder.dm
@@ -430,7 +430,7 @@
else
if(!ignore_stomach && (methods & INGEST) && iscarbon(target))
var/mob/living/carbon/eater = target
- var/obj/item/organ/internal/stomach/belly = eater.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = eater.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!belly)
var/expel_amount = round(amount, CHEMICAL_QUANTISATION_LEVEL)
if(expel_amount > 0 )
@@ -779,7 +779,7 @@
*
* Arguments
* - Atom/target: What mob/turf/object is being exposed to reagents? This is your reaction target.
- * - Methods: What reaction type is the reagent itself going to call on the reaction target? Types are TOUCH, INGEST, VAPOR, PATCH, and INJECT.
+ * - Methods: What reaction type is the reagent itself going to call on the reaction target? Types are TOUCH, INGEST, VAPOR, PATCH, INJECT and INHALE.
* - Volume_modifier: What is the reagent volume multiplied by when exposed? Note that this is called on the volume of EVERY reagent in the base body, so factor in your Maximum_Volume if necessary!
* - Show_message: Whether to display anything to mobs when they are exposed.
* - list/datum/reagent/r_to_expose: list of reagents to expose. if null will expose the reagents present in this holder instead
diff --git a/code/modules/reagents/chemistry/holder/mob_life.dm b/code/modules/reagents/chemistry/holder/mob_life.dm
index 96869bc63eb..0bd0c38cc6a 100644
--- a/code/modules/reagents/chemistry/holder/mob_life.dm
+++ b/code/modules/reagents/chemistry/holder/mob_life.dm
@@ -19,8 +19,8 @@
expose_temperature(owner.bodytemperature, 0.25)
var/need_mob_update = FALSE
- var/obj/item/organ/internal/stomach/belly = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
- var/obj/item/organ/internal/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/stomach/belly = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
var/liver_tolerance = 0
var/liver_damage = 0
var/provide_pain_message
diff --git a/code/modules/reagents/chemistry/holder/properties.dm b/code/modules/reagents/chemistry/holder/properties.dm
index b949866a6d4..a68404c9fc7 100644
--- a/code/modules/reagents/chemistry/holder/properties.dm
+++ b/code/modules/reagents/chemistry/holder/properties.dm
@@ -161,35 +161,4 @@
* * minimum_percent - the lower the minimum percent, the more sensitive the message is.
*/
/datum/reagents/proc/generate_taste_message(mob/living/taster, minimum_percent)
- var/list/out = list()
- var/list/tastes = list() //descriptor = strength
- if(minimum_percent <= 100)
- for(var/datum/reagent/reagent as anything in reagent_list)
- if(!reagent.taste_mult)
- continue
-
- var/list/taste_data = reagent.get_taste_description(taster)
- for(var/taste in taste_data)
- if(taste in tastes)
- tastes[taste] += taste_data[taste] * reagent.volume * reagent.taste_mult
- else
- tastes[taste] = taste_data[taste] * reagent.volume * reagent.taste_mult
- //deal with percentages
- // TODO it would be great if we could sort these from strong to weak
- var/total_taste = counterlist_sum(tastes)
- if(total_taste > 0)
- for(var/taste_desc in tastes)
- var/percent = tastes[taste_desc]/total_taste * 100
- if(percent < minimum_percent)
- continue
- var/intensity_desc = "a hint of"
- if(percent > minimum_percent * 2 || percent == 100)
- intensity_desc = ""
- else if(percent > minimum_percent * 3)
- intensity_desc = "the strong flavor of"
- if(intensity_desc != "")
- out += "[intensity_desc] [taste_desc]"
- else
- out += "[taste_desc]"
-
- return english_list(out, "something indescribable")
+ return generate_reagents_taste_message(reagent_list, taster, minimum_percent)
diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
index 30e766fd369..e1a83156421 100644
--- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
@@ -158,7 +158,7 @@
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/c2/probital/on_transfer(atom/A, methods=INGEST, trans_volume)
- if(!(methods & INGEST) || (!iscarbon(A) && !istype(A, /obj/item/organ/internal/stomach)) )
+ if(!(methods & INGEST) || (!iscarbon(A) && !istype(A, /obj/item/organ/stomach)) )
return
A.reagents.remove_reagent(/datum/reagent/medicine/c2/probital, trans_volume * 0.05)
@@ -426,7 +426,7 @@
var/mob/living/carbon/C = A
if(trans_volume >= 0.4) //prevents cheesing with ultralow doses.
C.adjustToxLoss((-3 * min(2, trans_volume) * REM) * normalise_creation_purity(), required_biotype = affected_biotype) //This is to promote iv pole use for that chemotherapy feel.
- var/obj/item/organ/internal/liver/L = C.organs_slot[ORGAN_SLOT_LIVER]
+ var/obj/item/organ/liver/L = C.organs_slot[ORGAN_SLOT_LIVER]
if(!L || L.organ_flags & ORGAN_FAILING)
return
conversion_amount = (trans_volume * (min(100 -C.get_organ_loss(ORGAN_SLOT_LIVER), 80) / 100)*normalise_creation_purity()) //the more damaged the liver the worse we metabolize.
diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
index 138df76c5b6..5483a728b13 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
@@ -75,7 +75,7 @@
// Volume, power, and server alcohol rate effect how quickly one gets drunk
drinker.adjust_drunk_effect(booze_power * ALCOHOL_RATE * REM * seconds_per_tick) // NOVA EDIT CHANGE - ALCOHOL_PROCESSING - Original: (sqrt(volume) * booze_power * ALCOHOL_RATE * REM * seconds_per_tick)
if(boozepwr > 0)
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
var/heavy_drinker_multiplier = (HAS_TRAIT(drinker, TRAIT_HEAVY_DRINKER) ? 0.5 : 1)
if (istype(liver))
if(liver.apply_organ_damage(((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/300))) // NOVA EDIT CHANGE - ALCOHOL_PROCESSING - Original: if((((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/150)))
@@ -255,7 +255,7 @@
to_chat(drinker, span_notice("[pick("You have a really bad headache.", "Your eyes hurt.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]"))
if(SPT_PROB(2.5, seconds_per_tick) && iscarbon(drinker))
- var/obj/item/organ/internal/eyes/eyes = drinker.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = drinker.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes && IS_ORGANIC_ORGAN(eyes)) // doesn't affect robotic eyes
if(drinker.is_blind())
eyes.Remove(drinker)
@@ -662,7 +662,7 @@
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
if(HAS_TRAIT(liver, TRAIT_ENGINEER_METABOLISM))
ADD_TRAIT(drinker, TRAIT_HALT_RADIATION_EFFECTS, "[type]")
if (HAS_TRAIT(drinker, TRAIT_IRRADIATED))
@@ -780,7 +780,7 @@
if(HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
metabolization_rate = 0.8
// if you don't have a liver, or your liver isn't an officer's liver
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
beepsky_hallucination = new()
drinker.gain_trauma(beepsky_hallucination, TRAUMA_RESILIENCE_ABSOLUTE)
@@ -788,7 +788,7 @@
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
drinker.set_jitter_if_lower(4 SECONDS)
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
// if you have a liver and that liver is an officer's liver
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
if(drinker.adjustStaminaLoss(-10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
@@ -805,7 +805,7 @@
/datum/reagent/consumable/ethanol/beepsky_smash/overdose_start(mob/living/carbon/drinker)
. = ..()
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
// if you don't have a liver, or your liver isn't an officer's liver
if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
drinker.gain_trauma(/datum/brain_trauma/mild/phobia/security, TRAUMA_RESILIENCE_BASIC)
@@ -1296,7 +1296,7 @@
/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(drinker))
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
@@ -1606,7 +1606,7 @@
/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
//Securidrink in line with the Screwdriver for engineers or Nothing for mimes
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
@@ -1623,7 +1623,7 @@
/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
//Securidrink in line with the Screwdriver for engineers or Nothing for mimes but STRONG..
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
var/need_mob_update
need_mob_update = drinker.heal_bodypart_damage(2 * REM * seconds_per_tick, 2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
@@ -2653,7 +2653,7 @@
return
var/mob/living/carbon/exposed_carbon = exposed_mob
- var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL)
@@ -2673,7 +2673,7 @@
return
var/mob/living/carbon/exposed_carbon = exposed_mob
- var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 0.05 * ETHEREAL_CHARGE_NORMAL)
@@ -2700,7 +2700,7 @@
return
var/mob/living/carbon/exposed_carbon = exposed_mob
- var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 0.1 * ETHEREAL_CHARGE_NORMAL)
diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
index 81af315a119..05a2c984287 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
@@ -113,7 +113,7 @@
/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(affected_mob))
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
@@ -181,7 +181,7 @@
/datum/reagent/consumable/pickle/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if((liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
@@ -519,7 +519,7 @@
/datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/carbon/affected_atom)
. = ..()
- var/obj/item/organ/internal/liver/liver = affected_atom.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_atom.get_organ_slot(ORGAN_SLOT_LIVER)
if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
affected_atom.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
metabolization_rate *= 0.8
@@ -781,7 +781,7 @@
need_mob_update += affected_mob.adjustToxLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOxyLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(affected_mob.nutrition && (affected_mob.nutrition - 2 > 0))
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(!(HAS_TRAIT(liver, TRAIT_MEDICAL_METABOLISM)))
// Drains the nutrition of the holder. Not medical doctors though, since it's the Doctor's Delight!
affected_mob.adjust_nutrition(-2 * REM * seconds_per_tick)
@@ -1295,6 +1295,6 @@
return
var/mob/living/carbon/exposed_carbon = exposed_mob
- var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL)
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index b96020f496c..6f5389e9021 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -333,7 +333,7 @@
/datum/reagent/drug/pumpup/on_mob_metabolize(mob/living/carbon/affected_mob)
. = ..()
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
affected_mob.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
metabolization_rate *= 0.8
@@ -380,7 +380,7 @@
return
var/mob/living/carbon/carbon_mob = affected_mob
- var/obj/item/organ/internal/liver/liver = carbon_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = carbon_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
carbon_mob.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
metabolization_rate *= 0.8
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index f268d53490d..b3436b99e9f 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -70,6 +70,9 @@
color = "#664330" // rgb: 102, 67, 48
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ /// Whether this reagent should get the tastes of food it's in applied onto it
+ var/carry_food_tastes = TRUE
+
var/brute_heal = 1
var/burn_heal = 0
@@ -121,11 +124,14 @@
data = taste_amounts
/datum/reagent/consumable/nutriment/get_taste_description(mob/living/taster)
- return data
+ if(length(data))
+ return data
+ return ..()
/datum/reagent/consumable/nutriment/vitamin
name = "Vitamin"
description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form."
+ taste_description = "bitterness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
brute_heal = 1
@@ -140,6 +146,7 @@
/datum/reagent/consumable/nutriment/protein
name = "Protein"
description = "A natural polyamide made up of amino acids. An essential constituent of mosts known forms of life."
+ taste_description = "chalk"
brute_heal = 0.8 //Rewards the player for eating a balanced diet.
nutriment_factor = 9 //45% as calorie dense as oil.
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -212,6 +219,7 @@
color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil)
taste_mult = 0.8
taste_description = "oil"
+ carry_food_tastes = FALSE
nutriment_factor = 7 //Not very healthy on its own
metabolization_rate = 10 * REAGENTS_METABOLISM
penetrates_skin = NONE
@@ -239,9 +247,15 @@
taste_description = "rich earthy pungent"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining
+ name = "Stomach Lining"
+ description = "Natural tissue that keeps your stomach safe."
+ carry_food_tastes = FALSE // Don't want stomachs to leech the flavours of what they eat
+
/datum/reagent/consumable/nutriment/cloth_fibers
name = "Cloth Fibers"
description = "It's not actually a form of nutriment but it does keep Mothpeople going for a short while..."
+ taste_description = "cloth"
nutriment_factor = 30
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
brute_heal = 0
@@ -266,6 +280,7 @@
/datum/reagent/consumable/nutriment/mineral
name = "Mineral Slurry"
description = "Minerals pounded into a paste, nutritious only if you too are made of rocks."
+ taste_description = "minerals"
color = COLOR_WEBSAFE_DARK_GRAY
chemical_flags = NONE
brute_heal = 0
@@ -426,7 +441,7 @@
return
var/mob/living/carbon/victim = exposed_mob
- if(methods & (TOUCH|VAPOR))
+ if(methods & (TOUCH|VAPOR|INHALE))
//check for protection
//actually handle the pepperspray effects
if (!victim.is_pepper_proof()) // you need both eye and mouth protection
@@ -547,7 +562,7 @@
affected_mob.Paralyze(10)
affected_mob.set_jitter_if_lower(20 SECONDS)
else
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_CULINARY_METABOLISM))
if(SPT_PROB(10, seconds_per_tick)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
@@ -566,7 +581,7 @@
return
var/mob/living/carbon/victim = exposed_mob
- if(methods & (TOUCH | VAPOR))
+ if(methods & (TOUCH | VAPOR | INHALE))
var/tear_proof = victim.is_eyes_covered()
if (!tear_proof)
to_chat(exposed_mob, span_warning("Your eyes sting!"))
@@ -582,7 +597,7 @@
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
@@ -952,11 +967,11 @@
/datum/reagent/consumable/liquidelectricity/enriched/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) //can't be on life because of the way blood works.
. = ..()
- if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(exposed_mob))
+ if(!(methods & (INGEST|INJECT|PATCH|INHALE)) || !iscarbon(exposed_mob))
return
var/mob/living/carbon/exposed_carbon = exposed_mob
- var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 0.03 * ETHEREAL_CHARGE_NORMAL)
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
index 20cd80d9c5b..b9c0ee0522d 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
@@ -16,7 +16,7 @@
/datum/reagent/impurity/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
var/need_mob_update
if(liver)//Though, lets be safe
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
index 1bf91cc898d..eb81359ce58 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
@@ -141,21 +141,21 @@ Basically, we fill the time between now and 2s from now with hands based off the
return
RegisterSignal(consumer, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ))
RegisterSignal(consumer, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ))
- var/obj/item/organ/internal/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
this_liver.alcohol_tolerance *= 2
/datum/reagent/inverse/libitoil/proc/on_gained_organ(mob/prev_owner, obj/item/organ/organ)
SIGNAL_HANDLER
- if(!istype(organ, /obj/item/organ/internal/liver))
+ if(!istype(organ, /obj/item/organ/liver))
return
- var/obj/item/organ/internal/liver/this_liver = organ
+ var/obj/item/organ/liver/this_liver = organ
this_liver.alcohol_tolerance *= 2
/datum/reagent/inverse/libitoil/proc/on_removed_organ(mob/prev_owner, obj/item/organ/organ)
SIGNAL_HANDLER
- if(!istype(organ, /obj/item/organ/internal/liver))
+ if(!istype(organ, /obj/item/organ/liver))
return
- var/obj/item/organ/internal/liver/this_liver = organ
+ var/obj/item/organ/liver/this_liver = organ
this_liver.alcohol_tolerance /= 2
/datum/reagent/inverse/libitoil/on_mob_delete(mob/living/affected_mob)
@@ -163,7 +163,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
var/mob/living/carbon/consumer = affected_mob
UnregisterSignal(consumer, COMSIG_CARBON_LOSE_ORGAN)
UnregisterSignal(consumer, COMSIG_CARBON_GAIN_ORGAN)
- var/obj/item/organ/internal/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
if(!this_liver)
return
this_liver.alcohol_tolerance /= 2
@@ -337,19 +337,19 @@ Basically, we fill the time between now and 2s from now with hands based off the
. = ..()
RegisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ))
RegisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ))
- var/obj/item/organ/internal/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
if(!lungs)
return
apply_lung_levels(lungs)
/datum/reagent/inverse/healing/convermol/proc/on_gained_organ(mob/prev_owner, obj/item/organ/organ)
SIGNAL_HANDLER
- if(!istype(organ, /obj/item/organ/internal/lungs))
+ if(!istype(organ, /obj/item/organ/lungs))
return
- var/obj/item/organ/internal/lungs/lungs = organ
+ var/obj/item/organ/lungs/lungs = organ
apply_lung_levels(lungs)
-/datum/reagent/inverse/healing/convermol/proc/apply_lung_levels(obj/item/organ/internal/lungs/lungs)
+/datum/reagent/inverse/healing/convermol/proc/apply_lung_levels(obj/item/organ/lungs/lungs)
cached_heat_level_1 = lungs.heat_level_1_threshold
cached_heat_level_2 = lungs.heat_level_2_threshold
cached_heat_level_3 = lungs.heat_level_3_threshold
@@ -367,12 +367,12 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/inverse/healing/convermol/proc/on_removed_organ(mob/prev_owner, obj/item/organ/organ)
SIGNAL_HANDLER
- if(!istype(organ, /obj/item/organ/internal/lungs))
+ if(!istype(organ, /obj/item/organ/lungs))
return
- var/obj/item/organ/internal/lungs/lungs = organ
+ var/obj/item/organ/lungs/lungs = organ
restore_lung_levels(lungs)
-/datum/reagent/inverse/healing/convermol/proc/restore_lung_levels(obj/item/organ/internal/lungs/lungs)
+/datum/reagent/inverse/healing/convermol/proc/restore_lung_levels(obj/item/organ/lungs/lungs)
lungs.heat_level_1_threshold = cached_heat_level_1
lungs.heat_level_2_threshold = cached_heat_level_2
lungs.heat_level_3_threshold = cached_heat_level_3
@@ -384,7 +384,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
. = ..()
UnregisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN)
UnregisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN)
- var/obj/item/organ/internal/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
if(!lungs)
return
restore_lung_levels(lungs)
@@ -495,7 +495,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/inverse/penthrite/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick)
. = ..()
- var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
if(!heart || heart.organ_flags & ORGAN_FAILING)
return
metabolization_rate = 0.2 * REM
@@ -529,7 +529,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
affected_mob.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nooartrium)
if(affected_mob.health < HEALTH_THRESHOLD_FULLCRIT)
affected_mob.add_actionspeed_modifier(/datum/actionspeed_modifier/nooartrium)
- var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
if(!heart || heart.organ_flags & ORGAN_FAILING)
remove_buffs(affected_mob)
if(need_mob_update)
@@ -538,7 +538,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/inverse/penthrite/on_mob_delete(mob/living/carbon/affected_mob)
. = ..()
remove_buffs(affected_mob)
- var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
if(affected_mob.health < -500 || heart.organ_flags & ORGAN_FAILING)//Honestly commendable if you get -500
explosion(affected_mob, light_impact_range = 1, explosion_cause = src)
qdel(heart)
@@ -548,7 +548,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
. = ..()
if(!back_from_the_dead)
return ..()
- var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
if(!heart) //No heart? No life!
REMOVE_TRAIT(affected_mob, TRAIT_NODEATH, type)
affected_mob.stat = DEAD
@@ -634,7 +634,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
)
forbiddentraumas += typesof(/datum/brain_trauma/very_special) // NOVA EDIT ADDITION - No very special (lewd) quirks gained by inverse neurine
traumalist -= forbiddentraumas
- var/obj/item/organ/internal/brain/brain = affected_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = affected_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
traumalist = shuffle(traumalist)
for(var/trauma in traumalist)
if(brain.brain_gain_trauma(trauma, TRAUMA_RESILIENCE_MAGIC))
@@ -666,7 +666,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
if(!iscarbon(affected_mob))
return
var/mob/living/carbon/carbon_mob = affected_mob
- var/obj/item/organ/internal/heart/affected_heart = carbon_mob.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/affected_heart = carbon_mob.get_organ_slot(ORGAN_SLOT_HEART)
if(isnull(affected_heart))
return
carbon_mob.AddComponent(/datum/component/manual_heart)
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm
index 0872fa66588..4e904dcf684 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm
@@ -29,7 +29,7 @@
/datum/reagent/impurity/methanol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes?.apply_organ_damage(0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
@@ -59,7 +59,7 @@
/datum/reagent/impurity/rosenol/on_mob_life(mob/living/carbon/owner, seconds_per_tick)
. = ..()
- var/obj/item/organ/internal/tongue/tongue = owner.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = owner.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
if(SPT_PROB(4.0, seconds_per_tick))
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 8a9095f94d7..d33a73eecd5 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -355,7 +355,7 @@
if(!iscarbon(exposed_mob) || (exposed_mob.stat == DEAD))
return
- if(methods & (INGEST|VAPOR|INJECT))
+ if(methods & (INGEST|VAPOR|INJECT|INHALE))
exposed_mob.adjust_nutrition(-5)
if(show_message)
to_chat(exposed_mob, span_warning("Your stomach feels empty and cramps!"))
@@ -559,7 +559,7 @@
var/need_mob_update
need_mob_update = affected_mob.adjustOxyLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(affected_mob.losebreath >= 4)
- var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type // use lungs' respiration type or mob_respiration_type if no lungs
if(our_respiration_type & affected_respiration_type)
affected_mob.losebreath -= 2 * REM * seconds_per_tick
@@ -698,33 +698,33 @@
return
RegisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ))
RegisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ))
- var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes)
return
improve_eyesight(affected_mob, eyes)
-/datum/reagent/medicine/oculine/proc/improve_eyesight(mob/living/carbon/affected_mob, obj/item/organ/internal/eyes/eyes)
+/datum/reagent/medicine/oculine/proc/improve_eyesight(mob/living/carbon/affected_mob, obj/item/organ/eyes/eyes)
delta_light = creation_purity*10
eyes.lighting_cutoff += delta_light
affected_mob.update_sight()
-/datum/reagent/medicine/oculine/proc/restore_eyesight(mob/living/carbon/affected_mob, obj/item/organ/internal/eyes/eyes)
+/datum/reagent/medicine/oculine/proc/restore_eyesight(mob/living/carbon/affected_mob, obj/item/organ/eyes/eyes)
eyes.lighting_cutoff -= delta_light
affected_mob.update_sight()
/datum/reagent/medicine/oculine/proc/on_gained_organ(mob/affected_mob, obj/item/organ/organ)
SIGNAL_HANDLER
- if(!istype(organ, /obj/item/organ/internal/eyes))
+ if(!istype(organ, /obj/item/organ/eyes))
return
- var/obj/item/organ/internal/eyes/affected_eyes = organ
+ var/obj/item/organ/eyes/affected_eyes = organ
improve_eyesight(affected_mob, affected_eyes)
/datum/reagent/medicine/oculine/proc/on_removed_organ(mob/prev_affected_mob, obj/item/organ/organ)
SIGNAL_HANDLER
- if(!istype(organ, /obj/item/organ/internal/eyes))
+ if(!istype(organ, /obj/item/organ/eyes))
return
- var/obj/item/organ/internal/eyes/eyes = organ
+ var/obj/item/organ/eyes/eyes = organ
restore_eyesight(prev_affected_mob, eyes)
/datum/reagent/medicine/oculine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
@@ -732,7 +732,7 @@
var/normalized_purity = normalise_creation_purity()
affected_mob.adjust_temp_blindness(-4 SECONDS * REM * seconds_per_tick * normalized_purity)
affected_mob.adjust_eye_blur(-4 SECONDS * REM * seconds_per_tick * normalized_purity)
- var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes)
// Healing eye damage will cure nearsightedness and blindness from ... eye damage
if(eyes.apply_organ_damage(-2 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
@@ -749,7 +749,7 @@
/datum/reagent/medicine/oculine/on_mob_delete(mob/living/affected_mob)
. = ..()
- var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes)
return
restore_eyesight(affected_mob, eyes)
@@ -778,7 +778,7 @@
/datum/reagent/medicine/inacusiate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/ears/ears = affected_mob.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = affected_mob.get_organ_slot(ORGAN_SLOT_EARS)
if(!ears)
return
ears.adjustEarDamage(-4 * REM * seconds_per_tick * normalise_creation_purity(), -4 * REM * seconds_per_tick * normalise_creation_purity())
@@ -813,7 +813,7 @@
need_mob_update += affected_mob.adjustOxyLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
- var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
if(our_respiration_type & affected_respiration_type)
affected_mob.losebreath = 0
@@ -853,7 +853,7 @@
need_mob_update += affected_mob.adjustFireLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(affected_mob.losebreath >= 4)
- var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
if(our_respiration_type & affected_respiration_type)
affected_mob.losebreath -= 2 * REM * seconds_per_tick
@@ -880,7 +880,7 @@
var/need_mob_update
need_mob_update = affected_mob.adjustStaminaLoss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
- var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
if(our_respiration_type & affected_respiration_type)
affected_mob.losebreath++
@@ -948,7 +948,7 @@
exposed_mob.visible_message(span_warning("[exposed_mob]'s body does not react..."))
return
- if(iscarbon(exposed_mob) && !(methods & INGEST)) //simplemobs can still be splashed
+ if(iscarbon(exposed_mob) && !(methods & (INGEST|INHALE))) //simplemobs can still be splashed
return ..()
if(HAS_TRAIT(exposed_mob, TRAIT_HUSK))
@@ -1708,10 +1708,10 @@
affected_mob.adjustOxyLoss(rand(3, 4) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(prob(50))
- var/obj/item/organ/internal/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
our_lungs.apply_organ_damage(1 * REM * seconds_per_tick)
else
- var/obj/item/organ/internal/heart/our_heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/our_heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
our_heart.apply_organ_damage(1 * REM * seconds_per_tick)
return UPDATE_MOB_HEALTH
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 8347c62629c..b18e3fe69eb 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -41,7 +41,7 @@
continue
exposed_mob.ForceContractDisease(strain)
- else if((methods & VAPOR) && (strain.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS))
+ else if((methods & (VAPOR|INHALE)) && (strain.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS))
if(!strain.has_required_infectious_organ(exposed_mob, ORGAN_SLOT_LUNGS))
continue
@@ -50,7 +50,7 @@
exposed_mob.ContactContractDisease(strain)
if(data && data["resistances"])
- if(methods & (INGEST|INJECT)) //have to inject or ingest it. no curefoam/cheap curesprays
+ if(methods & (INGEST|INJECT|INHALE)) //have to inject, inhale or ingest it. no curefoam/cheap curesprays
for(var/stuff in exposed_mob.diseases)
var/datum/disease/infection = stuff
if(infection.GetDiseaseID() in data["resistances"])
@@ -1333,7 +1333,7 @@
/datum/reagent/fuel/on_mob_life(mob/living/carbon/victim, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
return
if(victim.adjustToxLoss(0.5 * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
@@ -1469,10 +1469,10 @@
/datum/reagent/cyborg_mutation_nanomachines/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
. = ..()
- var/obj/item/organ/internal/liver/liver = exposed_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = exposed_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
return
- if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+ if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
exposed_mob.ForceContractDisease(new /datum/disease/transformation/robot(), FALSE, TRUE)
/datum/reagent/xenomicrobes
@@ -1484,7 +1484,7 @@
/datum/reagent/xenomicrobes/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
. = ..()
- if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+ if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
exposed_mob.ForceContractDisease(new /datum/disease/transformation/xeno(), FALSE, TRUE)
/datum/reagent/fungalspores
@@ -1497,7 +1497,7 @@
/datum/reagent/fungalspores/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
. = ..()
- if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+ if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
exposed_mob.ForceContractDisease(new /datum/disease/tuberculosis(), FALSE, TRUE)
/datum/reagent/snail
@@ -1510,7 +1510,7 @@
/datum/reagent/snail/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
. = ..()
- if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+ if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
exposed_mob.ForceContractDisease(new /datum/disease/gastrolosis(), FALSE, TRUE)
/datum/reagent/fluorosurfactant//foam precursor
@@ -1606,10 +1606,13 @@
/datum/reagent/nitrous_oxide/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
. = ..()
- if(methods & VAPOR)
+ if(methods & (VAPOR|INHALE))
// apply 2 seconds of drowsiness per unit applied, with a min duration of 4 seconds
var/drowsiness_to_apply = max(round(reac_volume, 1) * 2 SECONDS, 4 SECONDS)
exposed_mob.adjust_drowsiness(drowsiness_to_apply)
+ if(methods & INHALE)
+ exposed_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25 * reac_volume, required_organ_flag = affected_organ_flags)
+ exposed_mob.adjust_hallucinations(10 SECONDS * reac_volume)
/datum/reagent/nitrous_oxide/on_mob_metabolize(mob/living/affected_mob)
. = ..()
@@ -1965,7 +1968,7 @@
/datum/reagent/carpet/royal/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver)
// Heads of staff and the captain have a "royal metabolism"
if(HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM))
@@ -2459,7 +2462,7 @@
. = ..()
// Silently add the zombie infection organ to be activated upon death
if(!exposed_mob.get_organ_slot(ORGAN_SLOT_ZOMBIE))
- var/obj/item/organ/internal/zombie_infection/nodamage/ZI = new()
+ var/obj/item/organ/zombie_infection/nodamage/ZI = new()
ZI.Insert(exposed_mob)
/datum/reagent/magillitis
@@ -2635,7 +2638,7 @@
/datum/reagent/gondola_mutation_toxin/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
. = ..()
- if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+ if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
exposed_mob.ForceContractDisease(new gondola_disease, FALSE, TRUE)
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index d00185f4f69..a5d8fdaae18 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -54,7 +54,7 @@
. = ..()
if(!exposed_mob.can_mutate())
return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
- if(((methods & VAPOR) && prob(min(33, reac_volume))) || (methods & (INGEST|PATCH|INJECT)))
+ if(((methods & VAPOR) && prob(min(33, reac_volume))) || (methods & (INGEST|PATCH|INJECT|INHALE)))
exposed_mob.random_mutate_unique_identity()
exposed_mob.random_mutate_unique_features()
if(prob(98))
@@ -258,7 +258,7 @@
/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob)
. = ..()
holder_mob.adjustOxyLoss(0.5*REM, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
- if((data?["method"] & INGEST) && holder_mob.stat != DEAD)
+ if((data?["method"] & (INGEST|INHALE)) && holder_mob.stat != DEAD)
holder_mob.fakedeath(type)
/datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/affected_mob)
@@ -268,10 +268,10 @@
/datum/reagent/toxin/zombiepowder/on_transfer(atom/target_atom, methods, trans_volume)
. = ..()
var/datum/reagent/zombiepowder = target_atom.reagents.has_reagent(/datum/reagent/toxin/zombiepowder)
- if(!zombiepowder || !(methods & INGEST))
+ if(!zombiepowder || !(methods & (INGEST|INHALE)))
return
LAZYINITLIST(zombiepowder.data)
- zombiepowder.data["method"] |= INGEST
+ zombiepowder.data["method"] |= (INGEST|INHALE)
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
@@ -655,7 +655,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
- var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)) //mmmm, the forbidden pickle juice
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) //it counteracts its own toxin damage.
return UPDATE_MOB_HEALTH
@@ -1085,11 +1085,11 @@
. = ..()
if(!istype(exposed_carbon))
return
- var/obj/item/organ/internal/liver/liver = exposed_carbon.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = exposed_carbon.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
return
reac_volume = round(reac_volume,0.1)
- if(methods & INGEST)
+ if(methods & (INGEST|INHALE))
exposed_carbon.adjustBruteLoss(min(6*toxpwr, reac_volume * toxpwr), required_bodytype = affected_bodytype)
return
if(methods & INJECT)
@@ -1341,7 +1341,7 @@
if(SPT_PROB(20, seconds_per_tick))
affected_mob.set_jitter_if_lower(rand(2 SECONDS, 3 SECONDS) * REM * seconds_per_tick)
if(SPT_PROB(5, seconds_per_tick))
- var/obj/item/organ/internal/tongue/tongue = affected_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = affected_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
if(tongue)
to_chat(affected_mob, span_warning("Your [tongue.name] feels numb..."))
affected_mob.set_slurring_if_lower(5 SECONDS * REM * seconds_per_tick)
diff --git a/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm b/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm
index 8c093888028..b34461f99b4 100644
--- a/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm
+++ b/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm
@@ -43,7 +43,7 @@
//This looks rediculous, but expose is usually called from the donor reagents datum - we want to edit the post exposure version present in the mob.
var/mob/living/carbon/carby = living_mob
//But because carbon mobs have stomachs we have to search in there because we're ingested
- var/obj/item/organ/internal/stomach/stomach = carby.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/stomach = carby.get_organ_slot(ORGAN_SLOT_STOMACH)
var/datum/reagent/eigenstate/eigen
if(stomach)
eigen = stomach.reagents.has_reagent(/datum/reagent/eigenstate)
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index 9e6c9da53a0..acde1703668 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -314,8 +314,8 @@
// Not quite the same if the reaction is in their stomach; they'll throw up
// from any explosion, but it'll only make them puke up everything in their
// stomach
- else if (istype(holder.my_atom, /obj/item/organ/internal/stomach))
- var/obj/item/organ/internal/stomach/indigestion = holder.my_atom
+ else if (istype(holder.my_atom, /obj/item/organ/stomach))
+ var/obj/item/organ/stomach/indigestion = holder.my_atom
if(power < 1)
return
indigestion.owner?.vomit(MOB_VOMIT_MESSAGE | MOB_VOMIT_FORCE, lost_nutrition = 150, distance = 5, purge_ratio = 1)
diff --git a/code/modules/reagents/chemistry/taste.dm b/code/modules/reagents/chemistry/taste.dm
new file mode 100644
index 00000000000..06cee0bba2d
--- /dev/null
+++ b/code/modules/reagents/chemistry/taste.dm
@@ -0,0 +1,77 @@
+
+#define TEXT_NO_TASTE "something indescribable"
+
+//================================TASTE===================================================
+/**
+ * Returns what this reagents in our given list taste like
+ *
+ * Arguments:
+ * * list/reagent_list - List of reagents to taste.
+ * * mob/living/taster - Who is doing the tasting. Some mobs can pick up specific flavours.
+ * * minimum_percent - The lower the minimum percent, the more sensitive the message is.
+ * * weight_modifier - Value to multiply each reagent's taste weight with.
+ */
+/proc/generate_reagents_taste_message(list/reagent_list, mob/living/taster, minimum_percent)
+ // We can't taste anything
+ if(minimum_percent > 100)
+ return TEXT_NO_TASTE
+
+ // Associative list of our tastes, descriptor - strength
+ var/list/tastes = list()
+ // Total of our taste strengths so far
+ var/total_taste = 0
+
+ for(var/datum/reagent/reagent as anything in reagent_list)
+ if(!reagent.taste_mult)
+ continue
+
+ var/list/taste_data = reagent.get_taste_description(taster)
+ for(var/taste in taste_data)
+ var/taste_strength = taste_data[taste] * reagent.volume * reagent.taste_mult
+ if(taste in tastes)
+ tastes[taste] += taste_strength
+ else
+ tastes[taste] = taste_strength
+ total_taste += taste_strength
+
+ // None of our reagents had any flavour
+ if(total_taste <= 0)
+ return TEXT_NO_TASTE
+
+ // If we have exactly one taste, don't bother with relative strengths
+ if(length(tastes) == 1)
+ return tastes[1]
+
+ // Sort tastes descending by strength, so strong flavours come first
+ sortTim(tastes, cmp = GLOBAL_PROC_REF(cmp_numeric_dsc), associative = TRUE)
+
+ // Lazylists for different taste strength categories, no need to initialize if we don't have such flavors
+ var/list/strong
+ var/list/mild
+ var/list/hint
+
+ for(var/taste_desc in tastes)
+ var/percent = tastes[taste_desc]/total_taste * 100
+ if(percent < minimum_percent)
+ continue
+
+ if(percent <= minimum_percent * 2)
+ LAZYADD(hint, taste_desc)
+ else if(percent > minimum_percent * 4)
+ LAZYADD(strong, taste_desc)
+ else
+ LAZYADD(mild, taste_desc)
+
+ var/list/out = list()
+
+ if(LAZYLEN(strong))
+ out += "the strong flavor of [english_list(strong, TEXT_NO_TASTE)]"
+ if(LAZYLEN(mild))
+ // Prefix "some " if there are strong flavors to avoid seeming like a strong flavor
+ out += "[LAZYLEN(strong) ? "some " : ""][english_list(mild, TEXT_NO_TASTE)]"
+ if(LAZYLEN(hint))
+ out += "a hint of [english_list(hint, TEXT_NO_TASTE)]"
+
+ return english_list(out, TEXT_NO_TASTE)
+
+#undef TEXT_NO_TASTE
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 9e7e0845166..4a61c12a500 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -72,7 +72,7 @@
. += span_notice("Left-click or right-click in-hand to view its transfer amount.")
if(isliving(user) && HAS_TRAIT(user, TRAIT_REMOTE_TASTING))
var/mob/living/living_user = user
- living_user.taste(reagents)
+ living_user.taste_container(reagents)
/obj/item/reagent_containers/create_reagents(max_vol, flags)
. = ..()
diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm
index 4c61f7af269..6c3c9c1b118 100644
--- a/code/modules/reagents/reagent_containers/cups/_cup.dm
+++ b/code/modules/reagents/reagent_containers/cups/_cup.dm
@@ -19,6 +19,10 @@
var/gulp_size = 5
///Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it.
var/isGlass = FALSE
+ ///What kind of chem transfer method does this cup use. Defaults to INGEST
+ var/reagent_consumption_method = INGEST
+ ///What sound does our consumption play on consuming from the container?
+ var/consumption_sound = 'sound/items/drink.ogg'
/obj/item/reagent_containers/cup/examine(mob/user)
. = ..()
@@ -87,9 +91,9 @@
SEND_SIGNAL(src, COMSIG_GLASS_DRANK, target_mob, user)
SEND_SIGNAL(target_mob, COMSIG_GLASS_DRANK, src, user) // NOVA EDIT ADDITION - Hemophages can't casually drink what's not going to regenerate their blood
var/fraction = min(gulp_size/reagents.total_volume, 1)
- reagents.trans_to(target_mob, gulp_size, transferred_by = user, methods = INGEST)
+ reagents.trans_to(target_mob, gulp_size, transferred_by = user, methods = reagent_consumption_method)
checkLiked(fraction, target_mob)
- playsound(target_mob.loc,'sound/items/drink.ogg', rand(10,50), TRUE)
+ playsound(target_mob.loc, consumption_sound, rand(10,50), TRUE)
if(!iscarbon(target_mob))
return
var/mob/living/carbon/carbon_drinker = target_mob
diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
index dcf56faec4c..5712d383f0b 100644
--- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
@@ -693,7 +693,7 @@
return
//The bonus to success chance that the user gets for being a command role
- var/obj/item/organ/internal/liver/liver = user.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = user.get_organ_slot(ORGAN_SLOT_LIVER)
var/command_bonus = (!isnull(liver) && HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM)) ? 20 : 0
//The bonus to success chance that the user gets for having a sabrage skillchip installed/otherwise having the trait through other means
diff --git a/code/modules/reagents/withdrawal/generic_addictions.dm b/code/modules/reagents/withdrawal/generic_addictions.dm
index 8dc10cf0a50..d385078086f 100644
--- a/code/modules/reagents/withdrawal/generic_addictions.dm
+++ b/code/modules/reagents/withdrawal/generic_addictions.dm
@@ -111,7 +111,7 @@
to_chat(affected_human, span_warning("Your chin itches."))
affected_human.set_facial_hairstyle("Beard (Full)", update = TRUE)
//Only like gross food
- var/obj/item/organ/internal/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
return
tongue.liked_foodtypes = GROSS
@@ -124,7 +124,7 @@
return
to_chat(affected_carbon, span_warning("You feel yourself adapt to the darkness."))
var/mob/living/carbon/human/affected_human = affected_carbon
- var/obj/item/organ/internal/eyes/empowered_eyes = affected_human.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/empowered_eyes = affected_human.get_organ_by_type(/obj/item/organ/eyes)
if(empowered_eyes)
ADD_TRAIT(affected_human, TRAIT_NIGHT_VISION, "maint_drug_addiction")
empowered_eyes?.refresh()
@@ -146,7 +146,7 @@
. = ..()
affected_carbon.remove_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type)
//restore tongue's tastes
- var/obj/item/organ/internal/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
if(tongue)
tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
tongue.disliked_foodtypes = initial(tongue.disliked_foodtypes)
@@ -155,7 +155,7 @@
return
var/mob/living/carbon/human/affected_human = affected_carbon
REMOVE_TRAIT(affected_human, TRAIT_NIGHT_VISION, "maint_drug_addiction")
- var/obj/item/organ/internal/eyes/eyes = affected_human.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes = affected_human.get_organ_by_type(/obj/item/organ/eyes)
eyes?.refresh()
///Makes you a hypochondriac - I'd like to call it hypochondria, but "I could use some hypochondria" doesn't work
@@ -195,7 +195,7 @@
if(!HAS_TRAIT(affected_carbon, TRAIT_RESISTCOLD))
possibilities += /datum/hallucination/fake_alert/cold
- var/obj/item/organ/internal/lungs/lungs = affected_carbon.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/lungs = affected_carbon.get_organ_slot(ORGAN_SLOT_LUNGS)
if(lungs)
if(lungs.safe_oxygen_min)
possibilities += /datum/hallucination/fake_alert/need_oxygen
diff --git a/code/modules/religion/burdened/burdened_trauma.dm b/code/modules/religion/burdened/burdened_trauma.dm
index 51e763dbcb5..ebdfcda6565 100644
--- a/code/modules/religion/burdened/burdened_trauma.dm
+++ b/code/modules/religion/burdened/burdened_trauma.dm
@@ -153,8 +153,8 @@
if(!(organ.slot in critical_slots))
return FALSE
- else if(istype(organ, /obj/item/organ/internal/eyes))
- var/obj/item/organ/internal/eyes/eyes = organ
+ else if(istype(organ, /obj/item/organ/eyes))
+ var/obj/item/organ/eyes/eyes = organ
if(eyes.tint < TINT_BLIND) //unless you were already blinded by them (flashlight eyes), this is adding burden!
return TRUE
return FALSE
diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm
index 8352e2c10ab..0fc67738913 100644
--- a/code/modules/religion/burdened/psyker.dm
+++ b/code/modules/religion/burdened/psyker.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain/psyker
+/obj/item/organ/brain/psyker
name = "psyker brain"
desc = "This brain is blue, split into two hemispheres, and has immense psychic powers. What kind of monstrosity would use that?"
icon_state = "brain-psyker"
@@ -10,17 +10,17 @@
organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP, TRAIT_ANTIMAGIC_NO_SELFBLOCK)
w_class = WEIGHT_CLASS_NORMAL
-/obj/item/organ/internal/brain/psyker/on_mob_insert(mob/living/carbon/inserted_into)
+/obj/item/organ/brain/psyker/on_mob_insert(mob/living/carbon/inserted_into)
. = ..()
inserted_into.AddComponent(/datum/component/echolocation, blocking_trait = TRAIT_DUMB, echo_group = "psyker", echo_icon = "psyker", color_path = /datum/client_colour/psyker)
inserted_into.AddComponent(/datum/component/anti_magic, antimagic_flags = MAGIC_RESISTANCE_MIND)
-/obj/item/organ/internal/brain/psyker/on_mob_remove(mob/living/carbon/removed_from)
+/obj/item/organ/brain/psyker/on_mob_remove(mob/living/carbon/removed_from)
. = ..()
qdel(removed_from.GetComponent(/datum/component/echolocation))
qdel(removed_from.GetComponent(/datum/component/anti_magic))
-/obj/item/organ/internal/brain/psyker/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/brain/psyker/on_life(seconds_per_tick, times_fired)
. = ..()
var/obj/item/bodypart/head/psyker/psyker_head = owner.get_bodypart(zone)
if(istype(psyker_head))
@@ -72,15 +72,15 @@
/// Proc with no side effects that turns someone into a psyker. returns FALSE if it could not psykerize.
/mob/living/carbon/human/proc/psykerize()
var/obj/item/bodypart/head/old_head = get_bodypart(BODY_ZONE_HEAD)
- var/obj/item/organ/internal/brain/old_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
- var/obj/item/organ/internal/old_eyes = get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/brain/old_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/old_eyes = get_organ_slot(ORGAN_SLOT_EYES)
if(stat == DEAD || !old_head || !old_brain)
return FALSE
var/obj/item/bodypart/head/psyker/psyker_head = new()
if(!psyker_head.replace_limb(src, special = TRUE))
return FALSE
qdel(old_head)
- var/obj/item/organ/internal/brain/psyker/psyker_brain = new()
+ var/obj/item/organ/brain/psyker/psyker_brain = new()
old_brain.before_organ_replacement(psyker_brain)
old_brain.Remove(src, special = TRUE, movement_flags = NO_ID_TRANSFER)
qdel(old_brain)
diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm
index b1c055ec9bd..58209cac74a 100644
--- a/code/modules/religion/religion_sects.dm
+++ b/code/modules/religion/religion_sects.dm
@@ -169,7 +169,7 @@
//first we determine if we can charge them
var/did_we_charge = FALSE
- var/obj/item/organ/internal/stomach/ethereal/eth_stomach = blessed.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/ethereal/eth_stomach = blessed.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(eth_stomach))
eth_stomach.adjust_charge(0.06 * STANDARD_CELL_CHARGE)
did_we_charge = TRUE
diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm
index b54c4e09b29..cd0fabba849 100644
--- a/code/modules/religion/rites.dm
+++ b/code/modules/religion/rites.dm
@@ -132,31 +132,31 @@
list(
// Arms
list(
- /obj/item/organ/internal/cyberimp/arm/combat = 1,
- /obj/item/organ/internal/cyberimp/arm/surgery = 1000000,
- /obj/item/organ/internal/cyberimp/arm/toolset = 1500000,
+ /obj/item/organ/cyberimp/arm/combat = 1,
+ /obj/item/organ/cyberimp/arm/surgery = 1000000,
+ /obj/item/organ/cyberimp/arm/toolset = 1500000,
) = 15,
// Eyes
list(
- /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic = 1,
- /obj/item/organ/internal/cyberimp/eyes/hud/medical = 1,
- /obj/item/organ/internal/eyes/robotic/glow = 1,
- /obj/item/organ/internal/eyes/robotic/shield = 2,
+ /obj/item/organ/cyberimp/eyes/hud/diagnostic = 1,
+ /obj/item/organ/cyberimp/eyes/hud/medical = 1,
+ /obj/item/organ/eyes/robotic/glow = 1,
+ /obj/item/organ/eyes/robotic/shield = 2,
) = 15,
// Chest
list(
- /obj/item/organ/internal/cyberimp/chest/reviver = 1,
- /obj/item/organ/internal/cyberimp/chest/thrusters = 2,
+ /obj/item/organ/cyberimp/chest/reviver = 1,
+ /obj/item/organ/cyberimp/chest/thrusters = 2,
) = 9,
// Brain / Head
list(
- /obj/item/organ/internal/cyberimp/brain/anti_drop = 50,
- /obj/item/organ/internal/cyberimp/brain/connector = 50,
- /obj/item/organ/internal/cyberimp/brain/anti_stun = 10,
+ /obj/item/organ/cyberimp/brain/anti_drop = 50,
+ /obj/item/organ/cyberimp/brain/connector = 50,
+ /obj/item/organ/cyberimp/brain/anti_stun = 10,
) = 10,
// Misc
list(
- /obj/item/organ/internal/cyberimp/mouth/breathing_tube = 1,
+ /obj/item/organ/cyberimp/mouth/breathing_tube = 1,
) = 5,
)
)
@@ -264,7 +264,7 @@
if(!HAS_TRAIT_FROM(user, TRAIT_HOPELESSLY_ADDICTED, "maint_adaptation"))
to_chat(user, span_warning("You need to adapt to maintenance first."))
return FALSE
- var/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/adapted = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/night_vision/maintenance_adapted/adapted = user.get_organ_slot(ORGAN_SLOT_EYES)
if(adapted && istype(adapted))
to_chat(user, span_warning("Your eyes are already adapted!"))
return FALSE
@@ -272,12 +272,12 @@
/datum/religion_rites/adapted_eyes/invoke_effect(mob/living/carbon/human/user, atom/movable/religious_tool)
..()
- var/obj/item/organ/internal/eyes/oldeyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/oldeyes = user.get_organ_slot(ORGAN_SLOT_EYES)
to_chat(user, span_warning("You feel your eyes adapt to the darkness!"))
if(oldeyes)
oldeyes.Remove(user, special = TRUE)
qdel(oldeyes)//eh
- var/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/neweyes = new
+ var/obj/item/organ/eyes/night_vision/maintenance_adapted/neweyes = new
neweyes.Insert(user, special = TRUE)
/datum/religion_rites/adapted_food
diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm
index ef8c762acd7..53309d39c7d 100644
--- a/code/modules/research/designs/limbgrower_designs.dm
+++ b/code/modules/research/designs/limbgrower_designs.dm
@@ -41,7 +41,7 @@
id = "heart"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 30)
- build_path = /obj/item/organ/internal/heart
+ build_path = /obj/item/organ/heart
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
/datum/design/lungs
@@ -49,7 +49,7 @@
id = "lungs"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
- build_path = /obj/item/organ/internal/lungs
+ build_path = /obj/item/organ/lungs
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
/datum/design/liver
@@ -57,7 +57,7 @@
id = "liver"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
- build_path = /obj/item/organ/internal/liver
+ build_path = /obj/item/organ/liver
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
/datum/design/stomach
@@ -65,7 +65,7 @@
id = "stomach"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 15)
- build_path = /obj/item/organ/internal/stomach
+ build_path = /obj/item/organ/stomach
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
/datum/design/appendix
@@ -73,7 +73,7 @@
id = "appendix"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 5) //why would you need this
- build_path = /obj/item/organ/internal/appendix
+ build_path = /obj/item/organ/appendix
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
/datum/design/eyes
@@ -81,7 +81,7 @@
id = "eyes"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
- build_path = /obj/item/organ/internal/eyes
+ build_path = /obj/item/organ/eyes
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
/datum/design/ears
@@ -89,7 +89,7 @@
id = "ears"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
- build_path = /obj/item/organ/internal/ears
+ build_path = /obj/item/organ/ears
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
/datum/design/tongue
@@ -97,7 +97,7 @@
id = "tongue"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
- build_path = /obj/item/organ/internal/tongue
+ build_path = /obj/item/organ/tongue
category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
// Grows a fake lizard tail - not usable in lizard wine and other similar recipes.
@@ -106,7 +106,7 @@
id = "liztail"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
- build_path = /obj/item/organ/external/tail/lizard/fake
+ build_path = /obj/item/organ/tail/lizard/fake
category = list(SPECIES_LIZARD)
/datum/design/lizard_tongue
@@ -114,7 +114,7 @@
id = "liztongue"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
- build_path = /obj/item/organ/internal/tongue/lizard
+ build_path = /obj/item/organ/tongue/lizard
category = list(SPECIES_LIZARD)
/datum/design/monkey_tail
@@ -122,7 +122,7 @@
id = "monkeytail"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
- build_path = /obj/item/organ/external/tail/monkey
+ build_path = /obj/item/organ/tail/monkey
category = list(RND_CATEGORY_LIMBS_OTHER, RND_CATEGORY_INITIAL)
/datum/design/cat_tail
@@ -130,7 +130,7 @@
id = "cattail"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
- build_path = /obj/item/organ/external/tail/cat
+ build_path = /obj/item/organ/tail/cat
category = list(SPECIES_HUMAN)
/datum/design/cat_ears
@@ -138,7 +138,7 @@
id = "catears"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
- build_path = /obj/item/organ/internal/ears/cat
+ build_path = /obj/item/organ/ears/cat
category = list(SPECIES_HUMAN)
/datum/design/plasmaman_lungs
@@ -146,7 +146,7 @@
id = "plasmamanlungs"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
- build_path = /obj/item/organ/internal/lungs/plasmaman
+ build_path = /obj/item/organ/lungs/plasmaman
category = list(SPECIES_PLASMAMAN)
/datum/design/plasmaman_tongue
@@ -154,7 +154,7 @@
id = "plasmamantongue"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
- build_path = /obj/item/organ/internal/tongue/bone/plasmaman
+ build_path = /obj/item/organ/tongue/bone/plasmaman
category = list(SPECIES_PLASMAMAN)
/datum/design/plasmaman_liver
@@ -162,7 +162,7 @@
id = "plasmamanliver"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
- build_path = /obj/item/organ/internal/liver/bone/plasmaman
+ build_path = /obj/item/organ/liver/bone/plasmaman
category = list(SPECIES_PLASMAMAN)
/datum/design/plasmaman_stomach
@@ -170,7 +170,7 @@
id = "plasmamanstomach"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
- build_path = /obj/item/organ/internal/stomach/bone/plasmaman
+ build_path = /obj/item/organ/stomach/bone/plasmaman
category = list(SPECIES_PLASMAMAN)
/datum/design/ethereal_stomach
@@ -178,7 +178,7 @@
id = "etherealstomach"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
- build_path = /obj/item/organ/internal/stomach/ethereal
+ build_path = /obj/item/organ/stomach/ethereal
category = list(SPECIES_ETHEREAL)
/datum/design/ethereal_tongue
@@ -186,7 +186,7 @@
id = "etherealtongue"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
- build_path = /obj/item/organ/internal/tongue/ethereal
+ build_path = /obj/item/organ/tongue/ethereal
category = list(SPECIES_ETHEREAL)
/datum/design/ethereal_lungs
@@ -194,7 +194,7 @@
id = "ethereallungs"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
- build_path = /obj/item/organ/internal/lungs/ethereal
+ build_path = /obj/item/organ/lungs/ethereal
category = list(SPECIES_ETHEREAL)
// Intentionally not growable by normal means - for balance conerns.
@@ -203,7 +203,7 @@
id = "etherealheart"
build_type = LIMBGROWER
reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
- build_path = /obj/item/organ/internal/heart/ethereal
+ build_path = /obj/item/organ/heart/ethereal
category = list(SPECIES_ETHEREAL)
/datum/design/armblade
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index c34411fff61..d55c1a6f243 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -392,7 +392,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 3.5 SECONDS
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass = SMALL_MATERIAL_AMOUNT*2.5)
- build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube
+ build_path = /obj/item/organ/cyberimp/mouth/breathing_tube
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
)
@@ -409,7 +409,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5,
)
construction_time = 2 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/surgery
+ build_path = /obj/item/organ/cyberimp/arm/surgery
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
)
@@ -426,7 +426,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5,
)
construction_time = 2 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/toolset
+ build_path = /obj/item/organ/cyberimp/arm/toolset
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
)
@@ -444,7 +444,7 @@
/datum/material/silver =SMALL_MATERIAL_AMOUNT*5,
/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
)
- build_path = /obj/item/organ/internal/cyberimp/eyes/hud/medical
+ build_path = /obj/item/organ/cyberimp/eyes/hud/medical
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
)
@@ -462,7 +462,7 @@
/datum/material/silver = SMALL_MATERIAL_AMOUNT*7.5,
/datum/material/gold = SMALL_MATERIAL_AMOUNT*7.5,
)
- build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security
+ build_path = /obj/item/organ/cyberimp/eyes/hud/security
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
)
@@ -480,7 +480,7 @@
/datum/material/silver = SMALL_MATERIAL_AMOUNT*6,
/datum/material/gold = SMALL_MATERIAL_AMOUNT*6,
)
- build_path = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic
+ build_path = /obj/item/organ/cyberimp/eyes/hud/diagnostic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
)
@@ -502,7 +502,7 @@
/datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/eyes/robotic/xray
+ build_path = /obj/item/organ/eyes/robotic/xray
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_COMBAT
)
@@ -511,7 +511,7 @@
/datum/design/cyberimp_xray/moth
name = "Moth X-ray Eyes"
id = "ci-xray-moth"
- build_path = /obj/item/organ/internal/eyes/robotic/xray/moth
+ build_path = /obj/item/organ/eyes/robotic/xray/moth
/datum/design/cyberimp_thermals
name = "Thermal Eyes"
@@ -527,7 +527,7 @@
/datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/diamond =SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/eyes/robotic/thermals
+ build_path = /obj/item/organ/eyes/robotic/thermals
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_COMBAT
)
@@ -536,7 +536,7 @@
/datum/design/cyberimp_thermals/moth
name = "Moth Thermal Eyes"
id = "ci-thermals-moth"
- build_path = /obj/item/organ/internal/eyes/robotic/thermals/moth
+ build_path = /obj/item/organ/eyes/robotic/thermals/moth
/datum/design/cyberimp_antidrop
name = "Anti-Drop Implant"
@@ -550,7 +550,7 @@
/datum/material/silver = SMALL_MATERIAL_AMOUNT*4,
/datum/material/gold = SMALL_MATERIAL_AMOUNT*4,
)
- build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop
+ build_path = /obj/item/organ/cyberimp/brain/anti_drop
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
@@ -568,7 +568,7 @@
/datum/material/silver =SMALL_MATERIAL_AMOUNT*5,
/datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun
+ build_path = /obj/item/organ/cyberimp/brain/anti_stun
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
@@ -586,7 +586,7 @@
/datum/material/gold=SMALL_MATERIAL_AMOUNT*3,
/datum/material/diamond =SMALL_MATERIAL_AMOUNT*5,
)
- build_path = /obj/item/organ/internal/cyberimp/chest/spine
+ build_path = /obj/item/organ/cyberimp/chest/spine
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
)
@@ -603,7 +603,7 @@
/datum/material/glass = SMALL_MATERIAL_AMOUNT*6,
/datum/material/titanium = SMALL_MATERIAL_AMOUNT*3,
)
- build_path = /obj/item/organ/internal/cyberimp/brain/connector
+ build_path = /obj/item/organ/cyberimp/brain/connector
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC
)
@@ -620,7 +620,7 @@
/datum/material/glass =SMALL_MATERIAL_AMOUNT*5,
/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
)
- build_path = /obj/item/organ/internal/cyberimp/chest/nutriment
+ build_path = /obj/item/organ/cyberimp/chest/nutriment
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
)
@@ -638,7 +638,7 @@
/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
/datum/material/uranium = SMALL_MATERIAL_AMOUNT*7.5,
)
- build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus
+ build_path = /obj/item/organ/cyberimp/chest/nutriment/plus
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
)
@@ -656,7 +656,7 @@
/datum/material/gold =SMALL_MATERIAL_AMOUNT * 3,
/datum/material/uranium =SMALL_MATERIAL_AMOUNT*5,
)
- build_path = /obj/item/organ/internal/cyberimp/chest/reviver
+ build_path = /obj/item/organ/cyberimp/chest/reviver
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
)
@@ -674,7 +674,7 @@
/datum/material/silver =HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/diamond =HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/cyberimp/chest/thrusters
+ build_path = /obj/item/organ/cyberimp/chest/thrusters
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
)
@@ -789,7 +789,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 4 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/liver/cybernetic
+ build_path = /obj/item/organ/liver/cybernetic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
)
@@ -800,7 +800,7 @@
desc = "A cybernetic liver."
id = "cybernetic_liver_tier2"
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/liver/cybernetic/tier2
+ build_path = /obj/item/organ/liver/cybernetic/tier2
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
)
@@ -812,7 +812,7 @@
id = "cybernetic_liver_tier3"
construction_time = 5 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/liver/cybernetic/tier3
+ build_path = /obj/item/organ/liver/cybernetic/tier3
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -825,7 +825,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 4 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/heart/cybernetic
+ build_path = /obj/item/organ/heart/cybernetic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
)
@@ -836,7 +836,7 @@
desc = "A cybernetic heart."
id = "cybernetic_heart_tier2"
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/heart/cybernetic/tier2
+ build_path = /obj/item/organ/heart/cybernetic/tier2
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
)
@@ -848,7 +848,7 @@
id = "cybernetic_heart_tier3"
construction_time = 5 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/heart/cybernetic/tier3
+ build_path = /obj/item/organ/heart/cybernetic/tier3
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -865,7 +865,7 @@
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/diamond = SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/heart/cybernetic/anomalock
+ build_path = /obj/item/organ/heart/cybernetic/anomalock
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
)
@@ -878,7 +878,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 4 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/lungs/cybernetic
+ build_path = /obj/item/organ/lungs/cybernetic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
)
@@ -889,7 +889,7 @@
desc = "A pair of cybernetic lungs."
id = "cybernetic_lungs_tier2"
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/lungs/cybernetic/tier2
+ build_path = /obj/item/organ/lungs/cybernetic/tier2
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
)
@@ -901,7 +901,7 @@
id = "cybernetic_lungs_tier3"
construction_time = 5 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/lungs/cybernetic/tier3
+ build_path = /obj/item/organ/lungs/cybernetic/tier3
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -914,7 +914,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 4 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/stomach/cybernetic
+ build_path = /obj/item/organ/stomach/cybernetic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
)
@@ -925,7 +925,7 @@
desc = "A cybernetic stomach."
id = "cybernetic_stomach_tier2"
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/stomach/cybernetic/tier2
+ build_path = /obj/item/organ/stomach/cybernetic/tier2
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
)
@@ -937,7 +937,7 @@
id = "cybernetic_stomach_tier3"
construction_time = 5 SECONDS
materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5)
- build_path = /obj/item/organ/internal/stomach/cybernetic/tier3
+ build_path = /obj/item/organ/stomach/cybernetic/tier3
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -950,7 +950,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 3 SECONDS
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4)
- build_path = /obj/item/organ/internal/ears/cybernetic
+ build_path = /obj/item/organ/ears/cybernetic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
)
@@ -967,7 +967,7 @@
/datum/material/glass = SMALL_MATERIAL_AMOUNT*5,
/datum/material/silver = SMALL_MATERIAL_AMOUNT*5,
)
- build_path = /obj/item/organ/internal/ears/cybernetic/upgraded
+ build_path = /obj/item/organ/ears/cybernetic/upgraded
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
)
@@ -984,7 +984,7 @@
/datum/material/glass = SMALL_MATERIAL_AMOUNT*5,
/datum/material/silver = SMALL_MATERIAL_AMOUNT*5,
)
- build_path = /obj/item/organ/internal/ears/cybernetic/whisper
+ build_path = /obj/item/organ/ears/cybernetic/whisper
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -1001,7 +1001,7 @@
/datum/material/glass = SMALL_MATERIAL_AMOUNT*5,
/datum/material/silver = SMALL_MATERIAL_AMOUNT*5,
)
- build_path = /obj/item/organ/internal/ears/cybernetic/xray
+ build_path = /obj/item/organ/ears/cybernetic/xray
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -1014,7 +1014,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 3 SECONDS
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4)
- build_path = /obj/item/organ/internal/eyes/robotic/basic
+ build_path = /obj/item/organ/eyes/robotic/basic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
)
@@ -1023,13 +1023,13 @@
/datum/design/cybernetic_eyes/moth
name = "Basic Cybernetic Moth Eyes"
id = "cybernetic_eyes_moth"
- build_path = /obj/item/organ/internal/eyes/robotic/basic/moth
+ build_path = /obj/item/organ/eyes/robotic/basic/moth
/datum/design/cybernetic_eyes/improved
name = "Cybernetic Eyes"
desc = "A pair of cybernetic eyes."
id = "cybernetic_eyes_improved"
- build_path = /obj/item/organ/internal/eyes/robotic
+ build_path = /obj/item/organ/eyes/robotic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
)
@@ -1038,7 +1038,7 @@
/datum/design/cybernetic_eyes/improved/moth
name = "Cybernetic Moth Eyes"
id = "cybernetic_eyes_improved_moth"
- build_path = /obj/item/organ/internal/eyes/robotic/moth
+ build_path = /obj/item/organ/eyes/robotic/moth
/datum/design/cyberimp_welding
name = "Welding Shield Eyes"
@@ -1047,7 +1047,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 4 SECONDS
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4)
- build_path = /obj/item/organ/internal/eyes/robotic/shield
+ build_path = /obj/item/organ/eyes/robotic/shield
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -1056,7 +1056,7 @@
/datum/design/cyberimp_welding/moth
name = "Welding Shield Moth Eyes"
id = "ci-welding-moth"
- build_path = /obj/item/organ/internal/eyes/robotic/shield/moth
+ build_path = /obj/item/organ/eyes/robotic/shield/moth
/datum/design/cyberimp_gloweyes
name = "Luminescent Eyes"
@@ -1065,7 +1065,7 @@
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
construction_time = 4 SECONDS
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT)
- build_path = /obj/item/organ/internal/eyes/robotic/glow
+ build_path = /obj/item/organ/eyes/robotic/glow
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
)
@@ -1074,7 +1074,7 @@
/datum/design/cyberimp_gloweyes/moth
name = "Luminescent Moth Eyes"
id = "ci-gloweyes-moth"
- build_path = /obj/item/organ/internal/eyes/robotic/glow/moth
+ build_path = /obj/item/organ/eyes/robotic/glow/moth
/////////////////////
///Surgery Designs///
diff --git a/code/modules/spells/spell_types/self/lichdom.dm b/code/modules/spells/spell_types/self/lichdom.dm
index 19ad55d9eee..8aa86d63a1b 100644
--- a/code/modules/spells/spell_types/self/lichdom.dm
+++ b/code/modules/spells/spell_types/self/lichdom.dm
@@ -62,7 +62,7 @@
if(iscarbon(cast_on))
var/mob/living/carbon/carbon_cast_on = cast_on
- var/obj/item/organ/internal/brain/lich_brain = carbon_cast_on.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/lich_brain = carbon_cast_on.get_organ_slot(ORGAN_SLOT_BRAIN)
if(lich_brain) // This prevents MMIs being used to stop lich revives
lich_brain.organ_flags &= ~ORGAN_VITAL
lich_brain.decoy_override = TRUE
diff --git a/code/modules/spells/spell_types/self/splattercasting_spell.dm b/code/modules/spells/spell_types/self/splattercasting_spell.dm
index 184a2afab7c..e76f8e3c1b9 100644
--- a/code/modules/spells/spell_types/self/splattercasting_spell.dm
+++ b/code/modules/spells/spell_types/self/splattercasting_spell.dm
@@ -28,7 +28,7 @@
brings unimaginable momentary torment as your heart stops, and your skin grows cold. You are now \
merely a vessel for the arcane flow. Soon, all that is left is not pain, but hunger."))
- cast_on.set_species(/datum/species/vampire)
+ cast_on.set_species(/datum/species/human/vampire)
cast_on.blood_volume = BLOOD_VOLUME_NORMAL ///for predictable blood total amounts when the spell is first cast.
cast_on.AddComponent(/datum/component/splattercasting)
diff --git a/code/modules/station_goals/vault_mutation.dm b/code/modules/station_goals/vault_mutation.dm
index b05bda05db7..33c46054158 100644
--- a/code/modules/station_goals/vault_mutation.dm
+++ b/code/modules/station_goals/vault_mutation.dm
@@ -109,7 +109,7 @@
/datum/mutation/human/plasmocile/on_acquiring(mob/living/carbon/human/acquirer)
. = ..()
- var/obj/item/organ/internal/lungs/improved_lungs = acquirer.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/improved_lungs = acquirer.get_organ_slot(ORGAN_SLOT_LUNGS)
ADD_TRAIT(owner, TRAIT_VIRUSIMMUNE, GENETIC_MUTATION)
if(improved_lungs)
apply_buff(improved_lungs)
@@ -118,7 +118,7 @@
/datum/mutation/human/plasmocile/on_losing(mob/living/carbon/human/owner)
. = ..()
- var/obj/item/organ/internal/lungs/improved_lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/improved_lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
REMOVE_TRAIT(owner, TRAIT_VIRUSIMMUNE, GENETIC_MUTATION)
UnregisterSignal(owner, COMSIG_CARBON_LOSE_ORGAN)
UnregisterSignal(owner, COMSIG_CARBON_GAIN_ORGAN)
@@ -128,19 +128,19 @@
/datum/mutation/human/plasmocile/proc/remove_modification(mob/source, obj/item/organ/old_organ)
SIGNAL_HANDLER
- if(istype(old_organ, /obj/item/organ/internal/lungs))
+ if(istype(old_organ, /obj/item/organ/lungs))
remove_buff(old_organ)
/datum/mutation/human/plasmocile/proc/reapply_modification(mob/source, obj/item/organ/new_organ)
SIGNAL_HANDLER
- if(istype(new_organ, /obj/item/organ/internal/lungs))
+ if(istype(new_organ, /obj/item/organ/lungs))
apply_buff(new_organ)
-/datum/mutation/human/plasmocile/proc/apply_buff(obj/item/organ/internal/lungs/our_lungs)
+/datum/mutation/human/plasmocile/proc/apply_buff(obj/item/organ/lungs/our_lungs)
our_lungs.plas_breath_dam_min *= 0
our_lungs.plas_breath_dam_max *= 0
-/datum/mutation/human/plasmocile/proc/remove_buff(obj/item/organ/internal/lungs/our_lungs)
+/datum/mutation/human/plasmocile/proc/remove_buff(obj/item/organ/lungs/our_lungs)
our_lungs.plas_breath_dam_min = initial(our_lungs.plas_breath_dam_min)
our_lungs.plas_breath_dam_max = initial(our_lungs.plas_breath_dam_max)
diff --git a/code/modules/surgery/advanced/bioware/cortex_folding.dm b/code/modules/surgery/advanced/bioware/cortex_folding.dm
index 2e20f0906ac..cd7d55f664c 100644
--- a/code/modules/surgery/advanced/bioware/cortex_folding.dm
+++ b/code/modules/surgery/advanced/bioware/cortex_folding.dm
@@ -30,7 +30,7 @@
)
/datum/surgery/advanced/bioware/cortex_folding/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!target_brain)
return FALSE
return ..()
diff --git a/code/modules/surgery/advanced/bioware/cortex_imprint.dm b/code/modules/surgery/advanced/bioware/cortex_imprint.dm
index 27a75a26167..4f65f305df3 100644
--- a/code/modules/surgery/advanced/bioware/cortex_imprint.dm
+++ b/code/modules/surgery/advanced/bioware/cortex_imprint.dm
@@ -31,7 +31,7 @@
)
/datum/surgery/advanced/bioware/cortex_imprint/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!target_brain)
return FALSE
return ..()
diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm
index 61a39618d5e..461234fb952 100644
--- a/code/modules/surgery/advanced/brainwashing.dm
+++ b/code/modules/surgery/advanced/brainwashing.dm
@@ -40,7 +40,7 @@
/datum/surgery/advanced/brainwashing/can_start(mob/user, mob/living/carbon/target)
if(!..())
return FALSE
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!target_brain)
return FALSE
return TRUE
diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm
index 5c528acae52..cd433d55981 100644
--- a/code/modules/surgery/advanced/lobotomy.dm
+++ b/code/modules/surgery/advanced/lobotomy.dm
@@ -28,7 +28,7 @@
. = ..()
if(!.)
return FALSE
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!target_brain)
return FALSE
return TRUE
@@ -102,7 +102,7 @@
return ..()
/datum/surgery_step/lobotomize/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(target_brain)
display_results(
user,
diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm
index 63350139e07..a4512e9378e 100644
--- a/code/modules/surgery/advanced/necrotic_revival.dm
+++ b/code/modules/surgery/advanced/necrotic_revival.dm
@@ -13,7 +13,7 @@
/datum/surgery/advanced/necrotic_revival/can_start(mob/user, mob/living/carbon/target)
. = ..()
- var/obj/item/organ/internal/zombie_infection/z_infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE)
+ var/obj/item/organ/zombie_infection/z_infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE)
if(z_infection)
return FALSE
@@ -46,6 +46,6 @@
)
display_pain(target, "Your head goes totally numb for a moment, the pain is overwhelming!")
if(!target.get_organ_slot(ORGAN_SLOT_ZOMBIE))
- var/obj/item/organ/internal/zombie_infection/z_infection = new()
+ var/obj/item/organ/zombie_infection/z_infection = new()
z_infection.Insert(target)
return ..()
diff --git a/code/modules/surgery/advanced/pacification.dm b/code/modules/surgery/advanced/pacification.dm
index 6c2d990cb96..899bd6a436c 100644
--- a/code/modules/surgery/advanced/pacification.dm
+++ b/code/modules/surgery/advanced/pacification.dm
@@ -26,7 +26,7 @@
/datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target)
. = ..()
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!target_brain)
return FALSE
diff --git a/code/modules/surgery/advanced/wingreconstruction.dm b/code/modules/surgery/advanced/wingreconstruction.dm
index 3234b61e1e0..a3931dd4e5e 100644
--- a/code/modules/surgery/advanced/wingreconstruction.dm
+++ b/code/modules/surgery/advanced/wingreconstruction.dm
@@ -12,8 +12,8 @@
/datum/surgery/advanced/wing_reconstruction/can_start(mob/user, mob/living/carbon/target)
if(!istype(target))
return FALSE
- var/obj/item/organ/external/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
- if(!istype(wings, /obj/item/organ/external/wings/moth))
+ var/obj/item/organ/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ if(!istype(wings, /obj/item/organ/wings/moth))
return FALSE
return ..() && wings?.burnt
@@ -48,12 +48,12 @@
span_notice("[user] completes the surgery on [target]'s wings."),
)
display_pain(target, "You can feel your wings again!")
- var/obj/item/organ/external/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
- if(istype(wings, /obj/item/organ/external/wings/moth)) //make sure we only heal moth wings.
+ var/obj/item/organ/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ if(istype(wings, /obj/item/organ/wings/moth)) //make sure we only heal moth wings.
wings.heal_wings(user, ALL)
- var/obj/item/organ/external/antennae/antennae = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_ANTENNAE) //i mean we might aswell heal their antennae too
- antennae?.heal_antennae()
+ var/obj/item/organ/antennae/antennae = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_ANTENNAE) //i mean we might aswell heal their antennae too
+ antennae?.heal_antennae(user, ALL)
human_target.update_body_parts()
return ..()
diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm
index 7492ad8173f..12a19ae8f22 100644
--- a/code/modules/surgery/bodyparts/head.dm
+++ b/code/modules/surgery/bodyparts/head.dm
@@ -113,7 +113,7 @@
/obj/item/bodypart/head/examine(mob/user)
. = ..()
if(show_organs_on_examine && IS_ORGANIC_LIMB(src))
- var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in src
+ var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in src
if(!brain)
. += span_info("The brain has been removed from [src].")
else if(brain.suicided || (brain.brainmob && HAS_TRAIT(brain.brainmob, TRAIT_SUICIDED)))
@@ -130,13 +130,13 @@
else
. += span_info("It's completely lifeless.")
- if(!(locate(/obj/item/organ/internal/eyes) in src))
+ if(!(locate(/obj/item/organ/eyes) in src))
. += span_info("[real_name]'s eyes have been removed.")
- if(!(locate(/obj/item/organ/internal/ears) in src))
+ if(!(locate(/obj/item/organ/ears) in src))
. += span_info("[real_name]'s ears have been removed.")
- if(!(locate(/obj/item/organ/internal/tongue) in src))
+ if(!(locate(/obj/item/organ/tongue) in src))
. += span_info("[real_name]'s tongue has been removed.")
/obj/item/bodypart/head/can_dismember(obj/item/item)
@@ -151,7 +151,7 @@
/obj/item/bodypart/head/drop_organs(mob/user, violent_removal)
if(user)
user.visible_message(span_warning("[user] saws [src] open and pulls out a brain!"), span_notice("You saw [src] open and pull out a brain."))
- var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in src
+ var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in src
if(brain && violent_removal && prob(90)) //ghetto surgery can damage the brain.
to_chat(user, span_warning("[brain] was damaged in the process!"))
brain.set_organ_damage(brain.maxHealth)
@@ -176,7 +176,7 @@
. += get_hair_and_lips_icon(dropped)
// We need to get the eyes if we are dropped (ugh)
if(dropped)
- var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes) in src
+ var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes) in src
// This is a bit of copy/paste code from eyes.dm:generate_body_overlay
if(eyes?.eye_icon_state && (head_flags & HEAD_EYESPRITES))
var/image/eye_left = image('icons/mob/human/human_face.dmi', "[eyes.eye_icon_state]_l", -BODY_LAYER, SOUTH)
diff --git a/code/modules/surgery/bodyparts/head_hair_and_lips.dm b/code/modules/surgery/bodyparts/head_hair_and_lips.dm
index d6eaa3ec731..d553f94076f 100644
--- a/code/modules/surgery/bodyparts/head_hair_and_lips.dm
+++ b/code/modules/surgery/bodyparts/head_hair_and_lips.dm
@@ -37,12 +37,12 @@
else
show_eyeless = FALSE
else
- if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src) && !istype(src, /obj/item/bodypart/head/synth)) // NOVA EDIT CHANGE - ORIGINAL: if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src))
+ if(!hair_hidden && !(locate(/obj/item/organ/brain) in src) && !istype(src, /obj/item/bodypart/head/synth)) // NOVA EDIT CHANGE - ORIGINAL: if(!hair_hidden && !(locate(/obj/item/organ/brain) in src))
show_debrained = TRUE
else
show_debrained = FALSE
- if(!(locate(/obj/item/organ/internal/eyes) in src))
+ if(!(locate(/obj/item/organ/eyes) in src))
show_eyeless = TRUE
else
show_eyeless = FALSE
diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm
index c94bd0db701..25f66f40af9 100644
--- a/code/modules/surgery/bodyparts/parts.dm
+++ b/code/modules/surgery/bodyparts/parts.dm
@@ -35,7 +35,7 @@
/// Offset to apply to equipment worn on the neck
var/datum/worn_feature_offset/worn_neck_offset
/// Which functional (i.e. flightpotion) wing types (if any) does this bodypart support? If count is >1 a radial menu is used to choose between all icons in list
- var/list/wing_types = list(/obj/item/organ/external/wings/functional/angel)
+ var/list/wing_types = list(/obj/item/organ/wings/functional/angel)
/obj/item/bodypart/chest/forced_removal(dismembered, special, move_to_floor)
var/mob/living/carbon/old_owner = owner
@@ -74,7 +74,7 @@
if(!ishuman(owner))
return null
var/mob/living/carbon/human/human_owner = owner
- var/obj/item/organ/external/tail/tail = human_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/tail = human_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(tail)
return tail.get_butt_sprite()
diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm
index 7bdb2e7e613..c61a3a26169 100644
--- a/code/modules/surgery/bodyparts/robot_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm
@@ -212,7 +212,7 @@
robotic_emp_paralyze_damage_percent_threshold = 0.6
- wing_types = list(/obj/item/organ/external/wings/functional/robotic)
+ wing_types = list(/obj/item/organ/wings/functional/robotic)
var/wired = FALSE
var/obj/item/stock_parts/power_store/cell = null
diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
index d5fa9d1cfcb..e4477c4c1e5 100644
--- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
@@ -10,7 +10,7 @@
icon_greyscale = 'icons/mob/human/species/lizard/bodyparts.dmi'
limb_id = SPECIES_LIZARD
is_dimorphic = TRUE
- wing_types = list(/obj/item/organ/external/wings/functional/dragon)
+ wing_types = list(/obj/item/organ/wings/functional/dragon)
/obj/item/bodypart/chest/lizard/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_LIZARD)
diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
index 68aac78cb68..a8746c1cdab 100644
--- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
@@ -96,7 +96,7 @@
is_dimorphic = TRUE
dmg_overlay_type = null
burn_modifier = 0.5 // = 1/2x generic burn damage
- wing_types = list(/obj/item/organ/external/wings/functional/slime)
+ wing_types = list(/obj/item/organ/wings/functional/slime)
/obj/item/bodypart/chest/jelly/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME)
@@ -260,7 +260,7 @@
limb_id = SPECIES_FLYPERSON
is_dimorphic = TRUE
should_draw_greyscale = FALSE
- wing_types = list(/obj/item/organ/external/wings/functional/fly)
+ wing_types = list(/obj/item/organ/wings/functional/fly)
bodypart_traits = list(TRAIT_TACKLING_FRAIL_ATTACKER)
/obj/item/bodypart/arm/left/fly
@@ -337,7 +337,7 @@
should_draw_greyscale = FALSE
dmg_overlay_type = null
bodypart_flags = BODYPART_UNHUSKABLE
- wing_types = list(/obj/item/organ/external/wings/functional/skeleton)
+ wing_types = list(/obj/item/organ/wings/functional/skeleton)
/obj/item/bodypart/arm/left/skeleton
biological_state = (BIO_BONE|BIO_JOINTED)
diff --git a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
index 72e2d478c4a..cf6452a0d01 100644
--- a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
@@ -17,7 +17,7 @@
limb_id = SPECIES_MOTH
is_dimorphic = TRUE
should_draw_greyscale = FALSE
- wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra)
+ wing_types = list(/obj/item/organ/wings/functional/moth/megamoth, /obj/item/organ/wings/functional/moth/mothra)
bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER)
/obj/item/bodypart/chest/moth/get_butt_sprite()
diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm
index 52b0e6099ea..36f70ac931e 100644
--- a/code/modules/surgery/coronary_bypass.dm
+++ b/code/modules/surgery/coronary_bypass.dm
@@ -26,7 +26,7 @@
)
/datum/surgery/coronary_bypass/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
if(isnull(target_heart) || target_heart.damage < 60 || target_heart.operated)
return FALSE
return ..()
@@ -134,7 +134,7 @@
/datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
target.setOrganLoss(ORGAN_SLOT_HEART, 60)
- var/obj/item/organ/internal/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
if(target_heart) //slightly worrying if we lost our heart mid-operation, but that's life
target_heart.operated = TRUE
if(target_heart.organ_flags & ORGAN_EMP) //If our organ is failing due to an EMP, fix that
diff --git a/code/modules/surgery/ear_surgery.dm b/code/modules/surgery/ear_surgery.dm
index 4333b00913b..9e363e2ae9b 100644
--- a/code/modules/surgery/ear_surgery.dm
+++ b/code/modules/surgery/ear_surgery.dm
@@ -36,7 +36,7 @@
display_pain(target, "You feel a dizzying pain in your head!")
/datum/surgery_step/fix_ears/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
- var/obj/item/organ/internal/ears/target_ears = target.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/target_ears = target.get_organ_slot(ORGAN_SLOT_EARS)
display_results(
user,
target,
@@ -50,7 +50,7 @@
return ..()
/datum/surgery_step/fix_ears/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(target.get_organ_by_type(/obj/item/organ/internal/brain))
+ if(target.get_organ_by_type(/obj/item/organ/brain))
display_results(
user,
target,
diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm
index fb759baca87..3a0f7140091 100644
--- a/code/modules/surgery/eye_surgery.dm
+++ b/code/modules/surgery/eye_surgery.dm
@@ -34,7 +34,7 @@
display_pain(target, "You feel a stabbing pain in your eyes!")
/datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
- var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
user.visible_message(span_notice("[user] successfully fixes [target]'s eyes!"), span_notice("You succeed in fixing [target]'s eyes."))
display_results(
user,
@@ -50,7 +50,7 @@
return ..()
/datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(target.get_organ_by_type(/obj/item/organ/internal/brain))
+ if(target.get_organ_by_type(/obj/item/organ/brain))
display_results(
user,
target,
diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm
index bdcbfc60ac8..41c1141c412 100644
--- a/code/modules/surgery/gastrectomy.dm
+++ b/code/modules/surgery/gastrectomy.dm
@@ -27,7 +27,7 @@
)
/datum/surgery/gastrectomy/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
if(isnull(target_stomach) || target_stomach.damage < 50 || target_stomach.operated)
return FALSE
return ..()
@@ -70,11 +70,11 @@
/datum/surgery_step/gastrectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/carbon/human/target_human = target
- var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
target_human.setOrganLoss(ORGAN_SLOT_STOMACH, 20) // Stomachs have a threshold for being able to even digest food, so I might tweak this number
if(target_stomach)
//NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople.
- if(istype(target_stomach, /obj/item/organ/internal/stomach/slime))
+ if(istype(target_stomach, /obj/item/organ/stomach/slime))
addtimer(VARSET_CALLBACK(target_stomach, operated, FALSE), 30 SECONDS)
//NOVA EDIT ADDITION END
target_stomach.operated = TRUE
diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm
index 82b1eb6328f..c7aa986ace7 100644
--- a/code/modules/surgery/hepatectomy.dm
+++ b/code/modules/surgery/hepatectomy.dm
@@ -26,7 +26,7 @@
)
/datum/surgery/hepatectomy/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
if(isnull(target_liver) || target_liver.damage < 50 || target_liver.operated)
return FALSE
return ..()
@@ -69,11 +69,11 @@
/datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/carbon/human/human_target = target
- var/obj/item/organ/internal/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
human_target.setOrganLoss(ORGAN_SLOT_LIVER, 10) //not bad, not great
if(target_liver)
//NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople.
- if(istype(target_liver, /obj/item/organ/internal/liver/slime))
+ if(istype(target_liver, /obj/item/organ/liver/slime))
addtimer(VARSET_CALLBACK(target_liver, operated, FALSE), 30 SECONDS)
//NOVA EDIT ADDITION END
target_liver.operated = TRUE
diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm
index 2876d9763b6..f49491e5d0b 100644
--- a/code/modules/surgery/lobectomy.dm
+++ b/code/modules/surgery/lobectomy.dm
@@ -24,7 +24,7 @@
)
/datum/surgery/lobectomy/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
if(isnull(target_lungs) || target_lungs.damage < 60 || target_lungs.operated)
return FALSE
return ..()
@@ -67,11 +67,11 @@
/datum/surgery_step/lobectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(ishuman(target))
var/mob/living/carbon/human/human_target = target
- var/obj/item/organ/internal/lungs/target_lungs = human_target.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/target_lungs = human_target.get_organ_slot(ORGAN_SLOT_LUNGS)
human_target.setOrganLoss(ORGAN_SLOT_LUNGS, 60)
if(target_lungs)
//NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople.
- if(istype(target_lungs, /obj/item/organ/internal/lungs/slime))
+ if(istype(target_lungs, /obj/item/organ/lungs/slime))
addtimer(VARSET_CALLBACK(target_lungs, operated, FALSE), 30 SECONDS)
//NOVA EDIT ADDITION END
target_lungs.operated = TRUE
diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm
index 74f47a948de..9937398872f 100644
--- a/code/modules/surgery/organ_manipulation.dm
+++ b/code/modules/surgery/organ_manipulation.dm
@@ -309,7 +309,7 @@
///only operate on internal organs
/datum/surgery_step/manipulate_organs/internal/can_use_organ(mob/user, obj/item/organ/organ)
- return isinternalorgan(organ) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return isinternalorgan(organ)
+ return !(organ.organ_flags & ORGAN_EXTERNAL) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return !(organ.organ_flags & ORGAN_EXTERNAL)
///prosthetic surgery gives full effectiveness to crowbars (and hemostats)
/datum/surgery_step/manipulate_organs/internal/mechanic
@@ -323,7 +323,7 @@
///Only operate on external organs
/datum/surgery_step/manipulate_organs/external/can_use_organ(mob/user, obj/item/organ/organ)
- return isexternalorgan(organ) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return isexternalorgan(organ)
+ return (organ.organ_flags & ORGAN_EXTERNAL) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return (organ.organ_flags & ORGAN_EXTERNAL)
///prosthetic surgery gives full effectiveness to crowbars (and hemostats)
/datum/surgery_step/manipulate_organs/external/mechanic
diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm
index 4d5114ad88a..e2f05a9ed56 100644
--- a/code/modules/surgery/organs/_organ.dm
+++ b/code/modules/surgery/organs/_organ.dm
@@ -249,20 +249,20 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
set_heartattack(FALSE)
// Ears have aditional vаr "deaf", need to update it too
- var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
ears?.adjustEarDamage(0, -INFINITY) // full heal ears deafness
return
// Default organ fixing handling
// May result in kinda cursed stuff for mobs which don't need these organs
- var/obj/item/organ/internal/lungs/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
if(!lungs)
lungs = new()
lungs.Insert(src)
lungs.set_organ_damage(0)
- var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
if(heart)
set_heartattack(FALSE)
else
@@ -270,19 +270,19 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
heart.Insert(src)
heart.set_organ_damage(0)
- var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
if(!tongue)
tongue = new()
tongue.Insert(src)
tongue.set_organ_damage(0)
- var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
if(!eyes)
eyes = new()
eyes.Insert(src)
eyes.set_organ_damage(0)
- var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
if(!ears)
ears = new()
ears.Insert(src)
diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm
index b4a939e9a95..83fb98e4844 100644
--- a/code/modules/surgery/organs/autosurgeon.dm
+++ b/code/modules/surgery/organs/autosurgeon.dm
@@ -138,7 +138,7 @@
name = "autosurgeon"
desc = "A single use autosurgeon that contains a medical heads-up display augment. A screwdriver can be used to remove it, but implants can't be placed back in."
uses = 1
- starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/medical
+ starting_organ = /obj/item/organ/cyberimp/eyes/hud/medical
/obj/item/autosurgeon/syndicate
@@ -154,28 +154,28 @@
/obj/item/autosurgeon/syndicate/laser_arm
desc = "A single use autosurgeon that contains a combat arms-up laser augment. A screwdriver can be used to remove it, but implants can't be placed back in."
uses = 1
- starting_organ = /obj/item/organ/internal/cyberimp/arm/gun/laser
+ starting_organ = /obj/item/organ/cyberimp/arm/gun/laser
/obj/item/autosurgeon/syndicate/thermal_eyes
- starting_organ = /obj/item/organ/internal/eyes/robotic/thermals
+ starting_organ = /obj/item/organ/eyes/robotic/thermals
/obj/item/autosurgeon/syndicate/thermal_eyes/single_use
uses = 1
/obj/item/autosurgeon/syndicate/xray_eyes
- starting_organ = /obj/item/organ/internal/eyes/robotic/xray
+ starting_organ = /obj/item/organ/eyes/robotic/xray
/obj/item/autosurgeon/syndicate/xray_eyes/single_use
uses = 1
/obj/item/autosurgeon/syndicate/anti_stun
- starting_organ = /obj/item/organ/internal/cyberimp/brain/anti_stun
+ starting_organ = /obj/item/organ/cyberimp/brain/anti_stun
/obj/item/autosurgeon/syndicate/anti_stun/single_use
uses = 1
/obj/item/autosurgeon/syndicate/reviver
- starting_organ = /obj/item/organ/internal/cyberimp/chest/reviver
+ starting_organ = /obj/item/organ/cyberimp/chest/reviver
/obj/item/autosurgeon/syndicate/reviver/single_use
uses = 1
@@ -183,14 +183,14 @@
/obj/item/autosurgeon/syndicate/commsagent
desc = "A device that automatically - painfully - inserts an implant. It seems someone's specially \
modified this one to only insert... tongues. Horrifying."
- starting_organ = /obj/item/organ/internal/tongue
+ starting_organ = /obj/item/organ/tongue
/obj/item/autosurgeon/syndicate/commsagent/Initialize(mapload)
. = ..()
- organ_whitelist += /obj/item/organ/internal/tongue
+ organ_whitelist += /obj/item/organ/tongue
/obj/item/autosurgeon/syndicate/emaggedsurgerytoolset
- starting_organ = /obj/item/organ/internal/cyberimp/arm/surgery/emagged
+ starting_organ = /obj/item/organ/cyberimp/arm/surgery/emagged
/obj/item/autosurgeon/syndicate/emaggedsurgerytoolset/single_use
uses = 1
@@ -198,4 +198,4 @@
/obj/item/autosurgeon/syndicate/contraband_sechud
desc = "Contains a contraband SecHUD implant, undetectable by health scanners."
uses = 1
- starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate
+ starting_organ = /obj/item/organ/cyberimp/eyes/hud/security/syndicate
diff --git a/code/modules/surgery/organs/external/_visual_organs.dm b/code/modules/surgery/organs/external/_visual_organs.dm
index e5f2a40521e..dc143e4b4dc 100644
--- a/code/modules/surgery/organs/external/_visual_organs.dm
+++ b/code/modules/surgery/organs/external/_visual_organs.dm
@@ -105,7 +105,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
. += bodypart_overlay.get_overlay(external_layer, bodypart_owner)
///The horns of a lizard!
-/obj/item/organ/external/horns
+/obj/item/organ/horns
name = "horns"
desc = "Why do lizards even have horns? Well, this one obviously doesn't."
icon_state = "horns"
@@ -119,9 +119,12 @@ Unlike normal organs, we're actually inside a persons limbs at all times
bodypart_overlay = /datum/bodypart_overlay/mutant/horns
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
/datum/bodypart_overlay/mutant/horns
layers = EXTERNAL_ADJACENT
feature_key = "horns"
+ dyable = TRUE
/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(mob/living/carbon/human/human)
if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR))
@@ -133,7 +136,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
return SSaccessories.sprite_accessories["horns"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.horns_list
///The frills of a lizard (like weird fin ears)
-/obj/item/organ/external/frills
+/obj/item/organ/frills
name = "frills"
desc = "Ear-like external organs often seen on aquatic reptillians."
icon_state = "frills"
@@ -147,6 +150,8 @@ Unlike normal organs, we're actually inside a persons limbs at all times
bodypart_overlay = /datum/bodypart_overlay/mutant/frills
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
/datum/bodypart_overlay/mutant/frills
layers = EXTERNAL_ADJACENT
feature_key = "frills"
@@ -160,7 +165,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
return SSaccessories.sprite_accessories["frills"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.frills_list
///Guess what part of the lizard this is?
-/obj/item/organ/external/snout
+/obj/item/organ/snout
name = "snout" // NOVA EDIT - ORIGINAL: name = "lizard snout"
desc = "Take a closer look at that snout!"
icon_state = "snout"
@@ -176,6 +181,8 @@ Unlike normal organs, we're actually inside a persons limbs at all times
bodypart_overlay = /datum/bodypart_overlay/mutant/snout
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
/datum/bodypart_overlay/mutant/snout
layers = EXTERNAL_ADJACENT
feature_key = "snout"
@@ -189,7 +196,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
return SSaccessories.sprite_accessories["snout"] // NOVA EDIT - Customization - ORIGINAL : return SSaccessories.snouts_list
///A moth's antennae
-/obj/item/organ/external/antennae
+/obj/item/organ/antennae
name = "moth antennae"
desc = "A moths antennae. What is it telling them? What are they sensing?"
icon_state = "antennae"
@@ -203,24 +210,26 @@ Unlike normal organs, we're actually inside a persons limbs at all times
bodypart_overlay = /datum/bodypart_overlay/mutant/antennae
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
///Are we burned?
var/burnt = FALSE
///Store our old datum here for if our antennae are healed
var/original_sprite_datum
-/obj/item/organ/external/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_antennae))
RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_antennae))
-/obj/item/organ/external/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL))
///check if our antennae can burn off ;_;
-/obj/item/organ/external/antennae/proc/try_burn_antennae(mob/living/carbon/human/human)
+/obj/item/organ/antennae/proc/try_burn_antennae(mob/living/carbon/human/human)
SIGNAL_HANDLER
if(!burnt && human.bodytemperature >= 800 && human.fire_stacks > 0) //do not go into the extremely hot light. you will not survive
@@ -230,13 +239,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times
human.update_body_parts()
///Burn our antennae off ;_;
-/obj/item/organ/external/antennae/proc/burn_antennae()
+/obj/item/organ/antennae/proc/burn_antennae()
var/datum/bodypart_overlay/mutant/antennae/antennae = bodypart_overlay
antennae.burnt = TRUE
burnt = TRUE
///heal our antennae back up!!
-/obj/item/organ/external/antennae/proc/heal_antennae(datum/source, heal_flags)
+/obj/item/organ/antennae/proc/heal_antennae(datum/source, heal_flags)
SIGNAL_HANDLER
if(!burnt)
@@ -251,6 +260,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
/datum/bodypart_overlay/mutant/antennae
layers = EXTERNAL_FRONT | EXTERNAL_BEHIND
feature_key = "moth_antennae"
+ dyable = TRUE
///Accessory datum of the burn sprite
var/datum/sprite_accessory/burn_datum = /datum/sprite_accessory/moth_antennae/burnt_off
///Are we burned? If so we draw differently
@@ -273,7 +283,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
return FALSE
///The leafy hair of a podperson
-/obj/item/organ/external/pod_hair
+/obj/item/organ/pod_hair
name = "podperson hair"
desc = "Base for many-o-salads."
@@ -288,10 +298,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times
bodypart_overlay = /datum/bodypart_overlay/mutant/pod_hair
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
///Podperson bodypart overlay, with special coloring functionality to render the flowers in the inverse color
/datum/bodypart_overlay/mutant/pod_hair
layers = EXTERNAL_FRONT|EXTERNAL_ADJACENT
feature_key = "pod_hair"
+ dyable = TRUE
///This layer will be colored differently than the rest of the organ. So we can get differently colored flowers or something
var/color_swapped_layer = EXTERNAL_FRONT
@@ -305,8 +318,9 @@ Unlike normal organs, we're actually inside a persons limbs at all times
if(draw_layer != bitflag_to_layer(color_swapped_layer))
return ..()
- if(draw_color) // can someone explain to me why draw_color is allowed to EVER BE AN EMPTY STRING
- var/list/rgb_list = rgb2num(draw_color)
+ var/color_to_use = dye_color || draw_color
+ if(color_to_use) // can someone explain to me why draw_color is allowed to EVER BE AN EMPTY STRING
+ var/list/rgb_list = rgb2num(color_to_use)
overlay.color = rgb(color_inverse_base - rgb_list[1], color_inverse_base - rgb_list[2], color_inverse_base - rgb_list[3]) //inversa da color
else
overlay.color = null
diff --git a/code/modules/surgery/organs/external/spines.dm b/code/modules/surgery/organs/external/spines.dm
index a6653925e5e..2dae21acc12 100644
--- a/code/modules/surgery/organs/external/spines.dm
+++ b/code/modules/surgery/organs/external/spines.dm
@@ -1,5 +1,5 @@
///A lizards spines (those things on their back), but also including tail spines (gasp)
-/obj/item/organ/external/spines
+/obj/item/organ/spines
name = "lizard spines"
desc = "Not an actual spine, obviously."
icon_state = "spines"
@@ -14,15 +14,17 @@
bodypart_overlay = /datum/bodypart_overlay/mutant/spines
-/obj/item/organ/external/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
+/obj/item/organ/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags)
// If we have a tail, attempt to add a tail spines overlay
- var/obj/item/organ/external/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
our_tail?.try_insert_tail_spines(our_tail.bodypart_owner)
return ..()
-/obj/item/organ/external/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
// If we have a tail, remove any tail spines overlay
- var/obj/item/organ/external/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
our_tail?.remove_tail_spines(our_tail.bodypart_owner)
return ..()
@@ -30,6 +32,7 @@
/datum/bodypart_overlay/mutant/spines
layers = EXTERNAL_ADJACENT|EXTERNAL_BEHIND
feature_key = "spines"
+ dyable = TRUE
/datum/bodypart_overlay/mutant/spines/get_global_feature_list()
return SSaccessories.sprite_accessories["spines"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.spines_list
@@ -38,3 +41,8 @@
. = ..()
if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
return FALSE
+
+/datum/bodypart_overlay/mutant/spines/set_dye_color(new_color, obj/item/organ/tail/organ)
+ var/obj/item/organ/tail/tail = organ?.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ tail?.tail_spines_overlay?.set_dye_color(new_color, organ)
+ return ..()
diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm
index 4149acc8eba..99856a0b3d8 100644
--- a/code/modules/surgery/organs/external/tails.dm
+++ b/code/modules/surgery/organs/external/tails.dm
@@ -1,5 +1,5 @@
///Tail parent, it doesn't do very much.
-/obj/item/organ/external/tail
+/obj/item/organ/tail
name = "tail"
desc = "A severed tail. What did you cut this off of?"
icon_state = "severedtail"
@@ -13,6 +13,8 @@
// defaults to cat, but the parent type shouldn't be created regardless
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/cat
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
///Does this tail have a wagging sprite, and is it currently wagging?
var/wag_flags = NONE
///The original owner of this tail
@@ -20,7 +22,7 @@
///The overlay for tail spines, if any
var/datum/bodypart_overlay/mutant/tail_spines/tail_spines_overlay
-/obj/item/organ/external/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(.)
receiver.clear_mood_event("tail_lost")
@@ -39,18 +41,18 @@
else
receiver.add_mood_event("tail_regained", /datum/mood_event/tail_regained_wrong)
-/obj/item/organ/external/tail/on_bodypart_insert(obj/item/bodypart/bodypart)
- var/obj/item/organ/external/spines/our_spines = bodypart.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
+/obj/item/organ/tail/on_bodypart_insert(obj/item/bodypart/bodypart)
+ var/obj/item/organ/spines/our_spines = bodypart.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
if(our_spines)
try_insert_tail_spines(bodypart)
return ..()
-/obj/item/organ/external/tail/on_bodypart_remove(obj/item/bodypart/bodypart)
+/obj/item/organ/tail/on_bodypart_remove(obj/item/bodypart/bodypart)
remove_tail_spines(bodypart)
return ..()
/// If the owner has spines and an appropriate overlay exists, add a tail spines overlay.
-/obj/item/organ/external/tail/proc/try_insert_tail_spines(obj/item/bodypart/bodypart)
+/obj/item/organ/tail/proc/try_insert_tail_spines(obj/item/bodypart/bodypart)
// Don't insert another overlay if there already is one.
if(tail_spines_overlay)
return
@@ -73,13 +75,13 @@
bodypart.add_bodypart_overlay(tail_spines_overlay)
/// If we have a tail spines overlay, delete it
-/obj/item/organ/external/tail/proc/remove_tail_spines(obj/item/bodypart/bodypart)
+/obj/item/organ/tail/proc/remove_tail_spines(obj/item/bodypart/bodypart)
if(!tail_spines_overlay)
return
bodypart.remove_bodypart_overlay(tail_spines_overlay)
QDEL_NULL(tail_spines_overlay)
-/obj/item/organ/external/tail/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
if(wag_flags & WAG_WAGGING)
@@ -94,7 +96,7 @@
///We need some special behaviour for accessories, wrapped here so we can easily add more interactions later
///Accepts an optional timeout after which we remove the tail wagging
///Returns false if the wag worked, true otherwise
-/obj/item/organ/external/tail/proc/start_wag(mob/living/carbon/organ_owner, stop_after = INFINITY)
+/obj/item/organ/tail/proc/start_wag(mob/living/carbon/organ_owner, stop_after = INFINITY)
if(wag_flags & WAG_WAGGING || !(wag_flags & WAG_ABLE)) // we are already wagging
return FALSE
if(organ_owner.stat == DEAD || organ_owner != owner) // no wagging when owner is dead or tail has been disembodied
@@ -112,13 +114,13 @@
RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(owner_died))
return TRUE
-/obj/item/organ/external/tail/proc/owner_died(mob/living/carbon/organ_owner) // Resisting the urge to replace owner with daddy
+/obj/item/organ/tail/proc/owner_died(mob/living/carbon/organ_owner) // Resisting the urge to replace owner with daddy
SIGNAL_HANDLER
stop_wag(organ_owner)
///We need some special behaviour for accessories, wrapped here so we can easily add more interactions later
///Returns false if the wag stopping worked, true otherwise
-/obj/item/organ/external/tail/proc/stop_wag(mob/living/carbon/organ_owner)
+/obj/item/organ/tail/proc/stop_wag(mob/living/carbon/organ_owner)
if(!(wag_flags & WAG_ABLE))
return FALSE
@@ -138,13 +140,13 @@
UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH)
return succeeded
-/obj/item/organ/external/tail/proc/get_butt_sprite()
+/obj/item/organ/tail/proc/get_butt_sprite()
return null
///Tail parent type, with wagging functionality
/datum/bodypart_overlay/mutant/tail
layers = EXTERNAL_FRONT|EXTERNAL_BEHIND
- feature_key = "tail" // NOVA EDIT - Customization - ORIGINAL: feature_key = "tail_monkey"
+ dyable = TRUE
var/wagging = FALSE
/datum/bodypart_overlay/mutant/tail/get_base_icon_state()
@@ -160,7 +162,7 @@
return FALSE
return TRUE
-/obj/item/organ/external/tail/cat
+/obj/item/organ/tail/cat
name = "tail"
preference = "feature_human_tail"
@@ -168,7 +170,7 @@
wag_flags = WAG_ABLE
-/obj/item/organ/external/tail/cat/get_butt_sprite()
+/obj/item/organ/tail/cat/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_CAT)
///Cat tail bodypart overlay
@@ -179,7 +181,7 @@
/datum/bodypart_overlay/mutant/tail/cat/get_global_feature_list()
return SSaccessories.sprite_accessories["tail"] // NOVA EDIT CHANGE - ORIGINAL: return SSaccessories.tails_list_felinid
-/obj/item/organ/external/tail/monkey
+/obj/item/organ/tail/monkey
name = "monkey tail"
preference = "feature_monkey_tail"
@@ -195,7 +197,7 @@
/datum/bodypart_overlay/mutant/tail/monkey/get_global_feature_list()
return SSaccessories.tails_list_monkey
-/obj/item/organ/external/tail/lizard
+/obj/item/organ/tail/lizard
name = "lizard tail"
desc = "A severed lizard tail. Somewhere, no doubt, a lizard hater is very pleased with themselves."
preference = "feature_lizard_tail"
@@ -212,7 +214,7 @@
/datum/bodypart_overlay/mutant/tail/lizard/get_global_feature_list()
return SSaccessories.sprite_accessories["tail"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.tails_list_lizard
-/obj/item/organ/external/tail/lizard/fake
+/obj/item/organ/tail/lizard/fake
name = "fabricated lizard tail"
desc = "A fabricated severed lizard tail. This one's made of synthflesh. Probably not usable for lizard wine."
@@ -235,3 +237,6 @@
. = ..()
if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
return FALSE
+
+/datum/bodypart_overlay/mutant/tail_spines/set_dye_color(new_color, obj/item/organ/organ)
+ dye_color = new_color //no update_body_parts() call, tail/set_dye_color will do it.
diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm
index c90dcd8c8a8..d2725955f20 100644
--- a/code/modules/surgery/organs/external/wings/functional_wings.dm
+++ b/code/modules/surgery/organs/external/wings/functional_wings.dm
@@ -10,12 +10,12 @@
/datum/action/innate/flight/Activate()
var/mob/living/carbon/human/human = owner
- var/obj/item/organ/external/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+ var/obj/item/organ/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
if(wings?.can_fly(human))
wings.toggle_flight(human)
///The true wings that you can use to fly and shit (you cant actually shit with them)
-/obj/item/organ/external/wings/functional
+/obj/item/organ/wings/functional
///The flight action object
var/datum/action/innate/flight/fly
@@ -29,29 +29,29 @@
// grind_results = list(/datum/reagent/flightpotion = 5)
food_reagents = list(/datum/reagent/flightpotion = 5)
-/obj/item/organ/external/wings/functional/Destroy()
+/obj/item/organ/wings/functional/Destroy()
QDEL_NULL(fly)
return ..()
-/obj/item/organ/external/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(QDELETED(fly))
fly = new
fly.Grant(receiver)
-/obj/item/organ/external/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
fly?.Remove(organ_owner)
if(wings_open)
toggle_flight(organ_owner)
-/obj/item/organ/external/wings/functional/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/wings/functional/on_life(seconds_per_tick, times_fired)
. = ..()
handle_flight(owner)
///Called on_life(). Handle flight code and check if we're still flying
-/obj/item/organ/external/wings/functional/proc/handle_flight(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/handle_flight(mob/living/carbon/human/human)
if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
return FALSE
if(!can_fly(human))
@@ -61,7 +61,7 @@
///Check if we're still eligible for flight (wings covered, atmosphere too thin, etc)
-/obj/item/organ/external/wings/functional/proc/can_fly(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/can_fly(mob/living/carbon/human/human)
if(human.stat || human.body_position == LYING_DOWN || isnull(human.client))
return FALSE
//Jumpsuits have tail holes, so it makes sense they have wing holes too
@@ -79,7 +79,7 @@
return TRUE
///Slipping but in the air?
-/obj/item/organ/external/wings/functional/proc/fly_slip(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/fly_slip(mob/living/carbon/human/human)
var/obj/buckled_obj
if(human.buckled)
buckled_obj = human.buckled
@@ -102,7 +102,7 @@
return TRUE
///UNSAFE PROC, should only be called through the Activate or other sources that check for CanFly
-/obj/item/organ/external/wings/functional/proc/toggle_flight(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/toggle_flight(mob/living/carbon/human/human)
if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
human.physiology.stun_mod *= 2
human.add_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
@@ -129,7 +129,7 @@
close_wings()
human.refresh_gravity()
-/obj/item/organ/external/wings/functional/proc/on_client_move(mob/source, list/move_args)
+/obj/item/organ/wings/functional/proc/on_client_move(mob/source, list/move_args)
SIGNAL_HANDLER
if (!can_fly(source))
@@ -139,7 +139,7 @@
source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = FUNCTIONAL_WING_FORCE, controlled_cap = max_drift_force)
source.setDir(source.client.intended_direction)
-/obj/item/organ/external/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
+/obj/item/organ/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
SIGNAL_HANDLER
if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
@@ -150,7 +150,7 @@
return COMPONENT_PREVENT_SPACEMOVE_HALT
-/obj/item/organ/external/wings/functional/process(seconds_per_tick)
+/obj/item/organ/wings/functional/process(seconds_per_tick)
if (!owner || !can_fly(owner) || isnull(owner.drift_handler))
return
@@ -158,14 +158,14 @@
owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, FUNCTIONAL_WING_STABILIZATION * (seconds_per_tick * 1 SECONDS))
///SPREAD OUR WINGS AND FLLLLLYYYYYY
-/obj/item/organ/external/wings/functional/proc/open_wings()
+/obj/item/organ/wings/functional/proc/open_wings()
var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay
overlay.open_wings()
wings_open = TRUE
owner.update_body_parts()
///close our wings
-/obj/item/organ/external/wings/functional/proc/close_wings()
+/obj/item/organ/wings/functional/proc/close_wings()
var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay
wings_open = FALSE
overlay.close_wings()
@@ -212,7 +212,7 @@
. += wings_open ? "open" : "closed"
///angel wings, which relate to humans. comes with holiness.
-/obj/item/organ/external/wings/functional/angel
+/obj/item/organ/wings/functional/angel
name = "angel wings"
desc = "Holier-than-thou attitude not included."
sprite_accessory_override = /datum/sprite_accessory/wings_open/angel
@@ -220,47 +220,47 @@
organ_traits = list(TRAIT_HOLY)
///dragon wings, which relate to lizards.
-/obj/item/organ/external/wings/functional/dragon
+/obj/item/organ/wings/functional/dragon
name = "dragon wings"
desc = "Hey, HEY- NOT lizard wings. Dragon wings. Mighty dragon wings."
sprite_accessory_override = /datum/sprite_accessory/wings/dragon
///robotic wings, which relate to androids.
-/obj/item/organ/external/wings/functional/robotic
+/obj/item/organ/wings/functional/robotic
name = "robotic wings"
desc = "Using microscopic hover-engines, or \"microwings,\" as they're known in the trade, these tiny devices are able to lift a few grams at a time. Gathering enough of them, and you can lift impressively large things."
organ_flags = ORGAN_ROBOTIC
sprite_accessory_override = /datum/sprite_accessory/wings/robotic
///skeletal wings, which relate to skeletal races.
-/obj/item/organ/external/wings/functional/skeleton
+/obj/item/organ/wings/functional/skeleton
name = "skeletal wings"
desc = "Powered by pure edgy-teenager-notebook-scribblings. Just kidding. But seriously, how do these keep you flying?!"
sprite_accessory_override = /datum/sprite_accessory/wings/skeleton
-/obj/item/organ/external/wings/functional/moth/make_flap_sound(mob/living/carbon/wing_owner)
+/obj/item/organ/wings/functional/moth/make_flap_sound(mob/living/carbon/wing_owner)
playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE)
///mothra wings, which relate to moths.
-/obj/item/organ/external/wings/functional/moth/mothra
+/obj/item/organ/wings/functional/moth/mothra
name = "mothra wings"
desc = "Fly like the mighty mothra of legend once did."
sprite_accessory_override = /datum/sprite_accessory/wings/mothra
///megamoth wings, which relate to moths as an alternate choice. they're both pretty cool.
-/obj/item/organ/external/wings/functional/moth/megamoth
+/obj/item/organ/wings/functional/moth/megamoth
name = "megamoth wings"
desc = "Don't get murderous."
sprite_accessory_override = /datum/sprite_accessory/wings/megamoth
///fly wings, which relate to flies.
-/obj/item/organ/external/wings/functional/fly
+/obj/item/organ/wings/functional/fly
name = "fly wings"
desc = "Fly as a fly."
sprite_accessory_override = /datum/sprite_accessory/wings/fly
///slime wings, which relate to slimes.
-/obj/item/organ/external/wings/functional/slime
+/obj/item/organ/wings/functional/slime
name = "slime wings"
desc = "How does something so squishy even fly?"
sprite_accessory_override = /datum/sprite_accessory/wings/slime
diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm
index 4d7074ddefa..f6e20c49699 100644
--- a/code/modules/surgery/organs/external/wings/moth_wings.dm
+++ b/code/modules/surgery/organs/external/wings/moth_wings.dm
@@ -1,7 +1,7 @@
#define MOTH_WING_FORCE 1 NEWTONS
///Moth wings! They can flutter in low-grav and burn off in heat
-/obj/item/organ/external/wings/moth
+/obj/item/organ/wings/moth
name = "moth wings"
desc = "Spread your wings and FLOOOOAAAAAT!"
@@ -16,7 +16,7 @@
///Store our old datum here for if our burned wings are healed
var/original_sprite_datum
-/obj/item/organ/external/wings/moth/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/receiver)
. = ..()
RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_wings))
RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_wings))
@@ -24,18 +24,18 @@
RegisterSignal(receiver, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff))
START_PROCESSING(SSnewtonian_movement, src)
-/obj/item/organ/external/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
. = ..()
UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_MOB_CLIENT_MOVE_NOGRAV, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE))
STOP_PROCESSING(SSnewtonian_movement, src)
-/obj/item/organ/external/wings/moth/make_flap_sound(mob/living/carbon/wing_owner)
+/obj/item/organ/wings/moth/make_flap_sound(mob/living/carbon/wing_owner)
playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE)
-/obj/item/organ/external/wings/moth/can_soften_fall()
+/obj/item/organ/wings/moth/can_soften_fall()
return !burnt
-/obj/item/organ/external/wings/moth/proc/allow_flight()
+/obj/item/organ/wings/moth/proc/allow_flight()
if(!owner || !owner.client)
return FALSE
if(!isturf(owner.loc))
@@ -59,14 +59,14 @@
return TRUE
return FALSE
-/obj/item/organ/external/wings/moth/process(seconds_per_tick)
+/obj/item/organ/wings/moth/process(seconds_per_tick)
if (!owner || !allow_flight() || isnull(owner.drift_handler))
return
var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, MOTH_WING_FORCE * (seconds_per_tick * 1 SECONDS))
-/obj/item/organ/external/wings/moth/proc/on_client_move(mob/source, list/move_args)
+/obj/item/organ/wings/moth/proc/on_client_move(mob/source, list/move_args)
SIGNAL_HANDLER
if (!allow_flight())
@@ -76,7 +76,7 @@
source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = MOTH_WING_FORCE, controlled_cap = max_drift_force)
source.setDir(source.client.intended_direction)
-/obj/item/organ/external/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
+/obj/item/organ/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
SIGNAL_HANDLER
if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
@@ -88,7 +88,7 @@
return COMPONENT_PREVENT_SPACEMOVE_HALT
///check if our wings can burn off ;_;
-/obj/item/organ/external/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human)
+/obj/item/organ/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human)
SIGNAL_HANDLER
if(!burnt && human.bodytemperature >= 800 && human.fire_stacks > 0) //do not go into the extremely hot light. you will not survive
@@ -99,13 +99,13 @@
human.update_body_parts()
///burn the wings off
-/obj/item/organ/external/wings/moth/proc/burn_wings()
+/obj/item/organ/wings/moth/proc/burn_wings()
var/datum/bodypart_overlay/mutant/wings/moth/wings = bodypart_overlay
wings.burnt = TRUE
burnt = TRUE
///heal our wings back up!!
-/obj/item/organ/external/wings/moth/proc/heal_wings(datum/source, heal_flags)
+/obj/item/organ/wings/moth/proc/heal_wings(datum/source, heal_flags)
SIGNAL_HANDLER
if(!burnt)
diff --git a/code/modules/surgery/organs/external/wings/wings.dm b/code/modules/surgery/organs/external/wings/wings.dm
index 62efd492530..70344326121 100644
--- a/code/modules/surgery/organs/external/wings/wings.dm
+++ b/code/modules/surgery/organs/external/wings/wings.dm
@@ -1,5 +1,5 @@
///Wing base type. doesn't really do anything
-/obj/item/organ/external/wings
+/obj/item/organ/wings
name = "wings"
desc = "Spread your wings and FLLLLLLLLYYYYY!"
@@ -9,12 +9,14 @@
use_mob_sprite_as_obj_sprite = TRUE
bodypart_overlay = /datum/bodypart_overlay/mutant/wings
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
///Checks if the wings can soften short falls
-/obj/item/organ/external/wings/proc/can_soften_fall()
+/obj/item/organ/wings/proc/can_soften_fall()
return TRUE
///Implement as needed to play a sound effect on *flap emote
-/obj/item/organ/external/wings/proc/make_flap_sound(mob/living/carbon/wing_owner)
+/obj/item/organ/wings/proc/make_flap_sound(mob/living/carbon/wing_owner)
return
///Bodypart overlay of default wings. Does not have any wing functionality
diff --git a/code/modules/surgery/organs/internal/_internal_organ.dm b/code/modules/surgery/organs/internal/_internal_organ.dm
index 2568ca942cd..03ac2c01d45 100644
--- a/code/modules/surgery/organs/internal/_internal_organ.dm
+++ b/code/modules/surgery/organs/internal/_internal_organ.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/internal
+/obj/item/organ
name = "organ"
-/obj/item/organ/internal/Initialize(mapload)
+/obj/item/organ/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
-/obj/item/organ/internal/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
// organs_slot must ALWAYS be ordered in the same way as organ_process_order
@@ -14,7 +14,7 @@
STOP_PROCESSING(SSobj, src)
-/obj/item/organ/internal/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
+/obj/item/organ/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
. = ..()
if((organ_flags & ORGAN_VITAL) && !special && !HAS_TRAIT(organ_owner, TRAIT_GODMODE))
@@ -24,10 +24,10 @@
START_PROCESSING(SSobj, src)
-/obj/item/organ/internal/process(seconds_per_tick, times_fired)
+/obj/item/organ/process(seconds_per_tick, times_fired)
on_death(seconds_per_tick, times_fired) //Kinda hate doing it like this, but I really don't want to call process directly.
-/obj/item/organ/internal/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person
+/obj/item/organ/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person
if(organ_flags & (ORGAN_ROBOTIC | ORGAN_FROZEN))
return
@@ -45,7 +45,7 @@
/// NOTE: THIS IS VERY HOT. Be careful what you put in here
/// To give you some scale, if there's 100 carbons in the game, they each have maybe 9 organs
/// So that's 900 calls to this proc every life process. Please don't be dumb
-/obj/item/organ/internal/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing
+/obj/item/organ/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing
if(organ_flags & ORGAN_FAILING)
handle_failing_organs(seconds_per_tick)
return
@@ -70,16 +70,16 @@
apply_organ_damage(-healing_amount * maxHealth * seconds_per_tick, damage) // pass curent damage incase we are over cap
///Used as callbacks by object pooling
-/obj/item/organ/internal/exit_wardrobe()
+/obj/item/organ/exit_wardrobe()
START_PROCESSING(SSobj, src)
//See above
-/obj/item/organ/internal/enter_wardrobe()
+/obj/item/organ/enter_wardrobe()
bodypart_overlay?.imprint_on_next_insertion = TRUE // NOVA EDIT ADDITION - Make sure whoever gets it next gets the right DNA
STOP_PROCESSING(SSobj, src)
///Organs don't die instantly, and neither should you when you get fucked up
-/obj/item/organ/internal/handle_failing_organs(seconds_per_tick)
+/obj/item/organ/handle_failing_organs(seconds_per_tick)
if(owner.stat == DEAD)
return
diff --git a/code/modules/surgery/organs/internal/appendix/_appendix.dm b/code/modules/surgery/organs/internal/appendix/_appendix.dm
index 420d4efc118..020d5186af9 100644
--- a/code/modules/surgery/organs/internal/appendix/_appendix.dm
+++ b/code/modules/surgery/organs/internal/appendix/_appendix.dm
@@ -2,14 +2,14 @@
#define APPENDICITIS_PROB 100 * (0.1 * (1 / 25) / 3600)
#define INFLAMATION_ADVANCEMENT_PROB 2
-/obj/item/organ/internal/appendix
+/obj/item/organ/appendix
name = "appendix"
icon_state = "appendix"
base_icon_state = "appendix"
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_APPENDIX
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/bad_food = 5)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/bad_food = 5)
grind_results = list(/datum/reagent/toxin/bad_food = 5)
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY
@@ -19,15 +19,15 @@
var/inflamation_stage = 0
-/obj/item/organ/internal/appendix/update_name()
+/obj/item/organ/appendix/update_name()
. = ..()
name = "[inflamation_stage ? "inflamed " : null][initial(name)]"
-/obj/item/organ/internal/appendix/update_icon_state()
+/obj/item/organ/appendix/update_icon_state()
icon_state = "[base_icon_state][inflamation_stage ? "inflamed" : ""]"
return ..()
-/obj/item/organ/internal/appendix/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/appendix/on_life(seconds_per_tick, times_fired)
. = ..()
if(!owner)
return
@@ -40,7 +40,7 @@
else if(SPT_PROB(APPENDICITIS_PROB, seconds_per_tick) && !HAS_TRAIT(owner, TRAIT_TEMPORARY_BODY))
become_inflamed()
-/obj/item/organ/internal/appendix/proc/become_inflamed()
+/obj/item/organ/appendix/proc/become_inflamed()
inflamation_stage = 1
update_appearance()
if(owner)
@@ -52,7 +52,7 @@
header = "Whoa, Sick!",
)
-/obj/item/organ/internal/appendix/proc/inflamation(seconds_per_tick)
+/obj/item/organ/appendix/proc/inflamation(seconds_per_tick)
var/mob/living/carbon/organ_owner = owner
if(inflamation_stage < 3 && SPT_PROB(INFLAMATION_ADVANCEMENT_PROB, seconds_per_tick))
inflamation_stage += 1
@@ -73,21 +73,21 @@
organ_owner.adjustOrganLoss(ORGAN_SLOT_APPENDIX, 15)
-/obj/item/organ/internal/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob)
return owner_species.mutantappendix
-/obj/item/organ/internal/appendix/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/on_mob_remove(mob/living/carbon/organ_owner)
. = ..()
REMOVE_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type)
organ_owner.med_hud_set_status()
-/obj/item/organ/internal/appendix/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/on_mob_insert(mob/living/carbon/organ_owner)
. = ..()
if(inflamation_stage)
ADD_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type)
organ_owner.med_hud_set_status()
-/obj/item/organ/internal/appendix/get_status_text(advanced, add_tooltips)
+/obj/item/organ/appendix/get_status_text(advanced, add_tooltips)
if(!(organ_flags & ORGAN_FAILING) && inflamation_stage)
return conditional_tooltip("Inflamed", "Remove surgically.", add_tooltips)
return ..()
diff --git a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm
index 5510b4bf967..08a53e28f8d 100644
--- a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm
+++ b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm
@@ -1,5 +1,5 @@
-/obj/item/organ/internal/appendix/golem
+/obj/item/organ/appendix/golem
name = "internal forge"
desc = "This expanded digestive chamber allows golems to smelt minerals, provided that they are immersed in lava."
icon_state = "ethereal_heart-off"
@@ -8,16 +8,16 @@
/// Action which performs smelting
var/datum/action/cooldown/internal_smelting/smelter
-/obj/item/organ/internal/appendix/golem/Initialize(mapload)
+/obj/item/organ/appendix/golem/Initialize(mapload)
. = ..()
smelter = new(src)
-/obj/item/organ/internal/appendix/golem/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/golem/on_mob_insert(mob/living/carbon/organ_owner)
. = ..()
RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_for_lava))
/// Give the action while in lava
-/obj/item/organ/internal/appendix/golem/proc/check_for_lava(mob/living/owner)
+/obj/item/organ/appendix/golem/proc/check_for_lava(mob/living/owner)
SIGNAL_HANDLER
if (!islava(owner.loc))
smelter.Remove(owner)
@@ -25,12 +25,12 @@
if (smelter.owner != owner)
smelter.Grant(owner)
-/obj/item/organ/internal/appendix/golem/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/golem/on_mob_remove(mob/living/carbon/organ_owner)
UnregisterSignal(organ_owner, COMSIG_MOVABLE_MOVED)
smelter?.Remove(organ_owner) // Might have been deleted by Destroy already
return ..()
-/obj/item/organ/internal/appendix/golem/Destroy()
+/obj/item/organ/appendix/golem/Destroy()
QDEL_NULL(smelter)
return ..()
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
index 0946d144103..a07b8caed6c 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/arm
+/obj/item/organ/cyberimp/arm
name = "arm-mounted implant"
desc = "You shouldn't see this! Adminhelp and report this as an issue on github!"
zone = BODY_ZONE_R_ARM
@@ -22,7 +22,7 @@
/// Organ slot that the implant occupies for the left arm
var/left_arm_organ_slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/Initialize(mapload)
. = ..()
if(ispath(active_item))
active_item = new active_item(src)
@@ -35,7 +35,7 @@
update_appearance()
SetSlotFromZone()
-/obj/item/organ/internal/cyberimp/arm/Destroy()
+/obj/item/organ/cyberimp/arm/Destroy()
hand = null
active_item = null
for(var/datum/weakref/ref in items_list)
@@ -49,7 +49,7 @@
/datum/action/item_action/organ_action/toggle/toolkit
desc = "You can also activate your empty hand or the tool in your hand to open the tools radial menu."
-/obj/item/organ/internal/cyberimp/arm/proc/SetSlotFromZone()
+/obj/item/organ/cyberimp/arm/proc/SetSlotFromZone()
switch(zone)
if(BODY_ZONE_L_ARM)
slot = left_arm_organ_slot
@@ -58,16 +58,16 @@
else
CRASH("Invalid zone for [type]")
-/obj/item/organ/internal/cyberimp/arm/update_icon()
+/obj/item/organ/cyberimp/arm/update_icon()
. = ..()
transform = (zone == BODY_ZONE_R_ARM) ? null : matrix(-1, 0, 0, 0, 1, 0)
-/obj/item/organ/internal/cyberimp/arm/examine(mob/user)
+/obj/item/organ/cyberimp/arm/examine(mob/user)
. = ..()
if(IS_ROBOTIC_ORGAN(src))
. += span_info("[src] is assembled in the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.")
-/obj/item/organ/internal/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/screwtool)
+/obj/item/organ/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/screwtool)
. = ..()
if(.)
return TRUE
@@ -80,19 +80,19 @@
to_chat(user, span_notice("You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."))
update_appearance()
-/obj/item/organ/internal/cyberimp/arm/on_mob_insert(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/on_mob_insert(mob/living/carbon/arm_owner)
. = ..()
RegisterSignal(arm_owner, COMSIG_CARBON_POST_ATTACH_LIMB, PROC_REF(on_limb_attached))
RegisterSignal(arm_owner, COMSIG_KB_MOB_DROPITEM_DOWN, PROC_REF(dropkey)) //We're nodrop, but we'll watch for the drop hotkey anyway and then stow if possible.
on_limb_attached(arm_owner, arm_owner.hand_bodyparts[zone == BODY_ZONE_R_ARM ? RIGHT_HANDS : LEFT_HANDS])
-/obj/item/organ/internal/cyberimp/arm/on_mob_remove(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/on_mob_remove(mob/living/carbon/arm_owner)
. = ..()
Retract()
UnregisterSignal(arm_owner, list(COMSIG_CARBON_POST_ATTACH_LIMB, COMSIG_KB_MOB_DROPITEM_DOWN))
on_limb_detached(hand)
-/obj/item/organ/internal/cyberimp/arm/proc/on_limb_attached(mob/living/carbon/source, obj/item/bodypart/limb)
+/obj/item/organ/cyberimp/arm/proc/on_limb_attached(mob/living/carbon/source, obj/item/bodypart/limb)
SIGNAL_HANDLER
if(!limb || QDELETED(limb) || limb.body_zone != zone)
return
@@ -102,18 +102,18 @@
RegisterSignal(limb, COMSIG_BODYPART_REMOVED, PROC_REF(on_limb_detached))
hand = limb
-/obj/item/organ/internal/cyberimp/arm/proc/on_limb_detached(obj/item/bodypart/source)
+/obj/item/organ/cyberimp/arm/proc/on_limb_detached(obj/item/bodypart/source)
SIGNAL_HANDLER
if(source != hand || QDELETED(hand))
return
UnregisterSignal(hand, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_BODYPART_REMOVED))
hand = null
-/obj/item/organ/internal/cyberimp/arm/proc/on_item_attack_self()
+/obj/item/organ/cyberimp/arm/proc/on_item_attack_self()
SIGNAL_HANDLER
INVOKE_ASYNC(src, PROC_REF(ui_action_click))
-/obj/item/organ/internal/cyberimp/arm/emp_act(severity)
+/obj/item/organ/cyberimp/arm/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF || !IS_ROBOTIC_ORGAN(src))
return
@@ -129,7 +129,7 @@
* quick way to store implant items. In this case, we check to make sure the user has the correct arm
* selected, and that the item is actually owned by us, and then we'll hand off the rest to Retract()
**/
-/obj/item/organ/internal/cyberimp/arm/proc/dropkey(mob/living/carbon/host)
+/obj/item/organ/cyberimp/arm/proc/dropkey(mob/living/carbon/host)
SIGNAL_HANDLER
if(!host)
return //How did we even get here
@@ -138,7 +138,7 @@
if(Retract())
return COMSIG_KB_ACTIVATED
-/obj/item/organ/internal/cyberimp/arm/proc/Retract()
+/obj/item/organ/cyberimp/arm/proc/Retract()
if(!active_item || (active_item in src))
return FALSE
active_item.resistance_flags = active_item::resistance_flags
@@ -159,7 +159,7 @@
playsound(get_turf(owner), retract_sound, 50, TRUE)
return TRUE
-/obj/item/organ/internal/cyberimp/arm/proc/Extend(obj/item/augment)
+/obj/item/organ/cyberimp/arm/proc/Extend(obj/item/augment)
if(!(augment in src))
return
@@ -198,12 +198,12 @@
if(length(items_list) > 1)
RegisterSignals(active_item, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_ITEM_ATTACK_SELF_SECONDARY), PROC_REF(swap_tools)) // secondary for welders
-/obj/item/organ/internal/cyberimp/arm/proc/swap_tools(active_item)
+/obj/item/organ/cyberimp/arm/proc/swap_tools(active_item)
SIGNAL_HANDLER
Retract(active_item)
INVOKE_ASYNC(src, PROC_REF(ui_action_click))
-/obj/item/organ/internal/cyberimp/arm/ui_action_click()
+/obj/item/organ/cyberimp/arm/ui_action_click()
if((organ_flags & ORGAN_FAILING) || (!active_item && !contents.len))
to_chat(owner, span_warning("The implant doesn't respond. It seems to be broken..."))
return
@@ -228,7 +228,7 @@
Retract()
-/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity)
+/obj/item/organ/cyberimp/arm/gun/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
@@ -243,25 +243,25 @@
organ_flags |= ORGAN_FAILING
-/obj/item/organ/internal/cyberimp/arm/gun/laser
+/obj/item/organ/cyberimp/arm/gun/laser
name = "arm-mounted laser implant"
desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use."
icon_state = "arm_laser"
items_to_create = list(/obj/item/gun/energy/laser/mounted/augment)
-/obj/item/organ/internal/cyberimp/arm/gun/laser/l
+/obj/item/organ/cyberimp/arm/gun/laser/l
zone = BODY_ZONE_L_ARM
-/obj/item/organ/internal/cyberimp/arm/gun/taser
+/obj/item/organ/cyberimp/arm/gun/taser
name = "arm-mounted taser implant"
desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use."
icon_state = "arm_taser"
items_to_create = list(/obj/item/gun/energy/e_gun/advtaser/mounted)
-/obj/item/organ/internal/cyberimp/arm/gun/taser/l
+/obj/item/organ/cyberimp/arm/gun/taser/l
zone = BODY_ZONE_L_ARM
-/obj/item/organ/internal/cyberimp/arm/toolset
+/obj/item/organ/cyberimp/arm/toolset
name = "integrated toolset implant"
desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contain advanced versions of every tool."
icon_state = "toolkit_engineering"
@@ -275,10 +275,10 @@
/obj/item/multitool/cyborg,
)
-/obj/item/organ/internal/cyberimp/arm/toolset/l
+/obj/item/organ/cyberimp/arm/toolset/l
zone = BODY_ZONE_L_ARM
-/obj/item/organ/internal/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card)
+/obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card)
for(var/datum/weakref/created_item in items_list)
var/obj/potential_knife = created_item.resolve()
if(istype(/obj/item/knife/combat/cyborg, potential_knife))
@@ -288,23 +288,23 @@
items_list += WEAKREF(new /obj/item/knife/combat/cyborg(src))
return TRUE
-/obj/item/organ/internal/cyberimp/arm/esword
+/obj/item/organ/cyberimp/arm/esword
name = "arm-mounted energy blade"
desc = "An illegal and highly dangerous cybernetic implant that can project a deadly blade of concentrated energy."
items_to_create = list(/obj/item/melee/energy/blade/hardlight)
-/obj/item/organ/internal/cyberimp/arm/medibeam
+/obj/item/organ/cyberimp/arm/medibeam
name = "integrated medical beamgun"
desc = "A cybernetic implant that allows the user to project a healing beam from their hand."
items_to_create = list(/obj/item/gun/medbeam)
-/obj/item/organ/internal/cyberimp/arm/flash
+/obj/item/organ/cyberimp/arm/flash
name = "integrated high-intensity photon projector" //Why not
desc = "An integrated projector mounted onto a user's arm that is able to be used as a powerful flash."
items_to_create = list(/obj/item/assembly/flash/armimplant)
-/obj/item/organ/internal/cyberimp/arm/flash/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/flash/Initialize(mapload)
. = ..()
for(var/datum/weakref/created_item in items_list)
var/obj/potential_flash = created_item.resolve()
@@ -313,22 +313,22 @@
var/obj/item/assembly/flash/armimplant/flash = potential_flash
flash.arm = WEAKREF(src)
-/obj/item/organ/internal/cyberimp/arm/flash/Extend()
+/obj/item/organ/cyberimp/arm/flash/Extend()
. = ..()
active_item.set_light_range(7)
active_item.set_light_on(TRUE)
-/obj/item/organ/internal/cyberimp/arm/flash/Retract()
+/obj/item/organ/cyberimp/arm/flash/Retract()
if(active_item)
active_item.set_light_on(FALSE)
return ..()
-/obj/item/organ/internal/cyberimp/arm/baton
+/obj/item/organ/cyberimp/arm/baton
name = "arm electrification implant"
desc = "An illegal combat implant that allows the user to administer disabling shocks from their arm."
items_to_create = list(/obj/item/borg/stun)
-/obj/item/organ/internal/cyberimp/arm/combat
+/obj/item/organ/cyberimp/arm/combat
name = "combat cybernetics implant"
desc = "A powerful cybernetic implant that contains combat modules built into the user's arm."
items_to_create = list(
@@ -338,7 +338,7 @@
/obj/item/assembly/flash/armimplant,
)
-/obj/item/organ/internal/cyberimp/arm/combat/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/combat/Initialize(mapload)
. = ..()
for(var/datum/weakref/created_item in items_list)
var/obj/potential_flash = created_item.resolve()
@@ -347,7 +347,7 @@
var/obj/item/assembly/flash/armimplant/flash = potential_flash
flash.arm = WEAKREF(src)
-/obj/item/organ/internal/cyberimp/arm/surgery
+/obj/item/organ/cyberimp/arm/surgery
name = "surgical toolset implant"
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
icon_state = "toolkit_surgical"
@@ -362,7 +362,7 @@
/obj/item/surgical_drapes,
)
-/obj/item/organ/internal/cyberimp/arm/surgery/emagged
+/obj/item/organ/cyberimp/arm/surgery/emagged
name = "hacked surgical toolset implant"
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm. This one seems to have been tampered with."
items_to_create = list(
@@ -376,7 +376,7 @@
/obj/item/knife/combat/cyborg,
)
-/obj/item/organ/internal/cyberimp/arm/strongarm
+/obj/item/organ/cyberimp/arm/strongarm
name = "\proper Strong-Arm empowered musculature implant"
desc = "When implanted, this cybernetic implant will enhance the muscles of the arm to deliver more power-per-action."
icon_state = "muscle_implant"
@@ -409,19 +409,19 @@
///Tracks how soon we can perform another slam attack
COOLDOWN_DECLARE(slam_cooldown)
-/obj/item/organ/internal/cyberimp/arm/strongarm/l
+/obj/item/organ/cyberimp/arm/strongarm/l
zone = BODY_ZONE_L_ARM
-/obj/item/organ/internal/cyberimp/arm/strongarm/on_mob_insert(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/strongarm/on_mob_insert(mob/living/carbon/arm_owner)
. = ..()
if(ishuman(arm_owner)) //Sorry, only humans
RegisterSignal(arm_owner, COMSIG_LIVING_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand))
-/obj/item/organ/internal/cyberimp/arm/strongarm/on_mob_remove(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/strongarm/on_mob_remove(mob/living/carbon/arm_owner)
. = ..()
UnregisterSignal(arm_owner, COMSIG_LIVING_EARLY_UNARMED_ATTACK)
-/obj/item/organ/internal/cyberimp/arm/strongarm/emp_act(severity)
+/obj/item/organ/cyberimp/arm/strongarm/emp_act(severity)
. = ..()
if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
return
@@ -429,11 +429,11 @@
organ_flags |= ORGAN_FAILING
addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
-/obj/item/organ/internal/cyberimp/arm/strongarm/proc/reboot()
+/obj/item/organ/cyberimp/arm/strongarm/proc/reboot()
organ_flags &= ~ORGAN_FAILING
owner.balloon_alert(owner, "your arm stops spasming!")
-/obj/item/organ/internal/cyberimp/arm/strongarm/proc/on_attack_hand(mob/living/carbon/human/source, atom/target, proximity, modifiers)
+/obj/item/organ/cyberimp/arm/strongarm/proc/on_attack_hand(mob/living/carbon/human/source, atom/target, proximity, modifiers)
SIGNAL_HANDLER
if(source.get_active_hand() != hand || !proximity)
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
index c9cbfbe445b..6a1e4272cd5 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
@@ -1,9 +1,9 @@
-/obj/item/organ/internal/cyberimp/chest
+/obj/item/organ/cyberimp/chest
name = "cybernetic torso implant"
desc = "Implants for the organs in your torso."
zone = BODY_ZONE_CHEST
-/obj/item/organ/internal/cyberimp/chest/nutriment
+/obj/item/organ/cyberimp/chest/nutriment
name = "nutriment pump implant"
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
icon_state = "nutriment_implant"
@@ -12,7 +12,7 @@
var/poison_amount = 5
slot = ORGAN_SLOT_STOMACH_AID
-/obj/item/organ/internal/cyberimp/chest/nutriment/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/cyberimp/chest/nutriment/on_life(seconds_per_tick, times_fired)
if(synthesizing)
return
@@ -22,10 +22,10 @@
owner.adjust_nutrition(25 * seconds_per_tick)
addtimer(CALLBACK(src, PROC_REF(synth_cool)), 5 SECONDS)
-/obj/item/organ/internal/cyberimp/chest/nutriment/proc/synth_cool()
+/obj/item/organ/cyberimp/chest/nutriment/proc/synth_cool()
synthesizing = FALSE
-/obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity)
+/obj/item/organ/cyberimp/chest/nutriment/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
@@ -33,14 +33,14 @@
to_chat(owner, span_warning("You feel like your insides are burning."))
-/obj/item/organ/internal/cyberimp/chest/nutriment/plus
+/obj/item/organ/cyberimp/chest/nutriment/plus
name = "nutriment pump implant PLUS"
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
icon_state = "adv_nutriment_implant"
hunger_threshold = NUTRITION_LEVEL_HUNGRY
poison_amount = 10
-/obj/item/organ/internal/cyberimp/chest/reviver
+/obj/item/organ/cyberimp/chest/reviver
name = "reviver implant"
desc = "This implant will attempt to revive and heal you if you lose consciousness. For the faint of heart!"
icon_state = "reviver_implant"
@@ -50,15 +50,15 @@
COOLDOWN_DECLARE(reviver_cooldown)
COOLDOWN_DECLARE(defib_cooldown)
-/obj/item/organ/internal/cyberimp/chest/reviver/on_death(seconds_per_tick, times_fired)
- if(isnull(owner)) // owner can be null, on_death() gets called by /obj/item/organ/internal/process() for decay
+/obj/item/organ/cyberimp/chest/reviver/on_death(seconds_per_tick, times_fired)
+ if(isnull(owner)) // owner can be null, on_death() gets called by /obj/item/organ/process() for decay
return
try_heal() // Allows implant to work even on dead people
-/obj/item/organ/internal/cyberimp/chest/reviver/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/cyberimp/chest/reviver/on_life(seconds_per_tick, times_fired)
try_heal()
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/try_heal()
+/obj/item/organ/cyberimp/chest/reviver/proc/try_heal()
if(reviving)
if(owner.stat == CONSCIOUS)
COOLDOWN_START(src, reviver_cooldown, revive_cost)
@@ -78,7 +78,7 @@
COOLDOWN_START(src, defib_cooldown, 8 SECONDS) // 5 seconds after heal proc delay
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/heal()
+/obj/item/organ/cyberimp/chest/reviver/proc/heal()
if(COOLDOWN_FINISHED(src, defib_cooldown))
revive_dead()
@@ -106,7 +106,7 @@
owner.visible_message(span_warning("[owner]'s body twitches a bit."), span_notice("You feel like something is patching your injured body."))
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/revive_dead()
+/obj/item/organ/cyberimp/chest/reviver/proc/revive_dead()
if(!COOLDOWN_FINISHED(src, defib_cooldown) || owner.stat != DEAD || owner.can_defib() != DEFIB_POSSIBLE)
return
owner.notify_revival("You are being revived by [src]!")
@@ -126,7 +126,7 @@
log_game("[owner] been revived by [src]")
-/obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity)
+/obj/item/organ/cyberimp/chest/reviver/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
@@ -143,7 +143,7 @@
to_chat(human_owner, span_userdanger("You feel a horrible agony in your chest!"))
addtimer(CALLBACK(src, PROC_REF(undo_heart_attack)), 600 / severity)
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/undo_heart_attack()
+/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack()
var/mob/living/carbon/human/human_owner = owner
if(!istype(human_owner))
return
@@ -152,7 +152,7 @@
to_chat(human_owner, span_notice("You feel your heart beating again!"))
-/obj/item/organ/internal/cyberimp/chest/thrusters
+/obj/item/organ/cyberimp/chest/thrusters
name = "implantable thrusters set"
desc = "An implantable set of thruster ports. They use the gas from environment or subject's internals for propulsion in zero-gravity areas. \
Unlike regular jetpacks, this device has no stabilization system."
@@ -164,7 +164,7 @@
w_class = WEIGHT_CLASS_NORMAL
var/on = FALSE
-/obj/item/organ/internal/cyberimp/chest/thrusters/Initialize(mapload)
+/obj/item/organ/cyberimp/chest/thrusters/Initialize(mapload)
. = ..()
AddComponent( \
/datum/component/jetpack, \
@@ -178,21 +178,21 @@
/datum/effect_system/trail_follow/ion, \
)
-/obj/item/organ/internal/cyberimp/chest/thrusters/Remove(mob/living/carbon/thruster_owner, special, movement_flags)
+/obj/item/organ/cyberimp/chest/thrusters/Remove(mob/living/carbon/thruster_owner, special, movement_flags)
if(on)
deactivate(silent = TRUE)
..()
-/obj/item/organ/internal/cyberimp/chest/thrusters/ui_action_click()
+/obj/item/organ/cyberimp/chest/thrusters/ui_action_click()
toggle()
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle(silent = FALSE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/toggle(silent = FALSE)
if(on)
deactivate()
else
activate()
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/activate(silent = FALSE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/activate(silent = FALSE)
if(on)
return
if(organ_flags & ORGAN_FAILING)
@@ -208,7 +208,7 @@
to_chat(owner, span_notice("You turn your thrusters set on."))
update_appearance()
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/deactivate(silent = FALSE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/deactivate(silent = FALSE)
if(!on)
return
SEND_SIGNAL(src, COMSIG_THRUSTER_DEACTIVATED, owner)
@@ -218,11 +218,11 @@
on = FALSE
update_appearance()
-/obj/item/organ/internal/cyberimp/chest/thrusters/update_icon_state()
+/obj/item/organ/cyberimp/chest/thrusters/update_icon_state()
icon_state = "[base_icon_state][on ? "-on" : null]"
return ..()
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/allow_thrust(num, use_fuel = TRUE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/allow_thrust(num, use_fuel = TRUE)
if(!owner)
return FALSE
@@ -257,7 +257,7 @@
deactivate(silent = TRUE)
return FALSE
-/obj/item/organ/internal/cyberimp/chest/spine
+/obj/item/organ/cyberimp/chest/spine
name = "\improper Herculean gravitronic spinal implant"
desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \
Contains a slot which can be upgraded with a gravity anomaly core, improving its performance."
@@ -265,8 +265,10 @@
slot = ORGAN_SLOT_SPINE
/// How much faster does the spinal implant improve our lifting speed, workout ability, reducing falling damage and improving climbing and standing speed
var/athletics_boost_multiplier = 0.8
+ /// How much additional throwing speed does our spinal implant grant us.
+ var/added_throw_speed = 1
/// How much additional throwing range does our spinal implant grant us.
- var/added_throw_range = 2
+ var/added_throw_range = 4
/// How much additional boxing damage and tackling power do we add?
var/strength_bonus = 4
/// Whether or not a gravity anomaly core has been installed, improving the effectiveness of the spinal implant.
@@ -274,29 +276,33 @@
/// The overlay for our implant to indicate that, yes, this person has an implant inserted.
var/mutable_appearance/stone_overlay
-/obj/item/organ/internal/cyberimp/chest/spine/emp_act(severity)
+/obj/item/organ/cyberimp/chest/spine/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
to_chat(owner, span_warning("You feel sheering pain as your body is crushed like a soda can!"))
owner.apply_damage(20/severity, BRUTE, def_zone = BODY_ZONE_CHEST)
-/obj/item/organ/internal/cyberimp/chest/spine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/cyberimp/chest/spine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
stone_overlay = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "stone")
organ_owner.add_overlay(stone_overlay)
+ add_organ_trait(TRAIT_BOULDER_BREAKER)
if(core_applied)
organ_owner.AddElement(/datum/element/forced_gravity, 1)
+ add_organ_trait(TRAIT_STURDY_FRAME)
-/obj/item/organ/internal/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
+ remove_organ_trait(TRAIT_BOULDER_BREAKER)
if(stone_overlay)
organ_owner.cut_overlay(stone_overlay)
stone_overlay = null
if(core_applied)
organ_owner.RemoveElement(/datum/element/forced_gravity, 1)
+ remove_organ_trait(TRAIT_STURDY_FRAME)
-/obj/item/organ/internal/cyberimp/chest/spine/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+/obj/item/organ/cyberimp/chest/spine/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
. = ..()
if(core_applied)
user.balloon_alert(user, "core already installed!")
@@ -304,14 +310,26 @@
if(istype(tool, /obj/item/assembly/signaler/anomaly/grav))
user.balloon_alert(user, "core installed.")
- athletics_boost_multiplier = 0.25
- added_throw_range += 2
- strength_bonus += 4
+ name = /obj/item/organ/cyberimp/chest/spine/atlas::name
+ desc = /obj/item/organ/cyberimp/chest/spine/atlas::desc
+ athletics_boost_multiplier = /obj/item/organ/cyberimp/chest/spine/atlas::athletics_boost_multiplier
+ added_throw_range = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_range
+ added_throw_speed = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_speed
+ strength_bonus = /obj/item/organ/cyberimp/chest/spine/atlas::strength_bonus
core_applied = TRUE
- name = "\improper Atlas gravitonic spinal implant"
- desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \
- This one has been improved through the installation of a gravity anomaly core, allowing for personal gravity manipulation."
- icon_state = "herculean_implant_core"
update_appearance()
qdel(tool)
return ITEM_INTERACT_SUCCESS
+
+/obj/item/organ/cyberimp/chest/spine/atlas
+ name = "\improper Atlas gravitonic spinal implant"
+ desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \
+ This one has been improved through the installation of a gravity anomaly core, allowing for personal gravity manipulation. \
+ Not only can you walk with your feet planted firmly on the ground even during a loss of enviromental gravity, but you also \
+ carry heavier loads with relative ease."
+ icon_state = "herculean_implant_core"
+ athletics_boost_multiplier = 0.25
+ added_throw_speed = 6
+ added_throw_range = 8
+ strength_bonus = 8
+ core_applied = TRUE
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
index aa67fe0c08d..d720953a24c 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/eyes
+/obj/item/organ/cyberimp/eyes
name = "cybernetic eye implant"
desc = "Implants for your eyes."
icon_state = "eye_implant"
@@ -7,7 +7,7 @@
w_class = WEIGHT_CLASS_TINY
// HUD implants
-/obj/item/organ/internal/cyberimp/eyes/hud
+/obj/item/organ/cyberimp/eyes/hud
name = "HUD implant"
desc = "These cybernetic eyes will display a HUD over everything you see. Maybe."
slot = ORGAN_SLOT_HUD
@@ -17,7 +17,7 @@
var/toggled_on = TRUE
-/obj/item/organ/internal/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/eye_owner)
+/obj/item/organ/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/eye_owner)
if(toggled_on)
toggled_on = FALSE
eye_owner.add_traits(HUD_traits, ORGAN_TRAIT)
@@ -27,36 +27,36 @@
eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT)
balloon_alert(eye_owner, "hud enabled")
-/obj/item/organ/internal/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags)
+/obj/item/organ/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags)
. = ..()
eye_owner.add_traits(HUD_traits, ORGAN_TRAIT)
toggled_on = TRUE
-/obj/item/organ/internal/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags)
+/obj/item/organ/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags)
. = ..()
eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT)
toggled_on = FALSE
-/obj/item/organ/internal/cyberimp/eyes/hud/medical
+/obj/item/organ/cyberimp/eyes/hud/medical
name = "medical HUD implant"
desc = "These cybernetic eye implants will display a medical HUD over everything you see."
icon_state = "eye_implant_medical"
HUD_traits = list(TRAIT_MEDICAL_HUD)
-/obj/item/organ/internal/cyberimp/eyes/hud/security
+/obj/item/organ/cyberimp/eyes/hud/security
name = "security HUD implant"
desc = "These cybernetic eye implants will display a security HUD over everything you see."
icon_state = "eye_implant_security"
HUD_traits = list(TRAIT_SECURITY_HUD)
-/obj/item/organ/internal/cyberimp/eyes/hud/diagnostic
+/obj/item/organ/cyberimp/eyes/hud/diagnostic
name = "diagnostic HUD implant"
desc = "These cybernetic eye implants will display a diagnostic HUD over everything you see."
icon_state = "eye_implant_diagnostic"
HUD_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD)
-/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate
+/obj/item/organ/cyberimp/eyes/hud/security/syndicate
name = "contraband security HUD implant"
desc = "A Cybersun Industries brand Security HUD Implant. These illicit cybernetic eye implants will display a security HUD over everything you see."
icon_state = "eye_implant_syndicate"
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
index 334c8941f6b..42f0e5ac7b2 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
@@ -1,5 +1,5 @@
-/obj/item/organ/internal/cyberimp
+/obj/item/organ/cyberimp
name = "cybernetic implant"
desc = "A state-of-the-art implant that improves a baseline's functionality."
@@ -8,7 +8,7 @@
var/implant_color = COLOR_WHITE
var/implant_overlay
-/obj/item/organ/internal/cyberimp/New(mob/implanted_mob = null)
+/obj/item/organ/cyberimp/New(mob/implanted_mob = null)
if(iscarbon(implanted_mob))
src.Insert(implanted_mob)
if(implant_overlay)
@@ -19,13 +19,13 @@
//[[[[BRAIN]]]]
-/obj/item/organ/internal/cyberimp/brain
+/obj/item/organ/cyberimp/brain
name = "cybernetic brain implant"
desc = "Injectors of extra sub-routines for the brain."
zone = BODY_ZONE_HEAD
w_class = WEIGHT_CLASS_TINY
-/obj/item/organ/internal/cyberimp/brain/emp_act(severity)
+/obj/item/organ/cyberimp/brain/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
@@ -34,7 +34,7 @@
to_chat(owner, span_warning("Your body seizes up!"))
-/obj/item/organ/internal/cyberimp/brain/anti_drop
+/obj/item/organ/cyberimp/brain/anti_drop
name = "anti-drop implant"
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
icon_state = "brain_implant_antidrop"
@@ -43,7 +43,7 @@
slot = ORGAN_SLOT_BRAIN_CEREBELLUM
actions_types = list(/datum/action/item_action/organ_action/toggle)
-/obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click()
+/obj/item/organ/cyberimp/brain/anti_drop/ui_action_click()
active = !active
if(active)
var/list/hold_list = owner.get_empty_held_indexes()
@@ -63,7 +63,7 @@
to_chat(owner, span_notice("Your hands relax..."))
-/obj/item/organ/internal/cyberimp/brain/anti_drop/emp_act(severity)
+/obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
@@ -78,25 +78,25 @@
stored_items = list()
-/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/release_items()
+/obj/item/organ/cyberimp/brain/anti_drop/proc/release_items()
for(var/obj/item/stored_item as anything in stored_items)
REMOVE_TRAIT(stored_item, TRAIT_NODROP, IMPLANT_TRAIT)
UnregisterSignal(stored_item, COMSIG_ITEM_DROPPED)
stored_items = list()
-/obj/item/organ/internal/cyberimp/brain/anti_drop/Remove(mob/living/carbon/implant_owner, special, movement_flags)
+/obj/item/organ/cyberimp/brain/anti_drop/Remove(mob/living/carbon/implant_owner, special, movement_flags)
if(active)
ui_action_click()
..()
-/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/on_held_item_dropped(obj/item/source, mob/user)
+/obj/item/organ/cyberimp/brain/anti_drop/proc/on_held_item_dropped(obj/item/source, mob/user)
SIGNAL_HANDLER
REMOVE_TRAIT(source, TRAIT_NODROP, IMPLANT_TRAIT)
UnregisterSignal(source, COMSIG_ITEM_DROPPED)
stored_items -= source
-/obj/item/organ/internal/cyberimp/brain/anti_stun
+/obj/item/organ/cyberimp/brain/anti_stun
name = "CNS rebooter implant"
desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned."
icon_state = "brain_implant_rebooter"
@@ -114,28 +114,28 @@
var/stun_resistance_time = 6 SECONDS
COOLDOWN_DECLARE(implant_cooldown)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/on_mob_remove(mob/living/carbon/implant_owner)
+/obj/item/organ/cyberimp/brain/anti_stun/on_mob_remove(mob/living/carbon/implant_owner)
. = ..()
UnregisterSignal(implant_owner, signalCache)
UnregisterSignal(implant_owner, COMSIG_LIVING_ENTER_STAMCRIT)
remove_stun_buffs(implant_owner)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/cyberimp/brain/anti_stun/on_mob_insert(mob/living/carbon/receiver)
. = ..()
RegisterSignals(receiver, signalCache, PROC_REF(on_signal))
RegisterSignal(receiver, COMSIG_LIVING_ENTER_STAMCRIT, PROC_REF(on_stamcrit))
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount)
SIGNAL_HANDLER
if(!(organ_flags & ORGAN_FAILING) && amount > 0)
addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/on_stamcrit(datum/source)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/on_stamcrit(datum/source)
SIGNAL_HANDLER
if(!(organ_flags & ORGAN_FAILING))
addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/clear_stuns()
+/obj/item/organ/cyberimp/brain/anti_stun/proc/clear_stuns()
if(isnull(owner) || (organ_flags & ORGAN_FAILING) || !COOLDOWN_FINISHED(src, implant_cooldown))
return
@@ -156,37 +156,37 @@
COOLDOWN_START(src, implant_cooldown, 60 SECONDS)
addtimer(CALLBACK(src, PROC_REF(implant_ready)),60 SECONDS)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/implant_ready()
+/obj/item/organ/cyberimp/brain/anti_stun/proc/implant_ready()
if(owner)
to_chat(owner, span_purple("Your rebooter implant is ready."))
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/give_stun_buffs(mob/living/give_to = owner)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/give_stun_buffs(mob/living/give_to = owner)
give_to.add_traits(list(TRAIT_STUNIMMUNE, TRAIT_BATON_RESISTANCE), REF(src))
give_to.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/remove_stun_buffs(mob/living/remove_from = owner)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/remove_stun_buffs(mob/living/remove_from = owner)
remove_from.remove_traits(list(TRAIT_STUNIMMUNE, TRAIT_BATON_RESISTANCE), REF(src))
remove_from.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/emp_act(severity)
+/obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity)
. = ..()
if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
return
organ_flags |= ORGAN_FAILING
addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/reboot()
+/obj/item/organ/cyberimp/brain/anti_stun/proc/reboot()
organ_flags &= ~ORGAN_FAILING
implant_ready()
-/obj/item/organ/internal/cyberimp/brain/connector
+/obj/item/organ/cyberimp/brain/connector
name = "CNS skillchip connector implant"
desc = "This cybernetic adds a port to the back of your head, where you can remove or add skillchips at will."
icon_state = "brain_implant_connector"
slot = ORGAN_SLOT_BRAIN_CNS
actions_types = list(/datum/action/item_action/organ_action/use)
-/obj/item/organ/internal/cyberimp/brain/connector/ui_action_click()
+/obj/item/organ/cyberimp/brain/connector/ui_action_click()
to_chat(owner, span_warning("You start fiddling around with [src]..."))
playsound(owner, 'sound/items/taperecorder/tape_flip.ogg', 20, vary = TRUE) // asmr
@@ -208,12 +208,12 @@
else
to_chat(owner, span_warning("You try to insert [owner.get_active_held_item()] into [src], but it won't fit!")) // make it kill you if you shove a crayon inside or something
else // no inhand item, assume removal
- var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/brain)
if(!chippy_brain)
CRASH("we using a brain implant wit no brain")
remove_skillchip(chippy_brain)
-/obj/item/organ/internal/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip)
+/obj/item/organ/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip)
var/fail_string = owner.implant_skillchip(skillchip, force = FALSE)
if(fail_string)
to_chat(owner, span_warning(fail_string))
@@ -229,7 +229,7 @@
// success!
playsound(owner, 'sound/machines/chime.ogg', 10, vary = TRUE)
-/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/internal/brain/chippy_brain)
+/obj/item/organ/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/brain/chippy_brain)
var/obj/item/skillchip/skillchip = show_radial_menu(owner, owner, chippy_brain.skillchips)
if(skillchip)
owner.remove_skillchip(skillchip, silent = FALSE)
@@ -241,7 +241,7 @@
to_chat(owner, span_warning("Your brain is empty!")) // heh
-/obj/item/organ/internal/cyberimp/brain/connector/emp_act(severity)
+/obj/item/organ/cyberimp/brain/connector/emp_act(severity)
. = ..()
if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
return
@@ -253,7 +253,7 @@
// you either lose a chip or a bit of your brain
owner.visible_message(span_warning("Something falls to the ground from behind [owner]'s head."),\
span_boldwarning("You feel something fall off from behind your head."))
- var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN)
var/obj/item/skillchip/skillchip = chippy_brain?.skillchips[1]
if(skillchip)
owner.remove_skillchip(skillchip, silent = TRUE)
@@ -263,7 +263,7 @@
remove_brain()
addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
-/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/internal/brain/chippy_brain, severity = 1)
+/obj/item/organ/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/brain/chippy_brain, severity = 1)
playsound(owner, 'sound/effects/meatslap.ogg', 25, TRUE)
if(!chippy_brain)
return
@@ -277,21 +277,21 @@
new /obj/effect/decal/cleanable/blood/gibs/up(get_turf(owner))
return FALSE
-/obj/item/organ/internal/cyberimp/brain/connector/proc/reboot()
+/obj/item/organ/cyberimp/brain/connector/proc/reboot()
organ_flags &= ~ORGAN_FAILING
//[[[[MOUTH]]]]
-/obj/item/organ/internal/cyberimp/mouth
+/obj/item/organ/cyberimp/mouth
zone = BODY_ZONE_PRECISE_MOUTH
-/obj/item/organ/internal/cyberimp/mouth/breathing_tube
+/obj/item/organ/cyberimp/mouth/breathing_tube
name = "breathing tube implant"
desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked."
icon_state = "implant_mask"
slot = ORGAN_SLOT_BREATHING_TUBE
w_class = WEIGHT_CLASS_TINY
-/obj/item/organ/internal/cyberimp/mouth/breathing_tube/emp_act(severity)
+/obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm
index b4a0ac79d33..e10dbbf2593 100644
--- a/code/modules/surgery/organs/internal/ears/_ears.dm
+++ b/code/modules/surgery/organs/internal/ears/_ears.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears
+/obj/item/organ/ears
name = "ears"
icon_state = "ears"
desc = "There are three parts to the ear. Inner, middle and outer. Only one of these parts should be normally visible."
@@ -26,7 +26,7 @@
/// Multiplier for both long term and short term ear damage
var/damage_multiplier = 1
-/obj/item/organ/internal/ears/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/ears/on_life(seconds_per_tick, times_fired)
// only inform when things got worse, needs to happen before we heal
if((damage > low_threshold && prev_damage < low_threshold) || (damage > high_threshold && prev_damage < high_threshold))
to_chat(owner, span_warning("The ringing in your ears grows louder, blocking out any external noises for a moment."))
@@ -44,20 +44,20 @@
adjustEarDamage(0, 4)
SEND_SOUND(owner, sound('sound/items/weapons/flash_ring.ogg'))
-/obj/item/organ/internal/ears/apply_organ_damage(damage_amount, maximum, required_organ_flag)
+/obj/item/organ/ears/apply_organ_damage(damage_amount, maximum, required_organ_flag)
. = ..()
update_temp_deafness()
-/obj/item/organ/internal/ears/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/ears/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
update_temp_deafness()
-/obj/item/organ/internal/ears/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/ears/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_MOB_SAY)
REMOVE_TRAIT(organ_owner, TRAIT_DEAF, EAR_DAMAGE)
-/obj/item/organ/internal/ears/get_status_appendix(advanced, add_tooltips)
+/obj/item/organ/ears/get_status_appendix(advanced, add_tooltips)
if(owner.stat == DEAD || !HAS_TRAIT(owner, TRAIT_DEAF))
return
if(advanced)
@@ -69,7 +69,7 @@
return conditional_tooltip("Subject is [(organ_flags & ORGAN_FAILING) ? "permanently": "temporarily"] deaf from ear damage.", "Repair surgically, use medication such as [/datum/reagent/medicine/inacusiate::name], or protect ears with earmuffs.", add_tooltips)
return "Subject is deaf."
-/obj/item/organ/internal/ears/show_on_condensed_scans()
+/obj/item/organ/ears/show_on_condensed_scans()
// Always show if we have an appendix
return ..() || (owner.stat != DEAD && HAS_TRAIT(owner, TRAIT_DEAF))
@@ -79,7 +79,7 @@
* * ddmg: Handles normal organ damage
* * ddeaf: Handles temporary deafness, 1 ddeaf = 2 seconds of deafness, by default (with no multiplier)
*/
-/obj/item/organ/internal/ears/proc/adjustEarDamage(ddmg = 0, ddeaf = 0)
+/obj/item/organ/ears/proc/adjustEarDamage(ddmg = 0, ddeaf = 0)
if(HAS_TRAIT(owner, TRAIT_GODMODE))
update_temp_deafness()
return
@@ -93,7 +93,7 @@
update_temp_deafness()
/// Updates status of deafness
-/obj/item/organ/internal/ears/proc/update_temp_deafness()
+/obj/item/organ/ears/proc/update_temp_deafness()
// if we're failing we always have at least some deaf stacks (and thus deafness)
if(organ_flags & ORGAN_FAILING)
deaf = max(deaf, 1 * damage_multiplier)
@@ -113,7 +113,7 @@
UnregisterSignal(owner, COMSIG_MOB_SAY)
/// Being deafened by loud noises makes you shout
-/obj/item/organ/internal/ears/proc/adjust_speech(datum/source, list/speech_args)
+/obj/item/organ/ears/proc/adjust_speech(datum/source, list/speech_args)
SIGNAL_HANDLER
if(HAS_TRAIT_NOT_FROM(source, TRAIT_DEAF, EAR_DAMAGE))
@@ -141,11 +141,11 @@
speech_args[SPEECH_MESSAGE] = message
return COMPONENT_UPPERCASE_SPEECH
-/obj/item/organ/internal/ears/invincible
+/obj/item/organ/ears/invincible
damage_multiplier = 0
-/obj/item/organ/internal/ears/cat
+/obj/item/organ/ears/cat
name = "cat ears"
icon = 'icons/obj/clothing/head/costume.dmi'
worn_icon = 'icons/mob/clothing/head/costume.dmi'
@@ -164,6 +164,7 @@
layers = EXTERNAL_FRONT | EXTERNAL_BEHIND
color_source = ORGAN_COLOR_HAIR
feature_key = "ears"
+ dyable = TRUE
/// Layer upon which we add the inner ears overlay
var/inner_layer = EXTERNAL_FRONT
@@ -192,21 +193,21 @@
base_ears.overlays += inner_ears
return base_ears
-/obj/item/organ/internal/ears/penguin
+/obj/item/organ/ears/penguin
name = "penguin ears"
desc = "The source of a penguin's happy feet."
-/obj/item/organ/internal/ears/penguin/on_mob_insert(mob/living/carbon/human/ear_owner)
+/obj/item/organ/ears/penguin/on_mob_insert(mob/living/carbon/human/ear_owner)
. = ..()
to_chat(ear_owner, span_notice("You suddenly feel like you've lost your balance."))
ear_owner.AddElementTrait(TRAIT_WADDLING, ORGAN_TRAIT, /datum/element/waddling)
-/obj/item/organ/internal/ears/penguin/on_mob_remove(mob/living/carbon/human/ear_owner)
+/obj/item/organ/ears/penguin/on_mob_remove(mob/living/carbon/human/ear_owner)
. = ..()
to_chat(ear_owner, span_notice("Your sense of balance comes back to you."))
REMOVE_TRAIT(ear_owner, TRAIT_WADDLING, ORGAN_TRAIT)
-/obj/item/organ/internal/ears/cybernetic
+/obj/item/organ/ears/cybernetic
name = "basic cybernetic ears"
icon_state = "ears-c"
desc = "A basic cybernetic organ designed to mimic the operation of ears."
@@ -214,13 +215,13 @@
organ_flags = ORGAN_ROBOTIC
failing_desc = "seems to be broken."
-/obj/item/organ/internal/ears/cybernetic/upgraded
+/obj/item/organ/ears/cybernetic/upgraded
name = "cybernetic ears"
icon_state = "ears-c-u"
desc = "An advanced cybernetic ear, surpassing the performance of organic ears."
damage_multiplier = 0.5
-/obj/item/organ/internal/ears/cybernetic/whisper
+/obj/item/organ/ears/cybernetic/whisper
name = "whisper-sensitive cybernetic ears"
icon_state = "ears-c-u"
desc = "Allows the user to more easily hear whispers. The user becomes extra vulnerable to loud noises, however"
@@ -229,31 +230,31 @@
// The original idea was to use signals to do this not traits. Unfortunately, the star effect used for whispers applies before any relevant signals
// This seems like the least invasive solution
-/obj/item/organ/internal/ears/cybernetic/whisper/on_mob_insert(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/whisper/on_mob_insert(mob/living/carbon/ear_owner)
. = ..()
ADD_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)
-/obj/item/organ/internal/ears/cybernetic/whisper/on_mob_remove(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/whisper/on_mob_remove(mob/living/carbon/ear_owner)
. = ..()
REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)
// "X-ray ears" that let you hear through walls
-/obj/item/organ/internal/ears/cybernetic/xray
+/obj/item/organ/ears/cybernetic/xray
name = "wall-penetrating cybernetic ears"
icon_state = "ears-c-u"
desc = "Through the power of modern engineering, allows the user to hear speech through walls. The user becomes extra vulnerable to loud noises, however"
// Same sensitivity as felinid ears
damage_multiplier = 2
-/obj/item/organ/internal/ears/cybernetic/xray/on_mob_insert(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/xray/on_mob_insert(mob/living/carbon/ear_owner)
. = ..()
ADD_TRAIT(ear_owner, TRAIT_XRAY_HEARING, ORGAN_TRAIT)
-/obj/item/organ/internal/ears/cybernetic/xray/on_mob_remove(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/xray/on_mob_remove(mob/living/carbon/ear_owner)
. = ..()
REMOVE_TRAIT(ear_owner, TRAIT_XRAY_HEARING, ORGAN_TRAIT)
-/obj/item/organ/internal/ears/cybernetic/emp_act(severity)
+/obj/item/organ/ears/cybernetic/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm
index 781949aa422..69a35d0c5e7 100644
--- a/code/modules/surgery/organs/internal/eyes/_eyes.dm
+++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/eyes
+/obj/item/organ/eyes
name = BODY_ZONE_PRECISE_EYES
icon_state = "eyes"
desc = "I see you!"
@@ -40,10 +40,6 @@
var/eye_color_left = "" //set to a hex code to override a mob's left eye color
var/eye_color_right = "" //set to a hex code to override a mob's right eye color
var/eye_icon_state = "eyes"
- /// The color of the previous left eye before this one was inserted
- var/old_eye_color_left = "fff"
- /// The color of the previous right eye before this one was inserted
- var/old_eye_color_right = "fff"
/// Glasses cannot be worn over these eyes. Currently unused
var/no_glasses = FALSE
@@ -54,15 +50,8 @@
/// Scarring on this organ
var/scarring = NONE
-/obj/item/organ/internal/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags)
- // If we don't do this before everything else, heterochromia will be reset leading to eye_color_right no longer being accurate
- if(ishuman(receiver))
- var/mob/living/carbon/human/human_recipient = receiver
- old_eye_color_left = human_recipient.eye_color_left
- old_eye_color_right = human_recipient.eye_color_right
-
+/obj/item/organ/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
-
receiver.cure_blind(NO_EYES)
apply_damaged_eye_effects()
refresh(receiver, call_update = TRUE)
@@ -70,7 +59,7 @@
/// Refreshes the visuals of the eyes
/// If call_update is TRUE, we also will call update_body
-/obj/item/organ/internal/eyes/proc/refresh(mob/living/carbon/eye_owner = owner, call_update = TRUE)
+/obj/item/organ/eyes/proc/refresh(mob/living/carbon/eye_owner = owner, call_update = TRUE)
owner.update_sight()
owner.update_tint()
@@ -78,14 +67,11 @@
return
var/mob/living/carbon/human/affected_human = eye_owner
- if(initial(eye_color_left))
- affected_human.eye_color_left = eye_color_left
- else
- eye_color_left = affected_human.eye_color_left
- if(initial(eye_color_right))
- affected_human.eye_color_right = eye_color_right
- else
- eye_color_right = affected_human.eye_color_right
+ if(eye_color_left)
+ affected_human.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
+ if(eye_color_right)
+ affected_human.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
+
if(HAS_TRAIT(affected_human, TRAIT_NIGHT_VISION)) // NOVA EDIT CHANGE - ORIGINAL: if(HAS_TRAIT(affected_human, TRAIT_NIGHT_VISION) && !lighting_cutoff)
//lighting_cutoff = LIGHTING_CUTOFF_REAL_LOW // NOVA EDIT REMOVAL
// NOVA EDIT ADDITION START - NIGHT VISION ADJUSTMENT - adjusts color cutoffs based on chosen quirk color, or left eye colour if not available
@@ -104,15 +90,12 @@
if(call_update)
affected_human.update_body()
-/obj/item/organ/internal/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(ishuman(organ_owner))
var/mob/living/carbon/human/human_owner = organ_owner
- if(initial(eye_color_left))
- human_owner.eye_color_left = old_eye_color_left
- if(initial(eye_color_right))
- human_owner.eye_color_right = old_eye_color_right
+ human_owner.remove_eye_color(EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
if(native_fov)
organ_owner.remove_fov_trait(type)
if(!special)
@@ -133,7 +116,7 @@
is_emissive = FALSE // NOVA EDIT ADDITION
UnregisterSignal(organ_owner, COMSIG_ATOM_BULLET_ACT)
-/obj/item/organ/internal/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone)
+/obj/item/organ/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone)
SIGNAL_HANDLER
// Once-a-dozen-rounds level of rare
@@ -165,7 +148,7 @@
#define OFFSET_Y 2
/// Similar to get_status_text, but appends the text after the damage report, for additional status info
-/obj/item/organ/internal/eyes/get_status_appendix(advanced, add_tooltips)
+/obj/item/organ/eyes/get_status_appendix(advanced, add_tooltips)
if(owner.stat == DEAD || HAS_TRAIT(owner, TRAIT_KNOCKEDOUT))
return
if(owner.is_blind())
@@ -194,13 +177,13 @@
return "Subject is nearsighted."
return ""
-/obj/item/organ/internal/eyes/show_on_condensed_scans()
+/obj/item/organ/eyes/show_on_condensed_scans()
// Always show if we have an appendix
return ..() || (owner.stat != DEAD && !HAS_TRAIT(owner, TRAIT_KNOCKEDOUT) && (owner.is_blind() || owner.is_nearsighted()))
/// This proc generates a list of overlays that the eye should be displayed using for the given parent
-/obj/item/organ/internal/eyes/proc/generate_body_overlay(mob/living/carbon/human/parent)
- if(!istype(parent) || parent.get_organ_by_type(/obj/item/organ/internal/eyes) != src)
+/obj/item/organ/eyes/proc/generate_body_overlay(mob/living/carbon/human/parent)
+ if(!istype(parent) || parent.get_organ_by_type(/obj/item/organ/eyes) != src)
CRASH("Generating a body overlay for [src] targeting an invalid parent '[parent]'.")
if(isnull(eye_icon_state))
@@ -226,8 +209,8 @@
if(my_head.head_flags & HEAD_EYECOLOR)
if(IS_ROBOTIC_ORGAN(src) || !my_head.draw_color || (parent.appears_alive() && !HAS_TRAIT(parent, TRAIT_KNOCKEDOUT)))
// show the eyes as open
- eye_right.color = eye_color_right
- eye_left.color = eye_color_left
+ eye_right.color = parent.get_right_eye_color()
+ eye_left.color = parent.get_left_eye_color()
else
// show the eyes as closed, and as such color them like eyelids wound be colored
var/list/base_color = rgb2num(my_head.draw_color, COLORSPACE_HSL)
@@ -271,14 +254,14 @@
return overlays
-/obj/item/organ/internal/eyes/update_overlays()
+/obj/item/organ/eyes/update_overlays()
. = ..()
if (scarring & RIGHT_EYE_SCAR)
. += mutable_appearance('icons/obj/medical/organs/organs.dmi', "eye_scar_right")
if (scarring & LEFT_EYE_SCAR)
. += mutable_appearance('icons/obj/medical/organs/organs.dmi', "eye_scar_left")
-/obj/item/organ/internal/eyes/proc/apply_scar(side)
+/obj/item/organ/eyes/proc/apply_scar(side)
if (scarring & side)
return
scarring |= side
@@ -286,7 +269,7 @@
update_appearance()
apply_scarring_effects()
-/obj/item/organ/internal/eyes/proc/apply_scarring_effects()
+/obj/item/organ/eyes/proc/apply_scarring_effects()
if (!owner)
return
var/datum/status_effect/grouped/nearsighted/nearsightedness = owner.is_nearsighted()
@@ -302,7 +285,7 @@
owner.become_blind(EYE_SCARRING_TRAIT)
owner.update_body()
-/obj/item/organ/internal/eyes/proc/fix_scar(side)
+/obj/item/organ/eyes/proc/fix_scar(side)
if (!(scarring & side))
return
scarring &= ~side
@@ -314,12 +297,12 @@
owner.cure_blind(EYE_SCARRING_TRAIT)
owner.update_body()
-/obj/item/organ/internal/eyes/on_mob_insert(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/on_mob_insert(mob/living/carbon/eye_owner)
. = ..()
if (scarring)
apply_scarring_effects()
-/obj/item/organ/internal/eyes/on_mob_remove(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/on_mob_remove(mob/living/carbon/eye_owner)
. = ..()
if (scarring)
eye_owner.cure_nearsighted(TRAIT_RIGHT_EYE_SCAR)
@@ -330,19 +313,19 @@
#undef OFFSET_Y
//Gotta reset the eye color, because that persists
-/obj/item/organ/internal/eyes/enter_wardrobe()
+/obj/item/organ/eyes/enter_wardrobe()
. = ..()
eye_color_left = initial(eye_color_left)
eye_color_right = initial(eye_color_right)
-/obj/item/organ/internal/eyes/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
+/obj/item/organ/eyes/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
. = ..()
if(!owner)
return FALSE
apply_damaged_eye_effects()
/// Applies effects to our owner based on how damaged our eyes are
-/obj/item/organ/internal/eyes/proc/apply_damaged_eye_effects()
+/obj/item/organ/eyes/proc/apply_damaged_eye_effects()
// we're in healthy threshold, either try to heal (if damaged) or do nothing
if(damage <= low_threshold)
if(damaged)
@@ -379,7 +362,7 @@
#define NIGHTVISION_LIGHT_MID 2
#define NIGHTVISION_LIGHT_HIG 3
-/obj/item/organ/internal/eyes/night_vision
+/obj/item/organ/eyes/night_vision
actions_types = list(/datum/action/item_action/organ_action/use)
// These lists are used as the color cutoff for the eye
@@ -389,16 +372,16 @@
var/list/high_light_cutoff
var/light_level = NIGHTVISION_LIGHT_OFF
-/obj/item/organ/internal/eyes/night_vision/Initialize(mapload)
+/obj/item/organ/eyes/night_vision/Initialize(mapload)
. = ..()
- if (PERFORM_ALL_TESTS(focus_only/nightvision_color_cutoffs) && type != /obj/item/organ/internal/eyes/night_vision)
+ if (PERFORM_ALL_TESTS(focus_only/nightvision_color_cutoffs) && type != /obj/item/organ/eyes/night_vision)
if(length(low_light_cutoff) != 3 || length(medium_light_cutoff) != 3 || length(high_light_cutoff) != 3)
stack_trace("[type] did not have fully filled out color cutoff lists")
if(low_light_cutoff)
color_cutoffs = low_light_cutoff.Copy()
light_level = NIGHTVISION_LIGHT_LOW
-/obj/item/organ/internal/eyes/night_vision/ui_action_click()
+/obj/item/organ/eyes/night_vision/ui_action_click()
sight_flags = initial(sight_flags)
switch(light_level)
if (NIGHTVISION_LIGHT_OFF)
@@ -420,25 +403,25 @@
#undef NIGHTVISION_LIGHT_MID
#undef NIGHTVISION_LIGHT_HIG
-/obj/item/organ/internal/eyes/night_vision/mushroom
+/obj/item/organ/eyes/night_vision/mushroom
name = "fung-eye"
desc = "While on the outside they look inert and dead, the eyes of mushroom people are actually very advanced."
low_light_cutoff = list(0, 15, 20)
medium_light_cutoff = list(0, 20, 35)
high_light_cutoff = list(0, 40, 50)
-/obj/item/organ/internal/eyes/zombie
+/obj/item/organ/eyes/zombie
name = "undead eyes"
desc = "Somewhat counterintuitively, these half-rotten eyes actually have superior vision to those of a living human."
color_cutoffs = list(25, 35, 5)
-/obj/item/organ/internal/eyes/alien
+/obj/item/organ/eyes/alien
name = "alien eyes"
desc = "It turned out they had them after all!"
sight_flags = SEE_MOBS
color_cutoffs = list(25, 5, 42)
-/obj/item/organ/internal/eyes/golem
+/obj/item/organ/eyes/golem
name = "resonating crystal"
icon_state = "adamantine_cords"
eye_icon_state = null
@@ -464,14 +447,14 @@
///Robotic
-/obj/item/organ/internal/eyes/robotic
+/obj/item/organ/eyes/robotic
name = "robotic eyes"
icon_state = "cybernetic_eyeballs"
desc = "Your vision is augmented."
organ_flags = ORGAN_ROBOTIC
failing_desc = "seems to be broken."
-/obj/item/organ/internal/eyes/robotic/emp_act(severity)
+/obj/item/organ/eyes/robotic/emp_act(severity)
. = ..()
if((. & EMP_PROTECT_SELF) || !owner)
return
@@ -480,14 +463,14 @@
to_chat(owner, span_warning("Static obfuscates your vision!"))
owner.flash_act(visual = 1)
-/obj/item/organ/internal/eyes/robotic/basic
+/obj/item/organ/eyes/robotic/basic
name = "basic robotic eyes"
desc = "A pair of basic cybernetic eyes that restore vision, but at some vulnerability to light."
eye_color_left = "5500ff"
eye_color_right = "5500ff"
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/eyes/robotic/basic/emp_act(severity)
+/obj/item/organ/eyes/robotic/basic/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
@@ -497,22 +480,22 @@
do_sparks(2, TRUE, owner)
owner.emote("scream")
-/obj/item/organ/internal/eyes/robotic/xray
+/obj/item/organ/eyes/robotic/xray
name = "\improper X-ray eyes"
desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
eye_color_left = "000"
eye_color_right = "000"
sight_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS
-/obj/item/organ/internal/eyes/robotic/xray/on_mob_insert(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/robotic/xray/on_mob_insert(mob/living/carbon/eye_owner)
. = ..()
ADD_TRAIT(eye_owner, TRAIT_XRAY_VISION, ORGAN_TRAIT)
-/obj/item/organ/internal/eyes/robotic/xray/on_mob_remove(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/robotic/xray/on_mob_remove(mob/living/carbon/eye_owner)
. = ..()
REMOVE_TRAIT(eye_owner, TRAIT_XRAY_VISION, ORGAN_TRAIT)
-/obj/item/organ/internal/eyes/robotic/thermals
+/obj/item/organ/eyes/robotic/thermals
name = "thermal eyes"
desc = "These cybernetic eye implants will give you thermal vision. Vertical slit pupil included."
eye_color_left = "FC0"
@@ -522,7 +505,7 @@
sight_flags = SEE_MOBS
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/eyes/robotic/flashlight
+/obj/item/organ/eyes/robotic/flashlight
name = "flashlight eyes"
desc = "It's two flashlights rigged together with some wire. Why would you put these in someone's head?"
eye_color_left ="fee5a3"
@@ -533,11 +516,11 @@
tint = INFINITY
var/obj/item/flashlight/eyelight/eye
-/obj/item/organ/internal/eyes/robotic/flashlight/Initialize(mapload)
+/obj/item/organ/eyes/robotic/flashlight/Initialize(mapload)
. = ..()
AddElement(/datum/element/empprotection, EMP_PROTECT_ALL)
-/obj/item/organ/internal/eyes/robotic/flashlight/on_mob_insert(mob/living/carbon/victim)
+/obj/item/organ/eyes/robotic/flashlight/on_mob_insert(mob/living/carbon/victim)
. = ..()
if(!eye)
eye = new /obj/item/flashlight/eyelight()
@@ -546,7 +529,7 @@
eye.update_brightness(victim)
victim.become_blind(FLASHLIGHT_EYES)
-/obj/item/organ/internal/eyes/robotic/flashlight/on_mob_remove(mob/living/carbon/victim)
+/obj/item/organ/eyes/robotic/flashlight/on_mob_remove(mob/living/carbon/victim)
. = ..()
eye.set_light_on(FALSE)
eye.update_brightness(victim)
@@ -554,12 +537,12 @@
victim.cure_blind(FLASHLIGHT_EYES)
// Welding shield implant
-/obj/item/organ/internal/eyes/robotic/shield
+/obj/item/organ/eyes/robotic/shield
name = "shielded robotic eyes"
desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision."
flash_protect = FLASH_PROTECTION_WELDER
-/obj/item/organ/internal/eyes/robotic/shield/Initialize(mapload)
+/obj/item/organ/eyes/robotic/shield/Initialize(mapload)
. = ..()
AddElement(/datum/element/empprotection, EMP_PROTECT_ALL)
@@ -569,7 +552,7 @@
#define UPDATE_EYES_LEFT 1
#define UPDATE_EYES_RIGHT 2
-/obj/item/organ/internal/eyes/robotic/glow
+/obj/item/organ/eyes/robotic/glow
name = "High Luminosity Eyes"
desc = "Special glowing eyes, used by snowflakes who want to be special."
eye_color_left = "000"
@@ -588,43 +571,43 @@
/// The custom selected eye color for the right eye. Defaults to the mob's natural eye color
var/right_eye_color_string
-/obj/item/organ/internal/eyes/robotic/glow/Initialize(mapload)
+/obj/item/organ/eyes/robotic/glow/Initialize(mapload)
. = ..()
eye = new /obj/item/flashlight/eyelight/glow
-/obj/item/organ/internal/eyes/robotic/glow/Destroy()
+/obj/item/organ/eyes/robotic/glow/Destroy()
. = ..()
deactivate(close_ui = TRUE)
QDEL_NULL(eye)
-/obj/item/organ/internal/eyes/robotic/glow/emp_act(severity)
+/obj/item/organ/eyes/robotic/glow/emp_act(severity)
. = ..()
if(!eye.light_on || . & EMP_PROTECT_SELF)
return
deactivate(close_ui = TRUE)
/// Set the initial color of the eyes on insert to be the mob's previous eye color.
-/obj/item/organ/internal/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
- left_eye_color_string = old_eye_color_left
- right_eye_color_string = old_eye_color_right
+ left_eye_color_string = eye_color_left
+ right_eye_color_string = eye_color_right
update_mob_eye_color(eye_recipient)
-/obj/item/organ/internal/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient)
+/obj/item/organ/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient)
. = ..()
deactivate(close_ui = TRUE)
eye.forceMove(eye_recipient)
-/obj/item/organ/internal/eyes/robotic/glow/on_mob_remove(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/robotic/glow/on_mob_remove(mob/living/carbon/eye_owner)
deactivate(eye_owner, close_ui = TRUE)
if(!QDELETED(eye))
eye.forceMove(src)
return ..()
-/obj/item/organ/internal/eyes/robotic/glow/ui_state(mob/user)
+/obj/item/organ/eyes/robotic/glow/ui_state(mob/user)
return GLOB.default_state
-/obj/item/organ/internal/eyes/robotic/glow/ui_status(mob/user, datum/ui_state/state)
+/obj/item/organ/eyes/robotic/glow/ui_status(mob/user, datum/ui_state/state)
if(!QDELETED(owner))
if(owner == user)
return min(
@@ -634,14 +617,14 @@
else return UI_CLOSE
return ..()
-/obj/item/organ/internal/eyes/robotic/glow/ui_interact(mob/user, datum/tgui/ui)
+/obj/item/organ/eyes/robotic/glow/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "HighLuminosityEyesMenu")
ui.autoupdate = FALSE
ui.open()
-/obj/item/organ/internal/eyes/robotic/glow/ui_data(mob/user)
+/obj/item/organ/eyes/robotic/glow/ui_data(mob/user)
var/list/data = list()
data["eyeColor"] = list(
@@ -655,7 +638,7 @@
return data
-/obj/item/organ/internal/eyes/robotic/glow/ui_act(action, list/params, datum/tgui/ui)
+/obj/item/organ/eyes/robotic/glow/ui_act(action, list/params, datum/tgui/ui)
. = ..()
if(.)
return
@@ -689,7 +672,7 @@
toggle_eye_color_mode()
return TRUE
-/obj/item/organ/internal/eyes/robotic/glow/ui_action_click(mob/user, action)
+/obj/item/organ/eyes/robotic/glow/ui_action_click(mob/user, action)
if(istype(action, /datum/action/item_action/organ_action/toggle))
toggle_active()
else if(istype(action, /datum/action/item_action/organ_action/use))
@@ -700,7 +683,7 @@
*
* Turns on the attached flashlight object, updates the mob overlay to be added.
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/activate()
+/obj/item/organ/eyes/robotic/glow/proc/activate()
if(eye.light_range)
eye.set_light_on(TRUE)
else
@@ -715,7 +698,7 @@
* * mob/living/carbon/eye_owner - the mob who the eyes belong to
* * close_ui - whether or not to close the ui
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/deactivate(mob/living/carbon/eye_owner = owner, close_ui = FALSE)
+/obj/item/organ/eyes/robotic/glow/proc/deactivate(mob/living/carbon/eye_owner = owner, close_ui = FALSE)
if(close_ui)
SStgui.close_uis(src)
eye.set_light_on(FALSE)
@@ -728,7 +711,7 @@
* Arguments:
* * to_update - whether we are setting the color for the light beam itself, or the individual eyes
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/randomize_color(to_update = UPDATE_LIGHT)
+/obj/item/organ/eyes/robotic/glow/proc/randomize_color(to_update = UPDATE_LIGHT)
var/new_color = "#"
for(var/i in 1 to 3)
new_color += num2hex(rand(0, 255), 2)
@@ -742,7 +725,7 @@
* Arguments:
* * new_range - the new range to set
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/set_beam_range(new_range)
+/obj/item/organ/eyes/robotic/glow/proc/set_beam_range(new_range)
var/old_light_range = eye.light_range
if(old_light_range == 0 && new_range > 0 && eye.light_on) // turn bring back the light overlay if we were previously at 0 (aka emissive eyes only)
eye.light_on = FALSE // this is stupid, but this has to be FALSE for set_light_on() to work.
@@ -758,7 +741,7 @@
* * to_update - whether we are setting the color for the light beam itself, or the individual eyes
* * sanitize - whether the hex string should be sanitized
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/set_beam_color(newcolor, to_update = UPDATE_LIGHT, sanitize = FALSE)
+/obj/item/organ/eyes/robotic/glow/proc/set_beam_color(newcolor, to_update = UPDATE_LIGHT, sanitize = FALSE)
var/newcolor_string
if(sanitize)
newcolor_string = sanitize_hexcolor(newcolor)
@@ -778,7 +761,7 @@
/**
* Toggle the attached flashlight object on or off
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/toggle_active()
+/obj/item/organ/eyes/robotic/glow/proc/toggle_active()
if(eye.light_on)
deactivate()
else
@@ -789,7 +772,7 @@
*
* Toggles the eye color mode on or off and then calls an update on the mob's eye color
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/toggle_eye_color_mode()
+/obj/item/organ/eyes/robotic/glow/proc/toggle_eye_color_mode()
eye_color_mode = !eye_color_mode
update_mob_eye_color()
@@ -800,7 +783,7 @@
* Arguments:
* * mob/living/carbon/eye_owner - the mob to update the eye color appearance of
*/
-/obj/item/organ/internal/eyes/robotic/glow/proc/update_mob_eye_color(mob/living/carbon/eye_owner = owner)
+/obj/item/organ/eyes/robotic/glow/proc/update_mob_eye_color(mob/living/carbon/eye_owner = owner)
switch(eye_color_mode)
if(MATCH_LIGHT_COLOR)
eye_color_left = light_color_string
@@ -831,39 +814,39 @@
#undef UPDATE_EYES_LEFT
#undef UPDATE_EYES_RIGHT
-/obj/item/organ/internal/eyes/moth
+/obj/item/organ/eyes/moth
name = "moth eyes"
desc = "These eyes seem to have increased sensitivity to bright light, with no improvement to low light vision."
eye_icon_state = "motheyes"
icon_state = "eyeballs-moth"
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/eyes/robotic/moth
+/obj/item/organ/eyes/robotic/moth
name = "robotic moth eyes"
eye_icon_state = "motheyes"
icon_state = "eyeballs-cybermoth"
desc = "Your vision is augmented. Much like actual moth eyes, very sensitive to bright lights."
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/eyes/robotic/basic/moth
+/obj/item/organ/eyes/robotic/basic/moth
name = "basic robotic moth eyes"
eye_icon_state = "motheyes"
icon_state = "eyeballs-cybermoth"
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/eyes/robotic/xray/moth
+/obj/item/organ/eyes/robotic/xray/moth
name = "robotic eyes"
eye_icon_state = "motheyes"
icon_state = "eyeballs-cybermoth"
desc = "These cybernetic imitation moth eyes will give you X-ray vision. Blinking is futile. Much like actual moth eyes, very sensitive to bright lights."
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/eyes/robotic/shield/moth
+/obj/item/organ/eyes/robotic/shield/moth
name = "shielded robotic moth eyes"
eye_icon_state = "motheyes"
icon_state = "eyeballs-cybermoth"
-/obj/item/organ/internal/eyes/robotic/glow/moth
+/obj/item/organ/eyes/robotic/glow/moth
name = "High Luminosity Moth Eyes"
eye_icon_state = "motheyes"
base_eye_state = "eyes_mothglow"
@@ -871,25 +854,25 @@
desc = "Special glowing eyes, to be one with the lamp. Much like actual moth eyes, very sensitive to bright lights."
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/eyes/robotic/thermals/moth //we inherit flash weakness from thermals
+/obj/item/organ/eyes/robotic/thermals/moth //we inherit flash weakness from thermals
name = "thermal moth eyes"
eye_icon_state = "motheyes"
icon_state = "eyeballs-cybermoth"
-/obj/item/organ/internal/eyes/snail
+/obj/item/organ/eyes/snail
name = "snail eyes"
desc = "These eyes seem to have a large range, but might be cumbersome with glasses."
eye_icon_state = "snail_eyes"
icon_state = "snail_eyeballs"
eyes_layer = ABOVE_BODY_FRONT_HEAD_LAYER //NOVA EDIT - Roundstart Snails
-/obj/item/organ/internal/eyes/jelly
+/obj/item/organ/eyes/jelly
name = "jelly eyes"
desc = "These eyes are made of a soft jelly. Unlike all other eyes, though, there are three of them."
eye_icon_state = "jelleyes"
icon_state = "eyeballs-jelly"
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted
+/obj/item/organ/eyes/night_vision/maintenance_adapted
name = "adapted eyes"
desc = "These red eyes look like two foggy marbles. They give off a particularly worrying glow in the dark."
flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
@@ -902,11 +885,11 @@
medium_light_cutoff = list(15, 20, 30)
high_light_cutoff = list(30, 35, 50)
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_mob_insert(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_insert(mob/living/carbon/eye_owner)
. = ..()
ADD_TRAIT(eye_owner, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT)
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/eyes/night_vision/maintenance_adapted/on_life(seconds_per_tick, times_fired)
if(!owner.is_blind() && isturf(owner.loc) && owner.has_light_nearby(light_amount=0.5)) //we allow a little more than usual so we can produce light from the adapted eyes
to_chat(owner, span_danger("Your eyes! They burn in the light!"))
apply_organ_damage(10) //blind quickly
@@ -915,6 +898,6 @@
apply_organ_damage(-10) //heal quickly
. = ..()
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE)
+/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE)
REMOVE_TRAIT(unadapted, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT)
return ..()
diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm
index 36eb9c7bf99..20ad378529f 100644
--- a/code/modules/surgery/organs/internal/heart/_heart.dm
+++ b/code/modules/surgery/organs/internal/heart/_heart.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart
+/obj/item/organ/heart
name = "heart"
desc = "I feel bad for the heartless bastard who lost this."
icon_state = "heart-on"
@@ -19,7 +19,7 @@
attack_verb_simple = list("beat", "thump")
// Love is stored in the heart.
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/love = 2.5)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/love = 2.5)
// Heart attack code is in code/modules/mob/living/carbon/human/life.dm
@@ -32,18 +32,18 @@
/// whether the heart's been operated on to fix some of its damages
var/operated = FALSE
-/obj/item/organ/internal/heart/update_icon_state()
+/obj/item/organ/heart/update_icon_state()
. = ..()
icon_state = "[base_icon_state]-[beating ? "on" : "off"]"
-/obj/item/organ/internal/heart/Remove(mob/living/carbon/heartless, special, movement_flags)
+/obj/item/organ/heart/Remove(mob/living/carbon/heartless, special, movement_flags)
. = ..()
if(!special)
addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 12 SECONDS)
beat = BEAT_NONE
owner?.stop_sound_channel(CHANNEL_HEARTBEAT)
-/obj/item/organ/internal/heart/proc/stop_if_unowned()
+/obj/item/organ/heart/proc/stop_if_unowned()
if(QDELETED(src))
return
if(IS_ROBOTIC_ORGAN(src))
@@ -51,7 +51,7 @@
if(isnull(owner))
Stop()
-/obj/item/organ/internal/heart/attack_self(mob/user)
+/obj/item/organ/heart/attack_self(mob/user)
. = ..()
if(.)
return
@@ -65,7 +65,7 @@
addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 8 SECONDS)
return TRUE
-/obj/item/organ/internal/heart/proc/Stop()
+/obj/item/organ/heart/proc/Stop()
if(!beating)
return FALSE
@@ -75,7 +75,7 @@
owner?.stop_sound_channel(CHANNEL_HEARTBEAT)
return TRUE
-/obj/item/organ/internal/heart/proc/Restart()
+/obj/item/organ/heart/proc/Restart()
if(beating)
return FALSE
@@ -83,25 +83,25 @@
update_appearance()
return TRUE
-/obj/item/organ/internal/heart/OnEatFrom(eater, feeder)
+/obj/item/organ/heart/OnEatFrom(eater, feeder)
. = ..()
Stop()
/// Checks if the heart is beating.
/// Can be overridden to add more conditions for more complex hearts.
-/obj/item/organ/internal/heart/proc/is_beating()
+/obj/item/organ/heart/proc/is_beating()
return beating
-/obj/item/organ/internal/heart/get_status_text(advanced, add_tooltips)
+/obj/item/organ/heart/get_status_text(advanced, add_tooltips)
if(!beating && !(organ_flags & ORGAN_FAILING) && owner.needs_heart() && owner.stat != DEAD)
return conditional_tooltip("Cardiac Arrest", "Apply defibrillation immediately. Similar electric shocks may work in emergencies.", add_tooltips)
return ..()
-/obj/item/organ/internal/heart/show_on_condensed_scans()
+/obj/item/organ/heart/show_on_condensed_scans()
// Always show if the guy needs a heart (so its status can be monitored)
return ..() || owner.needs_heart()
-/obj/item/organ/internal/heart/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/on_life(seconds_per_tick, times_fired)
..()
// If the owner doesn't need a heart, we don't need to do anything with it.
@@ -135,10 +135,10 @@
owner.stop_sound_channel(CHANNEL_HEARTBEAT)
beat = BEAT_NONE
-/obj/item/organ/internal/heart/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/heart/get_availability(datum/species/owner_species, mob/living/owner_mob)
return owner_species.mutantheart
-/obj/item/organ/internal/heart/cursed
+/obj/item/organ/heart/cursed
name = "cursed heart"
desc = "A heart that, when inserted, will force you to pump it manually."
icon_state = "cursedheart-off"
@@ -150,7 +150,7 @@
var/heal_burn = 0
var/heal_oxy = 0
-/obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/accursed, mob/living/carbon/human/user, obj/target)
+/obj/item/organ/heart/cursed/attack(mob/living/carbon/human/accursed, mob/living/carbon/human/user, obj/target)
if(accursed == user && istype(accursed))
playsound(user,'sound/effects/singlebeat.ogg',40,TRUE)
user.temporarilyRemoveItemFromInventory(src, TRUE)
@@ -158,17 +158,17 @@
else
return ..()
-/obj/item/organ/internal/heart/cursed/on_mob_insert(mob/living/carbon/accursed)
+/obj/item/organ/heart/cursed/on_mob_insert(mob/living/carbon/accursed)
. = ..()
accursed.AddComponent(/datum/component/manual_heart, pump_delay = pump_delay, blood_loss = blood_loss, heal_brute = heal_brute, heal_burn = heal_burn, heal_oxy = heal_oxy)
-/obj/item/organ/internal/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE)
+/obj/item/organ/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE)
. = ..()
qdel(accursed.GetComponent(/datum/component/manual_heart))
-/obj/item/organ/internal/heart/cybernetic
+/obj/item/organ/heart/cybernetic
name = "basic cybernetic heart"
desc = "A basic electronic device designed to mimic the functions of an organic human heart."
icon_state = "heart-c-on"
@@ -192,7 +192,7 @@
/// Chance of permanent effects if emp-ed.
var/emp_vulnerability = 80
-/obj/item/organ/internal/heart/cybernetic/emp_act(severity)
+/obj/item/organ/heart/cybernetic/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
@@ -214,7 +214,7 @@
span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!"),
)
-/obj/item/organ/internal/heart/cybernetic/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/cybernetic/on_life(seconds_per_tick, times_fired)
. = ..()
if(organ_flags & ORGAN_EMP)
@@ -238,7 +238,7 @@
if(bloodiest_wound)
bloodiest_wound.adjust_blood_flow(-1 * seconds_per_tick)
-/obj/item/organ/internal/heart/cybernetic/proc/stabilize_heart()
+/obj/item/organ/heart/cybernetic/proc/stabilize_heart()
ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT)
stabilization_available = FALSE
@@ -247,12 +247,12 @@
addtimer(VARSET_CALLBACK(src, stabilization_available, TRUE), 5 MINUTES, TIMER_DELETE_ME)
// Largely a sanity check
-/obj/item/organ/internal/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
+/obj/item/organ/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
. = ..()
if(HAS_TRAIT_FROM(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT))
REMOVE_TRAIT(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT)
-/obj/item/organ/internal/heart/cybernetic/tier2
+/obj/item/organ/heart/cybernetic/tier2
name = "cybernetic heart"
desc = "An electronic device designed to mimic the functions of an organic human heart. In case of lacerations or haemorrhaging, the heart rapidly begins self-replicating \
artificial blood. However, this can cause toxins to build up in the bloodstream to the imperfect replication process."
@@ -262,7 +262,7 @@
bleed_prevention = TRUE
emp_vulnerability = 40
-/obj/item/organ/internal/heart/cybernetic/tier3
+/obj/item/organ/heart/cybernetic/tier3
name = "upgraded cybernetic heart"
desc = "An electronic device designed to mimic the functions of an organic human heart. In case of physical trauma, the heart has temporary failsafes to maintain patient stability \
and mobility for a brief moment. In addition, the heart is able to safely self-replicate blood without risk of toxin buildup."
@@ -273,7 +273,7 @@
toxification_probability = 0
emp_vulnerability = 20
-/obj/item/organ/internal/heart/cybernetic/surplus
+/obj/item/organ/heart/cybernetic/surplus
name = "surplus prosthetic heart"
desc = "A fragile mockery of a human heart that resembles a water pump more than an actual heart. \
Offers no protection against EMPs."
@@ -283,18 +283,18 @@
emp_vulnerability = 100
//surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/heart/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/heart/cybernetic/surplus/Initialize(mapload)
. = ..()
AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
-/obj/item/organ/internal/heart/freedom
+/obj/item/organ/heart/freedom
name = "heart of freedom"
desc = "This heart pumps with the passion to give... something freedom."
organ_flags = ORGAN_ROBOTIC //the power of freedom prevents heart attacks
/// The cooldown until the next time this heart can give the host an adrenaline boost.
COOLDOWN_DECLARE(adrenaline_cooldown)
-/obj/item/organ/internal/heart/freedom/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/freedom/on_life(seconds_per_tick, times_fired)
. = ..()
if(owner.health < 5 && COOLDOWN_FINISHED(src, adrenaline_cooldown))
COOLDOWN_START(src, adrenaline_cooldown, rand(25 SECONDS, 1 MINUTES))
diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
index 31e9e64750c..df60b8243ef 100644
--- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
@@ -3,7 +3,7 @@
*/
#define DOAFTER_IMPLANTING_HEART "implanting"
-/obj/item/organ/internal/heart/cybernetic/anomalock
+/obj/item/organ/heart/cybernetic/anomalock
name = "voltaic combat cyberheart"
desc = "A cutting-edge cyberheart, originally designed for Nanotrasen killsquad usage but later declassified for normal research. Voltaic technology allows the heart to keep the body upright in dire circumstances, alongside redirecting anomalous flux energy to fully shield the user from shocks and electro-magnetic pulses. Requires a refined Flux core as a power source."
icon_state = "anomalock_heart"
@@ -28,7 +28,7 @@
///If the core is removable once socketed.
var/core_removable = TRUE
-/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(!core)
return
@@ -39,7 +39,7 @@
RegisterSignal(organ_owner, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(activate_survival))
RegisterSignal(organ_owner, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act))
-/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
if(!core)
return
@@ -49,7 +49,7 @@
tesla_zap(source = organ_owner, zap_range = 20, power = 2.5e5, cutoff = 1e3)
qdel(src)
-/obj/item/organ/internal/heart/cybernetic/anomalock/attack(mob/living/target_mob, mob/living/user, params)
+/obj/item/organ/heart/cybernetic/anomalock/attack(mob/living/target_mob, mob/living/user, params)
if(target_mob != user || !istype(target_mob) || !core)
return ..()
@@ -66,11 +66,11 @@
user.emote("scream")
return TRUE
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/on_emp_act(severity)
+/obj/item/organ/heart/cybernetic/anomalock/proc/on_emp_act(severity)
SIGNAL_HANDLER
add_lightning_overlay(10 SECONDS)
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/add_lightning_overlay(time_to_last = 10 SECONDS)
+/obj/item/organ/heart/cybernetic/anomalock/proc/add_lightning_overlay(time_to_last = 10 SECONDS)
if(lightning_overlay)
lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE))
return
@@ -78,11 +78,11 @@
owner.add_overlay(lightning_overlay)
lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE))
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/clear_lightning_overlay()
+/obj/item/organ/heart/cybernetic/anomalock/proc/clear_lightning_overlay()
owner.cut_overlay(lightning_overlay)
lightning_overlay = null
-/obj/item/organ/internal/heart/cybernetic/anomalock/attack_self(mob/user, modifiers)
+/obj/item/organ/heart/cybernetic/anomalock/attack_self(mob/user, modifiers)
. = ..()
if(.)
return
@@ -90,7 +90,7 @@
if(core)
return attack(user, user, modifiers)
-/obj/item/organ/internal/heart/cybernetic/anomalock/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/cybernetic/anomalock/on_life(seconds_per_tick, times_fired)
. = ..()
if(owner.blood_volume <= BLOOD_VOLUME_NORMAL)
owner.blood_volume += 5 * seconds_per_tick
@@ -98,7 +98,7 @@
activate_survival(owner)
///Does a few things to try to help you live whatever you may be going through
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/activate_survival(mob/living/carbon/organ_owner)
+/obj/item/organ/heart/cybernetic/anomalock/proc/activate_survival(mob/living/carbon/organ_owner)
if(!COOLDOWN_FINISHED(src, survival_cooldown))
return
@@ -108,15 +108,15 @@
addtimer(CALLBACK(src, PROC_REF(notify_cooldown), organ_owner), COOLDOWN_TIMELEFT(src, survival_cooldown))
///Alerts our owner that the organ is ready to do its thing again
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/notify_cooldown(mob/living/carbon/organ_owner)
+/obj/item/organ/heart/cybernetic/anomalock/proc/notify_cooldown(mob/living/carbon/organ_owner)
balloon_alert(organ_owner, "your heart strenghtens")
playsound(organ_owner, 'sound/items/eshield_recharge.ogg', 40)
///Returns the mob we are implanted in so that the electricity effect doesn't runtime
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/get_held_mob()
+/obj/item/organ/heart/cybernetic/anomalock/proc/get_held_mob()
return owner
-/obj/item/organ/internal/heart/cybernetic/anomalock/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+/obj/item/organ/heart/cybernetic/anomalock/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
if(!istype(tool, required_anomaly))
return NONE
if(core)
@@ -131,7 +131,7 @@
update_icon_state()
return ITEM_INTERACT_SUCCESS
-/obj/item/organ/internal/heart/cybernetic/anomalock/screwdriver_act(mob/living/user, obj/item/tool)
+/obj/item/organ/heart/cybernetic/anomalock/screwdriver_act(mob/living/user, obj/item/tool)
. = ..()
if(!core)
balloon_alert(user, "no core!")
@@ -151,11 +151,11 @@
remove_organ_trait(TRAIT_SHOCKIMMUNE)
update_icon_state()
-/obj/item/organ/internal/heart/cybernetic/anomalock/update_icon_state()
+/obj/item/organ/heart/cybernetic/anomalock/update_icon_state()
. = ..()
icon_state = initial(icon_state) + (core ? "-core" : "")
-/obj/item/organ/internal/heart/cybernetic/anomalock/prebuilt/Initialize(mapload)
+/obj/item/organ/heart/cybernetic/anomalock/prebuilt/Initialize(mapload)
. = ..()
core = new /obj/item/assembly/signaler/anomaly/flux(src)
update_icon_state()
diff --git a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
index 17c2292bdeb..58cfd697e5d 100644
--- a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/ethereal
+/obj/item/organ/heart/ethereal
name = "crystal core"
icon_state = "ethereal_heart-on"
base_icon_state = "ethereal_heart"
@@ -16,38 +16,38 @@
///Color of the heart, is set by the species on gain
var/ethereal_color = "#9c3030"
-/obj/item/organ/internal/heart/ethereal/Initialize(mapload)
+/obj/item/organ/heart/ethereal/Initialize(mapload)
. = ..()
add_atom_colour(ethereal_color, FIXED_COLOUR_PRIORITY)
update_appearance()
-/obj/item/organ/internal/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
+/obj/item/organ/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
. = ..()
RegisterSignal(heart_owner, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change))
RegisterSignal(heart_owner, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(on_owner_fully_heal))
RegisterSignal(heart_owner, COMSIG_QDELETING, PROC_REF(owner_deleted))
-/obj/item/organ/internal/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags)
+/obj/item/organ/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags)
UnregisterSignal(heart_owner, list(COMSIG_MOB_STATCHANGE, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_QDELETING))
REMOVE_TRAIT(heart_owner, TRAIT_CORPSELOCKED, SPECIES_TRAIT)
stop_crystalization_process(heart_owner)
QDEL_NULL(current_crystal)
return ..()
-/obj/item/organ/internal/heart/ethereal/update_overlays()
+/obj/item/organ/heart/ethereal/update_overlays()
. = ..()
var/mutable_appearance/shine = mutable_appearance(icon, icon_state = "[base_icon_state]_overlay-[beating ? "on" : "off"]")
shine.appearance_flags = RESET_COLOR //No color on this, just pure white
. += shine
-/obj/item/organ/internal/heart/ethereal/proc/on_owner_fully_heal(mob/living/carbon/healed, heal_flags)
+/obj/item/organ/heart/ethereal/proc/on_owner_fully_heal(mob/living/carbon/healed, heal_flags)
SIGNAL_HANDLER
QDEL_NULL(current_crystal) //Kicks out the ethereal
///Ran when examined while crystalizing, gives info about the amount of time left
-/obj/item/organ/internal/heart/ethereal/proc/on_examine(mob/living/carbon/human/examined_human, mob/user, list/examine_list)
+/obj/item/organ/heart/ethereal/proc/on_examine(mob/living/carbon/human/examined_human, mob/user, list/examine_list)
SIGNAL_HANDLER
if(!crystalize_timer_id)
@@ -62,7 +62,7 @@
examine_list += span_notice("Some crystals are coming out of [examined_human]. ")
///On stat changes, if the victim is no longer dead but they're crystalizing, cancel it, if they become dead, start the crystalizing process if possible
-/obj/item/organ/internal/heart/ethereal/proc/on_stat_change(mob/living/victim, new_stat)
+/obj/item/organ/heart/ethereal/proc/on_stat_change(mob/living/victim, new_stat)
SIGNAL_HANDLER
if(new_stat != DEAD)
@@ -92,7 +92,7 @@
RegisterSignal(victim, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_take_damage))
///Ran when disarmed, prevents the ethereal from reviving
-/obj/item/organ/internal/heart/ethereal/proc/reset_crystalizing(mob/living/defender, mob/living/attacker, zone, obj/item/weapon)
+/obj/item/organ/heart/ethereal/proc/reset_crystalizing(mob/living/defender, mob/living/attacker, zone, obj/item/weapon)
SIGNAL_HANDLER
defender.visible_message(
span_notice("The crystals on [defender] are gently broken off."),
@@ -102,7 +102,7 @@
crystalize_timer_id = addtimer(CALLBACK(src, PROC_REF(crystalize), defender), CRYSTALIZE_DISARM_WAIT_TIME, TIMER_STOPPABLE) //Lets us restart the timer on disarm
///Actually spawns the crystal which puts the ethereal in it.
-/obj/item/organ/internal/heart/ethereal/proc/crystalize(mob/living/ethereal)
+/obj/item/organ/heart/ethereal/proc/crystalize(mob/living/ethereal)
var/location = ethereal.loc
@@ -118,7 +118,7 @@
stop_crystalization_process(ethereal, TRUE)
///Stop the crystalization process, unregistering any signals and resetting any variables.
-/obj/item/organ/internal/heart/ethereal/proc/stop_crystalization_process(mob/living/ethereal, succesful = FALSE)
+/obj/item/organ/heart/ethereal/proc/stop_crystalization_process(mob/living/ethereal, succesful = FALSE)
UnregisterSignal(ethereal, COMSIG_LIVING_DISARM_HIT)
UnregisterSignal(ethereal, COMSIG_ATOM_EXAMINE)
UnregisterSignal(ethereal, COMSIG_MOB_APPLY_DAMAGE)
@@ -133,14 +133,14 @@
deltimer(crystalize_timer_id)
crystalize_timer_id = null
-/obj/item/organ/internal/heart/ethereal/proc/owner_deleted(datum/source)
+/obj/item/organ/heart/ethereal/proc/owner_deleted(datum/source)
SIGNAL_HANDLER
stop_crystalization_process(owner)
return
///Lets you stop the process with enough brute damage
-/obj/item/organ/internal/heart/ethereal/proc/on_take_damage(datum/source, damage, damagetype, def_zone, ...)
+/obj/item/organ/heart/ethereal/proc/on_take_damage(datum/source, damage, damagetype, def_zone, ...)
SIGNAL_HANDLER
if(damagetype != BRUTE)
return
@@ -170,7 +170,7 @@
density = TRUE
anchored = TRUE
///The organ this crystal belongs to
- var/obj/item/organ/internal/heart/ethereal/ethereal_heart
+ var/obj/item/organ/heart/ethereal/ethereal_heart
///Timer for the healing process. Stops if destroyed.
var/crystal_heal_timer
///Is the crystal still being built? True by default, gets changed after a timer.
@@ -179,7 +179,7 @@
/obj/structure/ethereal_crystal/relaymove()
return
-/obj/structure/ethereal_crystal/Initialize(mapload, obj/item/organ/internal/heart/ethereal/ethereal_heart)
+/obj/structure/ethereal_crystal/Initialize(mapload, obj/item/organ/heart/ethereal/ethereal_heart)
. = ..()
if(!ethereal_heart)
stack_trace("Our crystal has no related heart")
diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm
index 78792e45ed5..81b71e51b0c 100644
--- a/code/modules/surgery/organs/internal/liver/_liver.dm
+++ b/code/modules/surgery/organs/internal/liver/_liver.dm
@@ -2,7 +2,7 @@
#define LIVER_DEFAULT_TOX_RESISTANCE 1 //lower values lower how harmful toxins are to the liver
#define LIVER_FAILURE_STAGE_SECONDS 180 //amount of seconds before liver failure reaches a new stage // NOVA EDIT CHANGE - Original: 60
-/obj/item/organ/internal/liver
+/obj/item/organ/liver
name = "liver"
desc = "Pairing suggestion: chianti and fava beans."
icon_state = "liver"
@@ -15,7 +15,7 @@
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY // smack in the middle of decay times
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/iron = 5)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/iron = 5)
grind_results = list(/datum/reagent/consumable/nutriment/peptides = 5)
/// Affects how much damage the liver takes from alcohol
@@ -27,7 +27,7 @@
var/filterToxins = TRUE //whether to filter toxins
var/operated = FALSE //whether the liver's been repaired with surgery and can be fixed again or not
-/obj/item/organ/internal/liver/Initialize(mapload)
+/obj/item/organ/liver/Initialize(mapload)
. = ..()
// If the liver handles foods like a clown, it honks like a bike horn
// Don't think about it too much.
@@ -43,7 +43,7 @@
* The removal of the component, if this liver loses that trait, is handled
* by the component itself.
*/
-/obj/item/organ/internal/liver/proc/on_add_comedy_metabolism()
+/obj/item/organ/liver/proc/on_add_comedy_metabolism()
SIGNAL_HANDLER
// Are clown "bike" horns made from the livers of ex-clowns?
@@ -54,18 +54,18 @@
*
* Basically just removes squeak component
*/
-/obj/item/organ/internal/liver/proc/on_remove_comedy_metabolism()
+/obj/item/organ/liver/proc/on_remove_comedy_metabolism()
SIGNAL_HANDLER
qdel(GetComponent(/datum/component/squeak))
/// Registers COMSIG_SPECIES_HANDLE_CHEMICAL from owner
-/obj/item/organ/internal/liver/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
RegisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL, PROC_REF(handle_chemical))
/// Unregisters COMSIG_SPECIES_HANDLE_CHEMICAL from owner
-/obj/item/organ/internal/liver/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL)
@@ -76,10 +76,10 @@
*
* NOTE: If you return COMSIG_MOB_STOP_REAGENT_CHECK, that reagent will not be removed like normal! You must handle it manually.
**/
-/obj/item/organ/internal/liver/proc/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/proc/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
SIGNAL_HANDLER
-/obj/item/organ/internal/liver/examine(mob/user)
+/obj/item/organ/liver/examine(mob/user)
. = ..()
if(HAS_MIND_TRAIT(user, TRAIT_ENTRAILS_READER) || isobserver(user))
@@ -108,7 +108,7 @@
else if(HAS_TRAIT(src, TRAIT_PRETENDER_ROYAL_METABOLISM))
. += span_info("A diet of imitation caviar, and signs of insomnia, implies that this is the liver of someone who wants to be a head of staff.")
-/obj/item/organ/internal/liver/before_organ_replacement(obj/item/organ/replacement)
+/obj/item/organ/liver/before_organ_replacement(obj/item/organ/replacement)
. = ..()
if(!istype(replacement, type))
return
@@ -123,7 +123,7 @@
continue
ADD_TRAIT(replacement, readded_trait, JOB_TRAIT)
-/obj/item/organ/internal/liver/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/liver/on_life(seconds_per_tick, times_fired)
. = ..()
//If your liver is failing, then we use the liverless version of metabolize
if((organ_flags & ORGAN_FAILING) || HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM))
@@ -133,12 +133,12 @@
owner.reagents?.metabolize(owner, seconds_per_tick, times_fired, can_overdose = TRUE)
-/obj/item/organ/internal/liver/handle_failing_organs(seconds_per_tick)
+/obj/item/organ/liver/handle_failing_organs(seconds_per_tick)
if(HAS_TRAIT(owner, TRAIT_STABLELIVER) || HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM))
return
return ..()
-/obj/item/organ/internal/liver/organ_failure(seconds_per_tick)
+/obj/item/organ/liver/organ_failure(seconds_per_tick)
switch(failure_time/LIVER_FAILURE_STAGE_SECONDS)
if(1)
to_chat(owner, span_userdanger("You feel stabbing pain in your abdomen!"))
@@ -188,7 +188,7 @@
if(SPT_PROB(3, seconds_per_tick))
owner.emote("drool")
-/obj/item/organ/internal/liver/on_owner_examine(datum/source, mob/user, list/examine_list)
+/obj/item/organ/liver/on_owner_examine(datum/source, mob/user, list/examine_list)
if(!ishuman(owner) || !(organ_flags & ORGAN_FAILING))
return
@@ -203,18 +203,18 @@
if(4 * LIVER_FAILURE_STAGE_SECONDS to INFINITY)
examine_list += span_danger("[owner]'s eyes are completely yellow and swelling with pus. [owner.p_They()] [owner.p_do()]n't look like [owner.p_they()] will be alive for much longer.")
-/obj/item/organ/internal/liver/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/liver/get_availability(datum/species/owner_species, mob/living/owner_mob)
return owner_species.mutantliver
// alien livers can ignore up to 15u of toxins, but they take x3 liver damage
-/obj/item/organ/internal/liver/alien
+/obj/item/organ/liver/alien
name = "alien liver" // doesnt matter for actual aliens because they dont take toxin damage
desc = "A liver that used to belong to a killer alien, who knows what it used to eat."
icon_state = "liver-x" // Same sprite as fly-person liver.
liver_resistance = 0.333 * LIVER_DEFAULT_TOX_RESISTANCE // -66%
toxTolerance = 15 // complete toxin immunity like xenos have would be too powerful
-/obj/item/organ/internal/liver/cybernetic
+/obj/item/organ/liver/cybernetic
name = "basic cybernetic liver"
desc = "A very basic device designed to mimic the functions of a human liver. Handles toxins slightly worse than an organic liver."
failing_desc = "seems to be broken."
@@ -225,7 +225,7 @@
liver_resistance = 0.9 * LIVER_DEFAULT_TOX_RESISTANCE // -10%
var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
-/obj/item/organ/internal/liver/cybernetic/emp_act(severity)
+/obj/item/organ/liver/cybernetic/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
@@ -235,7 +235,7 @@
if(prob(emp_vulnerability/severity)) //Chance of permanent effects
organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon.
-/obj/item/organ/internal/liver/cybernetic/tier2
+/obj/item/organ/liver/cybernetic/tier2
name = "cybernetic liver"
desc = "An electronic device designed to mimic the functions of a human liver. Handles toxins slightly better than an organic liver."
icon_state = "liver-c-u"
@@ -244,7 +244,7 @@
liver_resistance = 1.2 * LIVER_DEFAULT_TOX_RESISTANCE // +20%
emp_vulnerability = 40
-/obj/item/organ/internal/liver/cybernetic/tier3
+/obj/item/organ/liver/cybernetic/tier3
name = "upgraded cybernetic liver"
desc = "An upgraded version of the cybernetic liver, designed to improve further upon organic livers. It is resistant to alcohol poisoning and is very robust at filtering toxins."
icon_state = "liver-c-u2"
@@ -254,7 +254,7 @@
liver_resistance = 1.5 * LIVER_DEFAULT_TOX_RESISTANCE // +50%
emp_vulnerability = 20
-/obj/item/organ/internal/liver/cybernetic/surplus
+/obj/item/organ/liver/cybernetic/surplus
name = "surplus prosthetic liver"
desc = "A very cheap prosthetic liver, mass produced for low-functioning alcoholics... It looks more like a water filter than \
an actual liver. \
@@ -268,7 +268,7 @@
emp_vulnerability = 100
//surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/liver/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/liver/cybernetic/surplus/Initialize(mapload)
. = ..()
AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
diff --git a/code/modules/surgery/organs/internal/liver/liver_golem.dm b/code/modules/surgery/organs/internal/liver/liver_golem.dm
index 1ab3eabcd9c..d9c3d4632cf 100644
--- a/code/modules/surgery/organs/internal/liver/liver_golem.dm
+++ b/code/modules/surgery/organs/internal/liver/liver_golem.dm
@@ -3,16 +3,16 @@
* Basically only exists to remove the nutriment factor from consumables,
* so golems can only consume minerals even when injecting reagents.
*
- * Actually consuming golem food is handled by /obj/item/organ/internal/stomach/golem!
+ * Actually consuming golem food is handled by /obj/item/organ/stomach/golem!
**/
-/obj/item/organ/internal/liver/golem
+/obj/item/organ/liver/golem
name = "porous rock"
desc = "A spongy rock capable of absorbing chemicals."
icon_state = "liver-p"
organ_flags = ORGAN_MINERAL
color = COLOR_GOLEM_GRAY
-/obj/item/organ/internal/liver/golem/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/golem/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
. = ..()
// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING))
diff --git a/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm b/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm
index be21968d659..714916d183e 100644
--- a/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm
+++ b/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm
@@ -2,7 +2,7 @@
* Plasmaman liver
* Makes plasma and hot ice heal wounds, also makes gunpowder a hallucinogen.
**/
-/obj/item/organ/internal/liver/bone/plasmaman
+/obj/item/organ/liver/bone/plasmaman
name = "reagent processing crystal"
desc = "A large crystal that is somehow capable of metabolizing chemicals, these are found in plasmamen."
icon_state = "liver-p"
@@ -10,7 +10,7 @@
organ_traits = list(TRAIT_PLASMA_LOVER_METABOLISM)
milk_burn_healing = 0
-/obj/item/organ/internal/liver/bone/plasmaman/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/bone/plasmaman/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
. = ..()
// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING))
diff --git a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
index b57afd245f5..8ff1f0c3cf3 100644
--- a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
+++ b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
@@ -3,7 +3,7 @@
* Gives the owner liverless metabolism, makes them vulnerable to bone hurting juice and
* makes milk heal them through meme magic.
**/
-/obj/item/organ/internal/liver/bone
+/obj/item/organ/liver/bone
name = "mass of bones"
desc = "You have no idea what this strange ball of bones does."
icon_state = "liver-bone"
@@ -13,7 +13,7 @@
///Var for burn healing via milk
var/milk_burn_healing = 2.5
-/obj/item/organ/internal/liver/bone/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/bone/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
. = ..()
// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING))
diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm
index 203b542e631..3e6c2fdec48 100644
--- a/code/modules/surgery/organs/internal/lungs/_lungs.dm
+++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs
+/obj/item/organ/lungs
name = "lungs"
icon_state = "lungs"
@@ -21,7 +21,7 @@
var/failed = FALSE
var/operated = FALSE //whether we can still have our damages fixed through surgery
- food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/salbutamol = 5)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/medicine/salbutamol = 5)
/// Our previous breath's partial pressures, in the form gas id -> partial pressure
var/list/last_partial_pressures = list()
@@ -105,7 +105,7 @@
var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine
// assign the respiration_type
-/obj/item/organ/internal/lungs/Initialize(mapload)
+/obj/item/organ/lungs/Initialize(mapload)
. = ..()
breath_out = new(BREATH_VOLUME)
@@ -154,7 +154,7 @@
add_gas_reaction(/datum/gas/zauker, while_present = PROC_REF(too_much_zauker))
///Simply exists so that you don't keep any alerts from your previous lack of lungs.
-/obj/item/organ/internal/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags)
+/obj/item/organ/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags)
. = ..()
receiver.clear_alert(ALERT_NOT_ENOUGH_OXYGEN)
@@ -163,7 +163,7 @@
receiver.clear_alert(ALERT_NOT_ENOUGH_PLASMA)
receiver.clear_alert(ALERT_NOT_ENOUGH_N2O)
-/obj/item/organ/internal/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
// This is very "manual" I realize, but it's useful to ensure cleanup for gases we're removing happens
// Avoids stuck alerts and such
@@ -188,7 +188,7 @@
* while_present and always get the same arguments (mob/living/carbon/breather, datum/gas_mixture/breath, pp, old_pp)
* on_loss is almost exactly the same, except it doesn't pass in a current partial pressure, since one isn't avalible
*/
-/obj/item/organ/internal/lungs/proc/add_gas_reaction(gas_type, while_present = null, on_loss = null, always = null)
+/obj/item/organ/lungs/proc/add_gas_reaction(gas_type, while_present = null, on_loss = null, always = null)
if(always)
breathe_always[gas_type] = always
@@ -208,7 +208,7 @@
* Takes the gas to check for as an argument, alongside the gas to convert and the multiplier to use
* These act in the order of insertion, use that how you will
*/
-/obj/item/organ/internal/lungs/proc/add_gas_relationship(gas_type, convert_to, multiplier)
+/obj/item/organ/lungs/proc/add_gas_relationship(gas_type, convert_to, multiplier)
if(isnull(gas_type) || isnull(convert_to) || multiplier == 0)
return
@@ -219,7 +219,7 @@
treat_as += list(add)
/// Clears away a gas relationship. Takes the same args as the initial addition
-/obj/item/organ/internal/lungs/proc/remove_gas_relationship(gas_type, convert_to, multiplier)
+/obj/item/organ/lungs/proc/remove_gas_relationship(gas_type, convert_to, multiplier)
if(isnull(gas_type) || isnull(convert_to) || multiplier == 0)
return
@@ -234,7 +234,7 @@
return
/// Handles oxygen breathing. Always called by things that need o2, no matter what
-/obj/item/organ/internal/lungs/proc/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
+/obj/item/organ/lungs/proc/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
if(o2_pp < safe_oxygen_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING))
// Not safe to check the old pp because of can_breath_vacuum
breather.throw_alert(ALERT_NOT_ENOUGH_OXYGEN, /atom/movable/screen/alert/not_enough_oxy)
@@ -256,7 +256,7 @@
breather.adjustOxyLoss(-5)
/// Maximum Oxygen effects. "Too much O2!"
-/obj/item/organ/internal/lungs/proc/too_much_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
+/obj/item/organ/lungs/proc/too_much_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
// If too much Oxygen is poisonous.
if(o2_pp <= safe_oxygen_max)
if(old_o2_pp > safe_oxygen_max)
@@ -269,11 +269,11 @@
breather.throw_alert(ALERT_TOO_MUCH_OXYGEN, /atom/movable/screen/alert/too_much_oxy)
/// Handles NOT having too much o2. only relevant if safe_oxygen_max has a value
-/obj/item/organ/internal/lungs/proc/safe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, old_o2_pp)
+/obj/item/organ/lungs/proc/safe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, old_o2_pp)
breather.clear_alert(ALERT_TOO_MUCH_OXYGEN)
/// Behaves like Oxygen with 8X efficacy, but metabolizes into a reagent.
-/obj/item/organ/internal/lungs/proc/consume_pluoxium(mob/living/carbon/breather, datum/gas_mixture/breath, pluoxium_pp, old_pluoxium_pp)
+/obj/item/organ/lungs/proc/consume_pluoxium(mob/living/carbon/breather, datum/gas_mixture/breath, pluoxium_pp, old_pluoxium_pp)
breathe_gas_volume(breath, /datum/gas/pluoxium)
// Metabolize to reagent.
if(pluoxium_pp > gas_stimulation_min)
@@ -281,7 +281,7 @@
breather.reagents.add_reagent(/datum/reagent/pluoxium, max(0, 1 - existing))
/// If the lungs need Nitrogen to breathe properly, N2 is exchanged with CO2.
-/obj/item/organ/internal/lungs/proc/breathe_nitro(mob/living/carbon/breather, datum/gas_mixture/breath, nitro_pp, old_nitro_pp)
+/obj/item/organ/lungs/proc/breathe_nitro(mob/living/carbon/breather, datum/gas_mixture/breath, nitro_pp, old_nitro_pp)
if(nitro_pp < safe_nitro_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING))
// Suffocation side-effects.
// Not safe to check the old pp because of can_breath_vacuum
@@ -303,7 +303,7 @@
breather.adjustOxyLoss(-5)
/// Maximum CO2 effects. "Too much CO2!"
-/obj/item/organ/internal/lungs/proc/too_much_co2(mob/living/carbon/breather, datum/gas_mixture/breath, co2_pp, old_co2_pp)
+/obj/item/organ/lungs/proc/too_much_co2(mob/living/carbon/breather, datum/gas_mixture/breath, co2_pp, old_co2_pp)
if(co2_pp <= safe_co2_max)
if(old_co2_pp > safe_co2_max)
return BREATH_LOST
@@ -329,13 +329,13 @@
breather.apply_damage(8, co2_damage_type, spread_damage = TRUE)
/// Handles NOT having too much co2. only relevant if safe_co2_max has a value
-/obj/item/organ/internal/lungs/proc/safe_co2(mob/living/carbon/breather, datum/gas_mixture/breath, old_co2_pp)
+/obj/item/organ/lungs/proc/safe_co2(mob/living/carbon/breather, datum/gas_mixture/breath, old_co2_pp)
// Reset side-effects.
breather.co2overloadtime = 0
breather.clear_alert(ALERT_TOO_MUCH_CO2)
/// If the lungs need Plasma to breathe properly, Plasma is exchanged with CO2.
-/obj/item/organ/internal/lungs/proc/breathe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
+/obj/item/organ/lungs/proc/breathe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
// Suffocation side-effects.
if(plasma_pp < safe_plasma_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING))
// Could check old_plasma_pp but vacuum breathing hates me
@@ -357,7 +357,7 @@
breather.adjustOxyLoss(-5)
/// Maximum Plasma effects. "Too much Plasma!"
-/obj/item/organ/internal/lungs/proc/too_much_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
+/obj/item/organ/lungs/proc/too_much_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
if(plasma_pp <= safe_plasma_max)
if(old_plasma_pp > safe_plasma_max)
return BREATH_LOST
@@ -372,11 +372,11 @@
breather.apply_damage(clamp(ratio, plas_breath_dam_min, plas_breath_dam_max), plas_damage_type, spread_damage = TRUE)
/// Resets plasma side effects
-/obj/item/organ/internal/lungs/proc/safe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_plasma_pp)
+/obj/item/organ/lungs/proc/safe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_plasma_pp)
breather.clear_alert(ALERT_TOO_MUCH_PLASMA)
/// Too much funny gas, time to get brain damage
-/obj/item/organ/internal/lungs/proc/too_much_bz(mob/living/carbon/breather, datum/gas_mixture/breath, bz_pp, old_bz_pp)
+/obj/item/organ/lungs/proc/too_much_bz(mob/living/carbon/breather, datum/gas_mixture/breath, bz_pp, old_bz_pp)
if(bz_pp > BZ_trip_balls_min)
breather.adjust_hallucinations(20 SECONDS)
breather.reagents.add_reagent(/datum/reagent/bz_metabolites, 5)
@@ -384,7 +384,7 @@
breather.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150, ORGAN_ORGANIC)
/// Breathing in refridgerator coolent, shit's caustic
-/obj/item/organ/internal/lungs/proc/too_much_freon(mob/living/carbon/breather, datum/gas_mixture/breath, freon_pp, old_freon_pp)
+/obj/item/organ/lungs/proc/too_much_freon(mob/living/carbon/breather, datum/gas_mixture/breath, freon_pp, old_freon_pp)
// Inhale Freon. Exhale nothing.
breathe_gas_volume(breath, /datum/gas/freon)
if (freon_pp > gas_stimulation_min)
@@ -401,7 +401,7 @@
breather.adjustFireLoss(freon_pp / 4)
/// Breathing in halon, convert it to a reagent
-/obj/item/organ/internal/lungs/proc/too_much_halon(mob/living/carbon/breather, datum/gas_mixture/breath, halon_pp, old_halon_pp)
+/obj/item/organ/lungs/proc/too_much_halon(mob/living/carbon/breather, datum/gas_mixture/breath, halon_pp, old_halon_pp)
// Inhale Halon. Exhale nothing.
breathe_gas_volume(breath, /datum/gas/halon)
// Metabolize to reagent.
@@ -410,7 +410,7 @@
breather.reagents.add_reagent(/datum/reagent/halon, max(0, 1 - breather.reagents.get_reagent_amount(/datum/reagent/halon)))
/// Sleeping gas with healing properties.
-/obj/item/organ/internal/lungs/proc/consume_healium(mob/living/carbon/breather, datum/gas_mixture/breath, healium_pp, old_healium_pp)
+/obj/item/organ/lungs/proc/consume_healium(mob/living/carbon/breather, datum/gas_mixture/breath, healium_pp, old_healium_pp)
breathe_gas_volume(breath, /datum/gas/healium)
// Euphoria side-effect.
if(healium_pp > gas_stimulation_min)
@@ -428,11 +428,11 @@
breather.reagents.add_reagent(/datum/reagent/healium, max(0, 1 - breather.reagents.get_reagent_amount(/datum/reagent/healium)))
/// Lose healium side effects
-/obj/item/organ/internal/lungs/proc/lose_healium(mob/living/carbon/breather, datum/gas_mixture/breath, old_healium_pp)
+/obj/item/organ/lungs/proc/lose_healium(mob/living/carbon/breather, datum/gas_mixture/breath, old_healium_pp)
healium_euphoria = EUPHORIA_INACTIVE
/// Activates helium speech when partial pressure gets high enough
-/obj/item/organ/internal/lungs/proc/consume_helium(mob/living/carbon/breather, datum/gas_mixture/breath, helium_pp, old_helium_pp)
+/obj/item/organ/lungs/proc/consume_helium(mob/living/carbon/breather, datum/gas_mixture/breath, helium_pp, old_helium_pp)
breathe_gas_volume(breath, /datum/gas/helium)
if(helium_pp > helium_speech_min)
if(old_helium_pp <= helium_speech_min)
@@ -442,23 +442,23 @@
UnregisterSignal(breather, COMSIG_MOB_SAY)
/// Lose helium high pitched voice
-/obj/item/organ/internal/lungs/proc/lose_helium(mob/living/carbon/breather, datum/gas_mixture/breath, old_helium_pp)
+/obj/item/organ/lungs/proc/lose_helium(mob/living/carbon/breather, datum/gas_mixture/breath, old_helium_pp)
UnregisterSignal(breather, COMSIG_MOB_SAY)
/// React to speach while hopped up on the high pitched voice juice
-/obj/item/organ/internal/lungs/proc/handle_helium_speech(mob/living/carbon/breather, list/speech_args)
+/obj/item/organ/lungs/proc/handle_helium_speech(mob/living/carbon/breather, list/speech_args)
SIGNAL_HANDLER
speech_args[SPEECH_SPANS] |= SPAN_SMALL_VOICE
/// Gain hypernob effects if we have enough of the stuff
-/obj/item/organ/internal/lungs/proc/consume_hypernoblium(mob/living/carbon/breather, datum/gas_mixture/breath, hypernob_pp, old_hypernob_pp)
+/obj/item/organ/lungs/proc/consume_hypernoblium(mob/living/carbon/breather, datum/gas_mixture/breath, hypernob_pp, old_hypernob_pp)
breathe_gas_volume(breath, /datum/gas/hypernoblium)
if (hypernob_pp > gas_stimulation_min)
var/existing = breather.reagents.get_reagent_amount(/datum/reagent/hypernoblium)
breather.reagents.add_reagent(/datum/reagent/hypernoblium,max(0, 1 - existing))
/// Breathing in the stink gas
-/obj/item/organ/internal/lungs/proc/too_much_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, miasma_pp, old_miasma_pp)
+/obj/item/organ/lungs/proc/too_much_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, miasma_pp, old_miasma_pp)
// Inhale Miasma. Exhale nothing.
breathe_gas_volume(breath, /datum/gas/miasma)
// Miasma side effects
@@ -494,12 +494,12 @@
breather.adjust_disgust(0.1 * miasma_pp)
/// We're free from the stick, clear out its impacts
-/obj/item/organ/internal/lungs/proc/safe_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_miasma_pp)
+/obj/item/organ/lungs/proc/safe_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_miasma_pp)
// Clear out moods when immune to miasma, or if there's no miasma at all.
breather.clear_mood_event("smell")
/// Causes random euphoria and giggling. Large amounts knock you down
-/obj/item/organ/internal/lungs/proc/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp)
+/obj/item/organ/lungs/proc/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp)
if(n2o_pp < n2o_para_min)
// Small amount of N2O, small side-effects.
if(n2o_pp <= n2o_detect_min)
@@ -532,12 +532,12 @@
breather.Sleeping(min(breather.AmountSleeping() + 100, 200))
/// N2O side-effects. "Too much N2O!"
-/obj/item/organ/internal/lungs/proc/safe_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, old_n2o_pp)
+/obj/item/organ/lungs/proc/safe_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, old_n2o_pp)
n2o_euphoria = EUPHORIA_INACTIVE
breather.clear_alert(ALERT_TOO_MUCH_N2O)
// Breathe in nitrium. It's helpful, but has nasty side effects
-/obj/item/organ/internal/lungs/proc/too_much_nitrium(mob/living/carbon/breather, datum/gas_mixture/breath, nitrium_pp, old_nitrium_pp)
+/obj/item/organ/lungs/proc/too_much_nitrium(mob/living/carbon/breather, datum/gas_mixture/breath, nitrium_pp, old_nitrium_pp)
breathe_gas_volume(breath, /datum/gas/nitrium)
if(prob(20))
@@ -557,7 +557,7 @@
breather.reagents.add_reagent(/datum/reagent/nitrium_high_metabolization, max(0, 1 - existing))
/// Radioactive, green gas. Toxin damage, and a radiation chance
-/obj/item/organ/internal/lungs/proc/too_much_tritium(mob/living/carbon/breather, datum/gas_mixture/breath, trit_pp, old_trit_pp)
+/obj/item/organ/lungs/proc/too_much_tritium(mob/living/carbon/breather, datum/gas_mixture/breath, trit_pp, old_trit_pp)
var/gas_breathed = breathe_gas_volume(breath, /datum/gas/tritium)
var/moles_visible = GLOB.meta_gas_info[/datum/gas/tritium][META_GAS_MOLES_VISIBLE] * BREATH_PERCENTAGE
// Tritium side-effects.
@@ -572,7 +572,7 @@
breather.AddComponent(/datum/component/irradiated)
/// Really toxic stuff, very much trying to kill you
-/obj/item/organ/internal/lungs/proc/too_much_zauker(mob/living/carbon/breather, datum/gas_mixture/breath, zauker_pp, old_zauker_pp)
+/obj/item/organ/lungs/proc/too_much_zauker(mob/living/carbon/breather, datum/gas_mixture/breath, zauker_pp, old_zauker_pp)
breathe_gas_volume(breath, /datum/gas/zauker)
// Metabolize to reagent.
if(zauker_pp > gas_stimulation_min)
@@ -591,7 +591,7 @@
* * breath: A gas mixture to test, or null.
* * breather: A carbon mob that is using the lungs to breathe.
*/
-/obj/item/organ/internal/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
+/obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
if(HAS_TRAIT(breather, TRAIT_GODMODE))
breather.failed_last_breath = FALSE
breather.clear_alert(ALERT_NOT_ENOUGH_OXYGEN)
@@ -717,7 +717,7 @@
/// Remove gas from breath. If output_gas is given, transfers the removed gas to the lung's gas_mixture.
/// Removes 100% of the given gas type unless given a volume argument.
/// Returns the amount of gas theoretically removed.
-/obj/item/organ/internal/lungs/proc/breathe_gas_volume(datum/gas_mixture/breath, remove_id, exchange_id = null, volume = INFINITY)
+/obj/item/organ/lungs/proc/breathe_gas_volume(datum/gas_mixture/breath, remove_id, exchange_id = null, volume = INFINITY)
var/list/breath_gases = breath.gases
volume = min(volume, breath_gases[remove_id][MOLES])
breath_gases[remove_id][MOLES] -= volume
@@ -728,7 +728,7 @@
/// Applies suffocation side-effects to a given Human, scaling based on ratio of required pressure VS "true" pressure.
/// If pressure is greater than 0, the return value will represent the amount of gas successfully breathed.
-/obj/item/organ/internal/lungs/proc/handle_suffocation(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, mole_count = 0)
+/obj/item/organ/lungs/proc/handle_suffocation(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, mole_count = 0)
. = 0
// Can't suffocate without a Human, or without minimum breath pressure.
if(!suffocator || !safe_breath_min)
@@ -758,7 +758,7 @@
suffocator.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
-/obj/item/organ/internal/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures
+/obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures
var/breath_temperature = breath.temperature
if(!HAS_TRAIT(breather, TRAIT_RESISTCOLD)) // COLD DAMAGE
@@ -807,7 +807,7 @@
breath.temperature = breather.bodytemperature
/// Creates a particle effect off the mouth of the passed mob.
-/obj/item/organ/internal/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type)
+/obj/item/organ/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type)
ASSERT(ispath(particle_type, /particles))
var/obj/effect/abstract/particle_holder/holder = new(breather, particle_type)
@@ -842,7 +842,7 @@
QDEL_IN(holder, breath_particle.lifespan)
-/obj/item/organ/internal/lungs/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/lungs/on_life(seconds_per_tick, times_fired)
. = ..()
if(failed && !(organ_flags & ORGAN_FAILING))
failed = FALSE
@@ -855,13 +855,13 @@
owner.visible_message(span_danger("[owner] grabs [owner.p_their()] throat, struggling for breath!"), span_userdanger("You suddenly feel like you can't breathe!"))
failed = TRUE
-/obj/item/organ/internal/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob)
return owner_species.mutantlungs
#define SMOKER_ORGAN_HEALTH (STANDARD_ORGAN_THRESHOLD * 0.75)
#define SMOKER_LUNG_HEALING (STANDARD_ORGAN_HEALING * 0.75)
-/obj/item/organ/internal/lungs/plasmaman
+/obj/item/organ/lungs/plasmaman
name = "plasma filter"
desc = "A spongy rib-shaped mass for filtering plasma from the air."
icon_state = "lungs-plasma"
@@ -871,7 +871,7 @@
safe_plasma_min = 4 //We breathe THIS!
safe_plasma_max = 0
-/obj/item/organ/internal/lungs/plasmaman/plasmaman_smoker
+/obj/item/organ/lungs/plasmaman/plasmaman_smoker
name = "smoker plasma filter"
desc = "A plasma filter that look discolored, a result from smoking a lot."
icon_state = "lungs_plasma_smoker"
@@ -879,19 +879,19 @@
maxHealth = SMOKER_ORGAN_HEALTH
healing_factor = SMOKER_LUNG_HEALING
-/obj/item/organ/internal/lungs/slime
+/obj/item/organ/lungs/slime
name = "vacuole"
desc = "A large organelle designed to store oxygen and other important gasses."
safe_plasma_max = 0 //We breathe this to gain POWER.
-/obj/item/organ/internal/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather_slime)
+/obj/item/organ/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather_slime)
. = ..()
if (breath?.gases[/datum/gas/plasma])
var/plasma_pp = breath.get_breath_partial_pressure(breath.gases[/datum/gas/plasma][MOLES])
breather_slime.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
-/obj/item/organ/internal/lungs/smoker_lungs
+/obj/item/organ/lungs/smoker_lungs
name = "smoker lungs"
desc = "A pair of lungs that look sickly, a result from smoking a lot."
icon_state = "lungs_smoker"
@@ -899,7 +899,7 @@
maxHealth = SMOKER_ORGAN_HEALTH
healing_factor = SMOKER_LUNG_HEALING
-/obj/item/organ/internal/lungs/cybernetic
+/obj/item/organ/lungs/cybernetic
name = "basic cybernetic lungs"
desc = "A basic cybernetic version of the lungs found in traditional humanoid entities."
failing_desc = "seems to be broken."
@@ -908,7 +908,7 @@
maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5
var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
-/obj/item/organ/internal/lungs/cybernetic/emp_act(severity)
+/obj/item/organ/lungs/cybernetic/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
@@ -918,7 +918,7 @@
if(prob(emp_vulnerability/severity)) //Chance of permanent effects
organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon.
-/obj/item/organ/internal/lungs/cybernetic/tier2
+/obj/item/organ/lungs/cybernetic/tier2
name = "cybernetic lungs"
desc = "A cybernetic version of the lungs found in traditional humanoid entities. Allows for greater intakes of oxygen than organic lungs, requiring slightly less pressure."
icon_state = "lungs-c-u"
@@ -926,7 +926,7 @@
safe_oxygen_min = 13
emp_vulnerability = 40
-/obj/item/organ/internal/lungs/cybernetic/tier3
+/obj/item/organ/lungs/cybernetic/tier3
name = "upgraded cybernetic lungs"
desc = "A more advanced version of the stock cybernetic lungs. Features the ability to filter out lower levels of plasma and carbon dioxide."
icon_state = "lungs-c-u2"
@@ -940,7 +940,7 @@
cold_level_2_threshold = 140
cold_level_3_threshold = 100
-/obj/item/organ/internal/lungs/cybernetic/surplus
+/obj/item/organ/lungs/cybernetic/surplus
name = "surplus prosthetic lungs"
desc = "Two fragile, inflatable sacks of air that only barely mimic the function of human lungs. \
Offer no protection against EMPs."
@@ -949,11 +949,11 @@
emp_vulnerability = 100
//surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/lungs/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/lungs/cybernetic/surplus/Initialize(mapload)
. = ..()
AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
-/obj/item/organ/internal/lungs/lavaland
+/obj/item/organ/lungs/lavaland
name = "blackened frilled lungs" // blackened from necropolis exposure
desc = "Exposure to the necropolis has mutated these lungs to breathe the air of Indecipheres, the lava-covered moon."
icon_state = "lungs-ashwalker"
@@ -962,7 +962,7 @@
// to 16 kPa. So it follows that ashwalkers, as humanoids, follow the same rules.
#define GAS_TOLERANCE 5
-/obj/item/organ/internal/lungs/lavaland/Initialize(mapload)
+/obj/item/organ/lungs/lavaland/Initialize(mapload)
var/datum/gas_mixture/immutable/planetary/mix = SSair.planetary[LAVALAND_DEFAULT_ATMOS]
if(!mix?.total_moles()) // this typically means we didn't load lavaland, like if we're using the LOWMEMORYMODE define
@@ -1013,7 +1013,7 @@
#undef GAS_TOLERANCE
-/obj/item/organ/internal/lungs/ethereal
+/obj/item/organ/lungs/ethereal
name = "aeration reticulum"
desc = "These exotic lungs seem crunchier than most."
icon_state = "lungs_ethereal"
@@ -1021,7 +1021,7 @@
heat_level_2_threshold = 473
heat_level_3_threshold = 1073
-/obj/item/organ/internal/lungs/ethereal/ethereal_smoker
+/obj/item/organ/lungs/ethereal/ethereal_smoker
name = "smoker aeration reticulum"
desc = "A pair of exotic lungs that look pale and sickly, a result from smoking a lot."
icon_state = "lungs_ethereal_smoker"
@@ -1029,12 +1029,12 @@
maxHealth = SMOKER_ORGAN_HEALTH
healing_factor = SMOKER_LUNG_HEALING
-/obj/item/organ/internal/lungs/ethereal/Initialize(mapload)
+/obj/item/organ/lungs/ethereal/Initialize(mapload)
. = ..()
add_gas_reaction(/datum/gas/water_vapor, while_present = PROC_REF(consume_water))
/// H2O electrolysis
-/obj/item/organ/internal/lungs/ethereal/proc/consume_water(mob/living/carbon/breather, datum/gas_mixture/breath, h2o_pp, old_h2o_pp)
+/obj/item/organ/lungs/ethereal/proc/consume_water(mob/living/carbon/breather, datum/gas_mixture/breath, h2o_pp, old_h2o_pp)
var/gas_breathed = breath.gases[/datum/gas/water_vapor][MOLES]
breath.gases[/datum/gas/water_vapor][MOLES] -= gas_breathed
breath_out.assert_gases(/datum/gas/oxygen, /datum/gas/hydrogen)
diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm
index 45cc12fc32b..4d6ef0cbc40 100644
--- a/code/modules/surgery/organs/internal/stomach/_stomach.dm
+++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm
@@ -1,7 +1,7 @@
//The contant in the rate of reagent transfer on life ticks
#define STOMACH_METABOLISM_CONSTANT 0.25
-/obj/item/organ/internal/stomach
+/obj/item/organ/stomach
name = "stomach"
desc = "Onaka ga suite imasu."
icon_state = "stomach"
@@ -20,7 +20,7 @@
high_threshold_cleared = span_info("The pain in your stomach dies down for now, but food still seems unappealing.")
low_threshold_cleared = span_info("The last bouts of pain in your stomach have died out.")
- food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5)
+ food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining = 5)
//This is a reagent user and needs more then the 10u from edible component
reagent_vol = 1000
@@ -35,7 +35,7 @@
var/operated = FALSE //whether the stomach's been repaired with surgery and can be fixed again or not
-/obj/item/organ/internal/stomach/Initialize(mapload)
+/obj/item/organ/stomach/Initialize(mapload)
. = ..()
//None edible organs do not get a reagent holder by default
if(!reagents)
@@ -43,7 +43,7 @@
else
reagents.flags |= REAGENT_HOLDER_ALIVE
-/obj/item/organ/internal/stomach/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/on_life(seconds_per_tick, times_fired)
. = ..()
//Manage species digestion
@@ -119,7 +119,7 @@
body.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = damage)
to_chat(body, span_warning("Your stomach reels in pain as you're incapable of holding down all that food!"))
-/obj/item/organ/internal/stomach/proc/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/proc/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
if(HAS_TRAIT(human, TRAIT_NOHUNGER))
return //hunger is for BABIES
@@ -185,22 +185,22 @@
handle_hunger_slowdown(human)
///for when mood is disabled and hunger should handle slowdowns
-/obj/item/organ/internal/stomach/proc/handle_hunger_slowdown(mob/living/carbon/human/human)
+/obj/item/organ/stomach/proc/handle_hunger_slowdown(mob/living/carbon/human/human)
var/hungry = (500 - human.nutrition) / 5 //So overeat would be 100 and default level would be 80
if(hungry >= 70)
human.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (hungry / 50))
else
human.remove_movespeed_modifier(/datum/movespeed_modifier/hunger)
-/obj/item/organ/internal/stomach/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/stomach/get_availability(datum/species/owner_species, mob/living/owner_mob)
return owner_species.mutantstomach
///This gets called after the owner takes a bite of food
-/obj/item/organ/internal/stomach/proc/after_eat(atom/edible)
+/obj/item/organ/stomach/proc/after_eat(atom/edible)
SEND_SIGNAL(src, COMSIG_STOMACH_AFTER_EAT, edible) // NOVA EDIT ADDITION - Hemophage Organs
return
-/obj/item/organ/internal/stomach/proc/handle_disgust(mob/living/carbon/human/disgusted, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/disgusted, seconds_per_tick, times_fired)
var/old_disgust = disgusted.old_disgust
var/disgust = disgusted.disgust
@@ -247,11 +247,11 @@
disgusted.throw_alert(ALERT_DISGUST, /atom/movable/screen/alert/disgusted)
disgusted.add_mood_event("disgust", /datum/mood_event/disgusted)
-/obj/item/organ/internal/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
receiver.hud_used?.hunger?.update_appearance()
-/obj/item/organ/internal/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
if(ishuman(stomach_owner))
var/mob/living/carbon/human/human_owner = owner
human_owner.clear_alert(ALERT_DISGUST)
@@ -259,21 +259,21 @@
stomach_owner.hud_used?.hunger?.update_appearance()
return ..()
-/obj/item/organ/internal/stomach/bone
+/obj/item/organ/stomach/bone
name = "mass of bones"
desc = "You have no idea what this strange ball of bones does."
icon_state = "stomach-bone"
metabolism_efficiency = 0.025 //very bad
organ_traits = list(TRAIT_NOHUNGER)
-/obj/item/organ/internal/stomach/bone/plasmaman
+/obj/item/organ/stomach/bone/plasmaman
name = "digestive crystal"
desc = "A strange crystal that is responsible for metabolizing the unseen energy force that feeds plasmamen."
icon_state = "stomach-p"
metabolism_efficiency = 0.06
organ_traits = null
-/obj/item/organ/internal/stomach/cybernetic
+/obj/item/organ/stomach/cybernetic
name = "basic cybernetic stomach"
desc = "A basic device designed to mimic the functions of a human stomach"
failing_desc = "seems to be broken."
@@ -283,7 +283,7 @@
metabolism_efficiency = 0.035 // not as good at digestion
var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
-/obj/item/organ/internal/stomach/cybernetic/emp_act(severity)
+/obj/item/organ/stomach/cybernetic/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
@@ -293,7 +293,7 @@
if(prob(emp_vulnerability/severity)) //Chance of permanent effects
organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon.
-/obj/item/organ/internal/stomach/cybernetic/tier2
+/obj/item/organ/stomach/cybernetic/tier2
name = "cybernetic stomach"
desc = "An electronic device designed to mimic the functions of a human stomach. Handles disgusting food a bit better."
icon_state = "stomach-c-u"
@@ -302,7 +302,7 @@
emp_vulnerability = 40
metabolism_efficiency = 0.07
-/obj/item/organ/internal/stomach/cybernetic/tier3
+/obj/item/organ/stomach/cybernetic/tier3
name = "upgraded cybernetic stomach"
desc = "An upgraded version of the cybernetic stomach, designed to improve further upon organic stomachs. Handles disgusting food very well."
icon_state = "stomach-c-u2"
@@ -311,7 +311,7 @@
emp_vulnerability = 20
metabolism_efficiency = 0.1
-/obj/item/organ/internal/stomach/cybernetic/surplus
+/obj/item/organ/stomach/cybernetic/surplus
name = "surplus prosthetic stomach"
desc = "A mechanical plastic oval that utilizes sulfuric acid instead of stomach acid. \
Very fragile, with painfully slow metabolism.\
@@ -322,7 +322,7 @@
metabolism_efficiency = 0.025
//surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/stomach/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/stomach/cybernetic/surplus/Initialize(mapload)
. = ..()
AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
diff --git a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
index ff2c0697f79..0a409d3b531 100644
--- a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
+++ b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/stomach/ethereal
+/obj/item/organ/stomach/ethereal
name = "biological battery"
icon_state = "stomach-p" //Welp. At least it's more unique in functionaliy.
desc = "A crystal-like organ that stores the electric charge of ethereals."
@@ -8,25 +8,25 @@
///used to keep ethereals from spam draining power sources
var/drain_time = 0
-/obj/item/organ/internal/stomach/ethereal/Initialize(mapload)
+/obj/item/organ/stomach/ethereal/Initialize(mapload)
. = ..()
cell = new /obj/item/stock_parts/power_store/cell/ethereal(src)
-/obj/item/organ/internal/stomach/ethereal/Destroy()
+/obj/item/organ/stomach/ethereal/Destroy()
QDEL_NULL(cell)
return ..()
-/obj/item/organ/internal/stomach/ethereal/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/ethereal/on_life(seconds_per_tick, times_fired)
. = ..()
adjust_charge(-ETHEREAL_DISCHARGE_RATE * seconds_per_tick)
handle_charge(owner, seconds_per_tick, times_fired)
-/obj/item/organ/internal/stomach/ethereal/on_mob_insert(mob/living/carbon/stomach_owner)
+/obj/item/organ/stomach/ethereal/on_mob_insert(mob/living/carbon/stomach_owner)
. = ..()
RegisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge))
RegisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_electrocute))
-/obj/item/organ/internal/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner)
+/obj/item/organ/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner)
. = ..()
UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
UnregisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT)
@@ -34,15 +34,15 @@
stomach_owner.clear_alert(ALERT_ETHEREAL_CHARGE)
stomach_owner.clear_alert(ALERT_ETHEREAL_OVERCHARGE)
-/obj/item/organ/internal/stomach/ethereal/handle_hunger_slowdown(mob/living/carbon/human/human)
+/obj/item/organ/stomach/ethereal/handle_hunger_slowdown(mob/living/carbon/human/human)
human.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (1.5 * (1 - cell.charge() / 100)))
-/obj/item/organ/internal/stomach/ethereal/proc/charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
+/obj/item/organ/stomach/ethereal/proc/charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
SIGNAL_HANDLER
charge_cell.Invoke(cell, seconds_per_tick / 3.5) // Ethereals don't have NT designed charging ports, so they charge slower.
-/obj/item/organ/internal/stomach/ethereal/proc/on_electrocute(datum/source, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
+/obj/item/organ/stomach/ethereal/proc/on_electrocute(datum/source, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
SIGNAL_HANDLER
if(flags & SHOCK_ILLUSION)
return
@@ -55,11 +55,11 @@
* - amount: The change of the energy, in joules.
* Returns: The amount of energy that actually got changed in joules.
**/
-/obj/item/organ/internal/stomach/ethereal/proc/adjust_charge(amount)
+/obj/item/organ/stomach/ethereal/proc/adjust_charge(amount)
var/amount_changed = clamp(amount, ETHEREAL_CHARGE_NONE - cell.charge(), ETHEREAL_CHARGE_DANGEROUS - cell.charge())
return cell.change(amount_changed)
-/obj/item/organ/internal/stomach/ethereal/proc/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/ethereal/proc/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired)
switch(cell.charge())
if(-INFINITY to ETHEREAL_CHARGE_NONE)
carbon.add_mood_event("charge", /datum/mood_event/decharged)
@@ -97,7 +97,7 @@
carbon.clear_alert(ALERT_ETHEREAL_CHARGE)
carbon.clear_alert(ALERT_ETHEREAL_OVERCHARGE)
-/obj/item/organ/internal/stomach/ethereal/proc/discharge_process(mob/living/carbon/carbon)
+/obj/item/organ/stomach/ethereal/proc/discharge_process(mob/living/carbon/carbon)
to_chat(carbon, span_warning("You begin to lose control over your charge!"))
carbon.visible_message(span_danger("[carbon] begins to spark violently!"))
diff --git a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
index a1f5ce6c70e..c4fa888f6cb 100644
--- a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
+++ b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/stomach/golem
+/obj/item/organ/stomach/golem
name = "silicate grinder"
icon_state = "stomach-p"
desc = "A rocklike organ which grinds and processes nutrition from minerals."
@@ -11,18 +11,18 @@
/// How slow are you if you have absolutely nothing in the tank?
var/max_hunger_slowdown = 4
-/obj/item/organ/internal/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
RegisterSignal(owner, COMSIG_CARBON_ATTEMPT_EAT, PROC_REF(try_eating))
-/obj/item/organ/internal/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_CARBON_ATTEMPT_EAT)
organ_owner.remove_movespeed_modifier(/datum/movespeed_modifier/golem_hunger)
organ_owner.remove_status_effect(/datum/status_effect/golem_statued)
/// Reject food, rocks only
-/obj/item/organ/internal/stomach/golem/proc/try_eating(mob/living/carbon/source, atom/eating)
+/obj/item/organ/stomach/golem/proc/try_eating(mob/living/carbon/source, atom/eating)
SIGNAL_HANDLER
if(istype(eating, /obj/item/food/golem_food))
return
@@ -30,7 +30,7 @@
return COMSIG_CARBON_BLOCK_EAT
/// Golem stomach cannot process nutriment except from minerals
-/obj/item/organ/internal/stomach/golem/on_life(delta_time, times_fired)
+/obj/item/organ/stomach/golem/on_life(delta_time, times_fired)
for(var/datum/reagent/consumable/food in reagents.reagent_list)
if (istype(food, /datum/reagent/consumable/nutriment/mineral))
continue
@@ -38,7 +38,7 @@
return ..()
/// Slow down based on how full you are
-/obj/item/organ/internal/stomach/golem/handle_hunger(mob/living/carbon/human/human, delta_time, times_fired)
+/obj/item/organ/stomach/golem/handle_hunger(mob/living/carbon/human/human, delta_time, times_fired)
// the effects are all negative, so just don't run them if you have the trait
. = ..()
if(HAS_TRAIT(human, TRAIT_NOHUNGER))
diff --git a/code/modules/surgery/organs/internal/tongue/_tongue.dm b/code/modules/surgery/organs/internal/tongue/_tongue.dm
index 86b29de817e..cf547b027f4 100644
--- a/code/modules/surgery/organs/internal/tongue/_tongue.dm
+++ b/code/modules/surgery/organs/internal/tongue/_tongue.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/tongue
+/obj/item/organ/tongue
name = "tongue"
desc = "A fleshy muscle mostly used for lying."
icon_state = "tongue"
@@ -14,7 +14,7 @@
* Relates to a mob's ability to speak a language - a mob must be able to speak the language
* and have a tongue able to speak the language (or omnitongue) in order to actually speak said language
*
- * To modify this list for subtypes, see [/obj/item/organ/internal/tongue/proc/get_possible_languages]. Do not modify directly.
+ * To modify this list for subtypes, see [/obj/item/organ/tongue/proc/get_possible_languages]. Do not modify directly.
*/
VAR_PRIVATE/list/languages_possible
/**
@@ -44,7 +44,7 @@
/// Whether this tongue modifies speech via signal
var/modifies_speech = FALSE
-/obj/item/organ/internal/tongue/Initialize(mapload)
+/obj/item/organ/tongue/Initialize(mapload)
. = ..()
// Setup the possible languages list
// - get_possible_languages gives us a list of language paths
@@ -52,7 +52,7 @@
// this results in tongues with identical possible languages sharing a cached list instance
languages_possible = string_list(get_possible_languages())
-/obj/item/organ/internal/tongue/examine(mob/user)
+/obj/item/organ/tongue/examine(mob/user)
. = ..()
if(HAS_MIND_TRAIT(user, TRAIT_ENTRAILS_READER)|| isobserver(user))
if(liked_foodtypes)
@@ -71,7 +71,7 @@
* While a user may be theoretically capable of speaking a language, they cannot physically speak it
* UNLESS they have a tongue with that language possible, UNLESS UNLESS they have omnitongue enabled.
*/
-/obj/item/organ/internal/tongue/proc/get_possible_languages()
+/obj/item/organ/tongue/proc/get_possible_languages()
RETURN_TYPE(/list)
// This is the default list of languages most humans should be capable of speaking
return list(
@@ -91,13 +91,13 @@
/datum/language/nekomimetic,
)
-/obj/item/organ/internal/tongue/proc/handle_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/proc/handle_speech(datum/source, list/speech_args)
SIGNAL_HANDLER
if(should_modify_speech(source, speech_args))
modify_speech(source, speech_args)
-/obj/item/organ/internal/tongue/proc/should_modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/proc/should_modify_speech(datum/source, list/speech_args)
if(speech_args[SPEECH_LANGUAGE] in languages_native) // Speaking a native language?
return FALSE // Don't modify speech
if(HAS_TRAIT(source, TRAIT_SIGN_LANG)) // No modifiers for signers - I hate this but I simply cannot get these to combine into one statement
@@ -108,7 +108,7 @@
// FLUFFY FRONTIER EDIT END.
return TRUE
-/obj/item/organ/internal/tongue/proc/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/proc/modify_speech(datum/source, list/speech_args)
return speech_args[SPEECH_MESSAGE]
/**
@@ -118,7 +118,7 @@
* Can be overriden by subtypes for more complex behavior.
* Does not get called if the owner has ageusia.
**/
-/obj/item/organ/internal/tongue/proc/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
+/obj/item/organ/tongue/proc/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
var/food_taste_reaction
if(foodtypes & toxic_foodtypes)
food_taste_reaction = FOOD_TOXIC
@@ -128,7 +128,7 @@
food_taste_reaction = FOOD_LIKED
return food_taste_reaction
-/obj/item/organ/internal/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(modifies_speech)
@@ -144,7 +144,7 @@
REMOVE_TRAIT(receiver, TRAIT_AGEUSIA, NO_TONGUE_TRAIT)
apply_tongue_effects()
-/obj/item/organ/internal/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
temp_say_mod = ""
@@ -156,14 +156,14 @@
ADD_TRAIT(organ_owner, TRAIT_AGEUSIA, NO_TONGUE_TRAIT)
organ_owner.voice_filter = initial(organ_owner.voice_filter)
-/obj/item/organ/internal/tongue/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
+/obj/item/organ/tongue/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
. = ..()
if(!owner)
return FALSE
apply_tongue_effects()
/// Applies effects to our owner based on how damaged our tongue is
-/obj/item/organ/internal/tongue/proc/apply_tongue_effects()
+/obj/item/organ/tongue/proc/apply_tongue_effects()
if(sense_of_taste)
//tongues can't taste food when they are failing
if(organ_flags & ORGAN_FAILING)
@@ -178,13 +178,13 @@
else
ADD_TRAIT(owner, TRAIT_SPEAKS_CLEARLY, SPEAKING_FROM_TONGUE)
-/obj/item/organ/internal/tongue/could_speak_language(datum/language/language_path)
+/obj/item/organ/tongue/could_speak_language(datum/language/language_path)
return (language_path in languages_possible)
-/obj/item/organ/internal/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob)
return owner_species.mutanttongue
-/obj/item/organ/internal/tongue/lizard
+/obj/item/organ/tongue/lizard
name = "forked tongue"
desc = "A thin and long muscle typically found in reptilian races, apparently moonlights as a nose."
icon_state = "tonguelizard"
@@ -219,11 +219,11 @@
)
// NOVA EDIT ADDITION END
-/obj/item/organ/internal/tongue/lizard/New(class, timer, datum/mutation/human/copymut)
+/obj/item/organ/tongue/lizard/New(class, timer, datum/mutation/human/copymut)
. = ..()
AddComponent(/datum/component/speechmod, replacements = CONFIG_GET(flag/russian_text_formation) ? russian_speech_replacements : speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) // NOVA EDIT CHANGE - ORIGINAL: AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech)))
-/obj/item/organ/internal/tongue/lizard/silver
+/obj/item/organ/tongue/lizard/silver
name = "silver tongue"
desc = "A genetic branch of the high society Silver Scales that gives them their silverizing properties. To them, it is everything, and society traitors have their tongue forcibly revoked. Oddly enough, it itself is just blue."
icon_state = "silvertongue"
@@ -243,7 +243,7 @@
/datum/action/cooldown/turn_to_statue/New(Target)
. = ..()
- if(!istype(Target, /obj/item/organ/internal/tongue/lizard/silver))
+ if(!istype(Target, /obj/item/organ/tongue/lizard/silver))
stack_trace("Non-silverscale tongue initialized a turn to statue action.")
qdel(src)
return
@@ -261,7 +261,7 @@
if(!isliving(owner))
return FALSE
- var/obj/item/organ/internal/tongue/lizard/silver/tongue_target = target
+ var/obj/item/organ/tongue/lizard/silver/tongue_target = target
if(tongue_target.owner != owner)
return FALSE
@@ -372,7 +372,7 @@
bomb = 50
fire = 100
-/obj/item/organ/internal/tongue/abductor
+/obj/item/organ/tongue/abductor
name = "superlingual matrix"
desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something."
icon_state = "tongueayylmao"
@@ -381,11 +381,11 @@
modifies_speech = TRUE
var/mothership
-/obj/item/organ/internal/tongue/abductor/attack_self(mob/living/carbon/human/tongue_holder)
+/obj/item/organ/tongue/abductor/attack_self(mob/living/carbon/human/tongue_holder)
if(!istype(tongue_holder))
return
- var/obj/item/organ/internal/tongue/abductor/tongue = tongue_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/abductor/tongue = tongue_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!istype(tongue))
return
@@ -397,7 +397,7 @@
to_chat(tongue_holder, span_notice("You attune [src] to your own channel."))
mothership = tongue.mothership
-/obj/item/organ/internal/tongue/abductor/examine(mob/examining_mob)
+/obj/item/organ/tongue/abductor/examine(mob/examining_mob)
. = ..()
if(HAS_MIND_TRAIT(examining_mob, TRAIT_ABDUCTOR_TRAINING) || isobserver(examining_mob))
. += span_notice("It can be attuned to a different channel by using it inhand.")
@@ -406,14 +406,14 @@
else
. += span_notice("It is attuned to [mothership].")
-/obj/item/organ/internal/tongue/abductor/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/abductor/modify_speech(datum/source, list/speech_args)
//Hacks
var/message = speech_args[SPEECH_MESSAGE]
var/mob/living/carbon/human/user = source
var/rendered = span_abductor("[user.real_name]: [message]")
user.log_talk(message, LOG_SAY, tag="abductor")
for(var/mob/living/carbon/human/living_mob in GLOB.alive_mob_list)
- var/obj/item/organ/internal/tongue/abductor/tongue = living_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/abductor/tongue = living_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
if(!istype(tongue))
continue
if(mothership == tongue.mothership)
@@ -425,7 +425,7 @@
speech_args[SPEECH_MESSAGE] = ""
-/obj/item/organ/internal/tongue/zombie
+/obj/item/organ/tongue/zombie
name = "rotting tongue"
desc = "Between the decay and the fact that it's just lying there you doubt a tongue has ever seemed less sexy."
icon_state = "tonguezombie"
@@ -438,14 +438,14 @@
// List of english words that translate to zombie phrases
GLOBAL_LIST_INIT(english_to_zombie, list())
-/obj/item/organ/internal/tongue/zombie/proc/add_word_to_translations(english_word, zombie_word)
+/obj/item/organ/tongue/zombie/proc/add_word_to_translations(english_word, zombie_word)
GLOB.english_to_zombie[english_word] = zombie_word
// zombies don't care about grammar (any tense or form is all translated to the same word)
GLOB.english_to_zombie[english_word + plural_s(english_word)] = zombie_word
GLOB.english_to_zombie[english_word + "ing"] = zombie_word
GLOB.english_to_zombie[english_word + "ed"] = zombie_word
-/obj/item/organ/internal/tongue/zombie/proc/load_zombie_translations()
+/obj/item/organ/tongue/zombie/proc/load_zombie_translations()
var/list/zombie_translation = strings("zombie_replacement.json", "zombie")
for(var/zombie_word in zombie_translation)
// since zombie words are a reverse list, we gotta do this backwards
@@ -454,7 +454,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
add_word_to_translations(english_word, zombie_word)
GLOB.english_to_zombie = sort_list(GLOB.english_to_zombie) // Alphabetizes the list (for debugging)
-/obj/item/organ/internal/tongue/zombie/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/zombie/modify_speech(datum/source, list/speech_args)
var/message = speech_args[SPEECH_MESSAGE]
if(message[1] != "*")
// setup the global list for translation if it hasn't already been done
@@ -492,7 +492,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
message = capitalize(message)
speech_args[SPEECH_MESSAGE] = message
-/obj/item/organ/internal/tongue/alien
+/obj/item/organ/tongue/alien
name = "alien tongue"
desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"."
icon_state = "tonguexeno"
@@ -501,7 +501,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
modifies_speech = TRUE // not really, they just hiss
voice_filter = @{"[0:a] asplit [out0][out2]; [out0] asetrate=%SAMPLE_RATE%*0.8,aresample=%SAMPLE_RATE%,atempo=1/0.8,aformat=channel_layouts=mono [p0]; [out2] asetrate=%SAMPLE_RATE%*1.2,aresample=%SAMPLE_RATE%,atempo=1/1.2,aformat=channel_layouts=mono[p2]; [p0][0][p2] amix=inputs=3"}
// Aliens can only speak alien and a few other languages.
-/obj/item/organ/internal/tongue/alien/get_possible_languages()
+/obj/item/organ/tongue/alien/get_possible_languages()
return list(
/datum/language/xenocommon,
/datum/language/common,
@@ -510,14 +510,14 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
/datum/language/monkey,
)
-/obj/item/organ/internal/tongue/alien/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/alien/modify_speech(datum/source, list/speech_args)
var/datum/saymode/xeno/hivemind = speech_args[SPEECH_SAYMODE]
if(hivemind)
return
playsound(owner, SFX_HISS, 25, TRUE, TRUE)
-/obj/item/organ/internal/tongue/bone
+/obj/item/organ/tongue/bone
name = "bone \"tongue\""
desc = "Apparently skeletons alter the sounds they produce through oscillation of their teeth, hence their characteristic rattling."
icon_state = "tonguebone"
@@ -532,15 +532,15 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
var/phomeme_type = "sans"
var/list/phomeme_types = list("sans", "papyrus")
-/obj/item/organ/internal/tongue/bone/Initialize(mapload)
+/obj/item/organ/tongue/bone/Initialize(mapload)
. = ..()
phomeme_type = pick(phomeme_types)
// Bone tongues can speak all default + calcic
-/obj/item/organ/internal/tongue/bone/get_possible_languages()
+/obj/item/organ/tongue/bone/get_possible_languages()
return ..() + /datum/language/calcic
-/obj/item/organ/internal/tongue/bone/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/bone/modify_speech(datum/source, list/speech_args)
if (chattering)
chatter(speech_args[SPEECH_MESSAGE], phomeme_type, source)
switch(phomeme_type)
@@ -549,7 +549,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
if("papyrus")
speech_args[SPEECH_SPANS] |= SPAN_PAPYRUS
-/obj/item/organ/internal/tongue/bone/plasmaman
+/obj/item/organ/tongue/bone/plasmaman
name = "plasma bone \"tongue\""
desc = "Like animated skeletons, Plasmamen vibrate their teeth in order to produce speech."
icon_state = "tongueplasma"
@@ -557,7 +557,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
liked_foodtypes = VEGETABLES
disliked_foodtypes = FRUIT | CLOTH
-/obj/item/organ/internal/tongue/robot
+/obj/item/organ/tongue/robot
name = "robotic voicebox"
desc = "A voice synthesizer that can interface with organic lifeforms."
failing_desc = "seems to be broken."
@@ -571,13 +571,13 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED)
voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000"
-/obj/item/organ/internal/tongue/robot/could_speak_language(datum/language/language_path)
+/obj/item/organ/tongue/robot/could_speak_language(datum/language/language_path)
return TRUE // THE MAGIC OF ELECTRONICS
-/obj/item/organ/internal/tongue/robot/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/robot/modify_speech(datum/source, list/speech_args)
speech_args[SPEECH_SPANS] |= SPAN_ROBOT
-/obj/item/organ/internal/tongue/snail
+/obj/item/organ/tongue/snail
name = "radula"
desc = "A minutely toothed, chitious ribbon, which as a side effect, makes all snails talk IINNCCRREEDDIIBBLLYY SSLLOOWWLLYY."
color = "#96DB00" // TODO proper sprite, rather than recoloured pink tongue
@@ -587,7 +587,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
disliked_foodtypes = DAIRY | ORANGES | SUGAR //NOVA EDIT: Roundstart Snails - As it turns out, you can't give a snail processed sugar or citrus.
/* NOVA EDIT START - Roundstart Snails: Less annoying speech.
-/obj/item/organ/internal/tongue/snail/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/snail/modify_speech(datum/source, list/speech_args)
var/new_message
var/message = speech_args[SPEECH_MESSAGE]
for(var/i in 1 to length(message))
@@ -598,7 +598,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
speech_args[SPEECH_MESSAGE] = new_message
*/ // NOVA EDIT END
-/obj/item/organ/internal/tongue/ethereal
+/obj/item/organ/tongue/ethereal
name = "electric discharger"
desc = "A sophisticated ethereal organ, capable of synthesising speech via electrical discharge."
icon_state = "electrotongue"
@@ -612,10 +612,10 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
voice_filter = @{"[0:a] asplit [out0][out2]; [out0] asetrate=%SAMPLE_RATE%*0.99,aresample=%SAMPLE_RATE%,volume=0.3 [p0]; [p0][out2] amix=inputs=2"}
// Ethereal tongues can speak all default + voltaic
-/obj/item/organ/internal/tongue/ethereal/get_possible_languages()
+/obj/item/organ/tongue/ethereal/get_possible_languages()
return ..() + /datum/language/voltaic
-/obj/item/organ/internal/tongue/cat
+/obj/item/organ/tongue/cat
name = "felinid tongue"
desc = "A fleshy muscle mostly used for meowing."
say_mod = "meows"
@@ -623,7 +623,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
disliked_foodtypes = GROSS | CLOTH | RAW
organ_traits = list(TRAIT_WOUND_LICKER, TRAIT_FISH_EATER)
-/obj/item/organ/internal/tongue/jelly
+/obj/item/organ/tongue/jelly
name = "jelly tongue"
desc = "Ah... That's not the sound I expected it to make. Sounds like a Space Autumn Bird."
say_mod = "chirps"
@@ -631,20 +631,20 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
disliked_foodtypes = GROSS
toxic_foodtypes = NONE
-/obj/item/organ/internal/tongue/jelly/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
+/obj/item/organ/tongue/jelly/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
// a silver slime created this? what a delicacy!
if(HAS_TRAIT(food, TRAIT_FOOD_SILVER))
return FOOD_LIKED
return ..()
-/obj/item/organ/internal/tongue/monkey
+/obj/item/organ/tongue/monkey
name = "primitive tongue"
desc = "For aggressively chimpering. And consuming bananas."
say_mod = "chimpers"
liked_foodtypes = MEAT | FRUIT | BUGS
disliked_foodtypes = CLOTH
-/obj/item/organ/internal/tongue/moth
+/obj/item/organ/tongue/moth
name = "moth tongue"
desc = "Moths don't have tongues. Someone get god on the phone, tell them I'm not happy."
say_mod = "flutters"
@@ -652,26 +652,26 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
disliked_foodtypes = FRUIT | GROSS | BUGS | GORE
toxic_foodtypes = MEAT | RAW | SEAFOOD
-/obj/item/organ/internal/tongue/zombie
+/obj/item/organ/tongue/zombie
name = "rotting tongue"
desc = "Makes you speak like you're at the dentist and you just absolutely refuse to spit because you forgot to mention you were allergic to space shellfish."
say_mod = "moans"
-/obj/item/organ/internal/tongue/mush
+/obj/item/organ/tongue/mush
name = "mush-tongue-room"
desc = "You poof with this. Got it?"
icon = 'icons/obj/service/hydroponics/seeds.dmi'
icon_state = "mycelium-angel"
say_mod = "poofs"
-/obj/item/organ/internal/tongue/pod
+/obj/item/organ/tongue/pod
name = "pod tongue"
desc = "A plant-like organ used for speaking and eating."
say_mod = "whistles"
liked_foodtypes = VEGETABLES | FRUIT | GRAIN
disliked_foodtypes = GORE | MEAT | DAIRY | SEAFOOD | BUGS
-/obj/item/organ/internal/tongue/golem
+/obj/item/organ/tongue/golem
name = "golem tongue"
desc = "This silicate plate doesn't seem particularly mobile, but golems use it to form sounds."
color = COLOR_WEBSAFE_DARK_GRAY
diff --git a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
index f6fed86a90d..8dfee796937 100644
--- a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
+++ b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/vocal_cords //organs that are activated through speech with the :x/MODE_KEY_VOCALCORDS channel
+/obj/item/organ/vocal_cords //organs that are activated through speech with the :x/MODE_KEY_VOCALCORDS channel
name = "vocal cords"
icon_state = "appendix"
zone = BODY_ZONE_PRECISE_MOUTH
@@ -8,17 +8,17 @@
healing_factor = 0
var/list/spans = null
-/obj/item/organ/internal/vocal_cords/proc/can_speak_with() //if there is any limitation to speaking with these cords
+/obj/item/organ/vocal_cords/proc/can_speak_with() //if there is any limitation to speaking with these cords
return TRUE
-/obj/item/organ/internal/vocal_cords/proc/speak_with(message) //do what the organ does
+/obj/item/organ/vocal_cords/proc/speak_with(message) //do what the organ does
return
-/obj/item/organ/internal/vocal_cords/proc/handle_speech(message) //actually say the message
+/obj/item/organ/vocal_cords/proc/handle_speech(message) //actually say the message
owner.say(message, spans = spans, sanitize = FALSE)
//Colossus drop, forces the listeners to obey certain commands
-/obj/item/organ/internal/vocal_cords/colossus
+/obj/item/organ/vocal_cords/colossus
name = "divine vocal cords"
desc = "They carry the voice of an ancient god."
icon_state = "voice_of_god"
@@ -30,7 +30,7 @@
/datum/action/item_action/organ_action/colossus
name = "Voice of God"
- var/obj/item/organ/internal/vocal_cords/colossus/cords = null
+ var/obj/item/organ/vocal_cords/colossus/cords = null
/datum/action/item_action/organ_action/colossus/New()
..()
@@ -67,7 +67,7 @@
return
owner.say(".x[command]")
-/obj/item/organ/internal/vocal_cords/colossus/can_speak_with()
+/obj/item/organ/vocal_cords/colossus/can_speak_with()
if(!owner)
return FALSE
@@ -77,22 +77,22 @@
return owner.can_speak()
-/obj/item/organ/internal/vocal_cords/colossus/handle_speech(message)
+/obj/item/organ/vocal_cords/colossus/handle_speech(message)
playsound(get_turf(owner), 'sound/effects/magic/clockwork/invoke_general.ogg', 300, TRUE, 5)
return //voice of god speaks for us
-/obj/item/organ/internal/vocal_cords/colossus/speak_with(message)
+/obj/item/organ/vocal_cords/colossus/speak_with(message)
var/cooldown = voice_of_god(uppertext(message), owner, spans, base_multiplier)
next_command = world.time + (cooldown * cooldown_mod)
-/obj/item/organ/internal/adamantine_resonator
+/obj/item/organ/adamantine_resonator
name = "adamantine resonator"
desc = "Fragments of adamantine exist in all golems, stemming from their origins as purely magical constructs. These are used to \"hear\" messages from their leaders."
zone = BODY_ZONE_HEAD
slot = ORGAN_SLOT_ADAMANTINE_RESONATOR
icon_state = "adamantine_resonator"
-/obj/item/organ/internal/vocal_cords/adamantine
+/obj/item/organ/vocal_cords/adamantine
name = "adamantine vocal cords"
desc = "When adamantine resonates, it causes all nearby pieces of adamantine to resonate as well. Golems containing these formations use this to broadcast messages to nearby golems."
actions_types = list(/datum/action/item_action/organ_action/use/adamantine_vocal_cords)
@@ -108,7 +108,7 @@
return
owner.say(".x[message]")
-/obj/item/organ/internal/vocal_cords/adamantine/handle_speech(message)
+/obj/item/organ/vocal_cords/adamantine/handle_speech(message)
var/msg = span_resonate("[span_name("[owner.real_name]")] resonates, \"[message]\"")
for(var/player in GLOB.player_list)
if(iscarbon(player))
diff --git a/code/modules/surgery/revival.dm b/code/modules/surgery/revival.dm
index 3a8ddcf1421..575f94d7bfb 100644
--- a/code/modules/surgery/revival.dm
+++ b/code/modules/surgery/revival.dm
@@ -153,7 +153,7 @@
surgery_flags = parent_type::surgery_flags | SURGERY_REQUIRE_LIMB
/datum/surgery/revival/carbon/is_valid_target(mob/living/carbon/patient)
- var/obj/item/organ/internal/brain/target_brain = patient.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = patient.get_organ_slot(ORGAN_SLOT_BRAIN)
return !isnull(target_brain)
/datum/surgery_step/revive/carbon
diff --git a/code/modules/surgery/sleeper_protocol.dm b/code/modules/surgery/sleeper_protocol.dm
index 23b02aeda80..fd697240eed 100644
--- a/code/modules/surgery/sleeper_protocol.dm
+++ b/code/modules/surgery/sleeper_protocol.dm
@@ -37,7 +37,7 @@
. = ..()
if(!.)
return FALSE
- var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!target_brain)
return FALSE
return TRUE
diff --git a/code/modules/surgery/stomachpump.dm b/code/modules/surgery/stomachpump.dm
index 4880f932964..47f25074c3a 100644
--- a/code/modules/surgery/stomachpump.dm
+++ b/code/modules/surgery/stomachpump.dm
@@ -23,7 +23,7 @@
)
/datum/surgery/stomach_pump/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
if(HAS_TRAIT(target, TRAIT_HUSK))
return FALSE
if(!target_stomach)
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index e6d75cd8d89..2f14388fd49 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -535,7 +535,7 @@
return
var/candidate_name
- var/obj/item/organ/external/tail_snip_candidate
+ var/obj/item/organ/tail_snip_candidate
var/obj/item/bodypart/limb_snip_candidate
if(user.zone_selected == BODY_ZONE_PRECISE_GROIN)
diff --git a/code/modules/unit_tests/blindness.dm b/code/modules/unit_tests/blindness.dm
index 88f5eece575..1d1093b7581 100644
--- a/code/modules/unit_tests/blindness.dm
+++ b/code/modules/unit_tests/blindness.dm
@@ -105,7 +105,7 @@
/datum/unit_test/eye_damage/Run()
var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
- var/obj/item/organ/internal/eyes/eyes = dummy.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = dummy.get_organ_slot(ORGAN_SLOT_EYES)
TEST_ASSERT_NOTNULL(eyes, "Eye damage unit test spawned a dummy without eyes!")
// Test blindness due to eye damage
diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm
index 8ed2b999e7f..e21b3fec4c0 100644
--- a/code/modules/unit_tests/fish_unit_tests.dm
+++ b/code/modules/unit_tests/fish_unit_tests.dm
@@ -455,7 +455,7 @@
TEST_ASSERT_EQUAL(fish.status, FISH_DEAD, "The fish is not dead, despite having sustained enough damage that it should. health: [fish.health]")
- var/obj/item/organ/internal/stomach/belly = gourmet.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = gourmet.get_organ_slot(ORGAN_SLOT_STOMACH)
belly.reagents.clear_reagents()
fish.set_status(FISH_ALIVE)
diff --git a/code/modules/unit_tests/full_heal.dm b/code/modules/unit_tests/full_heal.dm
index f5d247d7a10..7449d2aeb4c 100644
--- a/code/modules/unit_tests/full_heal.dm
+++ b/code/modules/unit_tests/full_heal.dm
@@ -4,12 +4,12 @@
/datum/unit_test/full_heal_heals_organs/Run()
var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
- for(var/obj/item/organ/internal/organ in dummy.organs)
+ for(var/obj/item/organ/organ in dummy.organs)
organ.apply_organ_damage(50)
dummy.fully_heal(HEAL_ORGANS)
- for(var/obj/item/organ/internal/organ in dummy.organs)
+ for(var/obj/item/organ/organ in dummy.organs)
if(organ.damage <= 0)
continue
TEST_FAIL("Organ [organ] did not get healed by fullyheal flag HEAL_ORGANS.")
@@ -22,7 +22,7 @@
var/list/we_started_with = list()
- for(var/obj/item/organ/internal/organ in dummy.organs)
+ for(var/obj/item/organ/organ in dummy.organs)
if(organ.organ_flags & ORGAN_VITAL) // leave this for now
continue
we_started_with += organ.type
diff --git a/code/modules/unit_tests/ling_decap.dm b/code/modules/unit_tests/ling_decap.dm
index 4c8c7e4e031..d6c8d244a8d 100644
--- a/code/modules/unit_tests/ling_decap.dm
+++ b/code/modules/unit_tests/ling_decap.dm
@@ -9,12 +9,12 @@
var/obj/item/bodypart/head/noggin = ling.get_bodypart(BODY_ZONE_HEAD)
noggin.dismember()
TEST_ASSERT_NULL(ling.get_bodypart(BODY_ZONE_HEAD), "Changeling failed to be decapitated.")
- var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin
+ var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in noggin
TEST_ASSERT_NULL(brain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation, but it should have remained in their body.")
- var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin
+ var/obj/item/organ/brain/oldbrain = locate(/obj/item/organ/brain) in noggin
noggin.drop_organs()
- TEST_ASSERT_NULL(locate(/obj/item/organ/internal/brain) in noggin, "Changeling's head failed to drop its brain.")
+ TEST_ASSERT_NULL(locate(/obj/item/organ/brain) in noggin, "Changeling's head failed to drop its brain.")
TEST_ASSERT_NULL(oldbrain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation and organ dropping, but it should have remained in their body.")
TEST_ASSERT_EQUAL(ling.stat, CONSCIOUS, "Changeling was not conscious after losing their head.")
@@ -34,10 +34,10 @@
var/obj/item/bodypart/head/noggin = normal_guy.get_bodypart(BODY_ZONE_HEAD)
noggin.dismember()
- var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin
+ var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in noggin
TEST_ASSERT_EQUAL(brain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after decapitation.")
- var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin
+ var/obj/item/organ/brain/oldbrain = locate(/obj/item/organ/brain) in noggin
noggin.drop_organs()
TEST_ASSERT_EQUAL(oldbrain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after being removed from their head.")
diff --git a/code/modules/unit_tests/liver.dm b/code/modules/unit_tests/liver.dm
index 80c3ecf35b9..f2f5dcfd00f 100644
--- a/code/modules/unit_tests/liver.dm
+++ b/code/modules/unit_tests/liver.dm
@@ -12,7 +12,7 @@
var/datum/reagent/toxin/bonehurtingjuice/bonehurting = /datum/reagent/toxin/bonehurtingjuice
var/datum/reagent/consumable/milk/calcium = /datum/reagent/consumable/milk
- TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/internal/liver/bone)), "Skeleton does not have a bone liver")
+ TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/liver/bone)), "Skeleton does not have a bone liver")
TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/toxin/bonehurtingjuice), FALSE, "Skeleton somehow has bone hurting juice before drinking")
TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/consumable/milk), FALSE, "Skeleton somehow has milk before drinking")
@@ -67,7 +67,7 @@
// Testing plasma/hot ice healing on wounds
- TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/internal/liver/bone/plasmaman)), "Plasmaman does not have a plasmaman bone liver")
+ TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/liver/bone/plasmaman)), "Plasmaman does not have a plasmaman bone liver")
TEST_ASSERT_EQUAL(mrbones.has_reagent(plasma), FALSE, "Plasmaman somehow has plasma before drinking")
TEST_ASSERT_EQUAL(mrbones.has_reagent(hot_ice), FALSE, "Plasmaman somehow has hot ice before drinking")
diff --git a/code/modules/unit_tests/lungs.dm b/code/modules/unit_tests/lungs.dm
index 4f9b7ceb442..c8338b6dec8 100644
--- a/code/modules/unit_tests/lungs.dm
+++ b/code/modules/unit_tests/lungs.dm
@@ -13,27 +13,27 @@
// 2500 Litres of O2/N2 gas mix, ideal for life.
var/datum/gas_mixture/test_mix = create_standard_mix()
var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent)
- var/obj/item/organ/internal/lungs/test_lungs = allocate(/obj/item/organ/internal/lungs)
+ var/obj/item/organ/lungs/test_lungs = allocate(/obj/item/organ/lungs)
// Test one breath of O2/N2 mix.
lungs_test_check_breath("standard gas mixture", lab_rat, test_lungs, test_mix)
// Suffocation with an empty gas mix.
var/datum/gas_mixture/empty_test_mix = allocate(/datum/gas_mixture)
lab_rat = allocate(/mob/living/carbon/human/consistent)
- test_lungs = allocate(/obj/item/organ/internal/lungs)
+ test_lungs = allocate(/obj/item/organ/lungs)
// Test one breath of nothing. Suffocate due to the breath being empty.
lungs_test_check_breath("empty gas mixture", lab_rat, test_lungs, empty_test_mix, expect_failure = TRUE)
// Suffocation with null. This does indeed happen normally.
lab_rat = allocate(/mob/living/carbon/human/consistent)
- test_lungs = allocate(/obj/item/organ/internal/lungs)
+ test_lungs = allocate(/obj/item/organ/lungs)
// Test one breath of nothing. Suffocate due to the breath being null.
lungs_test_check_breath("null", lab_rat, test_lungs, null, expect_failure = TRUE)
// Suffocation with Nitrogen.
var/datum/gas_mixture/nitro_test_mix = create_nitrogen_mix()
lab_rat = allocate(/mob/living/carbon/human/consistent)
- test_lungs = allocate(/obj/item/organ/internal/lungs)
+ test_lungs = allocate(/obj/item/organ/lungs)
// Test one breath of Nitrogen. Suffocate due to the breath being 100% N2.
lungs_test_check_breath("pure Nitrogen", lab_rat, test_lungs, nitro_test_mix, expect_failure = TRUE)
@@ -44,14 +44,14 @@
// 2500 Litres of pure Plasma.
var/datum/gas_mixture/plasma_test_mix = create_plasma_mix()
var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent)
- var/obj/item/organ/internal/lungs/plasmaman/test_lungs = allocate(/obj/item/organ/internal/lungs/plasmaman)
+ var/obj/item/organ/lungs/plasmaman/test_lungs = allocate(/obj/item/organ/lungs/plasmaman)
// Test one breath of Plasma on Plasmaman lungs.
lungs_test_check_breath("pure Plasma", lab_rat, test_lungs, plasma_test_mix)
// Tests suffocation with Nitrogen.
var/datum/gas_mixture/nitro_test_mix = create_nitrogen_mix()
lab_rat = allocate(/mob/living/carbon/human/consistent)
- test_lungs = allocate(/obj/item/organ/internal/lungs/plasmaman)
+ test_lungs = allocate(/obj/item/organ/lungs/plasmaman)
// Test one breath of Nitrogen on Plasmaman lungs.
lungs_test_check_breath("pure Nitrogen", lab_rat, test_lungs, nitro_test_mix, expect_failure = TRUE)
@@ -62,15 +62,15 @@
/datum/unit_test/lungs/lungs_sanity_ashwalker/Run()
// Gas mix resembling one cell of lavaland's atmosphere.
var/datum/gas_mixture/lavaland_test_mix = create_lavaland_mix()
- var/obj/item/organ/internal/lungs/lavaland/test_lungs = allocate(/obj/item/organ/internal/lungs/lavaland)
+ var/obj/item/organ/lungs/lavaland/test_lungs = allocate(/obj/item/organ/lungs/lavaland)
var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent)
// Test one breath of Lavaland gas mix on Ashwalker lungs.
lungs_test_check_breath("Lavaland air mixture", lab_rat, test_lungs, lavaland_test_mix)
-/// Comprehensive unit test for [/obj/item/organ/internal/lungs/proc/check_breath()]
+/// Comprehensive unit test for [/obj/item/organ/lungs/proc/check_breath()]
/// If "expect_failure" is set to TRUE, the test ensures the given Human suffocated.
/// A "test_name" string is required to contextualize test logs. Describe the gas you're testing.
-/datum/unit_test/lungs/proc/lungs_test_check_breath(test_name, mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, datum/gas_mixture/test_mix, expect_failure = FALSE)
+/datum/unit_test/lungs/proc/lungs_test_check_breath(test_name, mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, datum/gas_mixture/test_mix, expect_failure = FALSE)
// Setup a small volume of gas which represents one "breath" from test_mix.
var/datum/gas_mixture/test_breath
@@ -155,14 +155,14 @@
TEST_ASSERT(molar_cmp_equals(GET_MOLES(test_breath, /datum/gas/carbon_dioxide), expected_co2), TEST_CHECK_BREATH_MESSAGE(test_lungs, "should convert Plasma into an equivalent volume of CO2."))
/// Tests minimum gas alerts by comparing gas pressure.
-/datum/unit_test/lungs/proc/lungs_test_alert_min(mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, alert_name, min_pressure, pressure)
+/datum/unit_test/lungs/proc/lungs_test_alert_min(mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, alert_name, min_pressure, pressure)
var/alert_thrown = lab_rat.has_alert(alert_name)
var/pressure_safe = (pressure >= min_pressure) || (min_pressure == 0)
TEST_ASSERT(!pressure_safe && alert_thrown || pressure_safe, TEST_ALERT_THROW_MESSAGE(test_lungs, alert_name))
TEST_ASSERT(pressure_safe && !alert_thrown || !pressure_safe, TEST_ALERT_INHIBIT_MESSAGE(test_lungs, alert_name))
/// Tests maximum gas alerts by comparing gas pressure.
-/datum/unit_test/lungs/proc/lungs_test_alert_max(mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, alert_name, max_pressure, pressure)
+/datum/unit_test/lungs/proc/lungs_test_alert_max(mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, alert_name, max_pressure, pressure)
var/alert_thrown = lab_rat.has_alert(alert_name)
var/pressure_safe = (pressure <= max_pressure) || (max_pressure == 0)
TEST_ASSERT(!pressure_safe && alert_thrown || pressure_safe, TEST_ALERT_THROW_MESSAGE(test_lungs, alert_name))
diff --git a/code/modules/unit_tests/metabolizing.dm b/code/modules/unit_tests/metabolizing.dm
index 53250def309..53bd3277dc4 100644
--- a/code/modules/unit_tests/metabolizing.dm
+++ b/code/modules/unit_tests/metabolizing.dm
@@ -80,7 +80,7 @@
pill.attack(pill_user, pill_user)
// Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go.
- var/obj/item/organ/internal/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH)
pill_belly.metabolism_efficiency = 1
pill_user.Life()
diff --git a/code/modules/unit_tests/organs.dm b/code/modules/unit_tests/organs.dm
index 1da3808ba39..8f05a284058 100644
--- a/code/modules/unit_tests/organs.dm
+++ b/code/modules/unit_tests/organs.dm
@@ -8,20 +8,20 @@
// List of organ typepaths which cause species change.
// Species change swaps out all the organs, making test_organ un-usable after insertion.
var/static/list/species_changing_organs = typecacheof(list(
- /obj/item/organ/internal/brain/shadow/nightmare,
+ /obj/item/organ/brain/shadow/nightmare,
))
// List of organ typepaths which are not test-able, such as certain class prototypes.
var/static/list/test_organ_blacklist = typecacheof(list(
- /obj/item/organ/internal,
- /obj/item/organ/external,
- /obj/item/organ/external/wings,
- /obj/item/organ/internal/cyberimp,
- /obj/item/organ/internal/cyberimp/brain,
- /obj/item/organ/internal/cyberimp/mouth,
- /obj/item/organ/internal/cyberimp/arm,
- /obj/item/organ/internal/cyberimp/chest,
- /obj/item/organ/internal/cyberimp/eyes,
- /obj/item/organ/internal/alien,
+ /obj/item/organ,
+ /obj/item/organ,
+ /obj/item/organ/wings,
+ /obj/item/organ/cyberimp,
+ /obj/item/organ/cyberimp/brain,
+ /obj/item/organ/cyberimp/mouth,
+ /obj/item/organ/cyberimp/arm,
+ /obj/item/organ/cyberimp/chest,
+ /obj/item/organ/cyberimp/eyes,
+ /obj/item/organ/alien,
))
/datum/unit_test/organ_sanity/Run()
@@ -85,10 +85,10 @@
/datum/unit_test/organ_damage/Run()
var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
- for(var/obj/item/organ/internal/organ_to_test in dummy.organs)
+ for(var/obj/item/organ/organ_to_test in dummy.organs)
test_organ(dummy, organ_to_test)
-/datum/unit_test/organ_damage/proc/test_organ(mob/living/carbon/human/dummy, obj/item/organ/internal/test_organ)
+/datum/unit_test/organ_damage/proc/test_organ(mob/living/carbon/human/dummy, obj/item/organ/test_organ)
var/slot_to_use = test_organ.slot
// Tests [mob/living/proc/adjustOrganLoss]
diff --git a/code/modules/unit_tests/reagent_mob_expose.dm b/code/modules/unit_tests/reagent_mob_expose.dm
index 844b863c037..d6ed81292a9 100644
--- a/code/modules/unit_tests/reagent_mob_expose.dm
+++ b/code/modules/unit_tests/reagent_mob_expose.dm
@@ -58,6 +58,13 @@
syringe.melee_attack_chain(human, human)
TEST_ASSERT_EQUAL(human.health, 80, "Human health did not update after injection from syringe")
+ // INHALE
+ TEST_ASSERT_NULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is drowsy at the start of testing")
+ drink.reagents.clear_reagents()
+ drink.reagents.add_reagent(/datum/reagent/nitrous_oxide, 10)
+ drink.reagents.trans_to(human, 10, methods = INHALE)
+ TEST_ASSERT_NOTNULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is not drowsy after exposure to vapors")
+
/datum/unit_test/reagent_mob_expose/Destroy()
SSmobs.ignite()
return ..()
diff --git a/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm b/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm
index 1e2c10c2f29..85c557b1810 100644
--- a/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm
+++ b/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm
@@ -4,7 +4,7 @@
/// Tests to make sure no punks have broken high luminosity eyes
/datum/unit_test/screenshot_high_luminosity_eyes
var/mob/living/carbon/human/test_subject
- var/obj/item/organ/internal/eyes/robotic/glow/test_eyes
+ var/obj/item/organ/eyes/robotic/glow/test_eyes
/datum/unit_test/screenshot_high_luminosity_eyes/Run()
// Create a mob with red and blue eyes. This is to test that high luminosity eyes properly default to the old eye color.
@@ -14,7 +14,7 @@
test_subject.eye_color_right = COLOR_BLUE
// Create our eyes, and insert them into the mob
- test_eyes = allocate(/obj/item/organ/internal/eyes/robotic/glow)
+ test_eyes = allocate(/obj/item/organ/eyes/robotic/glow)
test_eyes.Insert(test_subject)
// This should be 4, but just in case it ever changes in the future
diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png
similarity index 100%
rename from code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png
rename to code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png
diff --git a/code/modules/unit_tests/species_change_organs.dm b/code/modules/unit_tests/species_change_organs.dm
index 41d55047f03..96ade09bf62 100644
--- a/code/modules/unit_tests/species_change_organs.dm
+++ b/code/modules/unit_tests/species_change_organs.dm
@@ -11,10 +11,10 @@
// Give a trauma
dummy.gain_trauma(/datum/brain_trauma/severe/blindness)
// Give a cyber heart
- var/obj/item/organ/internal/heart/cybernetic/cyber_heart = allocate(/obj/item/organ/internal/heart/cybernetic)
+ var/obj/item/organ/heart/cybernetic/cyber_heart = allocate(/obj/item/organ/heart/cybernetic)
cyber_heart.Insert(dummy, special = TRUE, movement_flags = DELETE_IF_REPLACED)
// Give one of their organs a bit of damage
- var/obj/item/organ/internal/appendix/existing_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
+ var/obj/item/organ/appendix/existing_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
existing_appendix.set_organ_damage(25)
// Changing species should
@@ -36,7 +36,7 @@
// Grab the lizard's appendix for comparison later
// They should've been given a new one, but our damage should also have transferred over
- var/obj/item/organ/internal/appendix/lizard_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
+ var/obj/item/organ/appendix/lizard_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
// They should have the trauma still
TEST_ASSERT(dummy.has_trauma_type(/datum/brain_trauma/severe/blindness), "Dummy, upon changing species, did not carry over their brain trauma!")
diff --git a/code/modules/unit_tests/stomach.dm b/code/modules/unit_tests/stomach.dm
index 782e74788a6..5d2b948e82b 100644
--- a/code/modules/unit_tests/stomach.dm
+++ b/code/modules/unit_tests/stomach.dm
@@ -5,7 +5,7 @@
var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human/consistent)
var/obj/item/food/hotdog/debug/fooditem = allocate(/obj/item/food/hotdog/debug)
- var/obj/item/organ/internal/stomach/belly = human.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/belly = human.get_organ_slot(ORGAN_SLOT_STOMACH)
var/obj/item/reagent_containers/pill/pill = allocate(/obj/item/reagent_containers/pill)
var/datum/reagent/drug/methamphetamine/meth = /datum/reagent/drug/methamphetamine
diff --git a/code/modules/unit_tests/tail_wag.dm b/code/modules/unit_tests/tail_wag.dm
index cd82dfdfd50..595e3189521 100644
--- a/code/modules/unit_tests/tail_wag.dm
+++ b/code/modules/unit_tests/tail_wag.dm
@@ -5,7 +5,7 @@
/datum/unit_test/tail_wag/Run()
var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
- var/obj/item/organ/external/tail/cat/dummy_tail = allocate(/obj/item/organ/external/tail/cat)
+ var/obj/item/organ/tail/cat/dummy_tail = allocate(/obj/item/organ/tail/cat)
dummy_tail.Insert(dummy, special = TRUE, movement_flags = DELETE_IF_REPLACED)
// SANITY TEST
diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm
index eca29e8d008..be7815b749f 100644
--- a/code/modules/unit_tests/unit_test.dm
+++ b/code/modules/unit_tests/unit_test.dm
@@ -253,9 +253,8 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests())
/obj/merge_conflict_marker,
//briefcase launchpads erroring
/obj/machinery/launchpad/briefcase,
- //Both are abstract types meant to scream bloody murder if spawned in raw
- /obj/item/organ/external,
- /obj/item/organ/external/wings,
+ //Wings abstract path
+ /obj/item/organ/wings,
//Not meant to spawn without the machine wand
/obj/effect/bug_moving,
)
@@ -349,10 +348,10 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests())
//Baseturf editors can only go up to ten, stop this.
returnable_list += typesof(/obj/effect/baseturf_helper)
// It's the abstract base type, it shouldn't be spawned.
- returnable_list += /obj/item/organ/external/genital
+ returnable_list += /obj/item/organ/genital
// These two are locked to one type only, and shouldn't be widely available, hence why they runtime otherwise.
// Can't be bothered adding more to them.
- returnable_list += list(/obj/item/organ/external/neck_accessory, /obj/item/organ/external/head_accessory)
+ returnable_list += list(/obj/item/organ/neck_accessory, /obj/item/organ/head_accessory)
//NOVA EDIT ADDITION END
return returnable_list
diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
index 287c9e3cf0e..b29c5501a79 100644
--- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
+++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
@@ -211,7 +211,7 @@
to_chat(M, "HONK")
M.SetSleeping(0)
M.adjust_stutter(40 SECONDS)
- var/obj/item/organ/internal/ears/ears = M.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = M.get_organ_slot(ORGAN_SLOT_EARS)
if(ears)
ears.adjustEarDamage(0, 30)
M.Paralyze(60)
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index 58373ef2c74..4b71e629be3 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -243,7 +243,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE)
contraband = list(
/obj/item/clothing/under/costume/mech_suit = 2,
/obj/item/clothing/suit/hooded/techpriest = 2,
- /obj/item/organ/internal/tongue/robot = 2,
+ /obj/item/organ/tongue/robot = 2,
)
refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe
extra_price = PAYCHECK_COMMAND * 1.2
diff --git a/code/modules/wiremod/components/action/equpiment_action.dm b/code/modules/wiremod/components/action/equpiment_action.dm
index 641722c595b..f313d1f4870 100644
--- a/code/modules/wiremod/components/action/equpiment_action.dm
+++ b/code/modules/wiremod/components/action/equpiment_action.dm
@@ -1,7 +1,7 @@
/obj/item/circuit_component/equipment_action
display_name = "Equipment Action"
desc = "Represents an action the user can take when using supported shells."
- required_shells = list(/obj/item/organ/internal/cyberimp/bci, /obj/item/mod/module/circuit)
+ required_shells = list(/obj/item/organ/cyberimp/bci, /obj/item/mod/module/circuit)
/// The icon of the button
var/datum/port/input/option/icon_options
diff --git a/code/modules/wiremod/components/atom/remotecam.dm b/code/modules/wiremod/components/atom/remotecam.dm
index d5a8506c5cf..bbbab6043af 100644
--- a/code/modules/wiremod/components/atom/remotecam.dm
+++ b/code/modules/wiremod/components/atom/remotecam.dm
@@ -281,7 +281,7 @@
desc = "Digitizes user's sight for surveillance-on-the-go. User must have fully functional eyes for digitizer to work. Camera range input is either 0 (near) or 1 (far). Network field is used for camera network."
category = "BCI"
camera_prefix = "BCI"
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
/// BCIs are organs, and thus the signal must be assigned ONLY when the shell has been installed in a mob - otherwise the camera will never update position
camera_signal_move_override = TRUE
@@ -314,13 +314,13 @@
/obj/item/circuit_component/remotecam/bci/register_shell(atom/movable/shell)
. = ..()
- if(!istype(shell_parent, /obj/item/organ/internal/cyberimp/bci))
+ if(!istype(shell_parent, /obj/item/organ/cyberimp/bci))
return
shell_camera = new /obj/machinery/camera (shell_parent)
init_camera()
RegisterSignal(shell_parent, COMSIG_ORGAN_IMPLANTED, PROC_REF(on_organ_implanted))
RegisterSignal(shell_parent, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
- var/obj/item/organ/internal/cyberimp/bci/bci = shell_parent
+ var/obj/item/organ/cyberimp/bci/bci = shell_parent
if(bci.owner) //If somehow the camera was added while shell is already installed inside a mob, assign signals
if(bciuser) //This should never happen... But if it does, unassign move signal from old mob
UnregisterSignal(bciuser, COMSIG_MOVABLE_MOVED, PROC_REF(update_camera_location))
@@ -388,7 +388,7 @@
if (current_camera_emp)
close_camera()
return
- var/obj/item/organ/internal/cyberimp/bci/bci = shell_parent
+ var/obj/item/organ/cyberimp/bci/bci = shell_parent
//If shell is not currently inside a head, or user is currently blind, or user is dead
if(!bci.owner || bci.owner.is_blind() || bci.owner.stat >= UNCONSCIOUS)
close_camera()
diff --git a/code/modules/wiremod/components/bci/hud/counter_overlay.dm b/code/modules/wiremod/components/bci/hud/counter_overlay.dm
index a0f83b6f72e..aaf70826f4b 100644
--- a/code/modules/wiremod/components/bci/hud/counter_overlay.dm
+++ b/code/modules/wiremod/components/bci/hud/counter_overlay.dm
@@ -10,7 +10,7 @@
desc = "A component that shows an three digit counter. Requires a BCI shell."
category = "BCI"
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
var/datum/port/input/counter_number
@@ -19,7 +19,7 @@
var/datum/port/input/signal_update
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
var/list/numbers = list()
var/datum/weakref/counter_appearance
@@ -32,7 +32,7 @@
image_pixel_y = add_input_port("Y-Axis Shift", PORT_TYPE_NUMBER)
/obj/item/circuit_component/counter_overlay/register_shell(atom/movable/shell)
- if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+ if(istype(shell, /obj/item/organ/cyberimp/bci))
bci = shell
RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
diff --git a/code/modules/wiremod/components/bci/hud/object_overlay.dm b/code/modules/wiremod/components/bci/hud/object_overlay.dm
index 07e0f76761e..4f09a4d9fab 100644
--- a/code/modules/wiremod/components/bci/hud/object_overlay.dm
+++ b/code/modules/wiremod/components/bci/hud/object_overlay.dm
@@ -12,7 +12,7 @@
desc = "Requires a BCI shell. A component that shows an overlay on top of an object."
category = "BCI"
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
var/datum/port/input/option/object_overlay_options
@@ -28,7 +28,7 @@
var/datum/port/input/signal_off
/// Reference to the BCI we're implanted inside
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
/// Assoc list of REF to the target atom to the overlay alt appearance it is using
var/list/active_overlays = list()
@@ -66,7 +66,7 @@
options_map = component_options
/obj/item/circuit_component/object_overlay/register_shell(atom/movable/shell)
- if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+ if(istype(shell, /obj/item/organ/cyberimp/bci))
bci = shell
RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
diff --git a/code/modules/wiremod/components/bci/hud/target_intercept.dm b/code/modules/wiremod/components/bci/hud/target_intercept.dm
index 2ee37e8ff4f..016f677f10e 100644
--- a/code/modules/wiremod/components/bci/hud/target_intercept.dm
+++ b/code/modules/wiremod/components/bci/hud/target_intercept.dm
@@ -10,11 +10,11 @@
desc = "Requires a BCI shell. When activated, this component will allow user to target an object using their brain and will output the reference to said object."
category = "BCI"
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
var/datum/port/output/clicked_atom
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
var/intercept_cooldown = 1 SECONDS
/obj/item/circuit_component/target_intercept/populate_ports()
@@ -23,7 +23,7 @@
clicked_atom = add_output_port("Targeted Object", PORT_TYPE_ATOM)
/obj/item/circuit_component/target_intercept/register_shell(atom/movable/shell)
- if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+ if(istype(shell, /obj/item/organ/cyberimp/bci))
bci = shell
RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
diff --git a/code/modules/wiremod/components/bci/install_detector.dm b/code/modules/wiremod/components/bci/install_detector.dm
index 0d39e01214e..123ff9d5162 100644
--- a/code/modules/wiremod/components/bci/install_detector.dm
+++ b/code/modules/wiremod/components/bci/install_detector.dm
@@ -10,13 +10,13 @@
desc = "A component that detects when a BCI is installed or removed from its user."
category = "BCI"
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
var/datum/port/output/implanted
var/datum/port/output/removed
var/datum/port/output/current_state
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
/obj/item/circuit_component/install_detector/populate_ports()
. = ..()
@@ -26,7 +26,7 @@
/obj/item/circuit_component/install_detector/register_shell(atom/movable/shell)
. = ..()
- if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+ if(istype(shell, /obj/item/organ/cyberimp/bci))
bci = shell
RegisterSignal(shell, COMSIG_ORGAN_IMPLANTED, PROC_REF(on_organ_implanted))
RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
diff --git a/code/modules/wiremod/components/bci/reagent_injector.dm b/code/modules/wiremod/components/bci/reagent_injector.dm
index ef9188d7bdc..73b685a39db 100644
--- a/code/modules/wiremod/components/bci/reagent_injector.dm
+++ b/code/modules/wiremod/components/bci/reagent_injector.dm
@@ -11,12 +11,12 @@
category = "BCI"
circuit_flags = CIRCUIT_NO_DUPLICATES
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
var/datum/port/input/inject
var/datum/port/output/injected
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
/obj/item/circuit_component/reagent_injector/Initialize(mapload)
. = ..()
@@ -41,7 +41,7 @@
/obj/item/circuit_component/reagent_injector/register_shell(atom/movable/shell)
. = ..()
- if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+ if(istype(shell, /obj/item/organ/cyberimp/bci))
bci = shell
bci.create_reagents(15, OPENCONTAINER)
if(reagents.total_volume)
diff --git a/code/modules/wiremod/components/bci/thought_listener.dm b/code/modules/wiremod/components/bci/thought_listener.dm
index ed6226a4e49..f76f53b6ba2 100644
--- a/code/modules/wiremod/components/bci/thought_listener.dm
+++ b/code/modules/wiremod/components/bci/thought_listener.dm
@@ -10,7 +10,7 @@
desc = "A component that allows the user to input a string using their mind. Requires a BCI shell."
category = "BCI"
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
var/datum/port/input/input_name
var/datum/port/input/input_desc
@@ -20,7 +20,7 @@
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
var/ready = TRUE
/obj/item/circuit_component/thought_listener/populate_ports()
@@ -31,7 +31,7 @@
failure = add_output_port("On Failure", PORT_TYPE_SIGNAL)
/obj/item/circuit_component/thought_listener/register_shell(atom/movable/shell)
- if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+ if(istype(shell, /obj/item/organ/cyberimp/bci))
bci = shell
/obj/item/circuit_component/thought_listener/unregister_shell(atom/movable/shell)
diff --git a/code/modules/wiremod/components/bci/vox.dm b/code/modules/wiremod/components/bci/vox.dm
index 420140a7fde..8749d1b72b6 100644
--- a/code/modules/wiremod/components/bci/vox.dm
+++ b/code/modules/wiremod/components/bci/vox.dm
@@ -10,7 +10,7 @@
desc = "A component that plays a local VOX Announcement for the user. Requires a BCI shell."
category = "BCI"
- required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+ required_shells = list(/obj/item/organ/cyberimp/bci)
var/datum/port/input/option/type_option
var/current_type
@@ -19,7 +19,7 @@
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
/obj/item/circuit_component/vox/populate_options()
type_option = add_option_port("VOX Type", list(PORT_TYPE_LIST(PORT_TYPE_STRING), PORT_TYPE_STRING))
@@ -28,7 +28,7 @@
word_list = add_input_port("Word List", PORT_TYPE_LIST(PORT_TYPE_STRING))
/obj/item/circuit_component/vox/register_shell(atom/movable/shell)
- if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+ if(istype(shell, /obj/item/organ/cyberimp/bci))
bci = shell
/obj/item/circuit_component/vox/unregister_shell(atom/movable/shell)
diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm
index e3ddf54135a..29147aefa94 100644
--- a/code/modules/wiremod/shell/brain_computer_interface.dm
+++ b/code/modules/wiremod/shell/brain_computer_interface.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/bci
+/obj/item/organ/cyberimp/bci
name = "brain-computer interface"
desc = "An implant that can be placed in a user's head to control circuits using their brain."
icon = 'icons/obj/science/circuits.dmi'
@@ -6,7 +6,7 @@
zone = BODY_ZONE_HEAD
w_class = WEIGHT_CLASS_TINY
-/obj/item/organ/internal/cyberimp/bci/Initialize(mapload)
+/obj/item/organ/cyberimp/bci/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_CIRCUIT_ACTION_COMPONENT_REGISTERED, PROC_REF(action_comp_registered))
@@ -19,7 +19,7 @@
new /obj/item/circuit_component/bci_core,
), SHELL_CAPACITY_SMALL, starting_circuit = circuit)
-/obj/item/organ/internal/cyberimp/bci/say(
+/obj/item/organ/cyberimp/bci/say(
message,
bubble_type,
list/spans = list(),
@@ -43,11 +43,11 @@
return ..()
-/obj/item/organ/internal/cyberimp/bci/proc/action_comp_registered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
+/obj/item/organ/cyberimp/bci/proc/action_comp_registered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
SIGNAL_HANDLER
LAZYADD(actions, new/datum/action/innate/bci_action(src, action_comp))
-/obj/item/organ/internal/cyberimp/bci/proc/action_comp_unregistered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
+/obj/item/organ/cyberimp/bci/proc/action_comp_unregistered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
SIGNAL_HANDLER
var/datum/action/innate/bci_action/action = action_comp.granted_to[REF(src)]
if(!istype(action))
@@ -61,10 +61,10 @@
check_flags = AB_CHECK_CONSCIOUS
button_icon_state = "bci_power"
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
var/obj/item/circuit_component/equipment_action/circuit_component
-/datum/action/innate/bci_action/New(obj/item/organ/internal/cyberimp/bci/_bci, obj/item/circuit_component/equipment_action/circuit_component)
+/datum/action/innate/bci_action/New(obj/item/organ/cyberimp/bci/_bci, obj/item/circuit_component/equipment_action/circuit_component)
..()
bci = _bci
circuit_component.granted_to[REF(_bci)] = src
@@ -95,7 +95,7 @@
var/datum/weakref/user
- var/obj/item/organ/internal/cyberimp/bci/bci
+ var/obj/item/organ/cyberimp/bci/bci
/obj/item/circuit_component/bci_core/populate_ports()
@@ -290,7 +290,7 @@
var/busy_icon_state
var/locked = FALSE
- var/obj/item/organ/internal/cyberimp/bci/bci_to_implant
+ var/obj/item/organ/cyberimp/bci/bci_to_implant
COOLDOWN_DECLARE(message_cooldown)
@@ -365,13 +365,13 @@
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
/obj/machinery/bci_implanter/attackby(obj/item/weapon, mob/user, params)
- var/obj/item/organ/internal/cyberimp/bci/new_bci = weapon
+ var/obj/item/organ/cyberimp/bci/new_bci = weapon
if (istype(new_bci))
if (!(locate(/obj/item/integrated_circuit) in new_bci))
balloon_alert(user, "bci has no circuit!")
return
- var/obj/item/organ/internal/cyberimp/bci/previous_bci_to_implant = bci_to_implant
+ var/obj/item/organ/cyberimp/bci/previous_bci_to_implant = bci_to_implant
user.transferItemToLoc(weapon, src)
bci_to_implant = weapon
@@ -428,7 +428,7 @@
playsound(loc, 'sound/machines/ping.ogg', 30, FALSE)
- var/obj/item/organ/internal/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/internal/cyberimp/bci)
+ var/obj/item/organ/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/cyberimp/bci)
if (bci_organ)
bci_organ.Remove(carbon_occupant)
@@ -460,7 +460,7 @@
var/mob/living/carbon/carbon_occupant = occupant
if (istype(occupant))
- var/obj/item/organ/internal/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/internal/cyberimp/bci)
+ var/obj/item/organ/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/cyberimp/bci)
if (isnull(bci_organ) && isnull(bci_to_implant))
say("No brain-computer interface inserted, and occupant does not have one. Insert a BCI to implant one.")
playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
diff --git a/code/modules/wiremod/shell/shell_items.dm b/code/modules/wiremod/shell/shell_items.dm
index bad787033f9..0db08ab7bb8 100644
--- a/code/modules/wiremod/shell/shell_items.dm
+++ b/code/modules/wiremod/shell/shell_items.dm
@@ -63,7 +63,7 @@
/obj/item/shell/bci
name = "brain-computer interface assembly"
icon_state = "bci-open"
- shell_to_spawn = /obj/item/organ/internal/cyberimp/bci
+ shell_to_spawn = /obj/item/organ/cyberimp/bci
w_class = WEIGHT_CLASS_TINY
/obj/item/shell/scanner_gate
diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm
index 894eeeeeb21..db7257dc957 100644
--- a/code/modules/zombie/items.dm
+++ b/code/modules/zombie/items.dm
@@ -51,7 +51,7 @@
if(limb_armor > limb_damage)
return
- var/obj/item/organ/internal/zombie_infection/infection
+ var/obj/item/organ/zombie_infection/infection
infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE)
if(!infection)
infection = new()
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index bd8646ccb78..f6f21b7e1ee 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/zombie_infection
+/obj/item/organ/zombie_infection
name = "festering ooze"
desc = "A black web of pus and viscera."
zone = BODY_ZONE_HEAD
@@ -13,22 +13,22 @@
var/revive_time_max = 700
var/timer_id
-/obj/item/organ/internal/zombie_infection/Initialize(mapload)
+/obj/item/organ/zombie_infection/Initialize(mapload)
. = ..()
if(iscarbon(loc))
Insert(loc)
GLOB.zombie_infection_list += src
-/obj/item/organ/internal/zombie_infection/Destroy()
+/obj/item/organ/zombie_infection/Destroy()
GLOB.zombie_infection_list -= src
. = ..()
-/obj/item/organ/internal/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags)
+/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags)
. = ..()
START_PROCESSING(SSobj, src)
-/obj/item/organ/internal/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE)
+/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE)
. = ..()
STOP_PROCESSING(SSobj, src)
if(iszombie(M) && old_species && !special)
@@ -36,25 +36,25 @@
if(timer_id)
deltimer(timer_id)
-/obj/item/organ/internal/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died))
-/obj/item/organ/internal/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH)
-/obj/item/organ/internal/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed)
+/obj/item/organ/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed)
SIGNAL_HANDLER
if(iszombie(source))
qdel(src) // Congrats you somehow died so hard you stopped being a zombie
-/obj/item/organ/internal/zombie_infection/on_find(mob/living/finder)
+/obj/item/organ/zombie_infection/on_find(mob/living/finder)
to_chat(finder, span_warning("Inside the head is a disgusting black \
web of pus and viscera, bound tightly around the brain like some \
biological harness."))
-/obj/item/organ/internal/zombie_infection/process(seconds_per_tick, times_fired)
+/obj/item/organ/zombie_infection/process(seconds_per_tick, times_fired)
if(!owner)
return
if(!(src in owner.organs))
@@ -65,7 +65,7 @@
owner.adjustToxLoss(0.5 * seconds_per_tick)
if (SPT_PROB(5, seconds_per_tick))
to_chat(owner, span_danger("You feel sick..."))
- if(timer_id || HAS_TRAIT(owner, TRAIT_SUICIDED) || !owner.get_organ_by_type(/obj/item/organ/internal/brain))
+ if(timer_id || HAS_TRAIT(owner, TRAIT_SUICIDED) || !owner.get_organ_by_type(/obj/item/organ/brain))
return
if(owner.stat != DEAD && !converts_living)
return
@@ -77,7 +77,7 @@
var/flags = TIMER_STOPPABLE
timer_id = addtimer(CALLBACK(src, PROC_REF(zombify), owner), revive_time, flags)
-/obj/item/organ/internal/zombie_infection/proc/zombify(mob/living/carbon/target)
+/obj/item/organ/zombie_infection/proc/zombify(mob/living/carbon/target)
timer_id = null
if(!converts_living && owner.stat != DEAD)
@@ -99,5 +99,5 @@
target.do_jitter_animation(living_transformation_time)
target.Stun(living_transformation_time)
-/obj/item/organ/internal/zombie_infection/nodamage
+/obj/item/organ/zombie_infection/nodamage
causes_damage = FALSE
diff --git a/html/changelogs/AutoChangeLog-pr-87306.yml b/html/changelogs/AutoChangeLog-pr-87306.yml
new file mode 100644
index 00000000000..5117e29fac8
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87306.yml
@@ -0,0 +1,5 @@
+author: "necromanceranne"
+delete-after: True
+changes:
+ - code_imp: "Introduces a INHALE method for reagent transfer. Cigarettes and smoke reactions use this new method."
+ - balance: "Nitrous oxide now brain damage if you inhale it. So don't do that."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87329.yml b/html/changelogs/AutoChangeLog-pr-87329.yml
new file mode 100644
index 00000000000..703c0b9fdb9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87329.yml
@@ -0,0 +1,16 @@
+author: "00-Steven"
+delete-after: True
+changes:
+ - refactor: "Refactored tasting code. Please report any jank tasting behaviours."
+ - bugfix: "You taste what you eat instead of the contents of your own stomach."
+ - bugfix: "Other basic nutriment subtypes also carry food flavours, instead of outweighing the food flavours with their lack of flavour."
+ - bugfix: "Basic nutriment subtypes have a flavour they default to, in case of not carrying any food flavours."
+ - bugfix: "Oils taste like oil instead of tasting indescribable."
+ - bugfix: "Clothing eaten by moths actually carries its flavours instead of tasting indescribable."
+ - bugfix: "Organs use organ tissue instead of nutriment."
+ - bugfix: "You can actually taste organ tissue."
+ - qol: "Mineral slurry tastes like minerals instead of tasting indescribable."
+ - bugfix: "Tasted flavours can actually be \"strong\" in addition to mild or \"a hint of\", as intended."
+ - qol: "Flavours are only strong when their percentage of what you're tasting is more than 4x taste sensitivity instead of 3x, for most default tongues being 60% and lizards 40% of the drink."
+ - qol: "Tasted flavours are sorted by strength, stronger flavours coming first."
+ - qol: "Tasted flavours are grouped into \"strong\", \"mild\", and \"hint\" in the message, replacing \"You can taste a hint of bitterness, alcohol, a hint of sweetness, and a hint of cola\" with \"You can taste alcohol and a hint of bitterness, sweetness, and cola\"."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87434.yml b/html/changelogs/AutoChangeLog-pr-87434.yml
new file mode 100644
index 00000000000..a59dd32cdf1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87434.yml
@@ -0,0 +1,7 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - code_imp: "Removed internal/external pathing from organs in favor of a bit flag. Hopefully this shouldn't break anything about organs."
+ - bugfix: "Fixed invisible fox ears."
+ - bugfix: "Fixed mushpeople caps not being colored red by default."
+ - rscadd: "You can now dye most tails, podpeople hair, mushpeople caps etc. with a hair dye spray."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87622.yml b/html/changelogs/AutoChangeLog-pr-87622.yml
new file mode 100644
index 00000000000..03a06eab36c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87622.yml
@@ -0,0 +1,4 @@
+author: "carlarctg"
+delete-after: True
+changes:
+ - bugfix: "vampires are a human subtype & have stomachs/lungs"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87726.yml b/html/changelogs/AutoChangeLog-pr-87726.yml
new file mode 100644
index 00000000000..a61ff714127
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87726.yml
@@ -0,0 +1,10 @@
+author: "Fikou"
+delete-after: True
+changes:
+ - bugfix: "a modsuit being deleted will delete its parts correctly"
+ - bugfix: "a modsuit needs its boots out to be moved by an AI"
+ - qol: "you can extend or retract a modsuits parts from the ui panel"
+ - qol: "modsuit cores have colorcoded charge bars in the ui panel"
+ - qol: "weapon recall module makes you pick up the weapon if its on your tile"
+ - code_imp: "tether module has its own button for cutting tethers instead of stealing it from pins"
+ - bugfix: "armor booster doesnt protect from head injury without the helmet on"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87782.yml b/html/changelogs/AutoChangeLog-pr-87782.yml
new file mode 100644
index 00000000000..1e83a98093d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87782.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+ - refactor: "Eye color effects are now controlled via a new overrides system, which should prevent conflicts between different sources."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87789.yml b/html/changelogs/AutoChangeLog-pr-87789.yml
new file mode 100644
index 00000000000..062e7ea55b1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87789.yml
@@ -0,0 +1,4 @@
+author: "larentoun"
+delete-after: True
+changes:
+ - bugfix: "Fixes a runtime when wingless creature flaps their wings"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87792.yml b/html/changelogs/AutoChangeLog-pr-87792.yml
new file mode 100644
index 00000000000..e8ff0af1935
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87792.yml
@@ -0,0 +1,4 @@
+author: "GremlinSeeker"
+delete-after: True
+changes:
+ - bugfix: "Syndicate Biodome fixes"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87869.yml b/html/changelogs/AutoChangeLog-pr-87869.yml
new file mode 100644
index 00000000000..41532da0005
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87869.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+ - bugfix: "Fixed ayylmao's brain examine lines"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87898.yml b/html/changelogs/AutoChangeLog-pr-87898.yml
new file mode 100644
index 00000000000..aa4f5a81aa9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87898.yml
@@ -0,0 +1,4 @@
+author: "xPokee"
+delete-after: True
+changes:
+ - bugfix: "fixed brains turning invisible after being washed"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-88326.yml b/html/changelogs/AutoChangeLog-pr-88326.yml
new file mode 100644
index 00000000000..7059d4747e1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-88326.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+ - sound: "Modsuits no longer horrifically screech when taken off"
\ No newline at end of file
diff --git a/modular_nova/master_files/code/datums/components/damage_tracker.dm b/modular_nova/master_files/code/datums/components/damage_tracker.dm
index 58538f5ebfc..3012a1b1413 100644
--- a/modular_nova/master_files/code/datums/components/damage_tracker.dm
+++ b/modular_nova/master_files/code/datums/components/damage_tracker.dm
@@ -86,13 +86,13 @@
if(length(current_trauma_list))
trauma_list = current_trauma_list.Copy()
- heart_damage = human_parent.check_organ_damage(/obj/item/organ/internal/heart)
- liver_damage = human_parent.check_organ_damage(/obj/item/organ/internal/liver)
- lung_damage = human_parent.check_organ_damage(/obj/item/organ/internal/lungs)
- stomach_damage = human_parent.check_organ_damage(/obj/item/organ/internal/stomach)
- brain_damage = human_parent.check_organ_damage(/obj/item/organ/internal/brain)
- eye_damage = human_parent.check_organ_damage(/obj/item/organ/internal/eyes)
- ear_damage = human_parent.check_organ_damage(/obj/item/organ/internal/ears)
+ heart_damage = human_parent.check_organ_damage(/obj/item/organ/heart)
+ liver_damage = human_parent.check_organ_damage(/obj/item/organ/liver)
+ lung_damage = human_parent.check_organ_damage(/obj/item/organ/lungs)
+ stomach_damage = human_parent.check_organ_damage(/obj/item/organ/stomach)
+ brain_damage = human_parent.check_organ_damage(/obj/item/organ/brain)
+ eye_damage = human_parent.check_organ_damage(/obj/item/organ/eyes)
+ ear_damage = human_parent.check_organ_damage(/obj/item/organ/ears)
return TRUE
@@ -110,7 +110,7 @@
human_parent.setOrganLoss(ORGAN_SLOT_EARS, ear_damage)
human_parent.setOrganLoss(ORGAN_SLOT_BRAIN, brain_damage)
- var/obj/item/organ/internal/brain/human_brain = human_parent.get_organ_by_type(/obj/item/organ/internal/brain)
+ var/obj/item/organ/brain/human_brain = human_parent.get_organ_by_type(/obj/item/organ/brain)
if(!human_brain)
return FALSE
diff --git a/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm b/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm
index a4224b926a7..6591bddd8cf 100644
--- a/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm
+++ b/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm
@@ -10,7 +10,7 @@
severity = 2
if ("Sensitive")
severity = 1
- var/obj/item/organ/internal/eyes/holder_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/holder_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
restore_eyes(holder_eyes) // add_unique() happens after add() so we need to jank reset this to ensure sensitivity is properly applied at roundstart
check_eyes(holder_eyes)
diff --git a/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm b/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm
index a0f3a8536c6..aed6524f27d 100644
--- a/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm
+++ b/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm
@@ -1,9 +1,9 @@
/datum/quirk/equipping/lungs
abstract_parent_type = /datum/quirk/equipping/lungs
icon = FA_ICON_LUNGS
- var/obj/item/organ/internal/lungs/lungs_holding
- var/obj/item/organ/internal/lungs/lungs_added
- var/lungs_typepath = /obj/item/organ/internal/lungs
+ var/obj/item/organ/lungs/lungs_holding
+ var/obj/item/organ/lungs/lungs_added
+ var/lungs_typepath = /obj/item/organ/lungs
items = list(/obj/item/clothing/accessory/breathing = list(ITEM_SLOT_BACKPACK))
var/breath_type = "oxygen"
@@ -26,7 +26,7 @@
var/mob/living/carbon/carbon_holder = quirk_holder
if (!istype(carbon_holder) || !istype(lungs_holding))
return
- var/obj/item/organ/internal/lungs/lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
if (lungs != lungs_added && lungs != lungs_holding)
qdel(lungs_holding)
return
@@ -80,7 +80,7 @@
forced_items = list(
/obj/item/clothing/mask/breath = list(ITEM_SLOT_MASK),
/obj/item/tank/internals/nitrogen/belt/full = list(ITEM_SLOT_HANDS, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET))
- lungs_typepath = /obj/item/organ/internal/lungs/nitrogen
+ lungs_typepath = /obj/item/organ/lungs/nitrogen
breath_type = "nitrogen"
/datum/quirk/equipping/lungs/nitrogen/on_equip_item(obj/item/equipped, success)
diff --git a/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm b/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm
index 2c3d0e06766..1fe14205615 100644
--- a/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm
+++ b/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm
@@ -21,7 +21,7 @@
var/mob/living/carbon/human/target = quirk_holder
// if we have more sensitive eyes, increase the power
- var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
if (!istype(target_eyes))
return
var/infravision_multiplier = max(0, (-(target_eyes.flash_protect) * NOVA_NIGHT_VISION_SENSITIVITY_MULT)) + 1
diff --git a/modular_nova/master_files/code/datums/traits/good.dm b/modular_nova/master_files/code/datums/traits/good.dm
index e201c61710f..6574c220540 100644
--- a/modular_nova/master_files/code/datums/traits/good.dm
+++ b/modular_nova/master_files/code/datums/traits/good.dm
@@ -138,7 +138,7 @@
lose_text = span_danger("Your appendix has magically.. regrown?")
medical_record_text = "Patient had appendicitis in the past and has had their appendix surgically removed."
/// The mob's original appendix
- var/obj/item/organ/internal/appendix/old_appendix
+ var/obj/item/organ/appendix/old_appendix
/datum/quirk/no_appendix/post_add()
var/mob/living/carbon/carbon_quirk_holder = quirk_holder
@@ -158,7 +158,7 @@
if(isnull(old_appendix))
return
- var/obj/item/organ/internal/appendix/current_appendix = carbon_quirk_holder.get_organ_slot(ORGAN_SLOT_APPENDIX)
+ var/obj/item/organ/appendix/current_appendix = carbon_quirk_holder.get_organ_slot(ORGAN_SLOT_APPENDIX)
// if we have not gained an appendix already, put the old one back
if(isnull(current_appendix))
diff --git a/modular_nova/master_files/code/datums/traits/neutral.dm b/modular_nova/master_files/code/datums/traits/neutral.dm
index 4609bc80997..3e3365dd259 100644
--- a/modular_nova/master_files/code/datums/traits/neutral.dm
+++ b/modular_nova/master_files/code/datums/traits/neutral.dm
@@ -238,7 +238,7 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
/datum/quirk/feline_aspect/add_unique(client/client_source)
var/mob/living/carbon/human/human_holder = quirk_holder
- var/obj/item/organ/internal/tongue/cat/new_tongue = new(get_turf(human_holder))
+ var/obj/item/organ/tongue/cat/new_tongue = new(get_turf(human_holder))
ADD_TRAIT(human_holder, TRAIT_WATER_HATER, QUIRK_TRAIT)
@@ -247,7 +247,7 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
/datum/quirk/feline_aspect/remove()
var/mob/living/carbon/human/human_holder = quirk_holder
- var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue
+ var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue
REMOVE_TRAIT(human_holder, TRAIT_WATER_HATER, QUIRK_TRAIT)
@@ -266,14 +266,14 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
/datum/quirk/canine_aspect/add_unique(client/client_source)
var/mob/living/carbon/human/human_holder = quirk_holder
- var/obj/item/organ/internal/tongue/dog/new_tongue = new(get_turf(human_holder))
+ var/obj/item/organ/tongue/dog/new_tongue = new(get_turf(human_holder))
new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
/datum/quirk/canine_aspect/remove()
var/mob/living/carbon/human/human_holder = quirk_holder
- var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue
+ var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue
new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
@@ -290,14 +290,14 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
/datum/quirk/avian_aspect/add_unique(client/client_source)
var/mob/living/carbon/human/human_holder = quirk_holder
- var/obj/item/organ/internal/tongue/avian/new_tongue = new(get_turf(human_holder))
+ var/obj/item/organ/tongue/avian/new_tongue = new(get_turf(human_holder))
new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
/datum/quirk/avian_aspect/remove()
var/mob/living/carbon/human/human_holder = quirk_holder
- var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue
+ var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue
new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
diff --git a/modular_nova/master_files/code/modules/client/preferences/brain.dm b/modular_nova/master_files/code/modules/client/preferences/brain.dm
index 5f515577c8a..3a83bd0b191 100644
--- a/modular_nova/master_files/code/modules/client/preferences/brain.dm
+++ b/modular_nova/master_files/code/modules/client/preferences/brain.dm
@@ -14,8 +14,8 @@
if(!issynthetic(target))
return
- var/obj/item/organ/internal/brain/new_brain = target.prefs_get_brain_to_use(value)
- var/obj/item/organ/internal/brain/old_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/new_brain = target.prefs_get_brain_to_use(value)
+ var/obj/item/organ/brain/old_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!new_brain || new_brain == old_brain.type)
return
diff --git a/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm b/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm
index 39e9193fe3e..bfd2876ffe7 100644
--- a/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm
+++ b/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm
@@ -26,7 +26,7 @@ GLOBAL_DATUM_INIT(food_prefs_menu, /datum/food_prefs_menu, new)
to_chat(preferences.parent, span_announce("Your food preferences can't be set because of [fail_reason] choices! Please check your preferences!")) // Sorry, but I don't want folk sleeping on this.
return
- var/obj/item/organ/internal/tongue/target_tongue = target.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/target_tongue = target.get_organ_slot(ORGAN_SLOT_TONGUE)
if(isnull(target_tongue) || !preferences.food_preferences["enabled"])
return
diff --git a/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm b/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm
index b6cc2339a1e..607a22e95ae 100644
--- a/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm
+++ b/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm
@@ -64,7 +64,7 @@
/datum/preference/toggle/eye_emissives/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
value = value && preferences && is_allowed(preferences)
- var/obj/item/organ/internal/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/eyes)
target.emissive_eyes = value
if (istype(eyes_organ))
eyes_organ.is_emissive = value
diff --git a/modular_nova/master_files/code/modules/client/preferences_savefile.dm b/modular_nova/master_files/code/modules/client/preferences_savefile.dm
index 772dfbd2c56..9a0ef4002b7 100644
--- a/modular_nova/master_files/code/modules/client/preferences_savefile.dm
+++ b/modular_nova/master_files/code/modules/client/preferences_savefile.dm
@@ -3,7 +3,7 @@
* You can't really use the non-modular version, least you eventually want asinine merge
* conflicts and/or potentially disastrous issues to arise, so here's your own.
*/
-#define MODULAR_SAVEFILE_VERSION_MAX 6
+#define MODULAR_SAVEFILE_VERSION_MAX 7
#define MODULAR_SAVEFILE_UP_TO_DATE -1
@@ -13,6 +13,7 @@
#define VERSION_UNDERSHIRT_BRA_SPLIT 4
#define VERSION_CHRONOLOGICAL_AGE 5
#define VERSION_TG_LOADOUT 6
+#define VERSION_INTERNAL_EXTERNAL_ORGANS 7
#define INDEX_UNDERWEAR 1
#define INDEX_BRA 2
@@ -35,18 +36,7 @@
if(!save_data)
save_data = list()
- var/list/save_augments = SANITIZE_LIST(save_data["augments"])
- for(var/aug_slot in save_augments)
- var/aug_entry = save_augments[aug_slot]
- save_augments -= aug_slot
-
- if(istext(aug_entry))
- aug_entry = _text2path(aug_entry)
-
- var/datum/augment_item/aug = GLOB.augment_items[aug_entry]
- if(aug)
- save_augments[aug_slot] = aug_entry
- augments = save_augments
+ load_augments(SANITIZE_LIST(save_data["augments"]))
augment_limb_styles = SANITIZE_LIST(save_data["augment_limb_styles"])
for(var/key in augment_limb_styles)
@@ -260,12 +250,24 @@
if(istext(loadout))
loadout = _text2path(loadout)
save_loadout[loadout] = entry
-
var/loadout_list = sanitize_loadout_list(save_loadout)
if (length(loadout_list)) // We only want to write these changes down if we're certain that there was anything in that.
write_preference(GLOB.preference_entries[/datum/preference/loadout], loadout_list)
+ if(current_version < VERSION_INTERNAL_EXTERNAL_ORGANS)
+ var/list/save_augments = SANITIZE_LIST(save_data["augments"])
+ var/prefix_length = length("/obj/item/organ/internal") // Shouldn't be any external augments, but if there are, it's the same length
+ for(var/augment_name in save_augments)
+ var/augment_path_string = save_augments[augment_name]
+ if(!(findtext(augment_path_string, "/obj/item/organ/internal") || findtext(augment_path_string, "/obj/item/organ/external")))
+ continue // Make sure we don't strip something that isn't there
+ var/augment_path_string_stripped = copytext(save_augments[augment_name], prefix_length + 1)
+ save_augments[augment_name] = "/obj/item/organ[augment_path_string_stripped]"
+ load_augments(save_augments)
+
+
+
/datum/preferences/proc/check_migration()
if(!tgui_prefs_migration)
@@ -324,6 +326,20 @@
markings[marking][title] = list(sanitize_hexcolor(markings[marking][title]), FALSE)
return markings
+/datum/preferences/proc/load_augments(list/augments_prefs)
+ var/list/augments_sanitized = list()
+ for(var/aug_slot in augments_prefs)
+ var/aug_entry = augments_prefs[aug_slot]
+
+ if(istext(aug_entry))
+ aug_entry = _text2path(aug_entry)
+
+ var/datum/augment_item/aug = GLOB.augment_items[aug_entry]
+ if(aug)
+ augments_sanitized[aug_slot] = aug_entry
+ augments = augments_sanitized
+
+
#undef MODULAR_SAVEFILE_VERSION_MAX
#undef MODULAR_SAVEFILE_UP_TO_DATE
@@ -333,3 +349,5 @@
#undef VERSION_SYNTH_REFACTOR
#undef VERSION_UNDERSHIRT_BRA_SPLIT
#undef VERSION_CHRONOLOGICAL_AGE
+#undef VERSION_TG_LOADOUT
+#undef VERSION_INTERNAL_EXTERNAL_ORGANS
diff --git a/modular_nova/master_files/code/modules/jobs/prisoner.dm b/modular_nova/master_files/code/modules/jobs/prisoner.dm
index 0b9a4c40bd2..a6b29a39e3c 100644
--- a/modular_nova/master_files/code/modules/jobs/prisoner.dm
+++ b/modular_nova/master_files/code/modules/jobs/prisoner.dm
@@ -4,7 +4,7 @@
var/implants_removed = 0
var/implants_total = 0
- for(var/obj/item/organ/internal/cyberimp/cybernetic in new_prisoner.organs)
+ for(var/obj/item/organ/cyberimp/cybernetic in new_prisoner.organs)
implants_total += 1
if (cybernetic.cannot_confiscate)
continue
diff --git a/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm b/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm
index 08995e8be21..266f525dc98 100644
--- a/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm
+++ b/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/monster_core/try_apply(atom/target, mob/user)
+/obj/item/organ/monster_core/try_apply(atom/target, mob/user)
if (istype(target, /obj/structure/lavaland/ash_walker))
target.attackby(src, user)
return
diff --git a/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm b/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm
index 85028e2a910..b605cae46d0 100644
--- a/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm
+++ b/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm
@@ -34,7 +34,7 @@
if(PREVIEW_PREF_NAKED)
mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS | UNDERWEAR_HIDE_BRA
for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS))
- var/obj/item/organ/external/genital/gent = mannequin.get_organ_slot(organ_key)
+ var/obj/item/organ/genital/gent = mannequin.get_organ_slot(organ_key)
if(gent)
gent.aroused = AROUSAL_NONE
gent.update_sprite_suffix()
@@ -42,7 +42,7 @@
if(PREVIEW_PREF_NAKED_AROUSED)
mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS | UNDERWEAR_HIDE_BRA
for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS))
- var/obj/item/organ/external/genital/gent = mannequin.get_organ_slot(organ_key)
+ var/obj/item/organ/genital/gent = mannequin.get_organ_slot(organ_key)
if(gent)
gent.aroused = AROUSAL_FULL
gent.update_sprite_suffix()
diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/death.dm b/modular_nova/master_files/code/modules/mob/living/carbon/death.dm
index b96b7ce57c3..6e31008fec3 100644
--- a/modular_nova/master_files/code/modules/mob/living/carbon/death.dm
+++ b/modular_nova/master_files/code/modules/mob/living/carbon/death.dm
@@ -7,7 +7,7 @@
organs.Remove(organ)
// synth brains always drop when gibbed, by default
- var/obj/item/organ/internal/brain/synth/synth_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/synth/synth_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
if(istype(synth_brain))
drop_bitflags |= DROP_BRAIN
diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm b/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm
index 92412c82785..7e416865a7a 100644
--- a/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm
+++ b/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm
@@ -1,8 +1,8 @@
#define SHELL_TRANSPARENCY_ALPHA 90
/datum/species/snail
- mutantliver = /obj/item/organ/internal/liver/snail //This is just a better liver to deal with toxins, it's a thematic thing.
- mutantheart = /obj/item/organ/internal/heart/snail //This gives them the shell buff where they take less damage from behind, and their heart's more durable.
+ mutantliver = /obj/item/organ/liver/snail //This is just a better liver to deal with toxins, it's a thematic thing.
+ mutantheart = /obj/item/organ/heart/snail //This gives them the shell buff where they take less damage from behind, and their heart's more durable.
exotic_blood = null
/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load)
diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm b/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm
index d7b16d45d49..1e787fdfc15 100644
--- a/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm
+++ b/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm
@@ -4,7 +4,7 @@
var/t_He = p_They()
var/t_is = p_are()
//This checks to see if the body is revivable
- if((key || !get_organ_by_type(/obj/item/organ/internal/brain) || ghost?.can_reenter_corpse) && (!HAS_TRAIT(src, TRAIT_DNR)))
+ if((key || !get_organ_by_type(/obj/item/organ/brain) || ghost?.can_reenter_corpse) && (!HAS_TRAIT(src, TRAIT_DNR)))
return span_deadsay("[t_He] [t_is] limp and unresponsive; they're still twitching on occasion, perhaps [p_they()] can still be saved..!")
else
return span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life and they've degraded beyond revival...")
diff --git a/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm b/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm
index 9a3dd0e95a3..bab02052a8f 100644
--- a/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm
+++ b/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm
@@ -17,7 +17,7 @@
/datum/design/tongue/snail
name = "Snail Tongue"
id = "snailtongue"
- build_path = /obj/item/organ/internal/tongue/snail
+ build_path = /obj/item/organ/tongue/snail
category = list(
SPECIES_SNAIL,
RND_CATEGORY_INITIAL,
@@ -26,7 +26,7 @@
/datum/design/liver/snail
name = "Snail Liver"
id = "snailliver"
- build_path = /obj/item/organ/internal/liver/snail
+ build_path = /obj/item/organ/liver/snail
category = list(
SPECIES_SNAIL,
RND_CATEGORY_INITIAL,
@@ -35,7 +35,7 @@
/datum/design/heart/snail
name = "Snail Heart"
id = "snailheart"
- build_path = /obj/item/organ/internal/heart/snail
+ build_path = /obj/item/organ/heart/snail
category = list(
SPECIES_SNAIL,
RND_CATEGORY_INITIAL,
diff --git a/modular_nova/master_files/code/modules/research/designs/medical_designs.dm b/modular_nova/master_files/code/modules/research/designs/medical_designs.dm
index c2beb545386..ad1d985ef18 100644
--- a/modular_nova/master_files/code/modules/research/designs/medical_designs.dm
+++ b/modular_nova/master_files/code/modules/research/designs/medical_designs.dm
@@ -9,7 +9,7 @@
/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2,
/datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
)
- build_path = /obj/item/organ/internal/tongue/cybernetic
+ build_path = /obj/item/organ/tongue/cybernetic
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1,
)
@@ -19,4 +19,4 @@
name = "Forked Cybernetic Tongue"
desc = "A forked cybernetic tongue."
id = "cybernetic_tongue_lizard"
- build_path = /obj/item/organ/internal/tongue/lizard/cybernetic
+ build_path = /obj/item/organ/tongue/lizard/cybernetic
diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm b/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm
index 61851d2eba1..c6cfcda79c7 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/external/antennae
+/obj/item/organ/antennae
-/obj/item/organ/external/antennae/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/antennae/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(ismoth(organ_owner))
ADD_TRAIT(organ_owner, TRAIT_REAGENT_SCANNER, ORGAN_TRAIT)
-/obj/item/organ/external/antennae/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/antennae/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
REMOVE_TRAIT(organ_owner, TRAIT_REAGENT_SCANNER, ORGAN_TRAIT)
diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm b/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm
index 49d2bf5c752..1fe2fce11f4 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm
@@ -1,3 +1,3 @@
// No free fall softening for everyone - but functional wings get it
-/obj/item/organ/external/wings/functional/can_soften_fall()
+/obj/item/organ/wings/functional/can_soften_fall()
return TRUE
diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm b/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm
index b975cac1d6b..0f6afee5ae9 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm
@@ -1,3 +1,3 @@
// No free fall softening for everyone
-/obj/item/organ/external/wings/functional/can_soften_fall()
+/obj/item/organ/wings/functional/can_soften_fall()
return FALSE
diff --git a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm
index 0e82f86e4d0..a078228dcff 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/appendix/become_inflamed()
+/obj/item/organ/appendix/become_inflamed()
if(!engaged_role_play_check(owner, station = TRUE, dorms = TRUE))
return
diff --git a/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
index c17bd25da42..239f2155d30 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
@@ -1,3 +1,3 @@
-/obj/item/organ/internal/cyberimp
+/obj/item/organ/cyberimp
/// If TRUE, this augment cannot be confiscated at roundstart for roles like prisoner, etc.
var/cannot_confiscate
diff --git a/modular_nova/master_files/code/modules/surgery/organs/tongue.dm b/modular_nova/master_files/code/modules/surgery/organs/tongue.dm
index 301247b5e51..b749c42433c 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/tongue.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/tongue.dm
@@ -1,3 +1,3 @@
// Remove the could_speak_language check from the tongue code. This is a much better solution than trying to grant omnitongue on prefs load, and prevents any funny breakages.
-/obj/item/organ/internal/tongue/could_speak_language(datum/language/language_path)
+/obj/item/organ/tongue/could_speak_language(datum/language/language_path)
return TRUE
diff --git a/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm b/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm
index 1ade5dc4be4..97bdb284f0f 100644
--- a/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm
+++ b/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm
@@ -3,14 +3,14 @@
//this is for revitalizing/preserving regen cores
/obj/structure/lavaland/ash_walker/attackby(obj/item/attacking_item, mob/living/user, params)
- if(!istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core))
+ if(!istype(attacking_item, /obj/item/organ/monster_core/regenerative_core))
return ..()
if(!user.mind.has_antag_datum(/datum/antagonist/ashwalker))
balloon_alert(user, "must be an ashwalker!")
return
- var/obj/item/organ/internal/monster_core/regenerative_core/regen_core = attacking_item
+ var/obj/item/organ/monster_core/regenerative_core/regen_core = attacking_item
if(!regen_core.decay_timer)
balloon_alert(user, "organ already revitalized!")
diff --git a/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm b/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm
index 284e052bfc5..5a71966fb0e 100644
--- a/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm
+++ b/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm
@@ -96,11 +96,11 @@
desc = "Summon a staff that is imbued with the power of the tendril. Requires permission from the mother tendril."
required_components = list(
"north" = /obj/item/stack/sheet/mineral/wood,
- "south" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "south" = /obj/item/organ/monster_core/regenerative_core,
)
consumed_components = list(
/obj/item/stack/sheet/mineral/wood,
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
)
ritual_success_items = list(
/obj/item/ash_staff,
@@ -112,13 +112,13 @@
desc = "Summons a necklace that imbues the wearer with the knowledge of our tongue."
required_components = list(
"north" = /obj/item/stack/sheet/bone,
- "south" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "south" = /obj/item/organ/monster_core/regenerative_core,
"east" = /obj/item/stack/sheet/sinew,
"west" = /obj/item/stack/sheet/sinew,
)
consumed_components = list(
/obj/item/stack/sheet/bone,
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/obj/item/stack/sheet/sinew,
)
ritual_success_items = list(
@@ -147,13 +147,13 @@
name = "Summon Cursed Ash Knife"
desc = "Summons a knife that places a tracking curse on unsuspecting miners who destroy our marked tendrils."
required_components = list(
- "north" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "north" = /obj/item/organ/monster_core/regenerative_core,
"south" = /obj/item/forging/reagent_weapon/dagger,
"east" = /obj/item/stack/sheet/bone,
"west" = /obj/item/stack/sheet/sinew,
)
consumed_components = list(
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/obj/item/forging/reagent_weapon/dagger,
/obj/item/stack/sheet/bone,
/obj/item/stack/sheet/sinew,
@@ -167,13 +167,13 @@
name = "Summon Tendril Seed"
desc = "Summons a seed that, when used in the hand, will cause a tendril to come through at your location."
required_components = list(
- "north" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "north" = /obj/item/organ/monster_core/regenerative_core,
"south" = /obj/item/cursed_dagger,
"east" = /obj/item/crusher_trophy/goliath_tentacle,
"west" = /obj/item/crusher_trophy/watcher_wing,
)
consumed_components = list(
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/obj/item/cursed_dagger,
/obj/item/crusher_trophy/goliath_tentacle,
/obj/item/crusher_trophy/watcher_wing,
@@ -237,13 +237,13 @@
desc = "Those who partake in the ceremony and are ready will age, increasing their value to the kin."
required_components = list(
"north" = /mob/living/carbon/human,
- "south" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "south" = /obj/item/organ/monster_core/regenerative_core,
"east" = /obj/item/stack/sheet/bone,
"west" = /obj/item/stack/sheet/sinew,
)
consumed_components = list(
/mob/living/carbon/human,
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/obj/item/stack/sheet/bone,
/obj/item/stack/sheet/sinew,
)
@@ -258,13 +258,13 @@
name = "Summon Lavaland Creature"
desc = "Summons a random, wild monster from another region in space."
required_components = list(
- "north" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "north" = /obj/item/organ/monster_core/regenerative_core,
"south" = /mob/living/basic/mining/ice_whelp,
"east" = /obj/item/stack/ore/bluespace_crystal,
"west" = /obj/item/stack/ore/bluespace_crystal,
)
consumed_components = list(
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/mob/living/basic/mining/ice_whelp,
/obj/item/stack/ore/bluespace_crystal,
)
@@ -285,13 +285,13 @@
name = "Summon Icemoon Creature"
desc = "Summons a random, wild monster from another region in space."
required_components = list(
- "north" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "north" = /obj/item/organ/monster_core/regenerative_core,
"south" = /obj/item/food/grown/surik,
"east" = /obj/item/stack/ore/bluespace_crystal,
"west" = /obj/item/stack/ore/bluespace_crystal,
)
consumed_components = list(
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/obj/item/food/grown/surik,
/obj/item/stack/ore/bluespace_crystal,
)
@@ -422,13 +422,13 @@
name = "Revive Animal"
desc = "Revives a simple animal that will then become friendly."
required_components = list(
- "north" = /obj/item/organ/internal/monster_core/regenerative_core,
- "south" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "north" = /obj/item/organ/monster_core/regenerative_core,
+ "south" = /obj/item/organ/monster_core/regenerative_core,
"east" = /obj/item/stack/sheet/bone,
"west" = /obj/item/stack/sheet/sinew,
)
consumed_components = list(
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/obj/item/stack/sheet/bone,
/obj/item/stack/sheet/sinew,
)
@@ -486,13 +486,13 @@
desc = "Pacifies creatures in the wastes to come to your aide instead, the tradeoff being your ability to fight."
required_components = list(
"north" = /obj/item/food/grown/ash_flora/fireblossom,
- "south" = /obj/item/organ/internal/monster_core/regenerative_core,
+ "south" = /obj/item/organ/monster_core/regenerative_core,
"east" = /obj/item/stack/sheet/sinew,
"west" = /obj/item/stack/sheet/sinew,
)
consumed_components = list(
/obj/item/food/grown/ash_flora/fireblossom,
- /obj/item/organ/internal/monster_core/regenerative_core,
+ /obj/item/organ/monster_core/regenerative_core,
/obj/item/stack/sheet/sinew,
)
diff --git a/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm b/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm
index 88c255a8f2d..aa76162c67d 100644
--- a/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm
+++ b/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm
@@ -1,5 +1,5 @@
/datum/species/lizard/ashwalker
- mutanteyes = /obj/item/organ/internal/eyes/night_vision/ashwalker
+ mutanteyes = /obj/item/organ/eyes/night_vision/ashwalker
bodypart_overrides = list(
BODY_ZONE_HEAD = /obj/item/bodypart/head/lizard/ashwalker,
BODY_ZONE_CHEST = /obj/item/bodypart/chest/lizard/ashwalker,
diff --git a/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm b/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm
index 24395e3e0f1..1b4f6d2c87c 100644
--- a/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm
+++ b/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm
@@ -41,10 +41,10 @@
/obj/effect/spawner/random/astrum/agent_loot
name = "abductor agent loot"
- loot = list(/obj/item/organ/internal/heart/cybernetic/tier3 = 10,
+ loot = list(/obj/item/organ/heart/cybernetic/tier3 = 10,
/obj/item/clothing/suit/armor/abductor/astrum = 10,
/obj/item/clothing/head/helmet/astrum = 10,
- /obj/item/organ/internal/cyberimp/arm/armblade = 5,
+ /obj/item/organ/cyberimp/arm/armblade = 5,
/obj/effect/gibspawner/generic = 10,
- /obj/item/organ/internal/eyes/alien = 5,
+ /obj/item/organ/eyes/alien = 5,
)
diff --git a/modular_nova/modules/better_vox/code/vox_species.dm b/modular_nova/modules/better_vox/code/vox_species.dm
index 7c708b68616..bdc2f510041 100644
--- a/modular_nova/modules/better_vox/code/vox_species.dm
+++ b/modular_nova/modules/better_vox/code/vox_species.dm
@@ -11,11 +11,11 @@
TRAIT_MUTANT_COLORS,
)
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID
- mutantlungs = /obj/item/organ/internal/lungs/nitrogen/vox
- mutantbrain = /obj/item/organ/internal/brain/vox
+ mutantlungs = /obj/item/organ/lungs/nitrogen/vox
+ mutantbrain = /obj/item/organ/brain/vox
breathid = "n2"
mutant_bodyparts = list()
- mutanttongue = /obj/item/organ/internal/tongue/vox
+ mutanttongue = /obj/item/organ/tongue/vox
payday_modifier = 1.0
outfit_important_for_life = /datum/outfit/vox
species_language_holder = /datum/language_holder/vox
diff --git a/modular_nova/modules/bodyparts/code/moth_bodyparts.dm b/modular_nova/modules/bodyparts/code/moth_bodyparts.dm
index 6fff98d0a7d..1f870b0a9d2 100644
--- a/modular_nova/modules/bodyparts/code/moth_bodyparts.dm
+++ b/modular_nova/modules/bodyparts/code/moth_bodyparts.dm
@@ -14,7 +14,7 @@
icon_state = "moth_chest_m"
limb_id = SPECIES_MOTH
is_dimorphic = TRUE
- wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra)
+ wing_types = list(/obj/item/organ/wings/functional/moth/megamoth, /obj/item/organ/wings/functional/moth/mothra)
bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER)
/obj/item/bodypart/chest/moth/get_butt_sprite()
diff --git a/modular_nova/modules/cargo/code/goodies.dm b/modular_nova/modules/cargo/code/goodies.dm
index 96ac565db88..43e19cdfbde 100644
--- a/modular_nova/modules/cargo/code/goodies.dm
+++ b/modular_nova/modules/cargo/code/goodies.dm
@@ -142,7 +142,7 @@
desc = "Contains a single standard NIF by itself, surgery is required."
cost = CARGO_CRATE_VALUE * 15
contains = list(
- /obj/item/organ/internal/cyberimp/brain/nif/standard,
+ /obj/item/organ/cyberimp/brain/nif/standard,
)
/datum/supply_pack/goody/cheap_nif
@@ -150,7 +150,7 @@
desc = "Contains a single Econo-Deck NIF by itself, surgery is required."
cost = CARGO_CRATE_VALUE * 7.5
contains = list(
- /obj/item/organ/internal/cyberimp/brain/nif/roleplay_model,
+ /obj/item/organ/cyberimp/brain/nif/roleplay_model,
)
/datum/supply_pack/goody/nif_repair_kit
diff --git a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
index e165fd476cd..bc6d28aea04 100644
--- a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
+++ b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
@@ -253,20 +253,20 @@
/datum/armament_entry/company_import/deforest/cyber_implants/razorwire
name = "Razorwire Spool Implant"
- item_type = /obj/item/organ/internal/cyberimp/arm/razorwire
+ item_type = /obj/item/organ/cyberimp/arm/razorwire
/datum/armament_entry/company_import/deforest/cyber_implants/shell_launcher
name = "Shell Launch System Implant"
- item_type = /obj/item/organ/internal/cyberimp/arm/shell_launcher
+ item_type = /obj/item/organ/cyberimp/arm/shell_launcher
/datum/armament_entry/company_import/deforest/cyber_implants/sandy
name = "Qani-Laaca Sensory Computer Implant"
- item_type = /obj/item/organ/internal/cyberimp/sensory_enhancer
+ item_type = /obj/item/organ/cyberimp/sensory_enhancer
cost = PAYCHECK_COMMAND * 5
/datum/armament_entry/company_import/deforest/cyber_implants/hackerman
name = "Binyat Wireless Hacking System Implant"
- item_type = /obj/item/organ/internal/cyberimp/hackerman_deck
+ item_type = /obj/item/organ/cyberimp/hackerman_deck
cost = PAYCHECK_COMMAND * 10
// Modsuit Modules from the medical category, here instead of in Nakamura because nobody buys from this company
diff --git a/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm b/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm
index 0298696b7ef..7dfffbc3394 100644
--- a/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm
+++ b/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm
@@ -1,29 +1,29 @@
/obj/item/storage/organbox/advanced_cyber_eyes
/obj/item/storage/organbox/advanced_cyber_eyes/PopulateContents()
- new /obj/item/organ/internal/eyes/robotic/shield(src)
+ new /obj/item/organ/eyes/robotic/shield(src)
/obj/item/storage/organbox/advanced_cyber_ears
/obj/item/storage/organbox/advanced_cyber_ears/PopulateContents()
- new /obj/item/organ/internal/ears/cybernetic/upgraded(src)
+ new /obj/item/organ/ears/cybernetic/upgraded(src)
/obj/item/storage/organbox/advanced_cyber_heart
/obj/item/storage/organbox/advanced_cyber_heart/PopulateContents()
- new /obj/item/organ/internal/heart/cybernetic/tier3(src)
+ new /obj/item/organ/heart/cybernetic/tier3(src)
/obj/item/storage/organbox/advanced_cyber_liver
/obj/item/storage/organbox/advanced_cyber_liver/PopulateContents()
- new /obj/item/organ/internal/liver/cybernetic/tier3(src)
+ new /obj/item/organ/liver/cybernetic/tier3(src)
/obj/item/storage/organbox/advanced_cyber_lungs
/obj/item/storage/organbox/advanced_cyber_lungs/PopulateContents()
- new /obj/item/organ/internal/lungs/cybernetic/tier3(src)
+ new /obj/item/organ/lungs/cybernetic/tier3(src)
/obj/item/storage/organbox/advanced_cyber_stomach
/obj/item/storage/organbox/advanced_cyber_stomach/PopulateContents()
- new /obj/item/organ/internal/stomach/cybernetic/tier3(src)
+ new /obj/item/organ/stomach/cybernetic/tier3(src)
diff --git a/modular_nova/modules/cortical_borer/code/cortical_borer.dm b/modular_nova/modules/cortical_borer/code/cortical_borer.dm
index f754f62de3b..c88aa15e135 100644
--- a/modular_nova/modules/cortical_borer/code/cortical_borer.dm
+++ b/modular_nova/modules/cortical_borer/code/cortical_borer.dm
@@ -32,27 +32,27 @@ GLOBAL_LIST_EMPTY(cortical_borers)
return FALSE
//so if a person is debrained, the borer is removed
-/obj/item/organ/internal/brain/Remove(mob/living/carbon/target, special = FALSE, movement_flags)
+/obj/item/organ/brain/Remove(mob/living/carbon/target, special = FALSE, movement_flags)
. = ..()
var/mob/living/basic/cortical_borer/cb_inside = target.has_borer()
if(cb_inside)
cb_inside.leave_host()
//borers also create an organ, so you dont need to debrain someone
-/obj/item/organ/internal/borer_body
+/obj/item/organ/borer_body
name = "engorged cortical borer"
desc = "the body of a cortical borer, full of human viscera, blood, and more."
zone = BODY_ZONE_HEAD
/// Ref to the borer who this organ belongs to
var/mob/living/basic/cortical_borer/borer
-/obj/item/organ/internal/borer_body/Destroy()
+/obj/item/organ/borer_body/Destroy()
borer = null
if(owner && HAS_TRAIT_FROM(owner, TRAIT_WEATHER_IMMUNE, "borer_in_host"))
REMOVE_TRAIT(owner, TRAIT_WEATHER_IMMUNE, "borer_in_host")
return ..()
-/obj/item/organ/internal/borer_body/mob_insert(mob/living/carbon/carbon_target, special, movement_flags)
+/obj/item/organ/borer_body/mob_insert(mob/living/carbon/carbon_target, special, movement_flags)
. = ..()
for(var/datum/borer_focus/body_focus as anything in borer.body_focuses)
body_focus.on_add()
@@ -60,7 +60,7 @@ GLOBAL_LIST_EMPTY(cortical_borers)
ADD_TRAIT(carbon_target, TRAIT_WEATHER_IMMUNE, "borer_in_host")
//on removal, force the borer out
-/obj/item/organ/internal/borer_body/mob_remove(mob/living/carbon/carbon_target, special)
+/obj/item/organ/borer_body/mob_remove(mob/living/carbon/carbon_target, special)
. = ..()
var/mob/living/basic/cortical_borer/cb_inside = carbon_target.has_borer()
for(var/datum/borer_focus/body_focus as anything in cb_inside.body_focuses)
@@ -251,7 +251,7 @@ GLOBAL_LIST_EMPTY(cortical_borers)
/mob/living/basic/cortical_borer/Destroy()
if(human_host)
if(human_host.organs)
- var/obj/item/organ/internal/borer_body/borer_organ = locate() in human_host.organs
+ var/obj/item/organ/borer_body/borer_organ = locate() in human_host.organs
borer_organ.Remove(human_host)
if(HAS_TRAIT_FROM(human_host, TRAIT_WEATHER_IMMUNE, "borer_in_host"))
REMOVE_TRAIT(human_host, TRAIT_WEATHER_IMMUNE, "borer_in_host")
@@ -378,7 +378,7 @@ GLOBAL_LIST_EMPTY(cortical_borers)
/mob/living/basic/cortical_borer/proc/leave_host()
if(!human_host)
return
- var/obj/item/organ/internal/borer_body/borer_organ = locate() in human_host.organs
+ var/obj/item/organ/borer_body/borer_organ = locate() in human_host.organs
if(borer_organ)
borer_organ.Remove(human_host)
var/turf/human_turf = get_turf(human_host)
diff --git a/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm b/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm
index 96eeba9e478..4006e93c13b 100644
--- a/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm
+++ b/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm
@@ -298,7 +298,7 @@
cortical_owner.chemical_evolution -= chemical_evo_points
cortical_owner.known_chemicals += reagent_choice.type
cortical_owner.blood_chems_learned++
- var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
if(victim_brain)
cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5 * cortical_owner.host_harm_multiplier)
if(cortical_owner.blood_chems_learned == BLOOD_CHEM_OBJECTIVE)
@@ -335,7 +335,7 @@
cortical_owner.chemical_evolution -= chemical_evo_points
cortical_owner.known_chemicals += reagent_choice
cortical_owner.potential_chemicals -= reagent_choice
- var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
if(victim_brain)
cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5 * cortical_owner.host_harm_multiplier)
owner.balloon_alert(owner, "[initial(reagent_choice.name)] learned")
@@ -366,7 +366,7 @@
cortical_owner.max_chemical_storage += cortical_owner.chem_storage_per_level
cortical_owner.chemical_regen += cortical_owner.chem_regen_per_level
cortical_owner.level += 1
- var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
if(victim_brain)
cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10 * cortical_owner.host_harm_multiplier)
cortical_owner.human_host.adjust_eye_blur(6 SECONDS * cortical_owner.host_harm_multiplier) //about 12 seconds' worth by default
@@ -499,7 +499,7 @@
owner.balloon_alert(owner, "detached from host")
if(!(cortical_owner.upgrade_flags & BORER_STEALTH_MODE))
to_chat(cortical_owner.human_host, span_notice("Something carefully tickles your inner ear..."))
- var/obj/item/organ/internal/borer_body/borer_organ = locate() in cortical_owner.human_host.organs
+ var/obj/item/organ/borer_body/borer_organ = locate() in cortical_owner.human_host.organs
//log the interaction
var/turf/human_turfone = get_turf(cortical_owner.human_host)
var/logging_text = "[key_name(cortical_owner)] left [key_name(cortical_owner.human_host)] at [loc_name(human_turfone)]"
@@ -567,7 +567,7 @@
if(!(cortical_owner.upgrade_flags & BORER_STEALTH_MODE))
to_chat(cortical_owner.human_host, span_notice("A chilling sensation goes down your spine..."))
cortical_owner.copy_languages(cortical_owner.human_host)
- var/obj/item/organ/internal/borer_body/borer_organ = new(cortical_owner.human_host)
+ var/obj/item/organ/borer_body/borer_organ = new(cortical_owner.human_host)
borer_organ.borer = owner
borer_organ.Insert(cortical_owner.human_host)
var/turf/human_turftwo = get_turf(cortical_owner.human_host)
@@ -615,7 +615,7 @@
borer_message = sanitize(borer_message)
var/mob/living/carbon/human/cortical_host = cortical_owner.human_host
to_chat(cortical_host, span_boldwarning("Your voice moves without your permission!"))
- var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
if(victim_brain)
cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * cortical_owner.host_harm_multiplier)
cortical_host.say(message = borer_message, forced = TRUE)
@@ -646,7 +646,7 @@
StartCooldown()
return
produce_egg()
- var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
if(victim_brain)
cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 25 * cortical_owner.host_harm_multiplier)
var/eggroll = rand(1,100)
@@ -718,8 +718,9 @@
cortical_owner.human_host.adjustOxyLoss(-(cortical_owner.human_host.getOxyLoss()*0.5))
if(cortical_owner.human_host.blood_volume < BLOOD_VOLUME_BAD)
cortical_owner.human_host.blood_volume = BLOOD_VOLUME_BAD
- for(var/obj/item/organ/internal/internal_target in cortical_owner.human_host.organs)
- internal_target.apply_organ_damage(-internal_target.damage * 0.5)
+ for(var/obj/item/organ/internal_target in cortical_owner.human_host.organs)
+ if(!(internal_target.organ_flags & ORGAN_EXTERNAL))
+ internal_target.apply_organ_damage(-internal_target.damage * 0.5)
cortical_owner.human_host.revive()
to_chat(cortical_owner.human_host, span_boldwarning("Your heart jumpstarts!"))
owner.balloon_alert(owner, "host revived")
@@ -813,8 +814,8 @@
cortical_owner.chemical_storage -= chemical_cost
var/turf/borer_turf = get_turf(cortical_owner)
var/obj/item/bodypart/chest/chest = cortical_owner.human_host.get_bodypart(BODY_ZONE_CHEST)
- if((!chest || IS_ORGANIC_LIMB(chest)) && !cortical_owner.human_host.get_organ_by_type(/obj/item/organ/internal/empowered_borer_egg))
- var/obj/item/organ/internal/empowered_borer_egg/spawned_egg = new(cortical_owner.human_host)
+ if((!chest || IS_ORGANIC_LIMB(chest)) && !cortical_owner.human_host.get_organ_by_type(/obj/item/organ/empowered_borer_egg))
+ var/obj/item/organ/empowered_borer_egg/spawned_egg = new(cortical_owner.human_host)
spawned_egg.generation = (cortical_owner.generation + 1)
cortical_owner.children_produced += 1
diff --git a/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm b/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm
index 25f8bae9f0e..03fb02548e5 100644
--- a/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm
+++ b/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/empowered_borer_egg
+/obj/item/organ/empowered_borer_egg
name = "strange egg"
desc = "All slimy and yuck."
icon_state = "innards" // not like you'll be seeing this anyway
@@ -10,26 +10,26 @@
/// What generation the egg will be
var/generation = 1
-/obj/item/organ/internal/empowered_borer_egg/on_find(mob/living/finder)
+/obj/item/organ/empowered_borer_egg/on_find(mob/living/finder)
..()
to_chat(finder, span_warning("You found an unknown egg in [owner]'s [zone]!"))
-/obj/item/organ/internal/empowered_borer_egg/Initialize(mapload)
+/obj/item/organ/empowered_borer_egg/Initialize(mapload)
. = ..()
if(iscarbon(loc))
Insert(loc)
-/obj/item/organ/internal/empowered_borer_egg/mob_insert(mob/living/carbon/M, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/empowered_borer_egg/mob_insert(mob/living/carbon/M, special = FALSE, movement_flags = DELETE_IF_REPLACED)
..()
addtimer(CALLBACK(src, PROC_REF(try_burst)), burst_time)
-/obj/item/organ/internal/empowered_borer_egg/mob_remove(mob/living/carbon/M, special = FALSE)
+/obj/item/organ/empowered_borer_egg/mob_remove(mob/living/carbon/M, special = FALSE)
. = ..()
visible_message(span_warning(span_italics("As [src] is cut out of [M], it quickly vibrates and shatters, leaving nothing but some goop!")))
new/obj/effect/decal/cleanable/food/egg_smudge(get_turf(src))
qdel(src)
-/obj/item/organ/internal/empowered_borer_egg/proc/try_burst()
+/obj/item/organ/empowered_borer_egg/proc/try_burst()
if(!owner)
qdel(src)
return
diff --git a/modular_nova/modules/cryosleep/code/cryopod.dm b/modular_nova/modules/cryosleep/code/cryopod.dm
index 410b01fa061..84fb9f562b2 100644
--- a/modular_nova/modules/cryosleep/code/cryopod.dm
+++ b/modular_nova/modules/cryosleep/code/cryopod.dm
@@ -415,7 +415,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod, 32)
// Allows players to cryo others. Checks if they have been AFK for 30 minutes.
if(target.key && user != target)
- if (target.get_organ_by_type(/obj/item/organ/internal/brain) ) //Target the Brain
+ if (target.get_organ_by_type(/obj/item/organ/brain) ) //Target the Brain
if(!target.mind || target.ssd_indicator ) // Is the character empty / AI Controlled
if(target.lastclienttime + ssd_time >= world.time)
to_chat(user, span_notice("You can't put [target] into [src] for another [round(((ssd_time - (world.time - target.lastclienttime)) / (1 MINUTES)), 1)] minutes."))
diff --git a/modular_nova/modules/customization/datums/components/crafting/recipes.dm b/modular_nova/modules/customization/datums/components/crafting/recipes.dm
index 9d88e61442a..fcc9f2665c2 100644
--- a/modular_nova/modules/customization/datums/components/crafting/recipes.dm
+++ b/modular_nova/modules/customization/datums/components/crafting/recipes.dm
@@ -1,10 +1,10 @@
/datum/crafting_recipe/food/haggis
name = "Haggis"
reqs = list(
- /obj/item/organ/internal/heart = 1,
- /obj/item/organ/internal/liver = 1,
- /obj/item/organ/internal/lungs = 1,
- /obj/item/organ/internal/stomach = 1,
+ /obj/item/organ/heart = 1,
+ /obj/item/organ/liver = 1,
+ /obj/item/organ/lungs = 1,
+ /obj/item/organ/stomach = 1,
/obj/item/food/grown/onion = 1,
/obj/item/food/grown/oat = 1,
/datum/reagent/consumable/salt = 1,
diff --git a/modular_nova/modules/customization/datums/dna.dm b/modular_nova/modules/customization/datums/dna.dm
index f504fa1ced6..8882b93ebd6 100644
--- a/modular_nova/modules/customization/datums/dna.dm
+++ b/modular_nova/modules/customization/datums/dna.dm
@@ -201,11 +201,8 @@ GLOBAL_LIST_EMPTY(total_uf_len_by_block)
set_facial_haircolor(sanitize_hexcolor(get_uni_identity_block(structure, DNA_FACIAL_HAIR_COLOR_BLOCK)), update = FALSE)
if(eyeorgancolor_update)
- var/obj/item/organ/internal/eyes/eye_organ = get_organ_slot(ORGAN_SLOT_EYES)
- eye_organ.eye_color_left = eye_color_left
- eye_organ.eye_color_right = eye_color_right
- eye_organ.old_eye_color_left = eye_color_left
- eye_organ.old_eye_color_right = eye_color_right
+ add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
+ add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
if(HAS_TRAIT(src, TRAIT_SHAVED))
set_facial_hairstyle("Shaved", update = FALSE)
diff --git a/modular_nova/modules/customization/modules/client/augment/implants.dm b/modular_nova/modules/customization/modules/client/augment/implants.dm
index 2f9db87a664..3ae6450845a 100644
--- a/modular_nova/modules/customization/modules/client/augment/implants.dm
+++ b/modular_nova/modules/customization/modules/client/augment/implants.dm
@@ -18,7 +18,7 @@
/datum/augment_item/implant/chest/nutriment_pump
name = "Nutriment Pump"
cost = 4
- path = /obj/item/organ/internal/cyberimp/chest/nutriment
+ path = /obj/item/organ/cyberimp/chest/nutriment
//LEFT ARM IMPLANTS
/datum/augment_item/implant/l_arm
@@ -26,62 +26,62 @@
/datum/augment_item/implant/l_arm/charging_implant
name = "Left Charging Cord Implant"
- path = /obj/item/organ/internal/cyberimp/arm/power_cord/left_arm
+ path = /obj/item/organ/cyberimp/arm/power_cord/left_arm
/datum/augment_item/implant/l_arm/civilian_lighter
name = "Left Thumbtip Lighter"
cost = 2
- path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm
+ path = /obj/item/organ/cyberimp/arm/civilian_lighter/left_arm
/datum/augment_item/implant/l_arm/razor_claws
name = "Left Razor Claws (Knife + Wirecutters)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm
+ path = /obj/item/organ/cyberimp/arm/razor_claws/left_arm
/datum/augment_item/implant/l_arm/adjuster
name = "Left Adjuster Implant (Screwdriver + Wrench)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/adjuster/left_arm
+ path = /obj/item/organ/cyberimp/arm/adjuster/left_arm
/datum/augment_item/implant/l_arm/bureaucracy
name = "Left Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm
+ path = /obj/item/organ/cyberimp/arm/bureaucracy/left_arm
/datum/augment_item/implant/l_arm/cargo
name = "Left FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/cargo/left_arm
+ path = /obj/item/organ/cyberimp/arm/cargo/left_arm
/datum/augment_item/implant/l_arm/civilian_barstaff
name = "Left Waitstaff's Toolset Implant (Serving Tray + Rag)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm
+ path = /obj/item/organ/cyberimp/arm/civilian_barstaff/left_arm
/datum/augment_item/implant/l_arm/emt_triage
name = "Left Triage Actuator Implant (Drapes + Retractor + Hemostat)"
cost = 6
- path = /obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm
+ path = /obj/item/organ/cyberimp/arm/emt_triage/left_arm
/datum/augment_item/implant/l_arm/blacksteel_forging
name = "Left Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)"
cost = 6
- path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm
+ path = /obj/item/organ/cyberimp/arm/blacksteel_forging/left_arm
/datum/augment_item/implant/l_arm/arc_welder
name = "Left Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)"
cost = 6
- path = /obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm
+ path = /obj/item/organ/cyberimp/arm/arc_welder/left_arm
/datum/augment_item/implant/l_arm/electrical_toolset
name = "Left Electrical Toolset Implant (Screwdriver + Multitool + Wirecutters)"
cost = 8
- path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm
+ path = /obj/item/organ/cyberimp/arm/electrical_toolset/left_arm
/datum/augment_item/implant/l_arm/mining_drill
name = "Left Daiba Masterworks 'Burrower' Drill"
cost = 8
- path = /obj/item/organ/internal/cyberimp/arm/mining_drill/left_arm
+ path = /obj/item/organ/cyberimp/arm/mining_drill/left_arm
//RIGHT ARM IMPLANTS
/datum/augment_item/implant/r_arm
@@ -89,62 +89,62 @@
/datum/augment_item/implant/r_arm/charging_implant
name = "Right Charging Cord Implant"
- path = /obj/item/organ/internal/cyberimp/arm/power_cord/right_arm
+ path = /obj/item/organ/cyberimp/arm/power_cord/right_arm
/datum/augment_item/implant/r_arm/civilian_lighter
name = "Right Thumbtip Lighter"
cost = 2
- path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm
+ path = /obj/item/organ/cyberimp/arm/civilian_lighter/right_arm
/datum/augment_item/implant/r_arm/razor_claws
name = "Right Razor Claws (Knife + Wirecutters)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm
+ path = /obj/item/organ/cyberimp/arm/razor_claws/right_arm
/datum/augment_item/implant/r_arm/adjuster
name = "Right Adjuster Implant (Screwdriver + Wrench)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/adjuster/right_arm
+ path = /obj/item/organ/cyberimp/arm/adjuster/right_arm
/datum/augment_item/implant/r_arm/bureaucracy
name = "Right Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm
+ path = /obj/item/organ/cyberimp/arm/bureaucracy/right_arm
/datum/augment_item/implant/r_arm/cargo
name = "Right FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/cargo/right_arm
+ path = /obj/item/organ/cyberimp/arm/cargo/right_arm
/datum/augment_item/implant/r_arm/civilian_barstaff
name = "Right Waitstaff's Toolset Implant (Serving Tray + Rag)"
cost = 4
- path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm
+ path = /obj/item/organ/cyberimp/arm/civilian_barstaff/right_arm
/datum/augment_item/implant/r_arm/emt_triage
name = "Right Triage Actuator Implant (Drapes + Retractor + Hemostat)"
cost = 6
- path = /obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm
+ path = /obj/item/organ/cyberimp/arm/emt_triage/right_arm
/datum/augment_item/implant/r_arm/blacksteel_forging
name = "Right Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)"
cost = 6
- path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm
+ path = /obj/item/organ/cyberimp/arm/blacksteel_forging/right_arm
/datum/augment_item/implant/r_arm/arc_welder
name = "Right Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)"
cost = 6
- path = /obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm
+ path = /obj/item/organ/cyberimp/arm/arc_welder/right_arm
/datum/augment_item/implant/r_arm/electrical_toolset
name = "Right Electrical Toolset Implant (Screwdriver + Multitool + Wirecutters)"
cost = 8
- path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm
+ path = /obj/item/organ/cyberimp/arm/electrical_toolset/right_arm
/datum/augment_item/implant/r_arm/mining_drill
name = "Right Daiba Masterworks 'Burrower' Drill"
cost = 8
- path = /obj/item/organ/internal/cyberimp/arm/mining_drill/right_arm
+ path = /obj/item/organ/cyberimp/arm/mining_drill/right_arm
//EYES IMPLANTS
/datum/augment_item/implant/eyes
@@ -157,4 +157,4 @@
/datum/augment_item/implant/mouth/breathing_tube
name = "Breathing Tube"
cost = 2
- path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube
+ path = /obj/item/organ/cyberimp/mouth/breathing_tube
diff --git a/modular_nova/modules/customization/modules/client/augment/organs.dm b/modular_nova/modules/customization/modules/client/augment/organs.dm
index f36feeca16a..ad90326d9bd 100644
--- a/modular_nova/modules/customization/modules/client/augment/organs.dm
+++ b/modular_nova/modules/customization/modules/client/augment/organs.dm
@@ -17,15 +17,15 @@
/datum/augment_item/organ/heart/normal
name = "Organic heart"
- path = /obj/item/organ/internal/heart
+ path = /obj/item/organ/heart
/datum/augment_item/organ/heart/cybernetic
name = "Cybernetic heart"
- path = /obj/item/organ/internal/heart/cybernetic
+ path = /obj/item/organ/heart/cybernetic
/datum/augment_item/organ/heart/synth
name = "Hydraulic pump engine"
- path =/obj/item/organ/internal/heart/synth
+ path =/obj/item/organ/heart/synth
//LUNGS
/datum/augment_item/organ/lungs
@@ -34,28 +34,28 @@
/datum/augment_item/organ/lungs/normal
name = "Organic lungs"
- path = /obj/item/organ/internal/lungs
+ path = /obj/item/organ/lungs
/datum/augment_item/organ/lungs/hot
name = "Lungs Adapted to Heat"
- path = /obj/item/organ/internal/lungs/hot
+ path = /obj/item/organ/lungs/hot
cost = 1
/datum/augment_item/organ/lungs/cold
name = "Cold-Adapted Lungs"
- path = /obj/item/organ/internal/lungs/cold
+ path = /obj/item/organ/lungs/cold
cost = 1
/datum/augment_item/organ/lungs/toxin
name = "Lungs Adapted to Toxins"
- path = /obj/item/organ/internal/lungs/toxin
+ path = /obj/item/organ/lungs/toxin
cost = 1
/datum/augment_item/organ/lungs/oxy
name = "Low-Pressure Adapted Lungs"
- path = /obj/item/organ/internal/lungs/oxy
+ path = /obj/item/organ/lungs/oxy
cost = 1
/datum/augment_item/organ/lungs/cybernetic
name = "Cybernetic lungs"
- path = /obj/item/organ/internal/lungs/cybernetic
+ path = /obj/item/organ/lungs/cybernetic
//LIVERS
/datum/augment_item/organ/liver
@@ -64,15 +64,15 @@
/datum/augment_item/organ/liver/normal
name = "Organic Liver"
- path = /obj/item/organ/internal/liver
+ path = /obj/item/organ/liver
/datum/augment_item/organ/liver/cybernetic
name = "Cybernetic liver"
- path = /obj/item/organ/internal/liver/cybernetic
+ path = /obj/item/organ/liver/cybernetic
/datum/augment_item/organ/liver/synth
name = "Reagent processing unit"
- path = /obj/item/organ/internal/liver/synth
+ path = /obj/item/organ/liver/synth
//STOMACHES
/datum/augment_item/organ/stomach
@@ -81,19 +81,19 @@
/datum/augment_item/organ/stomach/normal
name = "Organic stomach"
- path = /obj/item/organ/internal/stomach
+ path = /obj/item/organ/stomach
/datum/augment_item/organ/stomach/cybernetic
name = "Cybernetic stomach"
- path = /obj/item/organ/internal/stomach/cybernetic
+ path = /obj/item/organ/stomach/cybernetic
/datum/augment_item/organ/stomach/lithovore
name = "Lithovore Stomach"
- path = /obj/item/organ/internal/stomach/lithovore
+ path = /obj/item/organ/stomach/lithovore
/datum/augment_item/organ/stomach/lithovore/apply(mob/living/carbon/human/H, character_setup = FALSE, datum/preferences/prefs)
if(prefs && ("Oversized" in prefs.all_quirks))
- path = /obj/item/organ/internal/stomach/lithovore/oversized
+ path = /obj/item/organ/stomach/lithovore/oversized
return ..()
//EYES
@@ -103,30 +103,30 @@
/datum/augment_item/organ/eyes/normal
name = "Organic eyes"
- path = /obj/item/organ/internal/eyes
+ path = /obj/item/organ/eyes
/datum/augment_item/organ/eyes/cybernetic
name = "Cybernetic eyes"
- path = /obj/item/organ/internal/eyes/robotic
+ path = /obj/item/organ/eyes/robotic
/datum/augment_item/organ/eyes/cybernetic/moth
name = "Cybernetic moth eyes"
- path = /obj/item/organ/internal/eyes/robotic/moth
+ path = /obj/item/organ/eyes/robotic/moth
/datum/augment_item/organ/eyes/highlumi
name = "High-luminosity eyes"
- path = /obj/item/organ/internal/eyes/robotic/glow
+ path = /obj/item/organ/eyes/robotic/glow
cost = 1
/datum/augment_item/organ/eyes/highlumi/moth
name = "High Luminosity Moth Eyes"
- path = /obj/item/organ/internal/eyes/robotic/glow/moth
+ path = /obj/item/organ/eyes/robotic/glow/moth
cost = 1
/datum/augment_item/organ/eyes/binoculars
name = "Digital Magnification Optics (x3)"
cost = 4
- path = /obj/item/organ/internal/eyes/robotic/binoculars
+ path = /obj/item/organ/eyes/robotic/binoculars
//TONGUES
/datum/augment_item/organ/tongue
@@ -135,31 +135,31 @@
/datum/augment_item/organ/tongue/normal
name = "Organic tongue"
- path = /obj/item/organ/internal/tongue/human
+ path = /obj/item/organ/tongue/human
/datum/augment_item/organ/tongue/robo
name = "Robotic voicebox"
- path = /obj/item/organ/internal/tongue/robot
+ path = /obj/item/organ/tongue/robot
/datum/augment_item/organ/tongue/robo/forked
name = "Robotic lizard voicebox"
- path = /obj/item/organ/internal/tongue/lizard/robot
+ path = /obj/item/organ/tongue/lizard/robot
/datum/augment_item/organ/tongue/cybernetic
name = "Cybernetic tongue"
- path = /obj/item/organ/internal/tongue/cybernetic
+ path = /obj/item/organ/tongue/cybernetic
/datum/augment_item/organ/tongue/cybernetic/forked
name = "Forked cybernetic tongue"
- path = /obj/item/organ/internal/tongue/lizard/cybernetic
+ path = /obj/item/organ/tongue/lizard/cybernetic
/datum/augment_item/organ/tongue/forked
name = "Forked tongue"
- path = /obj/item/organ/internal/tongue/lizard
+ path = /obj/item/organ/tongue/lizard
/datum/augment_item/organ/tongue/forked/filterless
name = "Forked tongue (Without TTS Filter)"
- path = /obj/item/organ/internal/tongue/lizard/filterless
+ path = /obj/item/organ/tongue/lizard/filterless
//FF add, for auto-accent for anthropomorphs
/datum/augment_item/organ/tongue/cat
@@ -178,8 +178,8 @@
/datum/augment_item/organ/ears/normal
name = "Organic ears"
- path = /obj/item/organ/internal/ears
+ path = /obj/item/organ/ears
/datum/augment_item/organ/ears/cybernetic
name = "Cybernetic ears"
- path = /obj/item/organ/internal/ears/cybernetic
+ path = /obj/item/organ/ears/cybernetic
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm
index a4a198bad7a..cc8df2056ff 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm
@@ -119,7 +119,7 @@
/datum/sprite_accessory/moth_markings
key = "moth_markings"
generic = "Moth markings"
- // organ_type = /obj/item/organ/external/moth_markings // UNCOMMENT THIS IF THEY EVER FIX IT UPSTREAM, CAN'T BE BOTHERED TO FIX IT MYSELF
+ // organ_type = /obj/item/organ/moth_markings // UNCOMMENT THIS IF THEY EVER FIX IT UPSTREAM, CAN'T BE BOTHERED TO FIX IT MYSELF
/datum/sprite_accessory/moth_markings/is_hidden(mob/living/carbon/human/owner)
return FALSE
@@ -132,7 +132,7 @@
icon = 'modular_nova/master_files/icons/mob/species/podperson_hair.dmi'
key = "pod_hair"
recommended_species = list(SPECIES_PODPERSON, SPECIES_PODPERSON_WEAK)
- organ_type = /obj/item/organ/external/pod_hair
+ organ_type = /obj/item/organ/pod_hair
/datum/sprite_accessory/pod_hair/none
name = SPRITE_ACCESSORY_NONE
@@ -145,7 +145,7 @@
icon = 'icons/mob/human/species/mush_cap.dmi'
relevent_layers = list(BODY_ADJ_LAYER)
color_src = USE_ONE_COLOR
- organ_type = /obj/item/organ/external/mushroom_cap
+ organ_type = /obj/item/organ/mushroom_cap
genetic = TRUE
/datum/sprite_accessory/caps/is_hidden(mob/living/carbon/human/human)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm
index 912387a2406..0331162d5a4 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm
@@ -1,7 +1,7 @@
/datum/sprite_accessory/ears
key = "ears"
generic = "Ears"
- organ_type = /obj/item/organ/internal/ears/mutant
+ organ_type = /obj/item/organ/ears/mutant
relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER)
color_src = USE_MATRIXED_COLORS
genetic = TRUE
@@ -42,7 +42,7 @@
/datum/sprite_accessory/ears/mutant
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/ears.dmi'
- organ_type = /obj/item/organ/internal/ears/mutant
+ organ_type = /obj/item/organ/ears/mutant
color_src = USE_MATRIXED_COLORS
recommended_species = list(SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_HUMANOID, SPECIES_GHOUL)
uses_emissives = TRUE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm
index cc1ca739b28..657041a02c8 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm
@@ -6,7 +6,7 @@
recommended_species = list(SPECIES_MOTH, SPECIES_MAMMAL, SPECIES_INSECT)
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/fluff
+ organ_type = /obj/item/organ/fluff
/datum/sprite_accessory/fluff/moth/none
name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm
index eebdc5cf6aa..5e4d7333a4f 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm
@@ -4,7 +4,7 @@
default_color = DEFAULT_SECONDARY
relevent_layers = list(BODY_ADJ_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/frills
+ organ_type = /obj/item/organ/frills
/datum/sprite_accessory/frills/is_hidden(mob/living/carbon/human/human)
if((human.head?.flags_inv & HIDEEARS) || (key in human.try_hide_mutant_parts))
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm
index 901cb572bd3..cef6945101b 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm
@@ -9,7 +9,7 @@
var/genital_location = GROIN
/datum/sprite_accessory/genital/is_hidden(mob/living/carbon/human/target_mob)
- var/obj/item/organ/external/genital/badonkers = target_mob?.get_organ_slot(associated_organ_slot)
+ var/obj/item/organ/genital/badonkers = target_mob?.get_organ_slot(associated_organ_slot)
if(!badonkers)
return TRUE
switch(badonkers.visibility_preference)
@@ -57,7 +57,7 @@
/datum/sprite_accessory/genital/penis
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/penis_onmob.dmi'
- organ_type = /obj/item/organ/external/genital/penis
+ organ_type = /obj/item/organ/genital/penis
associated_organ_slot = ORGAN_SLOT_PENIS
key = ORGAN_SLOT_PENIS
color_src = USE_MATRIXED_COLORS
@@ -133,7 +133,7 @@
/datum/sprite_accessory/genital/testicles
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/testicles_onmob.dmi'
- organ_type = /obj/item/organ/external/genital/testicles
+ organ_type = /obj/item/organ/genital/testicles
associated_organ_slot = ORGAN_SLOT_TESTICLES
key = ORGAN_SLOT_TESTICLES
always_color_customizable = TRUE
@@ -178,7 +178,7 @@
/datum/sprite_accessory/genital/vagina
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/vagina_onmob.dmi'
- organ_type = /obj/item/organ/external/genital/vagina
+ organ_type = /obj/item/organ/genital/vagina
associated_organ_slot = ORGAN_SLOT_VAGINA
key = ORGAN_SLOT_VAGINA
always_color_customizable = TRUE
@@ -229,7 +229,7 @@
name = "Cloaca"
/datum/sprite_accessory/genital/womb
- organ_type = /obj/item/organ/external/genital/womb
+ organ_type = /obj/item/organ/genital/womb
associated_organ_slot = ORGAN_SLOT_WOMB
key = ORGAN_SLOT_WOMB
genetic = TRUE
@@ -246,7 +246,7 @@
color_src = null
/datum/sprite_accessory/genital/anus
- organ_type = /obj/item/organ/external/genital/anus
+ organ_type = /obj/item/organ/genital/anus
associated_organ_slot = ORGAN_SLOT_ANUS
key = ORGAN_SLOT_ANUS
genetic = TRUE
@@ -264,7 +264,7 @@
/datum/sprite_accessory/genital/breasts
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/breasts_onmob.dmi'
- organ_type = /obj/item/organ/external/genital/breasts
+ organ_type = /obj/item/organ/genital/breasts
associated_organ_slot = ORGAN_SLOT_BREASTS
key = ORGAN_SLOT_BREASTS
always_color_customizable = TRUE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm
index bbf4187fe16..b3d2be38f42 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm
@@ -4,7 +4,7 @@
generic = "Head Accessory"
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/head_accessory
+ organ_type = /obj/item/organ/head_accessory
/datum/sprite_accessory/head_accessory/none
name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm
index eeea4204e80..6e460d035d9 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm
@@ -5,7 +5,7 @@
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/horns.dmi'
default_color = "#555555"
genetic = TRUE
- organ_type = /obj/item/organ/external/horns
+ organ_type = /obj/item/organ/horns
/datum/sprite_accessory/horns/is_hidden(mob/living/carbon/human/wearer)
if(!wearer.head && !wearer.wear_mask)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm
index e75940fb25b..fc5551307bd 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm
@@ -8,7 +8,7 @@
key = MUTANT_SYNTH_SCREEN
generic = "Screen"
relevent_layers = list(BODY_FRONT_UNDER_CLOTHES)
- organ_type = /obj/item/organ/external/synth_screen
+ organ_type = /obj/item/organ/synth_screen
/datum/sprite_accessory/screen/none
name = SPRITE_ACCESSORY_NONE
@@ -151,7 +151,7 @@
generic = "Antenna"
relevent_layers = list(BODY_ADJ_LAYER)
genetic = FALSE
- organ_type = /obj/item/organ/external/synth_antenna
+ organ_type = /obj/item/organ/synth_antenna
/datum/sprite_accessory/antenna/is_hidden(mob/living/carbon/human/wearer)
if(!wearer.head)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm
index 9d0102a7ece..823be356de3 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm
@@ -3,7 +3,7 @@
key = "moth_antennae"
relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/antennae
+ organ_type = /obj/item/organ/antennae
/datum/sprite_accessory/moth_antennae/is_hidden(mob/living/carbon/human/wearer)
if(!wearer.head)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm
index 4d8a2168b63..9ca2eb48970 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm
@@ -4,7 +4,7 @@
generic = "Neck Accessory"
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/neck_accessory
+ organ_type = /obj/item/organ/neck_accessory
/datum/sprite_accessory/neck_accessory/none
name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm
index 37d2f3d78a5..d56ec101489 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm
@@ -5,7 +5,7 @@
color_src = USE_ONE_COLOR
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/skrell_hair
+ organ_type = /obj/item/organ/skrell_hair
/datum/sprite_accessory/skrell_hair/is_hidden(mob/living/carbon/human/wearer)
if((wearer.head?.flags_inv & HIDEHAIR) || (wearer.wear_mask?.flags_inv & HIDEHAIR))
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm
index f71a65adb36..937d515399b 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm
@@ -3,7 +3,7 @@
generic = "Snout"
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/lizard_snouts.dmi'
flags_for_organ = SPRITE_ACCESSORY_USE_MUZZLED_SPRITE
- organ_type = /obj/item/organ/external/snout
+ organ_type = /obj/item/organ/snout
recommended_species = list(SPECIES_MAMMAL, SPECIES_LIZARD, SPECIES_UNATHI, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER)
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
@@ -14,7 +14,7 @@
return FALSE
-/obj/item/organ/external/snout
+/obj/item/organ/snout
mutantpart_key = "snout"
mutantpart_info = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF"))
external_bodyshapes = NONE // We don't actually want this to have by default, since some of them don't apply that.
@@ -30,7 +30,7 @@
return !sprite_datum.is_hidden(human)
-/obj/item/organ/external/snout/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/snout/mob_insert(mob/living/carbon/receiver, special, movement_flags)
if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_MUZZLED_SPRITE)
external_bodyshapes |= BODYSHAPE_SNOUTED
if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_ALT_FACEWEAR_LAYER)
@@ -38,14 +38,14 @@
return ..()
-/obj/item/organ/external/snout/top
+/obj/item/organ/snout/top
bodypart_overlay = /datum/bodypart_overlay/mutant/snout/top
/datum/bodypart_overlay/mutant/snout/top
layers = EXTERNAL_FRONT
-/obj/item/organ/external/snout/top_adj
+/obj/item/organ/snout/top_adj
bodypart_overlay = /datum/bodypart_overlay/mutant/snout/top_adj
/datum/bodypart_overlay/mutant/snout/top_adj
@@ -117,28 +117,28 @@
icon_state = "bug"
flags_for_organ = NONE
color_src = USE_MATRIXED_COLORS
- organ_type = /obj/item/organ/external/snout/top_adj
+ organ_type = /obj/item/organ/snout/top_adj
/datum/sprite_accessory/snouts/mammal/bug_low_eyes
name = "Bug (Eyes Below Hair)"
icon_state = "bug_low_eyes"
flags_for_organ = NONE
color_src = USE_MATRIXED_COLORS
- organ_type = /obj/item/organ/external/snout/top_adj
+ organ_type = /obj/item/organ/snout/top_adj
/datum/sprite_accessory/snouts/mammal/bug_no_ant
name = "Bug (No Antennae, Below Hair)"
icon_state = "bug_no_ant"
flags_for_organ = NONE
color_src = USE_MATRIXED_COLORS
- organ_type = /obj/item/organ/external/snout/top_adj
+ organ_type = /obj/item/organ/snout/top_adj
/datum/sprite_accessory/snouts/mammal/bug_no_ant_low_eyes
name = "Bug (No Antennae, Below Hair, Eyes Below Hair)"
icon_state = "bug_no_ant_low_eyes"
flags_for_organ = NONE
color_src = USE_MATRIXED_COLORS
- organ_type = /obj/item/organ/external/snout/top_adj
+ organ_type = /obj/item/organ/snout/top_adj
/datum/sprite_accessory/snouts/mammal/bug_no_eyes
name = "Bug (No eyes)"
@@ -288,7 +288,7 @@
/datum/sprite_accessory/snouts/mammal/top
flags_for_organ = SPRITE_ACCESSORY_USE_MUZZLED_SPRITE | SPRITE_ACCESSORY_USE_ALT_FACEWEAR_LAYER
- organ_type = /obj/item/organ/external/snout/top
+ organ_type = /obj/item/organ/snout/top
relevent_layers = list(BODY_FRONT_LAYER)
/datum/sprite_accessory/snouts/mammal/top/fbird
@@ -304,7 +304,7 @@
icon_state = "fbug"
flags_for_organ = NONE
color_src = USE_MATRIXED_COLORS
- organ_type = /obj/item/organ/external/snout/top_adj
+ organ_type = /obj/item/organ/snout/top_adj
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/snouts/mammal/top/bug_no_ant
@@ -312,7 +312,7 @@
icon_state = "fbug_no_ant"
flags_for_organ = NONE
color_src = USE_MATRIXED_COLORS
- organ_type = /obj/item/organ/external/snout/top_adj
+ organ_type = /obj/item/organ/snout/top_adj
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/snouts/mammal/top/fdragonfly
@@ -320,7 +320,7 @@
icon_state = "fdragonfly"
flags_for_organ = NONE
color_src = USE_MATRIXED_COLORS
- organ_type = /obj/item/organ/external/snout/top_adj
+ organ_type = /obj/item/organ/snout/top_adj
relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/snouts/mammal/top/felephant
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm
index fb2cf49ad70..e78b1e19ffe 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm
@@ -5,7 +5,7 @@
recommended_species = list(SPECIES_LIZARD, SPECIES_UNATHI, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER)
relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/spines
+ organ_type = /obj/item/organ/spines
/datum/sprite_accessory/spines/is_hidden(mob/living/carbon/human/wearer)
if(wearer.w_uniform)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
index 986e9886cf9..4e8dfc4392f 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
@@ -146,7 +146,7 @@
taur_mode = STYLE_TAUR_PAW
recommended_species = list()
genetic = FALSE
- organ_type = /obj/item/organ/external/taur_body/horselike/synth
+ organ_type = /obj/item/organ/taur_body/horselike/synth
/datum/sprite_accessory/taur/synthliz/inv
name = "Cybernetic Lizard (Inverted)"
@@ -182,4 +182,4 @@
name = "Cybernetic Naga"
icon_state = "synthnaga"
taur_mode = STYLE_TAUR_SNAKE
- organ_type = /obj/item/organ/external/taur_body/serpentine/synth
+ organ_type = /obj/item/organ/taur_body/serpentine/synth
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm
index 99a98131306..ff75a21e44e 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm
@@ -1,7 +1,7 @@
/datum/sprite_accessory/tails
key = "tail"
generic = "Tail"
- organ_type = /obj/item/organ/external/tail
+ organ_type = /obj/item/organ/tail
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
@@ -37,7 +37,7 @@
/datum/sprite_accessory/tails/lizard
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
recommended_species = list(SPECIES_LIZARD, SPECIES_LIZARD_ASH, SPECIES_MAMMAL, SPECIES_UNATHI, SPECIES_LIZARD_SILVER)
- organ_type = /obj/item/organ/external/tail/lizard
+ organ_type = /obj/item/organ/tail/lizard
/datum/sprite_accessory/tails/lizard/short/twotone
name = "Short (Two-Tone)"
@@ -46,14 +46,14 @@
/datum/sprite_accessory/tails/human
recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_GHOUL)
- organ_type = /obj/item/organ/external/tail/cat
+ organ_type = /obj/item/organ/tail/cat
/datum/sprite_accessory/tails/felinid/cat
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
icon_state = "cat"
color_src = USE_ONE_COLOR
recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_GHOUL)
- organ_type = /obj/item/organ/external/tail/cat
+ organ_type = /obj/item/organ/tail/cat
/datum/sprite_accessory/tails/human/monkeyColorable
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
@@ -66,16 +66,16 @@
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
icon_state = "monkey"
recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_MONKEY, SPECIES_GHOUL)
- organ_type = /obj/item/organ/external/tail/monkey
+ organ_type = /obj/item/organ/tail/monkey
/datum/sprite_accessory/tails/mammal
icon_state = "none"
recommended_species = list(SPECIES_MAMMAL,SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_HUMANOID, SPECIES_GHOUL)
- organ_type = /obj/item/organ/external/tail/fluffy/no_wag
+ organ_type = /obj/item/organ/tail/fluffy/no_wag
color_src = USE_MATRIXED_COLORS
/datum/sprite_accessory/tails/mammal/wagging
- organ_type = /obj/item/organ/external/tail/fluffy
+ organ_type = /obj/item/organ/tail/fluffy
flags_for_organ = SPRITE_ACCESSORY_WAG_ABLE
/datum/sprite_accessory/tails/mammal/wagging/akula
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm
index 86f9ebba93b..9d9fbf1d948 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm
@@ -24,7 +24,7 @@
center = TRUE
relevent_layers = list(BODY_FRONT_LAYER, BODY_ADJ_LAYER, BODY_FRONT_UNDER_CLOTHES, ABOVE_BODY_FRONT_HEAD_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/taur_body/horselike // horselike by default, dont forget to override if you make another bodytype
+ organ_type = /obj/item/organ/taur_body/horselike // horselike by default, dont forget to override if you make another bodytype
flags_for_organ = SPRITE_ACCESSORY_HIDE_SHOES
/// Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2
var/taur_mode = NONE
@@ -32,7 +32,7 @@
var/alt_taur_mode = NONE
/datum/sprite_accessory/taur/is_hidden(mob/living/carbon/human/target)
- var/obj/item/organ/external/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
if (taur_body?.hide_self)
return TRUE
@@ -86,7 +86,7 @@
icon_state = "deer"
taur_mode = STYLE_TAUR_HOOF
alt_taur_mode = STYLE_TAUR_PAW
- organ_type = /obj/item/organ/external/taur_body/horselike/deer
+ organ_type = /obj/item/organ/taur_body/horselike/deer
/datum/sprite_accessory/taur/drake
name = "Drake"
@@ -100,12 +100,12 @@
/datum/sprite_accessory/taur/tarantula
name = "Tarantula"
icon_state = "tarantula"
- organ_type = /obj/item/organ/external/taur_body/spider
+ organ_type = /obj/item/organ/taur_body/spider
/datum/sprite_accessory/taur/drider
name = "Drider"
icon_state = "drider"
- organ_type = /obj/item/organ/external/taur_body/spider
+ organ_type = /obj/item/organ/taur_body/spider
/datum/sprite_accessory/taur/eevee
name = "Eevee"
@@ -122,7 +122,7 @@
name = "Naga"
icon_state = "naga"
taur_mode = STYLE_TAUR_SNAKE
- organ_type = /obj/item/organ/external/taur_body/serpentine
+ organ_type = /obj/item/organ/taur_body/serpentine
/datum/sprite_accessory/taur/naga/striped
name = "Naga, Striped"
@@ -149,7 +149,7 @@
icon_state = "tentacle"
taur_mode = STYLE_TAUR_SNAKE
color_src = USE_ONE_COLOR
- organ_type = /obj/item/organ/external/taur_body/tentacle
+ organ_type = /obj/item/organ/taur_body/tentacle
/datum/sprite_accessory/taur/tentacle/alt
name = "Tentacle, Alt"
@@ -172,20 +172,20 @@
icon_state = "goop"
taur_mode = STYLE_TAUR_SNAKE
color_src = USE_ONE_COLOR
- organ_type = /obj/item/organ/external/taur_body/blob
+ organ_type = /obj/item/organ/taur_body/blob
/datum/sprite_accessory/taur/slime
name = "Slime"
icon_state = "slime"
taur_mode = STYLE_TAUR_SNAKE
color_src = USE_ONE_COLOR
- organ_type = /obj/item/organ/external/taur_body/blob
+ organ_type = /obj/item/organ/taur_body/blob
/datum/sprite_accessory/taur/biglegs
name = "Big Legs"
icon_state = "biglegs"
taur_mode = STYLE_TAUR_PAW
- organ_type = /obj/item/organ/external/taur_body/anthro
+ organ_type = /obj/item/organ/taur_body/anthro
/datum/sprite_accessory/taur/biglegs/stanced
name = "Big Legs, Stanced"
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm
index 6459c622c4f..04d74e3cd6a 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm
@@ -122,7 +122,7 @@
name = "Vox Tail"
icon_state = "vox"
recommended_species = list(SPECIES_VOX)
- organ_type = /obj/item/organ/external/tail/lizard
+ organ_type = /obj/item/organ/tail/lizard
spine_key = SPINE_KEY_VOX
//The tail markings
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm
index cee2890791b..ea7575bafcf 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm
@@ -11,7 +11,7 @@
key = "wings"
color_src = USE_ONE_COLOR
recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_LIZARD, SPECIES_MAMMAL)
- organ_type = /obj/item/organ/external/wings
+ organ_type = /obj/item/organ/wings
relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER, BODY_ADJ_LAYER)
genetic = TRUE
@@ -308,7 +308,7 @@
icon = 'modular_nova/master_files/icons/mob/sprite_accessory/moth_wings.dmi' // Needs new icon to suit new naming convention
default_color = "#FFFFFF"
recommended_species = list(SPECIES_MOTH, SPECIES_MAMMAL, SPECIES_INSECT) // Mammals too, I guess. They wont get flight though, see the wing organs for that logic
- organ_type = /obj/item/organ/external/wings/moth
+ organ_type = /obj/item/organ/wings/moth
relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/wings/moth/none
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm
index 21dd660baf1..e4385cd5e9b 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm
@@ -5,7 +5,7 @@
color_src = USE_ONE_COLOR
relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/xenodorsal
+ organ_type = /obj/item/organ/xenodorsal
/datum/sprite_accessory/xenodorsal/none
name = SPRITE_ACCESSORY_NONE
@@ -48,7 +48,7 @@
key = "xenohead"
relevent_layers = list(BODY_ADJ_LAYER)
genetic = TRUE
- organ_type = /obj/item/organ/external/xenohead
+ organ_type = /obj/item/organ/xenohead
/datum/sprite_accessory/xenohead/none
name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm
index a6706df18f7..a8fa6841838 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm
@@ -14,12 +14,12 @@
update_external_organs_modsuit_status(is_on)
wearer.update_body_parts(TRUE)
-/obj/item/mod/control/deploy(mob/user, obj/item/part)
+/obj/item/mod/control/deploy(mob/user, obj/item/part, instant = FALSE)
. = ..()
update_external_organs_modsuit_status(active)
wearer.update_body_parts(TRUE)
-/obj/item/mod/control/retract(mob/user, obj/item/part)
+/obj/item/mod/control/retract(mob/user, obj/item/part, instant = FALSE)
. = ..()
update_external_organs_modsuit_status(FALSE)
wearer.update_body_parts(TRUE)
@@ -30,8 +30,9 @@
if(!wearer?.organs)
return
- for(var/obj/item/organ/external/to_update in wearer.organs)
- to_update.bodypart_overlay.set_modsuit_status(status)
+ for(var/obj/item/organ/to_update in wearer.organs)
+ if(to_update.organ_flags & ORGAN_EXTERNAL)
+ to_update.bodypart_overlay.set_modsuit_status(status)
// Tail hardlight
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm
index 79f1ec74d45..c173040f884 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm
@@ -16,7 +16,7 @@
continue
if(G.is_hidden(src))
continue
- var/obj/item/organ/external/genital/ORG = get_organ_slot(G.associated_organ_slot)
+ var/obj/item/organ/genital/ORG = get_organ_slot(G.associated_organ_slot)
if(!ORG)
continue
line += ORG.get_description_string(G)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm
index b38ab3038a4..3fa84861eff 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm
@@ -43,11 +43,11 @@ GLOBAL_LIST_EMPTY(customizable_races)
/datum/species/proc/gain_oversized_organs(mob/living/carbon/human/human_holder, datum/quirk/oversized/oversized_quirk)
if(isnull(human_holder.loc))
return // preview characters don't need funny organs, prevents a runtime
- var/obj/item/organ/internal/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
if(old_stomach?.is_oversized) // don't override augments that are already oversized. Need to do this because augments get applied first, so quirks will overwrite them. TODO: Maybe the augments middleware should be renamed so it gets applied last.
return
- var/obj/item/organ/internal/stomach/oversized/new_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE GUTS! RIP AND TEAR YOUR HUGE GUTS!
+ var/obj/item/organ/stomach/oversized/new_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE GUTS! RIP AND TEAR YOUR HUGE GUTS!
oversized_quirk.old_organs += list(old_stomach)
new_stomach.Insert(human_holder, special = TRUE)
@@ -81,7 +81,7 @@ GLOBAL_LIST_EMPTY(customizable_races)
/datum/species/mush
mutant_bodyparts = list()
-/datum/species/vampire
+/datum/species/human/vampire
mutant_bodyparts = list()
/datum/species/plasmaman
@@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(customizable_races)
if(noggin && !(HAS_TRAIT(species_human, TRAIT_HUSK)))
if(noggin.head_flags & HEAD_EYESPRITES)
- var/obj/item/organ/internal/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
if(eye_organ)
eye_organ.refresh(call_update = FALSE)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
index 7ed4bbfb863..a6005291c50 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
@@ -16,11 +16,11 @@
OFFSET_HEAD = list(0, 2),
OFFSET_HAIR = list(0, 1),
)
- mutantbrain = /obj/item/organ/internal/brain/carp/akula
- mutantheart = /obj/item/organ/internal/heart/carp/akula
- mutantlungs = /obj/item/organ/internal/lungs/carp/akula
- mutanttongue = /obj/item/organ/internal/tongue/carp/akula
- mutanteyes = /obj/item/organ/internal/eyes/akula
+ mutantbrain = /obj/item/organ/brain/carp/akula
+ mutantheart = /obj/item/organ/heart/carp/akula
+ mutantlungs = /obj/item/organ/lungs/carp/akula
+ mutanttongue = /obj/item/organ/tongue/carp/akula
+ mutanteyes = /obj/item/organ/eyes/akula
inherent_traits = list(
TRAIT_ADVANCEDTOOLUSER,
TRAIT_CAN_STRIP,
@@ -169,42 +169,42 @@
limb_overlay = null // no carpskin
//Eyes
-/obj/item/organ/internal/eyes/akula
+/obj/item/organ/eyes/akula
// Eyes over hair as bandaid for the low amounts of head matching hair
eyes_layer = HAIR_LAYER-0.1
//Brain
-/obj/item/organ/internal/brain/carp/akula
+/obj/item/organ/brain/carp/akula
name = "azulean brain"
-/obj/item/organ/internal/brain/carp/akula/Initialize(mapload)
+/obj/item/organ/brain/carp/akula/Initialize(mapload)
. = ..()
RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula)
//Heart
-/obj/item/organ/internal/heart/carp/akula
+/obj/item/organ/heart/carp/akula
name = "azulean heart"
organ_traits = list()
-/obj/item/organ/internal/heart/carp/akula/Initialize(mapload)
+/obj/item/organ/heart/carp/akula/Initialize(mapload)
. = ..()
RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula)
//Tongue
-/obj/item/organ/internal/tongue/carp/akula
+/obj/item/organ/tongue/carp/akula
name = "azulean jaws"
liked_foodtypes = SEAFOOD | RAW
disliked_foodtypes = CLOTH | DAIRY
toxic_foodtypes = TOXIC
-/obj/item/organ/internal/tongue/carp/akula/Initialize(mapload)
+/obj/item/organ/tongue/carp/akula/Initialize(mapload)
. = ..()
RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula)
-/obj/item/organ/internal/tongue/carp/akula/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/carp/akula/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
. = ..()
if(!ishuman(tongue_owner))
return
@@ -215,12 +215,12 @@
rec_species.update_no_equip_flags(tongue_owner, initial(rec_species.no_equip_flags))
//Lungs
-/obj/item/organ/internal/lungs/carp/akula
+/obj/item/organ/lungs/carp/akula
name = "azulean lungs"
- safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min
- safe_oxygen_max = /obj/item/organ/internal/lungs::safe_oxygen_max
+ safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min
+ safe_oxygen_max = /obj/item/organ/lungs::safe_oxygen_max
-/obj/item/organ/internal/lungs/carp/akula/Initialize(mapload)
+/obj/item/organ/lungs/carp/akula/Initialize(mapload)
. = ..()
REMOVE_TRAIT(src, TRAIT_SPACEBREATHING, REF(src))
RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm
index 29df861b8bf..a05143348d8 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm
@@ -10,7 +10,7 @@
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list()
- mutanttongue = /obj/item/organ/internal/tongue/aquatic
+ mutanttongue = /obj/item/organ/tongue/aquatic
payday_modifier = 1.0
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
examine_limb_id = SPECIES_AKULA
@@ -33,7 +33,7 @@
"wings" = list("None", FALSE),
)
-/obj/item/organ/internal/tongue/aquatic
+/obj/item/organ/tongue/aquatic
liked_foodtypes = SEAFOOD | MEAT | FRUIT | GORE
disliked_foodtypes = CLOTH | GROSS
toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm
index 76c3bb57fec..de6be921592 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm
@@ -9,7 +9,7 @@
TRAIT_LITERATE,
TRAIT_USES_SKINTONES,
)
- mutanttongue = /obj/item/organ/internal/tongue/dwarven
+ mutanttongue = /obj/item/organ/tongue/dwarven
skinned_type = /obj/item/stack/sheet/animalhide/human
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
payday_modifier = 1.0
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm
index d346a985f48..9975eb59cc7 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm
@@ -4,7 +4,7 @@
examine_limb_id = SPECIES_GHOUL
can_have_genitals = FALSE //WHY WOULD YOU WANT TO FUCK ONE OF THESE THINGS?
mutant_bodyparts = list("ghoulcolor" = "Tan Necrotic")
- mutanttongue = /obj/item/organ/internal/tongue/ghoul
+ mutanttongue = /obj/item/organ/tongue/ghoul
inherent_traits = list(
TRAIT_ADVANCEDTOOLUSER,
TRAIT_RADIMMUNE,
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm
index 0bac094f620..66a45750e7d 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm
@@ -12,7 +12,7 @@
/datum/component/organ_corruption
dupe_mode = COMPONENT_DUPE_UNIQUE
/// The type of organ affected by this specific type of organ corruption.
- var/corruptable_organ_type = /obj/item/organ/internal
+ var/corruptable_organ_type = /obj/item/organ
/// If this type of organ has a unique sprite for what its corrupted
/// version should look like, this will be the icon file it will be pulled
/// from.
@@ -77,7 +77,7 @@
* Arguments:
* * corruption_target - The organ that will get corrupted.
*/
-/datum/component/organ_corruption/proc/corrupt_organ(obj/item/organ/internal/corruption_target)
+/datum/component/organ_corruption/proc/corrupt_organ(obj/item/organ/corruption_target)
SHOULD_CALL_PARENT(TRUE)
if(!corruption_target)
return FALSE
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm
index f83b2caaec5..c361c5d9957 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm
@@ -1,4 +1,4 @@
/datum/component/organ_corruption/lungs
- corruptable_organ_type = /obj/item/organ/internal/lungs
+ corruptable_organ_type = /obj/item/organ/lungs
corrupted_prefix = "atrophied"
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm
index 27c937ef2e4..e703285a25b 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm
@@ -2,7 +2,7 @@
#define MINIMUM_BLOOD_REGENING_REAGENT_RATIO 0.75
/datum/component/organ_corruption/liver
- corruptable_organ_type = /obj/item/organ/internal/liver
+ corruptable_organ_type = /obj/item/organ/liver
corrupted_icon_state = "liver"
@@ -23,7 +23,7 @@
/datum/component/organ_corruption/liver/UnregisterFromParent()
. = ..()
- var/obj/item/organ/internal/liver/parent_liver = parent
+ var/obj/item/organ/liver/parent_liver = parent
if(parent_liver.owner)
UnregisterSignal(parent_liver.owner, COMSIG_GLASS_DRANK)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm
index 3af433695a9..7cd311e3322 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm
@@ -1,9 +1,9 @@
/datum/component/organ_corruption/stomach
- corruptable_organ_type = /obj/item/organ/internal/stomach
+ corruptable_organ_type = /obj/item/organ/stomach
corrupted_icon_state = "stomach"
-/datum/component/organ_corruption/stomach/corrupt_organ(obj/item/organ/internal/corruption_target)
+/datum/component/organ_corruption/stomach/corrupt_organ(obj/item/organ/corruption_target)
. = ..()
if(!.)
@@ -18,7 +18,7 @@
UnregisterSignal(parent, COMSIG_STOMACH_AFTER_EAT)
-/datum/component/organ_corruption/stomach/proc/on_stomach_after_eat(obj/item/organ/internal/stomach/tummy, atom/edible)
+/datum/component/organ_corruption/stomach/proc/on_stomach_after_eat(obj/item/organ/stomach/tummy, atom/edible)
SIGNAL_HANDLER
if(!istype(edible, /obj/item/food))
@@ -29,7 +29,7 @@
if(BLOODY & eaten.foodtypes) // They're good if it's BLOODY food, they're less good if it isn't.
return
- var/obj/item/organ/internal/parent_organ = parent
+ var/obj/item/organ/parent_organ = parent
if(parent_organ.owner && HAS_TRAIT(parent_organ.owner, TRAIT_AGEUSIA)) // They don't taste anything, their body shouldn't react strongly to the taste of that stuff.
return
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm
index 8363af7dd1f..59755827851 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm
@@ -4,19 +4,19 @@
#define BLOOD_DRAIN_MULTIPLIER_CKEY 1.15
/datum/component/organ_corruption/tongue
- corruptable_organ_type = /obj/item/organ/internal/tongue
+ corruptable_organ_type = /obj/item/organ/tongue
corrupted_icon_state = "tongue"
/// The item action given to the tongue once it was corrupted.
var/tongue_action_type = /datum/action/cooldown/hemophage/drain_victim
-/datum/component/organ_corruption/tongue/corrupt_organ(obj/item/organ/internal/corruption_target)
+/datum/component/organ_corruption/tongue/corrupt_organ(obj/item/organ/corruption_target)
. = ..()
if(!.)
return
- var/obj/item/organ/internal/tongue/corrupted_tongue = corruption_target
+ var/obj/item/organ/tongue/corrupted_tongue = corruption_target
corrupted_tongue.liked_foodtypes = BLOODY
corrupted_tongue.disliked_foodtypes = NONE
@@ -126,7 +126,7 @@
// if you drained from a human with a client, congrats
var/drained_multiplier = (is_target_human_with_client ? BLOOD_DRAIN_MULTIPLIER_CKEY : 1)
- var/obj/item/organ/internal/stomach/hemophage/stomach_reference = hemophage.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/hemophage/stomach_reference = hemophage.get_organ_slot(ORGAN_SLOT_STOMACH)
if(isnull(stomach_reference))
victim.blood_volume = clamp(victim.blood_volume - drained_blood, 0, BLOOD_VOLUME_MAXIMUM)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm
index 9feaeb41ca9..6fe324cb21b 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm
@@ -26,7 +26,7 @@
if(!owner || !ishuman(owner) || !target)
return
- var/obj/item/organ/internal/heart/hemophage/tumor = target
+ var/obj/item/organ/heart/hemophage/tumor = target
if(!tumor || !istype(tumor)) // This shouldn't happen, but you can never be too careful.
return
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm
index 43005aa433f..66c2d059250 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm
@@ -7,19 +7,19 @@
#define ORGAN_CORRUPTION_INSTANT 0
-/obj/item/organ/internal/liver/hemophage
+/obj/item/organ/liver/hemophage
name = "liver" // Name change is handled by /datum/component/organ_corruption/corrupt_organ()
desc = GENERIC_CORRUPTED_ORGAN_DESC
icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
organ_flags = ORGAN_EDIBLE | ORGAN_TUMOR_CORRUPTED
-/obj/item/organ/internal/liver/hemophage/Initialize(mapload)
+/obj/item/organ/liver/hemophage/Initialize(mapload)
. = ..()
AddComponent(/datum/component/organ_corruption/liver, time_to_corrupt = ORGAN_CORRUPTION_INSTANT)
-/obj/item/organ/internal/liver/hemophage/handle_chemical(mob/living/carbon/affected_mob, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/hemophage/handle_chemical(mob/living/carbon/affected_mob, datum/reagent/chem, seconds_per_tick, times_fired)
. = ..()
// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
@@ -67,21 +67,21 @@
return TRUE
-/obj/item/organ/internal/stomach/hemophage
+/obj/item/organ/stomach/hemophage
name = "stomach" // Name change is handled by /datum/component/organ_corruption/corrupt_organ()
desc = GENERIC_CORRUPTED_ORGAN_DESC
icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
organ_flags = ORGAN_EDIBLE | ORGAN_TUMOR_CORRUPTED
-/obj/item/organ/internal/stomach/hemophage/Initialize(mapload)
+/obj/item/organ/stomach/hemophage/Initialize(mapload)
. = ..()
AddComponent(/datum/component/organ_corruption/stomach, time_to_corrupt = ORGAN_CORRUPTION_INSTANT)
// I didn't feel like moving this behavior onto the component, it was just too annoying to do.
-/obj/item/organ/internal/stomach/hemophage/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/hemophage/on_life(seconds_per_tick, times_fired)
var/datum/reagent/blood/blood = reagents.has_reagent(/datum/reagent/blood)
if(blood)
blood.metabolization_rate = BLOOD_METABOLIZATION_RATE
@@ -89,7 +89,7 @@
return ..()
-/obj/item/organ/internal/tongue/hemophage
+/obj/item/organ/tongue/hemophage
name = "tongue" // Name change is handled by /datum/component/organ_corruption/corrupt_organ()
desc = GENERIC_CORRUPTED_ORGAN_DESC
icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
@@ -98,7 +98,7 @@
disliked_foodtypes = NONE
-/obj/item/organ/internal/tongue/hemophage/Initialize(mapload)
+/obj/item/organ/tongue/hemophage/Initialize(mapload)
. = ..()
AddComponent(/datum/component/organ_corruption/tongue, time_to_corrupt = ORGAN_CORRUPTION_INSTANT)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm
index 5786d62e6b6..657b58869a9 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm
@@ -18,10 +18,10 @@
)
inherent_biotypes = MOB_HUMANOID | MOB_ORGANIC
exotic_bloodtype = "U"
- mutantheart = /obj/item/organ/internal/heart/hemophage
- mutantliver = /obj/item/organ/internal/liver/hemophage
- mutantstomach = /obj/item/organ/internal/stomach/hemophage
- mutanttongue = /obj/item/organ/internal/tongue/hemophage
+ mutantheart = /obj/item/organ/heart/hemophage
+ mutantliver = /obj/item/organ/liver/hemophage
+ mutantstomach = /obj/item/organ/stomach/hemophage
+ mutanttongue = /obj/item/organ/tongue/hemophage
mutantlungs = null
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
examine_limb_id = SPECIES_HUMAN
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm
index 5d46ecf0dd2..2895c172c9f 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm
@@ -21,7 +21,7 @@
if(!owner || !ishuman(owner))
return FALSE
- var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage)
+ var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage)
if(!tumor_heart)
return FALSE
@@ -36,7 +36,7 @@
if(!owner || !ishuman(owner))
return
- var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage)
+ var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage)
if(!tumor_heart)
return
@@ -72,7 +72,7 @@
if(!linked_alert)
return
- var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage)
+ var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage)
if(tumor_heart)
var/old_layer = tumor_heart.layer
var/old_plane = tumor_heart.plane
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm
index df13a858efa..25cb319e4b0 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm
@@ -15,7 +15,7 @@
#define TRAIT_TUMOR "tumor"
-/obj/item/organ/internal/heart/hemophage
+/obj/item/organ/heart/hemophage
name = "pulsating tumor"
icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
icon_state = "tumor-on"
@@ -28,7 +28,7 @@
var/bloodloss_rate = NORMAL_BLOOD_DRAIN
-/obj/item/organ/internal/heart/hemophage/mob_insert(mob/living/carbon/tumorful, special, movement_flags)
+/obj/item/organ/heart/hemophage/mob_insert(mob/living/carbon/tumorful, special, movement_flags)
. = ..()
if(!. || !owner)
return
@@ -38,7 +38,7 @@
RegisterSignal(tumorful, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item))
-/obj/item/organ/internal/heart/hemophage/mob_remove(mob/living/carbon/tumorless, special = FALSE)
+/obj/item/organ/heart/hemophage/mob_remove(mob/living/carbon/tumorless, special = FALSE)
. = ..()
SEND_SIGNAL(tumorless, COMSIG_PULSATING_TUMOR_REMOVED, tumorless)
@@ -58,7 +58,7 @@
tumorless_human.remove_movespeed_modifier(/datum/movespeed_modifier/hemophage_dormant_state)
-/obj/item/organ/internal/heart/hemophage/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/hemophage/on_life(seconds_per_tick, times_fired)
. = ..()
// A Hemophage's tumor will be able to be operated on multiple times, so
@@ -85,7 +85,7 @@
/// Simple helper proc that toggles the dormant state of the tumor, which also switches its appearance to reflect said change.
-/obj/item/organ/internal/heart/hemophage/proc/toggle_dormant_state()
+/obj/item/organ/heart/hemophage/proc/toggle_dormant_state()
is_dormant = !is_dormant
base_icon_state = is_dormant ? "[base_icon_state]-dormant" : initial(base_icon_state)
@@ -106,12 +106,12 @@
/// Simple helper proc that returns whether or not the given hemophage is in a closet subtype (but not in any bodybag subtype).
-/obj/item/organ/internal/heart/hemophage/proc/in_closet(mob/living/carbon/human/hemophage)
+/obj/item/organ/heart/hemophage/proc/in_closet(mob/living/carbon/human/hemophage)
return istype(hemophage.loc, /obj/structure/closet) && !istype(hemophage.loc, /obj/structure/closet/body_bag)
/// Simple helper proc that returns whether or not the given hemophage is in total darkness.
-/obj/item/organ/internal/heart/hemophage/proc/in_total_darkness(mob/living/carbon/human/hemophage)
+/obj/item/organ/heart/hemophage/proc/in_total_darkness(mob/living/carbon/human/hemophage)
var/turf/current_turf = get_turf(hemophage)
if(!istype(current_turf))
return FALSE
@@ -120,7 +120,7 @@
/// Whether or not we should be applying the healing status effect for the owner.
-/obj/item/organ/internal/heart/hemophage/proc/can_heal_owner_damage()
+/obj/item/organ/heart/hemophage/proc/can_heal_owner_damage()
// We handle the least expensive checks first.
if(owner.health >= owner.maxHealth || is_dormant || owner.blood_volume <= MINIMUM_VOLUME_FOR_REGEN || (!in_closet(owner) && !in_total_darkness(owner)))
return FALSE
@@ -131,7 +131,7 @@
/// Simple helper to toggle the hemophage's vulnerability (or lack thereof) based on the status of their tumor.
/// This proc contains no check whatsoever, to avoid redundancy of null checks and such.
/// That being said, it shouldn't be used by anything but the tumor, if you have to call it outside of that, you probably have gone wrong somewhere.
-/obj/item/organ/internal/heart/hemophage/proc/toggle_dormant_tumor_vulnerabilities(mob/living/carbon/human/hemophage)
+/obj/item/organ/heart/hemophage/proc/toggle_dormant_tumor_vulnerabilities(mob/living/carbon/human/hemophage)
var/datum/physiology/hemophage_physiology = hemophage.physiology
var/damage_multiplier = is_dormant ? DORMANT_DAMAGE_MULTIPLIER : 1 / DORMANT_DAMAGE_MULTIPLIER
@@ -141,7 +141,7 @@
hemophage_physiology.stamina_mod *= damage_multiplier / 2 // Doing half here so that they don't instantly hit stam-crit when hit like only once.
-/obj/item/organ/internal/heart/hemophage/proc/get_status_tab_item(mob/living/source, list/items)
+/obj/item/organ/heart/hemophage/proc/get_status_tab_item(mob/living/source, list/items)
SIGNAL_HANDLER
items += "Current blood level: [owner.blood_volume]/[BLOOD_VOLUME_MAXIMUM]"
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm
index df18d12b264..03743af54aa 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm
@@ -27,19 +27,19 @@
* Handles corrupting already-existing organs upon having the tumor be inserted in the mob.
*/
/datum/element/tumor_corruption/proc/handle_organ_corruption_on_existing_organs(mob/living/carbon/organ_enjoyer)
- var/obj/item/organ/internal/liver/liver = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && !(liver.organ_flags & ORGAN_TUMOR_CORRUPTED))
liver.AddComponent(/datum/component/organ_corruption/liver)
- var/obj/item/organ/internal/lungs/lungs = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/lungs = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LUNGS)
if(lungs && !(lungs.organ_flags & ORGAN_TUMOR_CORRUPTED))
lungs.AddComponent(/datum/component/organ_corruption/lungs)
- var/obj/item/organ/internal/stomach/stomach = organ_enjoyer.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/stomach = organ_enjoyer.get_organ_slot(ORGAN_SLOT_STOMACH)
if(stomach && !(stomach.organ_flags & ORGAN_TUMOR_CORRUPTED))
stomach.AddComponent(/datum/component/organ_corruption/stomach)
- var/obj/item/organ/internal/tongue/tongue = organ_enjoyer.get_organ_slot(ORGAN_SLOT_TONGUE)
+ var/obj/item/organ/tongue/tongue = organ_enjoyer.get_organ_slot(ORGAN_SLOT_TONGUE)
if(tongue && !(tongue.organ_flags & ORGAN_TUMOR_CORRUPTED))
tongue.AddComponent(/datum/component/organ_corruption/tongue)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm
index e58511cb36a..83ba8898754 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm
@@ -9,7 +9,7 @@
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
mutant_bodyparts = list()
- mutanttongue = /obj/item/organ/internal/tongue/insect
+ mutanttongue = /obj/item/organ/tongue/insect
payday_modifier = 1.0
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
examine_limb_id = SPECIES_INSECT
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm
index a0899ed37e4..549a7cbad56 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm
@@ -9,7 +9,7 @@
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list()
- mutanttongue = /obj/item/organ/internal/tongue/mammal
+ mutanttongue = /obj/item/organ/tongue/mammal
payday_modifier = 1.0
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
bodypart_overrides = list(
@@ -35,7 +35,7 @@
"neck_acc" = list("None", FALSE),
)
-/obj/item/organ/internal/tongue/mammal
+/obj/item/organ/tongue/mammal
liked_foodtypes = GRAIN | MEAT
disliked_foodtypes = CLOTH | GROSS | GORE
toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm
index 2b29de082dd..e3b49ef1b58 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm
@@ -8,10 +8,10 @@
mutant_bodyparts = list()
hair_alpha = 160 //a notch brighter so it blends better.
facial_hair_alpha = 160
- mutantliver = /obj/item/organ/internal/liver/slime
- mutantstomach = /obj/item/organ/internal/stomach/slime
- mutantbrain = /obj/item/organ/internal/brain/slime
- mutantears = /obj/item/organ/internal/ears/jelly
+ mutantliver = /obj/item/organ/liver/slime
+ mutantstomach = /obj/item/organ/stomach/slime
+ mutantbrain = /obj/item/organ/brain/slime
+ mutantears = /obj/item/organ/ears/jelly
inherent_traits = list(
TRAIT_MUTANT_COLORS,
TRAIT_TOXINLOVER,
@@ -66,11 +66,11 @@
if(isnull(human_holder.loc))
return // preview characters don't need funny organs, prevents a runtime
- var/obj/item/organ/internal/brain/slime/oversized/new_slime_brain = new
- var/obj/item/organ/internal/stomach/slime/oversized/new_slime_stomach = new //YOU LOOK HUGE! THAT MUST MEAN YOU HAVE HUGE golgi apparatus! RIP AND TEAR YOUR HUGE golgi apparatus!
+ var/obj/item/organ/brain/slime/oversized/new_slime_brain = new
+ var/obj/item/organ/stomach/slime/oversized/new_slime_stomach = new //YOU LOOK HUGE! THAT MUST MEAN YOU HAVE HUGE golgi apparatus! RIP AND TEAR YOUR HUGE golgi apparatus!
- var/obj/item/organ/internal/brain/slime/old_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
- var/obj/item/organ/internal/stomach/slime/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/brain/slime/old_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/stomach/slime/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
oversized_quirk.old_organs = list(
old_brain,
old_stomach,
@@ -94,42 +94,42 @@
old_stomach.moveToNullspace()
STOP_PROCESSING(SSobj, old_stomach)
-/obj/item/organ/internal/eyes/jelly
+/obj/item/organ/eyes/jelly
name = "photosensitive eyespots"
zone = BODY_ZONE_CHEST
organ_flags = ORGAN_UNREMOVABLE
-/obj/item/organ/internal/eyes/roundstartslime
+/obj/item/organ/eyes/roundstartslime
name = "photosensitive eyespots"
zone = BODY_ZONE_CHEST
organ_flags = ORGAN_UNREMOVABLE
-/obj/item/organ/internal/ears/jelly
+/obj/item/organ/ears/jelly
name = "core audiosomes"
zone = BODY_ZONE_CHEST
organ_flags = ORGAN_UNREMOVABLE
overrides_sprite_datum_organ_type = TRUE
bodypart_overlay = /datum/bodypart_overlay/mutant/ears
-/obj/item/organ/internal/tongue/jelly
+/obj/item/organ/tongue/jelly
zone = BODY_ZONE_CHEST
organ_flags = ORGAN_UNREMOVABLE
-/obj/item/organ/internal/lungs/slime
+/obj/item/organ/lungs/slime
zone = BODY_ZONE_CHEST
organ_flags = ORGAN_UNREMOVABLE
-/obj/item/organ/internal/liver/slime
+/obj/item/organ/liver/slime
name = "endoplasmic reticulum"
zone = BODY_ZONE_CHEST
organ_flags = ORGAN_UNREMOVABLE
-/obj/item/organ/internal/stomach/slime
+/obj/item/organ/stomach/slime
name = "golgi apparatus"
zone = BODY_ZONE_CHEST
organ_flags = ORGAN_UNREMOVABLE
-/obj/item/organ/internal/brain/slime
+/obj/item/organ/brain/slime
name = "core"
desc = "The central core of a slimeperson, technically their 'extract.' Where the cytoplasm, membrane, and organelles come from; perhaps this is also a mitochondria?"
zone = BODY_ZONE_CHEST
@@ -147,18 +147,18 @@
throw_speed = 0.5
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | LAVA_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
-/obj/item/organ/internal/brain/slime/Initialize(mapload, mob/living/carbon/organ_owner, list/examine_list)
+/obj/item/organ/brain/slime/Initialize(mapload, mob/living/carbon/organ_owner, list/examine_list)
. = ..()
colorize()
-/obj/item/organ/internal/brain/slime/examine()
+/obj/item/organ/brain/slime/examine()
. = ..()
if(gps_active)
. += span_notice("A dim light lowly pulsates from the center of the core, indicating an outgoing signal from a tracking microchip.")
. += span_red("You could probably snuff that out.")
. += span_hypnophrase("You remember that pouring plasma on it, if it's non-embodied, would make it regrow one.")
-/obj/item/organ/internal/brain/slime/attack_self(mob/living/user) // Allows a player (presumably an antag) to deactivate the GPS signal on a slime core
+/obj/item/organ/brain/slime/attack_self(mob/living/user) // Allows a player (presumably an antag) to deactivate the GPS signal on a slime core
if(!(gps_active))
return
user.visible_message(span_warning("[user] begins jamming [user.p_their()] hand into a slime core! Slime goes everywhere!"),
@@ -181,7 +181,7 @@
gps_active = FALSE
qdel(GetComponent(/datum/component/gps))
-/obj/item/organ/internal/brain/slime/mob_insert(mob/living/carbon/organ_owner, special = FALSE, movement_flags)
+/obj/item/organ/brain/slime/mob_insert(mob/living/carbon/organ_owner, special = FALSE, movement_flags)
. = ..()
if(!.)
return
@@ -189,14 +189,14 @@
core_ejected = FALSE
RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(on_slime_death))
-/obj/item/organ/internal/brain/slime/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/brain/slime/on_mob_remove(mob/living/carbon/organ_owner)
. = ..()
UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH)
/**
* Colors the slime's core (their brain) the same as their first mutant color.
*/
-/obj/item/organ/internal/brain/slime/proc/colorize()
+/obj/item/organ/brain/slime/proc/colorize()
if(owner && isjellyperson(owner))
core_color = owner.dna.features["mcolor"]
add_atom_colour(core_color, FIXED_COLOUR_PRIORITY)
@@ -204,7 +204,7 @@
/**
* Handling for tracking when the slime in question dies (except through gibbing), which then segues into the core ejection proc.
*/
-/obj/item/organ/internal/brain/slime/proc/on_slime_death(mob/living/victim, gibbed)
+/obj/item/organ/brain/slime/proc/on_slime_death(mob/living/victim, gibbed)
SIGNAL_HANDLER
UnregisterSignal(victim, COMSIG_LIVING_DEATH)
@@ -219,7 +219,7 @@
* CORE EJECTION PROC -
* Makes it so that when a slime dies, their core ejects and their body is qdel'd.
*/
-/obj/item/organ/internal/brain/slime/proc/core_ejection(mob/living/victim, new_stat, turf/loc_override)
+/obj/item/organ/brain/slime/proc/core_ejection(mob/living/victim, new_stat, turf/loc_override)
if(core_ejected)
return
core_ejected = TRUE
@@ -245,7 +245,7 @@
/**
* Procs the ethereal jaunt liquid effect when the slime dissolves on death.
*/
-/obj/item/organ/internal/brain/slime/proc/do_steam_effects(turf/loc)
+/obj/item/organ/brain/slime/proc/do_steam_effects(turf/loc)
var/datum/effect_system/steam_spread/steam = new()
steam.set_up(10, FALSE, loc)
steam.start()
@@ -254,7 +254,7 @@
* CHECK FOR REPAIR SECTION
* Makes it so that when a slime's core has plasma poured on it, it builds a new body and moves the brain into it.
*/
-/obj/item/organ/internal/brain/slime/check_for_repair(obj/item/item, mob/user)
+/obj/item/organ/brain/slime/check_for_repair(obj/item/item, mob/user)
if(!item.is_drainable() || item.reagents.get_reagent_amount(/datum/reagent/toxin/plasma) < 100)
return FALSE
user.visible_message(
@@ -285,7 +285,7 @@
regenerate()
return TRUE
-/obj/item/organ/internal/brain/slime/proc/regenerate()
+/obj/item/organ/brain/slime/proc/regenerate()
//we have the plasma. we can rebuild them.
set_organ_damage(-maxHealth) //fully heals the brain
if(gps_active) // making sure the gps signal is removed if it's active on revival
@@ -513,8 +513,8 @@
heatmod = 1
specific_alpha = 155
markings_alpha = 130 //This is set lower than the other so that the alpha values don't stack on top of each other so much
- mutanteyes = /obj/item/organ/internal/eyes/roundstartslime
- mutanttongue = /obj/item/organ/internal/tongue/jelly
+ mutanteyes = /obj/item/organ/eyes/roundstartslime
+ mutanttongue = /obj/item/organ/tongue/jelly
bodypart_overrides = list( //Overriding jelly bodyparts
BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/jelly/slime/roundstart,
@@ -1031,13 +1031,13 @@
return
switch(dna_alteration)
if("Breasts Lactation")
- var/obj/item/organ/external/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
alterer.dna.features["breasts_lactation"] = !alterer.dna.features["breasts_lactation"]
melons.lactates = alterer.dna.features["breasts_lactation"]
alterer.balloon_alert(alterer, "[alterer.dna.features["breasts_lactation"] ? "lactating" : "not lactating"]")
if("Breasts Size")
- var/obj/item/organ/external/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
var/new_size = tgui_input_list(
alterer,
"Choose your character's breasts size:",
@@ -1050,7 +1050,7 @@
melons.set_size(alterer.dna.features["breasts_size"])
if("Penis Girth")
- var/obj/item/organ/external/genital/penis/sausage = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis/sausage = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
var/max_girth = PENIS_MAX_GIRTH
if(alterer.dna.features["penis_size"] >= max_girth)
max_girth = alterer.dna.features["penis_size"]
@@ -1066,7 +1066,7 @@
sausage.girth = alterer.dna.features["penis_girth"]
if("Penis Length")
- var/obj/item/organ/external/genital/penis/wang = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis/wang = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
var/new_length = tgui_input_number(
alterer,
"Choose your penis length:\n([PENIS_MIN_LENGTH]-[PENIS_MAX_LENGTH] inches)",
@@ -1083,7 +1083,7 @@
wang.set_size(alterer.dna.features["penis_size"])
if("Penis Sheath")
- var/obj/item/organ/external/genital/penis/schlong = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis/schlong = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
var/new_sheath = tgui_input_list(
alterer,
"Choose your penis sheath",
@@ -1099,7 +1099,7 @@
alterer.balloon_alert(alterer, "[alterer.dna.features["penis_taur_mode"] ? "using taur penis" : "not using taur penis"]")
if("Testicles Size")
- var/obj/item/organ/external/genital/testicles/avocados = alterer.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/testicles/avocados = alterer.get_organ_slot(ORGAN_SLOT_TESTICLES)
var/new_size = tgui_input_list(
alterer,
"Choose your character's testicles size:",
@@ -1125,7 +1125,7 @@
/datum/action/innate/core_signal/Activate()
var/mob/living/carbon/human/slime = owner
- var/obj/item/organ/internal/brain/slime/core = slime.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/slime/core = slime.get_organ_slot(ORGAN_SLOT_BRAIN)
if(slime_restricted && !isjellyperson(slime))
return
if(core.gps_active)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm
index 3b038ab1bde..972eb265868 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm
@@ -14,15 +14,15 @@
bodytemp_cold_damage_limit = (T20C - 10)
species_language_holder = /datum/language_holder/skrell
mutant_bodyparts = list()
- mutanttongue = /obj/item/organ/internal/tongue/skrell
+ mutanttongue = /obj/item/organ/tongue/skrell
payday_modifier = 1.0
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
- mutantbrain = /obj/item/organ/internal/brain/skrell
- mutanteyes = /obj/item/organ/internal/eyes/skrell
- mutantlungs = /obj/item/organ/internal/lungs/skrell
- mutantheart = /obj/item/organ/internal/heart/skrell
- mutantliver = /obj/item/organ/internal/liver/skrell
- mutanttongue = /obj/item/organ/internal/tongue/skrell
+ mutantbrain = /obj/item/organ/brain/skrell
+ mutanteyes = /obj/item/organ/eyes/skrell
+ mutantlungs = /obj/item/organ/lungs/skrell
+ mutantheart = /obj/item/organ/heart/skrell
+ mutantliver = /obj/item/organ/liver/skrell
+ mutanttongue = /obj/item/organ/tongue/skrell
bodypart_overrides = list(
BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/skrell,
BODY_ZONE_CHEST = /obj/item/bodypart/chest/mutant/skrell,
@@ -76,7 +76,7 @@
skrell.update_body(TRUE)
-/obj/item/organ/internal/tongue/skrell
+/obj/item/organ/tongue/skrell
name = "internal vocal sacs"
desc = "An Strange looking sac."
icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
@@ -106,27 +106,27 @@
disliked_foodtypes = RAW | CLOTH
toxic_foodtypes = DAIRY | MEAT
-/obj/item/organ/internal/tongue/skrell/get_possible_languages()
+/obj/item/organ/tongue/skrell/get_possible_languages()
return languages_possible_skrell
-/obj/item/organ/internal/heart/skrell
+/obj/item/organ/heart/skrell
name = "skrellian heart"
icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
icon_state = "heart"
-/obj/item/organ/internal/brain/skrell
+/obj/item/organ/brain/skrell
name = "spongy brain"
icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
icon_state = "brain2"
-/obj/item/organ/internal/eyes/skrell
+/obj/item/organ/eyes/skrell
name = "amphibian eyes"
desc = "Large black orbs."
icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
icon_state = "eyes"
flash_protect = FLASH_PROTECTION_SENSITIVE
-/obj/item/organ/internal/lungs/skrell
+/obj/item/organ/lungs/skrell
name = "skrell lungs"
icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
icon_state = "lungs"
@@ -152,7 +152,7 @@
heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
heat_damage_type = BURN
-/obj/item/organ/internal/liver/skrell
+/obj/item/organ/liver/skrell
name = "skrell liver"
icon_state = "liver"
icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm
index 6e7077559a0..15d5ce08c4a 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm
@@ -10,7 +10,7 @@
TRAIT_CATLIKE_GRACE,
TRAIT_WATER_HATER,
)
- mutanttongue = /obj/item/organ/internal/tongue/cat/tajaran
+ mutanttongue = /obj/item/organ/tongue/cat/tajaran
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list()
payday_modifier = 1.0
@@ -34,7 +34,7 @@
"legs" = list("Normal Legs", FALSE),
)
-/obj/item/organ/internal/tongue/cat/tajaran
+/obj/item/organ/tongue/cat/tajaran
liked_foodtypes = GRAIN | MEAT
disliked_foodtypes = CLOTH
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm
index 8731ff495d1..ff3f78f4d20 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm
@@ -9,7 +9,7 @@
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list()
- mutanttongue = /obj/item/organ/internal/tongue/unathi
+ mutanttongue = /obj/item/organ/tongue/unathi
payday_modifier = 1.0
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
examine_limb_id = SPECIES_LIZARD
@@ -34,7 +34,7 @@
"legs" = list("Normal Legs", FALSE),
)
-/obj/item/organ/internal/tongue/unathi
+/obj/item/organ/tongue/unathi
liked_foodtypes = GORE | MEAT | SEAFOOD | NUTS
disliked_foodtypes = GRAIN | DAIRY | CLOTH | GROSS
toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm
index b91ab569ad3..fb8a317fc10 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm
@@ -10,9 +10,9 @@
TRAIT_MUTANT_COLORS,
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
- mutanttongue = /obj/item/organ/internal/tongue/vox
- mutantlungs = /obj/item/organ/internal/lungs/nitrogen/vox
- mutantbrain = /obj/item/organ/internal/brain/vox
+ mutanttongue = /obj/item/organ/tongue/vox
+ mutantlungs = /obj/item/organ/lungs/nitrogen/vox
+ mutantbrain = /obj/item/organ/brain/vox
breathid = "n2"
mutant_bodyparts = list()
payday_modifier = 1.0
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm
index ca169f54721..8060cb73902 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm
@@ -9,7 +9,7 @@
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutant_bodyparts = list()
- mutanttongue = /obj/item/organ/internal/tongue/vulpkanin
+ mutanttongue = /obj/item/organ/tongue/vulpkanin
species_language_holder = /datum/language_holder/vulpkanin
payday_modifier = 1.0
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
@@ -31,7 +31,7 @@
"legs" = list("Normal Legs", FALSE),
)
-/obj/item/organ/internal/tongue/vulpkanin
+/obj/item/organ/tongue/vulpkanin
liked_foodtypes = RAW | MEAT
disliked_foodtypes = CLOTH
toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm
index ded13972015..0c4439c31dc 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm
@@ -10,14 +10,14 @@
TRAIT_MUTANT_COLORS,
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
- mutantbrain = /obj/item/organ/internal/brain/xeno_hybrid
- mutanttongue = /obj/item/organ/internal/tongue/xeno_hybrid
- mutantliver = /obj/item/organ/internal/liver/xeno_hybrid
- mutantstomach = /obj/item/organ/internal/stomach/xeno_hybrid
+ mutantbrain = /obj/item/organ/brain/xeno_hybrid
+ mutanttongue = /obj/item/organ/tongue/xeno_hybrid
+ mutantliver = /obj/item/organ/liver/xeno_hybrid
+ mutantstomach = /obj/item/organ/stomach/xeno_hybrid
mutant_organs = list(
- /obj/item/organ/internal/alien/plasmavessel/roundstart,
- /obj/item/organ/internal/alien/resinspinner/roundstart,
- /obj/item/organ/internal/alien/hivenode,
+ /obj/item/organ/alien/plasmavessel/roundstart,
+ /obj/item/organ/alien/resinspinner/roundstart,
+ /obj/item/organ/alien/hivenode,
)
exotic_blood = /datum/reagent/toxin/acid
exotic_bloodtype = "X*"
@@ -133,7 +133,7 @@
#define BUILD_DURATION 0.5 SECONDS
//Plasma vessel
-/obj/item/organ/internal/alien/plasmavessel/roundstart
+/obj/item/organ/alien/plasmavessel/roundstart
stored_plasma = 55
max_plasma = 55
plasma_rate = 2
@@ -156,7 +156,7 @@
return ..()
//Resin spinner
-/obj/item/organ/internal/alien/resinspinner/roundstart
+/obj/item/organ/alien/resinspinner/roundstart
actions_types = list(/datum/action/cooldown/alien/make_structure/resin/roundstart)
/datum/action/cooldown/alien/make_structure/resin
@@ -167,17 +167,17 @@
//Non-modularly checked in `code\modules\mob\living\carbon\alien\adult\alien_powers.dm`
//Organ resprites
-/obj/item/organ/internal/brain/xeno_hybrid
+/obj/item/organ/brain/xeno_hybrid
icon_state = "brain-x" //rebranding
-/obj/item/organ/internal/stomach/xeno_hybrid
+/obj/item/organ/stomach/xeno_hybrid
icon_state = "stomach-x"
-/obj/item/organ/internal/liver/xeno_hybrid
+/obj/item/organ/liver/xeno_hybrid
icon_state = "liver-x"
//Liver modification (xenohybrids can process plasma!)
-/obj/item/organ/internal/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired)
. = ..()
if(. & COMSIG_MOB_STOP_REAGENT_CHECK)
return
diff --git a/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index c399b5a529c..2bbb57c36b4 100644
--- a/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -842,7 +842,7 @@
/datum/reagent/consumable/ethanol/cringe_weaver/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
- var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM))
if(drinker.heal_bodypart_damage(1 * REM * seconds_per_tick, 1 * REM * seconds_per_tick)) //coroners love drinking formaldehyde
return UPDATE_MOB_HEALTH
diff --git a/modular_nova/modules/customization/modules/surgery/organs/cap.dm b/modular_nova/modules/customization/modules/surgery/organs/cap.dm
index 664334aee03..59a415e81d3 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/cap.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/cap.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/mushroom_cap
+/obj/item/organ/mushroom_cap
icon_state = "random_fly_1"
mutantpart_key = "caps"
@@ -6,7 +6,7 @@
slot = ORGAN_SLOT_EXTERNAL_CAP
preference = "feature_caps"
-/obj/item/organ/external/mushroom_cap/Initialize(mapload)
+/obj/item/organ/mushroom_cap/Initialize(mapload)
if(!ispath(bodypart_overlay))
mutantpart_info[MUTANT_INDEX_COLOR_LIST] = bodypart_overlay.draw_color
return ..()
diff --git a/modular_nova/modules/customization/modules/surgery/organs/ears.dm b/modular_nova/modules/customization/modules/surgery/organs/ears.dm
index c8796f831b7..8328756fbb8 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/ears.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/ears.dm
@@ -1,13 +1,13 @@
-/obj/item/organ/internal/ears/mutant
+/obj/item/organ/ears/mutant
name = "fluffy ears"
desc = "Wait, there's two pairs of these?"
icon = 'icons/obj/clothing/head/costume.dmi'
icon_state = "kitty"
bodypart_overlay = /datum/bodypart_overlay/mutant/ears
-/obj/item/organ/internal/ears/cat
+/obj/item/organ/ears/cat
-/obj/item/organ/internal/ears/fox
+/obj/item/organ/ears/fox
/datum/bodypart_overlay/mutant/ears
feature_key = "ears"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/eyes.dm b/modular_nova/modules/customization/modules/surgery/organs/eyes.dm
index c6135f9b2ef..ea97856d37e 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/eyes.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/eyes.dm
@@ -1,8 +1,8 @@
-/obj/item/organ/internal/eyes
+/obj/item/organ/eyes
var/is_emissive = FALSE
var/eyes_layer = BODY_LAYER
-
-/obj/item/organ/internal/eyes/night_vision/ashwalker
+
+/obj/item/organ/eyes/night_vision/ashwalker
//give ashwalker darkvision a reddish-blue tint
low_light_cutoff = list(22, 12, 17)
medium_light_cutoff = list(33, 18, 26)
diff --git a/modular_nova/modules/customization/modules/surgery/organs/fluff.dm b/modular_nova/modules/customization/modules/surgery/organs/fluff.dm
index 0dab3106c26..d63e83117aa 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/fluff.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/fluff.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/fluff
+/obj/item/organ/fluff
name = "fluff"
desc = "Real fluffy."
icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/frills.dm b/modular_nova/modules/customization/modules/surgery/organs/frills.dm
index 0dacf38e09f..185e688e779 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/frills.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/frills.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/frills
+/obj/item/organ/frills
preference = "feature_frills"
mutantpart_key = "frills"
mutantpart_info = list(MUTANT_INDEX_NAME = "Divinity", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/surgery/organs/genitals.dm b/modular_nova/modules/customization/modules/surgery/organs/genitals.dm
index 89b2a7caf8a..ecc1176ac11 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/genitals.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/genitals.dm
@@ -1,6 +1,6 @@
-/obj/item/organ/external/genital
+/obj/item/organ/genital
color = "#fcccb3"
- organ_flags = ORGAN_ORGANIC | ORGAN_UNREMOVABLE
+ organ_flags = ORGAN_ORGANIC | ORGAN_UNREMOVABLE | ORGAN_EXTERNAL
///Size value of the genital, needs to be translated to proper lengths/diameters/cups
var/genital_size = 1
///Sprite name of the genital, it's what shows up on character creation
@@ -23,11 +23,11 @@
var/layer_mode = GENITAL_LAYER_NORMAL
//This translates the float size into a sprite string
-/obj/item/organ/external/genital/proc/get_sprite_size_string()
+/obj/item/organ/genital/proc/get_sprite_size_string()
return 0
//This translates the float size into a sprite string
-/obj/item/organ/external/genital/proc/update_sprite_suffix()
+/obj/item/organ/genital/proc/update_sprite_suffix()
sprite_suffix = "[get_sprite_size_string()]"
var/datum/bodypart_overlay/mutant/genital/our_overlay = bodypart_overlay
@@ -37,33 +37,33 @@
our_overlay.organ_slot = src.slot
-/obj/item/organ/external/genital/proc/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/proc/get_description_string(datum/sprite_accessory/genital/gas)
return "You see genitals"
-/obj/item/organ/external/genital/proc/update_genital_icon_state()
+/obj/item/organ/genital/proc/update_genital_icon_state()
return
-/obj/item/organ/external/genital/proc/set_size(size)
+/obj/item/organ/genital/proc/set_size(size)
genital_size = size
update_sprite_suffix()
-/obj/item/organ/external/genital/Initialize(mapload)
+/obj/item/organ/genital/Initialize(mapload)
. = ..()
update_sprite_suffix()
if(CONFIG_GET(flag/disable_lewd_items))
return INITIALIZE_HINT_QDEL
//Removes ERP organs depending on config
-/obj/item/organ/external/genital/Insert(mob/living/carbon/M, special, movement_flags)
+/obj/item/organ/genital/Insert(mob/living/carbon/M, special, movement_flags)
if(CONFIG_GET(flag/disable_erp_preferences))
return
. = ..()
-/obj/item/organ/external/genital/Remove(mob/living/carbon/M, special = FALSE, moving)
+/obj/item/organ/genital/Remove(mob/living/carbon/M, special = FALSE, moving)
. = ..()
update_genital_icon_state()
-/obj/item/organ/external/genital/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/build_from_dna(datum/dna/DNA, associated_key)
. = ..()
var/datum/sprite_accessory/genital/accessory = SSaccessories.sprite_accessories[associated_key][DNA.mutant_bodyparts[associated_key][MUTANT_INDEX_NAME]]
genital_name = accessory.name
@@ -78,10 +78,10 @@
our_overlay.organ_slot = src.slot
/// for specific build_from_dna behavior that also checks the genital accessory.
-/obj/item/organ/external/genital/proc/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/proc/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
return
-/obj/item/organ/external/genital/proc/is_exposed()
+/obj/item/organ/genital/proc/is_exposed()
if(!owner)
return TRUE
@@ -163,7 +163,7 @@
/// Helper function - if the organ this overlay is tied to has been set to layer above clothing, return TRUE
/datum/bodypart_overlay/mutant/genital/proc/layer_mode_check()
if(istype(owner))
- var/obj/item/organ/external/genital/owning_organ = owner.get_organ_slot(organ_slot)
+ var/obj/item/organ/genital/owning_organ = owner.get_organ_slot(organ_slot)
if(owning_organ?.layer_mode == GENITAL_LAYER_HIGH)
return TRUE
return FALSE
@@ -180,7 +180,7 @@
return ..()
-/obj/item/organ/external/genital/penis
+/obj/item/organ/genital/penis
name = "penis"
desc = "A male reproductive organ."
icon_state = "penis"
@@ -213,7 +213,7 @@
return TRUE
-/obj/item/organ/external/genital/penis/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/penis/get_description_string(datum/sprite_accessory/genital/gas)
var/returned_string = ""
var/pname = LOWER_TEXT(genital_name) == "nondescript" ? "" : LOWER_TEXT(genital_name) + " "
if(sheath != SHEATH_NONE && aroused != AROUSAL_FULL) //Hidden in sheath
@@ -235,7 +235,7 @@
returned_string += " It's fully erect."
return returned_string
-/obj/item/organ/external/genital/penis/update_genital_icon_state()
+/obj/item/organ/genital/penis/update_genital_icon_state()
var/size_affix
var/measured_size = FLOOR(genital_size,1)
if(measured_size < 1)
@@ -254,7 +254,7 @@
passed_string += "_s"
icon_state = passed_string
-/obj/item/organ/external/genital/penis/get_sprite_size_string()
+/obj/item/organ/genital/penis/get_sprite_size_string()
if(aroused != AROUSAL_FULL && sheath != SHEATH_NONE) //Sheath time!
var/poking_out = 0
if(aroused == AROUSAL_PARTIAL)
@@ -282,14 +282,14 @@
passed_string += "_s"
return passed_string
-/obj/item/organ/external/genital/penis/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/penis/build_from_dna(datum/dna/DNA, associated_key)
girth = DNA.features["penis_girth"]
uses_skin_color = DNA.features["penis_uses_skincolor"]
set_size(DNA.features["penis_size"])
return ..()
-/obj/item/organ/external/genital/penis/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/penis/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
var/datum/sprite_accessory/genital/penis/snake = accessory
if(snake.can_have_sheath)
sheath = DNA.features["penis_sheath"]
@@ -300,7 +300,7 @@
return SSaccessories.sprite_accessories[ORGAN_SLOT_PENIS]
-/obj/item/organ/external/genital/testicles
+/obj/item/organ/genital/testicles
name = "testicles"
desc = "A male reproductive organ."
icon_state = "testicles"
@@ -332,30 +332,30 @@
else
return TRUE
-/obj/item/organ/external/genital/testicles/update_genital_icon_state()
+/obj/item/organ/genital/testicles/update_genital_icon_state()
var/measured_size = clamp(genital_size, 1, 6)
var/passed_string = "testicles_[genital_type]_[measured_size]"
if(uses_skintones)
passed_string += "_s"
icon_state = passed_string
-/obj/item/organ/external/genital/testicles/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/testicles/get_description_string(datum/sprite_accessory/genital/gas)
if(genital_name == "Internal") //Checks if Testicles are of Internal Variety
visibility_preference = GENITAL_SKIP_VISIBILITY //Removes visibility if yes.
else
return "You see a pair of testicles, they look [LOWER_TEXT(balls_size_to_description(genital_size))]."
-/obj/item/organ/external/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
uses_skin_color = DNA.features["testicles_uses_skincolor"]
set_size(DNA.features["balls_size"])
return ..()
-/obj/item/organ/external/genital/testicles/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/testicles/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
if(DNA.features["testicles_uses_skintones"])
uses_skintones = accessory.has_skintone_shading
-/obj/item/organ/external/genital/testicles/get_sprite_size_string()
+/obj/item/organ/genital/testicles/get_sprite_size_string()
var/measured_size = FLOOR(genital_size,1)
measured_size = clamp(measured_size, 0, 6)
var/passed_string = "[genital_type]_[measured_size]"
@@ -367,7 +367,7 @@
return SSaccessories.sprite_accessories[ORGAN_SLOT_TESTICLES]
-/obj/item/organ/external/genital/testicles/proc/balls_size_to_description(number)
+/obj/item/organ/genital/testicles/proc/balls_size_to_description(number)
if(number < 0)
number = 0
var/returned = GLOB.balls_size_translation["[number]"]
@@ -375,14 +375,14 @@
returned = BREAST_SIZE_BEYOND_MEASUREMENT
return returned
-/obj/item/organ/external/genital/testicles/proc/balls_description_to_size(cup)
+/obj/item/organ/genital/testicles/proc/balls_description_to_size(cup)
for(var/key in GLOB.balls_size_translation)
if(GLOB.balls_size_translation[key] == cup)
return text2num(key)
return 0
-/obj/item/organ/external/genital/vagina
+/obj/item/organ/genital/vagina
name = "vagina"
icon = 'modular_nova/master_files/icons/obj/genitals/vagina.dmi'
icon_state = "vagina"
@@ -412,7 +412,7 @@
else
return TRUE
-/obj/item/organ/external/genital/vagina/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/vagina/get_description_string(datum/sprite_accessory/genital/gas)
var/returned_string = "You see a [LOWER_TEXT(genital_name)] vagina."
if(LOWER_TEXT(genital_name) == "cloaca")
returned_string = "You see a cloaca." //i deserve a pipebomb for this
@@ -425,18 +425,18 @@
returned_string += " It's bright and dripping with arousal."
return returned_string
-/obj/item/organ/external/genital/vagina/get_sprite_size_string()
+/obj/item/organ/genital/vagina/get_sprite_size_string()
var/is_dripping = 0
if(aroused == AROUSAL_FULL)
is_dripping = 1
return "[genital_type]_[is_dripping]"
-/obj/item/organ/external/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
uses_skin_color = DNA.features["vagina_uses_skincolor"]
return ..() // will update the sprite suffix
-/obj/item/organ/external/genital/vagina/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/vagina/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
if(DNA.features["vagina_uses_skintones"])
uses_skintones = accessory.has_skintone_shading
@@ -444,7 +444,7 @@
return SSaccessories.sprite_accessories[ORGAN_SLOT_VAGINA]
-/obj/item/organ/external/genital/womb
+/obj/item/organ/genital/womb
name = "womb"
desc = "A female reproductive organ."
icon = 'modular_nova/master_files/icons/obj/genitals/vagina.dmi'
@@ -467,7 +467,7 @@
return SSaccessories.sprite_accessories[ORGAN_SLOT_WOMB]
-/obj/item/organ/external/genital/anus
+/obj/item/organ/genital/anus
name = "anus"
desc = "What do you want me to tell you?"
icon = 'modular_nova/master_files/icons/obj/genitals/anus.dmi'
@@ -484,7 +484,7 @@
feature_key = ORGAN_SLOT_ANUS
layers = NONE
-/obj/item/organ/external/genital/anus/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/anus/get_description_string(datum/sprite_accessory/genital/gas)
var/returned_string = "You see an [LOWER_TEXT(genital_name)]."
if(aroused == AROUSAL_PARTIAL)
returned_string += " It looks tight."
@@ -496,7 +496,7 @@
return SSaccessories.sprite_accessories[ORGAN_SLOT_ANUS]
-/obj/item/organ/external/genital/breasts
+/obj/item/organ/genital/breasts
name = "breasts"
desc = "Female milk producing organs."
icon_state = "breasts"
@@ -524,7 +524,7 @@
else
return TRUE
-/obj/item/organ/external/genital/breasts/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/breasts/get_description_string(datum/sprite_accessory/genital/gas)
var/returned_string = "You see a [LOWER_TEXT(genital_name)] of breasts."
var/size_description
var/translation = breasts_size_to_cup(genital_size)
@@ -543,7 +543,7 @@
returned_string += " Their nipples look hard and perky."
return returned_string
-/obj/item/organ/external/genital/breasts/update_genital_icon_state()
+/obj/item/organ/genital/breasts/update_genital_icon_state()
var/max_size = 5
var/current_size = FLOOR(genital_size, 1)
if(current_size < 0)
@@ -555,7 +555,7 @@
passed_string += "_s"
icon_state = passed_string
-/obj/item/organ/external/genital/breasts/get_sprite_size_string()
+/obj/item/organ/genital/breasts/get_sprite_size_string()
var/max_size = 5
if(genital_type == "pair")
max_size = 16
@@ -569,21 +569,21 @@
passed_string += "_s"
return passed_string
-/obj/item/organ/external/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
lactates = DNA.features["breasts_lactation"]
uses_skin_color = DNA.features["breasts_uses_skincolor"]
set_size(DNA.features["breasts_size"])
return ..()
-/obj/item/organ/external/genital/breasts/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/breasts/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
if(DNA.features["breasts_uses_skintones"])
uses_skintones = accessory.has_skintone_shading
/datum/bodypart_overlay/mutant/genital/breasts/get_global_feature_list()
return SSaccessories.sprite_accessories[ORGAN_SLOT_BREASTS]
-/obj/item/organ/external/genital/breasts/proc/breasts_size_to_cup(number)
+/obj/item/organ/genital/breasts/proc/breasts_size_to_cup(number)
if(number < 0)
number = 0
var/returned = GLOB.breast_size_translation["[number]"]
@@ -591,7 +591,7 @@
returned = BREAST_SIZE_BEYOND_MEASUREMENT
return returned
-/obj/item/organ/external/genital/breasts/proc/breasts_cup_to_size(cup)
+/obj/item/organ/genital/breasts/proc/breasts_cup_to_size(cup)
for(var/key in GLOB.breast_size_translation)
if(GLOB.breast_size_translation[key] == cup)
return text2num(key)
@@ -607,14 +607,14 @@
return
var/list/genital_list = list()
- for(var/obj/item/organ/external/genital/genital in organs)
+ for(var/obj/item/organ/genital/genital in organs)
if(!genital.visibility_preference == GENITAL_SKIP_VISIBILITY)
genital_list += genital
if(!genital_list.len) //There is nothing to expose
return
- var/obj/item/organ/external/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", genital_list)
+ var/obj/item/organ/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", genital_list)
if(!picked_organ || !(picked_organ in organs))
return
@@ -653,14 +653,14 @@
return
var/list/genital_list = list()
- for(var/obj/item/organ/external/genital/genital in organs)
+ for(var/obj/item/organ/genital/genital in organs)
if(!genital.aroused == AROUSAL_CANT)
genital_list += genital
if(!genital_list.len) //There is nothing to modify.
return
- var/obj/item/organ/external/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to the change arousal of", "Expose/Hide genitals", genital_list)
+ var/obj/item/organ/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to the change arousal of", "Expose/Hide genitals", genital_list)
if(!picked_organ || !(picked_organ in organs))
return
diff --git a/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm b/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm
index 973b3d8e5a6..6f8b3255f71 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/head_accessory
+/obj/item/organ/head_accessory
name = "head accessory"
desc = "It goes on the head."
icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/horns.dm b/modular_nova/modules/customization/modules/surgery/organs/horns.dm
index 02f0084ab24..efb22c9f971 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/horns.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/horns.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/horns
+/obj/item/organ/horns
desc = "Why do some people even have horns? Well, this one obviously doesn't."
preference = "feature_horns"
mutantpart_key = "horns"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm b/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm
index b21e6756cab..3434897a685 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm
@@ -1,3 +1,3 @@
-/obj/item/organ/external/antennae
+/obj/item/organ/antennae
mutantpart_key = "moth_antennae"
mutantpart_info = list(MUTANT_INDEX_NAME = "Plain", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm b/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm
index 4863ab2f55e..aa10a2e02ca 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/moth_markings
+/obj/item/organ/moth_markings
name = "moth markings"
desc = "How did you even get that off...?"
icon_state = "random_fly_2"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm b/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm
index 51f97f36097..9f421623ce7 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/neck_accessory
+/obj/item/organ/neck_accessory
name = "neck accessory"
desc = "It goes on the neck."
icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/nif.dm b/modular_nova/modules/customization/modules/surgery/organs/nif.dm
index 1398ba45136..854f3c4688c 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/nif.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/nif.dm
@@ -17,7 +17,7 @@
/datum/surgery/repair_nif/can_start(mob/user, mob/living/patient)
var/mob/living/carbon/human/nif_patient = patient
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
if(!nif_patient || !installed_nif)
return FALSE
@@ -49,7 +49,7 @@
)
var/mob/living/carbon/human/nif_patient = target
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
installed_nif.durability = installed_nif.max_durability
diff --git a/modular_nova/modules/customization/modules/surgery/organs/organ.dm b/modular_nova/modules/customization/modules/surgery/organs/organ.dm
index f15b09e9a77..326eb1ca528 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/organ.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/organ.dm
@@ -6,17 +6,17 @@
/// Relevant layer flags, as set by the organ's associated sprite_accessory, should there be one.
var/relevant_layers
-/obj/item/organ/external
+/obj/item/organ
///This is for associating an organ with a mutant bodypart. Look at tails for examples
var/mutantpart_key
var/list/list/mutantpart_info
-/obj/item/organ/external/Initialize(mapload)
+/obj/item/organ/Initialize(mapload)
. = ..()
if(mutantpart_key)
color = mutantpart_info[MUTANT_INDEX_COLOR_LIST][1]
-/obj/item/organ/external/Remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/Remove(mob/living/carbon/organ_owner, special, movement_flags)
// NOVA EDIT ADDITION START
if(mutantpart_key)
transfer_mutantpart_info(organ_owner, special)
@@ -24,7 +24,7 @@
return ..()
/// Copies the organ's mutantpart_info to the owner's mutant_bodyparts
-/obj/item/organ/external/proc/copy_to_mutant_bodyparts(mob/living/carbon/organ_owner, special)
+/obj/item/organ/proc/copy_to_mutant_bodyparts(mob/living/carbon/organ_owner, special)
var/mob/living/carbon/human/human_owner = organ_owner
if(!istype(human_owner))
return
@@ -34,7 +34,7 @@
human_owner.update_body()
/// Copies the mob's mutant_bodyparts data to an organ's mutantpart_info for consistency e.g. on organ removal
-/obj/item/organ/external/proc/transfer_mutantpart_info(mob/living/carbon/organ_owner, special)
+/obj/item/organ/proc/transfer_mutantpart_info(mob/living/carbon/organ_owner, special)
var/mob/living/carbon/human/human_owner = organ_owner
if(!istype(human_owner))
return
@@ -50,7 +50,7 @@
/obj/item/organ/proc/build_from_dna(datum/dna/DNA, associated_key)
return
-/obj/item/organ/external/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/build_from_dna(datum/dna/DNA, associated_key)
mutantpart_key = associated_key
mutantpart_info = DNA.mutant_bodyparts[associated_key].Copy()
color = mutantpart_info[MUTANT_INDEX_COLOR_LIST][1]
diff --git a/modular_nova/modules/customization/modules/surgery/organs/pod.dm b/modular_nova/modules/customization/modules/surgery/organs/pod.dm
index e545f3f17c0..2c53d32f204 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/pod.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/pod.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/pod_hair
+/obj/item/organ/pod_hair
name = "podperson hair"
desc = "Base for many-o-salads."
diff --git a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm
index 9bd71abe4c3..7240a8f16e6 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/skrell_hair
+/obj/item/organ/skrell_hair
name = "skrell_hair"
desc = "Hair isn't really the best way to describe it, but you really can't think of any other word that makes sense."
icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm b/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm
index c9ff539dec6..8cafba48edb 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/synth_antenna
+/obj/item/organ/synth_antenna
name = "synth antenna"
desc = "Wonder if we'll catch Syndicate frequencies with these..."
icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm b/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm
index 7339229ffc5..cbcb700fb79 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/synth_screen
+/obj/item/organ/synth_screen
name = "synth screen"
desc = "Surely that's just a bunch of LEDs and not a retro-projected screen, right? Right...?"
icon_state = "tonguerobot"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/tails.dm b/modular_nova/modules/customization/modules/surgery/organs/tails.dm
index 059cd5779d1..761a3247340 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/tails.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/tails.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/tail
+/obj/item/organ/tail
mutantpart_key = "tail"
mutantpart_info = list(MUTANT_INDEX_NAME = "Smooth", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
var/can_wag = TRUE
@@ -44,22 +44,22 @@
return TRUE
-/obj/item/organ/external/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
if(sprite_accessory_flags & SPRITE_ACCESSORY_WAG_ABLE)
wag_flags |= WAG_ABLE
return ..()
-/obj/item/organ/external/tail/cat
+/obj/item/organ/tail/cat
mutantpart_info = list(MUTANT_INDEX_NAME = "Cat", MUTANT_INDEX_COLOR_LIST = list("#FFAA00"))
-/obj/item/organ/external/tail/monkey
+/obj/item/organ/tail/monkey
wag_flags = WAG_ABLE // waggable monkey tails
mutantpart_info = list(MUTANT_INDEX_NAME = "Monkey", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
-/obj/item/organ/external/tail/lizard
+/obj/item/organ/tail/lizard
mutantpart_info = list(MUTANT_INDEX_NAME = "Smooth", MUTANT_INDEX_COLOR_LIST = list("#DDFFDD"))
-/obj/item/organ/external/tail/fluffy
+/obj/item/organ/tail/fluffy
name = "fluffy tail"
-/obj/item/organ/external/tail/fluffy/no_wag
+/obj/item/organ/tail/fluffy/no_wag
diff --git a/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm b/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm
index 4f6889f6c78..1c35e7f21ab 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm
@@ -1,10 +1,11 @@
-/obj/item/organ/external/taur_body
+/obj/item/organ/taur_body
name = "taur body"
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_EXTERNAL_TAUR
external_bodyshapes = BODYSHAPE_TAUR
use_mob_sprite_as_obj_sprite = TRUE
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
preference = "feature_taur"
mutantpart_key = "taur"
mutantpart_info = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF"))
@@ -45,15 +46,15 @@
/// When considering how much to offset our rider, we multiply size scaling against this.
var/riding_offset_scaling_mult = 0.8
-/obj/item/organ/external/taur_body/horselike
+/obj/item/organ/taur_body/horselike
can_use_saddle = TRUE
-/obj/item/organ/external/taur_body/horselike/synth
- organ_flags = ORGAN_ROBOTIC
+/obj/item/organ/taur_body/horselike/synth
+ organ_flags = ORGAN_ROBOTIC | ORGAN_EXTERNAL
-/obj/item/organ/external/taur_body/horselike/deer
+/obj/item/organ/taur_body/horselike/deer
-/obj/item/organ/external/taur_body/horselike/deer/Initialize(mapload)
+/obj/item/organ/taur_body/horselike/deer/Initialize(mapload)
. = ..()
taur_specific_clothing_y_offsets = list(
@@ -63,26 +64,26 @@
TEXT_SOUTH = 0,
)
-/obj/item/organ/external/taur_body/serpentine
+/obj/item/organ/taur_body/serpentine
left_leg_name = "upper serpentine body"
right_leg_name = "lower serpentine body"
-/obj/item/organ/external/taur_body/serpentine/synth
- organ_flags = ORGAN_ROBOTIC
+/obj/item/organ/taur_body/serpentine/synth
+ organ_flags = ORGAN_ROBOTIC | ORGAN_EXTERNAL
-/obj/item/organ/external/taur_body/spider
+/obj/item/organ/taur_body/spider
left_leg_name = "left legs"
right_leg_name = "right legs"
-/obj/item/organ/external/taur_body/tentacle
+/obj/item/organ/taur_body/tentacle
left_leg_name = "front tentacles"
right_leg_name = "back tentacles"
-/obj/item/organ/external/taur_body/blob
+/obj/item/organ/taur_body/blob
left_leg_name = "outer blob"
right_leg_name = "inner blob"
-/obj/item/organ/external/taur_body/anthro
+/obj/item/organ/taur_body/anthro
left_leg_name = null
right_leg_name = null
@@ -102,7 +103,7 @@
return SSaccessories.sprite_accessories["taur"]
-/obj/item/organ/external/taur_body/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/taur_body/mob_insert(mob/living/carbon/receiver, special, movement_flags)
if(sprite_accessory_flags & SPRITE_ACCESSORY_HIDE_SHOES)
external_bodyshapes |= BODYSHAPE_HIDE_SHOES
@@ -143,7 +144,7 @@
return ..()
-/obj/item/organ/external/taur_body/mob_remove(mob/living/carbon/organ_owner, special, moving)
+/obj/item/organ/taur_body/mob_remove(mob/living/carbon/organ_owner, special, moving)
if(QDELETED(owner))
return ..()
@@ -170,7 +171,7 @@
return ..()
-/obj/item/organ/external/taur_body/Destroy()
+/obj/item/organ/taur_body/Destroy()
. = ..()
if(old_left_leg)
QDEL_NULL(old_left_leg)
@@ -178,7 +179,7 @@
if(old_right_leg)
QDEL_NULL(old_right_leg)
-/obj/item/organ/external/taur_body/proc/get_riding_offset(oversized = FALSE)
+/obj/item/organ/taur_body/proc/get_riding_offset(oversized = FALSE)
var/size_scaling = (owner.dna.features["body_size"] / BODY_SIZE_NORMAL) - 1
var/scaling_mult = 1 + (size_scaling * riding_offset_scaling_mult)
diff --git a/modular_nova/modules/customization/modules/surgery/organs/vox.dm b/modular_nova/modules/customization/modules/surgery/organs/vox.dm
index f7407a73b15..cf22d598097 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/vox.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/vox.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs/nitrogen
+/obj/item/organ/lungs/nitrogen
name = "nitrogen lungs"
desc = "A set of lungs for breathing nitrogen."
safe_oxygen_min = 0 //Dont need oxygen
@@ -8,7 +8,7 @@
oxy_breath_dam_min = 6
oxy_breath_dam_max = 20
-/obj/item/organ/internal/lungs/nitrogen/vox
+/obj/item/organ/lungs/nitrogen/vox
name = "vox lungs"
desc = "They're filled with dust... wow."
icon_state = "lungs-c"
@@ -18,11 +18,11 @@
cold_level_3_threshold = 0
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
-/obj/item/organ/internal/brain/vox
+/obj/item/organ/brain/vox
name = "vox brain"
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
-/obj/item/organ/internal/brain/vox/emp_act(severity)
+/obj/item/organ/brain/vox/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
diff --git a/modular_nova/modules/customization/modules/surgery/organs/wings.dm b/modular_nova/modules/customization/modules/surgery/organs/wings.dm
index 924d7cee9b1..20142f9d18e 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/wings.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/wings.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/wings
+/obj/item/organ/wings
name = "wings"
desc = "A pair of wings. Those may or may not allow you to fly... or at the very least flap."
zone = BODY_ZONE_CHEST
@@ -27,7 +27,7 @@
/datum/bodypart_overlay/mutant/wings/override_color(rgb_value)
return draw_color
-/obj/item/organ/external/wings/moth
+/obj/item/organ/wings/moth
name = "moth wings"
desc = "A pair of fuzzy moth wings."
flight_for_species = list(SPECIES_MOTH)
@@ -36,7 +36,7 @@
///Our associated terrorize spell, for antagonist nightmares
var/datum/action/cooldown/spell/moth_and_dash/our_dash
-/obj/item/organ/external/wings/moth/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(ismoth(organ_owner))
@@ -46,7 +46,7 @@
our_dash = new(organ_owner)
our_dash.Grant(organ_owner)
-/obj/item/organ/external/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
. = ..()
QDEL_NULL(our_climb)
QDEL_NULL(our_dash)
@@ -185,21 +185,21 @@
return TRUE
return FALSE
-/obj/item/organ/external/wings/flight
+/obj/item/organ/wings/flight
unconditional_flight = TRUE
can_open = TRUE
-/obj/item/organ/external/wings/flight/angel
+/obj/item/organ/wings/flight/angel
name = "angel wings"
desc = "A pair of magnificent, feathery wings. They look strong enough to lift you up in the air."
mutantpart_info = list(MUTANT_INDEX_NAME = "Angel", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
-/obj/item/organ/external/wings/flight/dragon
+/obj/item/organ/wings/flight/dragon
name = "dragon wings"
desc = "A pair of intimidating, membranous wings. They look strong enough to lift you up in the air."
mutantpart_info = list(MUTANT_INDEX_NAME = "Dragon", MUTANT_INDEX_COLOR_LIST = list("#880000"))
-/obj/item/organ/external/wings/flight/megamoth
+/obj/item/organ/wings/flight/megamoth
name = "megamoth wings"
desc = "A pair of horrifyingly large, fuzzy wings. They look strong enough to lift you up in the air."
mutantpart_info = list(MUTANT_INDEX_NAME = "Megamoth", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
@@ -243,20 +243,20 @@
return COLOR_WHITE // We want to keep those wings as their original color, because it looks better.
-/obj/item/organ/external/wings/functional
+/obj/item/organ/wings/functional
bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/locked
-/obj/item/organ/external/wings/functional/angel
+/obj/item/organ/wings/functional/angel
bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/original_color
-/obj/item/organ/external/wings/functional/dragon
+/obj/item/organ/wings/functional/dragon
bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional
-/obj/item/organ/external/wings/functional/moth
+/obj/item/organ/wings/functional/moth
bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/locked/original_color
-/obj/item/organ/external/wings/functional/robotic
+/obj/item/organ/wings/functional/robotic
bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional
-/obj/item/organ/external/wings/functional/slime
+/obj/item/organ/wings/functional/slime
bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional
diff --git a/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm b/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm
index 5725cc1a9a2..6f64a50c0e8 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm
@@ -1,7 +1,8 @@
-/obj/item/organ/external/xenodorsal
+/obj/item/organ/xenodorsal
name = "dorsal spines"
desc = "How did that even fit on them...?"
icon_state = "random_fly_2"
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
mutantpart_key = "xenodorsal"
mutantpart_info = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm b/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm
index c08af5cb985..70efcd35672 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm
@@ -1,7 +1,8 @@
-/obj/item/organ/external/xenohead
+/obj/item/organ/xenohead
name = "xeno head"
desc = "How did you take that off?"
icon_state = "random_fly_2"
+ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
mutantpart_key = "xenohead"
mutantpart_info = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm
index 8011e4e0d74..4bbb3edca93 100644
--- a/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm
+++ b/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm
@@ -90,8 +90,8 @@
var/mob/living/carbon/human/human_target = to_buckle
- var/obj/item/organ/external/taur_body/taur_body = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
- var/obj/item/organ/external/taur_body/other_taur_body = human_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/taur_body = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/other_taur_body = human_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
if (isnull(taur_body) || isnull(other_taur_body))
return TRUE
diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm
index 80bff206af1..0c5f3a21f7b 100644
--- a/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm
+++ b/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm
@@ -72,12 +72,5 @@
/datum/component/carbon_saddle/proc/wearer_has_requisite_organ(mob/living/carbon/target)
if (!istype(target))
return TRUE
-
- for (var/obj/item/organ/iter_organ as anything in target.organs)
- if (!istype(iter_organ, /obj/item/organ/external/taur_body))
- continue
- var/obj/item/organ/external/taur_body/taur_body = iter_organ
- if (taur_body.can_use_saddle)
- return TRUE
-
- return FALSE
+ var/obj/item/organ/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ return istype(taur_body) && taur_body.can_use_saddle
diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm
index d810478e7e9..46b4218d8b2 100644
--- a/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm
+++ b/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm
@@ -26,7 +26,7 @@
return
var/mob/living/carbon/target_carbon = signal_source.loc
- var/obj/item/organ/external/taur_body/taur_body = target_carbon.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/taur_body = target_carbon.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
if (!istype(taur_body))
return
var/icon_dir = target_carbon.dir
@@ -56,7 +56,7 @@
/datum/component/taur_clothing_offset/proc/wearer_dir_changed(mob/living/carbon/human/signal_source, old_dir, new_dir)
SIGNAL_HANDLER
- var/obj/item/organ/external/taur_body/taur_body = signal_source.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/taur_body = signal_source.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
if (isnull(taur_body))
return
diff --git a/modular_nova/modules/customization/readme.md b/modular_nova/modules/customization/readme.md
index 6a6246b751a..92bc27ab877 100644
--- a/modular_nova/modules/customization/readme.md
+++ b/modular_nova/modules/customization/readme.md
@@ -26,8 +26,8 @@ Re-writes how mutant bodyparts exist and how they're handled. Adds in a per limb
./code/modules/mob/living/carbon/human/species_types/felinid.dm > the 5 procs related to wagging tail
./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm the 5 procs related to wagging tail and - /datum/species/lizard/on_species_gain()
./code/modules/surgery/bodyparts/_bodyparts.dm > /obj/item/bodypart/proc/get_limb_icon()
- ./code/modules/surgery/organs/ears.dm > /obj/item/organ/internal/ears/cat/Insert(), /obj/item/organ/internal/ears/cat/Remove()
- ./code/modules/surgery/organs/tails.dm > /obj/item/organ/external/tail/cat/Insert(), /obj/item/organ/external/tail/cat/Remove(), /obj/item/organ/external/tail/lizard/Initialize(mapload), /obj/item/organ/external/tail/lizard/Insert(), /obj/item/organ/external/tail/lizard/Remove()
+ ./code/modules/surgery/organs/ears.dm > /obj/item/organ/ears/cat/Insert(), /obj/item/organ/ears/cat/Remove()
+ ./code/modules/surgery/organs/tails.dm > /obj/item/organ/tail/cat/Insert(), /obj/item/organ/tail/cat/Remove(), /obj/item/organ/tail/lizard/Initialize(mapload), /obj/item/organ/tail/lizard/Insert(), /obj/item/organ/tail/lizard/Remove()
./code/modules/surgery/bodyparts/dismemberment.dm > /mob/living/carbon/regenerate_limb()
./code/modules/mob/living/carbon/human/status_procs.dm > /mob/living/carbon/human/become_husk() > APPENDED
./code/modules/reagents/chemistry/holder.dm > /datum/reagents/metabolize()
@@ -46,8 +46,8 @@ Re-writes how mutant bodyparts exist and how they're handled. Adds in a per limb
### Defines:
./code/modules/surgery/organs/tongue.dm > var/static/list/languages_possible_base - added 2 languages
-./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm > commented out "mutant_organs = list(/obj/item/organ/external/tail/lizard)"
-./code/modules/mob/living/carbon/human/species_types/felinid.dm > commented out "mutantears = /obj/item/organ/internal/ears/cat" and "mutant_organs = list(/obj/item/organ/external/tail/cat)"
+./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm > commented out "mutant_organs = list(/obj/item/organ/tail/lizard)"
+./code/modules/mob/living/carbon/human/species_types/felinid.dm > commented out "mutantears = /obj/item/organ/ears/cat" and "mutant_organs = list(/obj/item/organ/tail/cat)"
./code/modules/mob/living/carbon/human/species.dm > var/list/list/mutant_bodyparts (added typed list type)
./code/_globalvars/lists/flavor_misc.dm > Removed accessory list defines
.\code\datums\keybindings\living.dm > /datum/keybinding/living/look_up > from L to P
diff --git a/modular_nova/modules/echolocation_quirk/code/echolocation.dm b/modular_nova/modules/echolocation_quirk/code/echolocation.dm
index a8193754215..fbec8a95f30 100644
--- a/modular_nova/modules/echolocation_quirk/code/echolocation.dm
+++ b/modular_nova/modules/echolocation_quirk/code/echolocation.dm
@@ -42,7 +42,7 @@
esp_color.update_colour(col)
// double the ear/hearing damage multiplier from any source.
- var/obj/item/organ/internal/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
if (!istype(echo_ears))
return
@@ -57,7 +57,7 @@
QDEL_NULL(esp) // echolocation component removal handles graceful disposal of everything above except the ears
QDEL_NULL(added_action) // remove the stall action, too
var/mob/living/carbon/human/human_holder = quirk_holder
- var/obj/item/organ/internal/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
if (!istype(echo_ears))
return
echo_ears.damage_multiplier = initial(echo_ears.damage_multiplier)
diff --git a/modular_nova/modules/emote_panel/code/emote_panel.dm b/modular_nova/modules/emote_panel/code/emote_panel.dm
index 23690d65fee..d1a36163a19 100644
--- a/modular_nova/modules/emote_panel/code/emote_panel.dm
+++ b/modular_nova/modules/emote_panel/code/emote_panel.dm
@@ -237,7 +237,7 @@
available_emotes += human_emotes
var/mob/living/carbon/human/current_mob = src
// Checking if can wag tail
- var/obj/item/organ/external/tail/tail = current_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+ var/obj/item/organ/tail/tail = current_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
if(!(tail?.wag_flags & WAG_ABLE))
available_emotes -= /mob/living/carbon/human/proc/emote_wag
// Checking if has wings
diff --git a/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm b/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm
index 8f7cf24e552..23e75885783 100644
--- a/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm
+++ b/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm
@@ -52,11 +52,11 @@
user.allowed_turfs += "holoseat"
//wings
- if((istype(user.get_organ_slot(ORGAN_SLOT_WINGS), /obj/item/organ/external/wings/moth)) || HAS_TRAIT(user, TRAIT_SPARKLE_ASPECT))
+ if((istype(user.get_organ_slot(ORGAN_SLOT_WINGS), /obj/item/organ/wings/moth)) || HAS_TRAIT(user, TRAIT_SPARKLE_ASPECT))
user.allowed_turfs += "dust" //moth's dust ✨
//body parts
- if(istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail))
+ if(istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail))
var/name = human_user.dna.species.mutant_bodyparts["tail"][MUTANT_INDEX_NAME]
var/datum/sprite_accessory/tails/tail = SSaccessories.sprite_accessories["tail"][name]
if(tail.fluffy)
diff --git a/modular_nova/modules/exp_corps/code/clothing.dm b/modular_nova/modules/exp_corps/code/clothing.dm
index 0e193b4ee3a..360c32689bd 100644
--- a/modular_nova/modules/exp_corps/code/clothing.dm
+++ b/modular_nova/modules/exp_corps/code/clothing.dm
@@ -225,7 +225,7 @@
/obj/item/clothing/head/helmet/expeditionary_corps/proc/enable_nv(mob/user)
if(current_user)
- var/obj/item/organ/internal/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/eyes)
if(my_eyes)
my_eyes.color_cutoffs = list(10, 30, 10)
my_eyes.flash_protect = FLASH_PROTECTION_SENSITIVE
@@ -233,7 +233,7 @@
/obj/item/clothing/head/helmet/expeditionary_corps/proc/disable_nv()
if(current_user)
- var/obj/item/organ/internal/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/eyes)
if(my_eyes)
my_eyes.color_cutoffs = initial(my_eyes.color_cutoffs)
my_eyes.flash_protect = initial(my_eyes.flash_protect)
diff --git a/modular_nova/modules/faction/code/mapping/mapping_helpers.dm b/modular_nova/modules/faction/code/mapping/mapping_helpers.dm
index 4e301603cb4..0d4360247dd 100644
--- a/modular_nova/modules/faction/code/mapping/mapping_helpers.dm
+++ b/modular_nova/modules/faction/code/mapping/mapping_helpers.dm
@@ -202,11 +202,11 @@
new /obj/item/mod/control/pre_equipped/elite(src)
if(5) //Implants
new /obj/item/storage/box/cyber_implants(src)
- new /obj/item/organ/internal/cyberimp/arm/combat(src)
- new /obj/item/organ/internal/cyberimp/arm/surgery(src)
- new /obj/item/organ/internal/cyberimp/arm/baton(src)
- new /obj/item/organ/internal/cyberimp/arm/toolset(src)
- new /obj/item/organ/internal/cyberimp/arm/gun/taser(src)
+ new /obj/item/organ/cyberimp/arm/combat(src)
+ new /obj/item/organ/cyberimp/arm/surgery(src)
+ new /obj/item/organ/cyberimp/arm/baton(src)
+ new /obj/item/organ/cyberimp/arm/toolset(src)
+ new /obj/item/organ/cyberimp/arm/gun/taser(src)
/obj/structure/closet/crate/secure/tradership_cargo_valuable/populate_contents_immediate()
. = ..()
diff --git a/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm b/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm
index 3eff36e55b3..d3006d4f038 100644
--- a/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm
+++ b/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm
@@ -154,8 +154,8 @@
to_chat(user, span_warning("You have no idea how to use this freezing concoction."))
return
- if(istype(interacting_with, /obj/item/organ/internal/lungs))
- var/obj/item/organ/internal/lungs/target_lungs = interacting_with
+ if(istype(interacting_with, /obj/item/organ/lungs))
+ var/obj/item/organ/lungs/target_lungs = interacting_with
if(IS_ROBOTIC_ORGAN(target_lungs))
user.balloon_alert(user, "The lungs have to be organic!")
return
@@ -163,7 +163,7 @@
playsound(location, 'sound/effects/slosh.ogg', 25, TRUE)
user.visible_message(span_notice("[user] pours a strange blue liquid over the set of lungs. The flesh starts glistening in a strange cyan light, transforming before your very eyes!"),
span_notice("Recalling the instructions for the lung transfiguration ritual, you pour the liquid over the flesh of the organ. Soon, the lungs glow in a mute cyan light, before they turn dim and change form before your very eyes!"))
- var/obj/item/organ/internal/lungs/icebox_adapted/new_lungs = new(location)
+ var/obj/item/organ/lungs/icebox_adapted/new_lungs = new(location)
new_lungs.damage = target_lungs.damage
qdel(target_lungs)
qdel(src)
diff --git a/modular_nova/modules/implants/code/augments_arms.dm b/modular_nova/modules/implants/code/augments_arms.dm
index 54bfdc2837f..3be335fdcdd 100644
--- a/modular_nova/modules/implants/code/augments_arms.dm
+++ b/modular_nova/modules/implants/code/augments_arms.dm
@@ -37,14 +37,14 @@
armour_penetration = 10 //Energy isn't as good at going through armor as it is through flesh alone.
hitsound = 'sound/items/weapons/blade1.ogg'
-/obj/item/organ/internal/cyberimp/arm/armblade
+/obj/item/organ/cyberimp/arm/armblade
name = "arm blade implant"
desc = "An integrated blade implant designed to be installed into a persons arm. Stylish and deadly; Although, being caught with this without proper permits is sure to draw unwanted attention."
items_to_create = list(/obj/item/melee/implantarmblade)
icon = 'modular_nova/modules/implants/icons/implanted_blade.dmi'
icon_state = "mantis_blade"
-/obj/item/organ/internal/cyberimp/arm/armblade/emag_act()
+/obj/item/organ/cyberimp/arm/armblade/emag_act()
if(obj_flags & EMAGGED)
return FALSE
for(var/datum/weakref/created_item in items_list)
@@ -54,7 +54,7 @@
/obj/item/autosurgeon/syndicate/armblade
name = "armblade autosurgeon"
- starting_organ = /obj/item/organ/internal/cyberimp/arm/armblade
+ starting_organ = /obj/item/organ/cyberimp/arm/armblade
/obj/item/knife/razor_claws
name = "implanted razor claws"
@@ -122,7 +122,7 @@
qdel(stone)
return ..()
-/obj/item/organ/internal/cyberimp/arm/razor_claws
+/obj/item/organ/cyberimp/arm/razor_claws
name = "razor claws implant"
desc = "A set of hidden, retractable blades built into the fingertips; cyborg mercenary approved."
items_to_create = list(/obj/item/knife/razor_claws)
@@ -133,11 +133,11 @@
retract_sound = 'sound/items/sheath.ogg'
/// bespoke subtypes for augs menu since it's a bit wonky
-/obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm
+/obj/item/organ/cyberimp/arm/razor_claws/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm
+/obj/item/organ/cyberimp/arm/razor_claws/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
@@ -148,7 +148,7 @@
button_icon = 'modular_nova/master_files/icons/hud/actions.dmi'
button_icon_state = "wolverine"
-/obj/item/organ/internal/cyberimp/arm/mining_drill
+/obj/item/organ/cyberimp/arm/mining_drill
name = "\improper Dalba Masterworks 'Burrower' Integrated Drill"
desc = "Extending from a stabilization bracer built into the upper forearm, this implant allows for a steel mining drill to extend over the user's hand. Little by little, we advance a bit further with each turn. That's how a drill works!"
icon = 'modular_nova/modules/implants/icons/drillimplant.dmi'
@@ -159,11 +159,11 @@
/// The bodypart overlay datum we should apply to whatever mob we are put into's someone's arm
var/datum/bodypart_overlay/simple/steel_drill/drill_overlay
-/obj/item/organ/internal/cyberimp/arm/mining_drill/right_arm //You know the drill.
+/obj/item/organ/cyberimp/arm/mining_drill/right_arm //You know the drill.
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/mining_drill/left_arm
+/obj/item/organ/cyberimp/arm/mining_drill/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
@@ -177,7 +177,7 @@
/datum/bodypart_overlay/simple/steel_drill/right
icon_state = "steel_right"
-/obj/item/organ/internal/cyberimp/arm/mining_drill/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
+/obj/item/organ/cyberimp/arm/mining_drill/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
. = ..()
if(isteshari(owner))
return
@@ -188,7 +188,7 @@
limb.add_bodypart_overlay(drill_overlay)
owner?.update_body_parts()
-/obj/item/organ/internal/cyberimp/arm/mining_drill/on_mob_remove(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/mining_drill/on_mob_remove(mob/living/carbon/arm_owner)
. = ..()
bodypart_owner?.remove_bodypart_overlay(drill_overlay)
arm_owner.update_body_parts()
@@ -232,7 +232,7 @@
playsound(user, 'modular_nova/master_files/sound/effects/robot_smoke.ogg', 50, FALSE)
user.visible_message(span_warning("[user] spins [src]'s bit, accelerating for a moment to thousands of RPM."), span_notice("You spin [src]'s bit, accelerating for a moment to thousands of RPM."))
-/obj/item/organ/internal/cyberimp/arm/mining_drill/diamond
+/obj/item/organ/cyberimp/arm/mining_drill/diamond
name = "\improper Dalba Masterworks 'Tunneler' Diamond Integrated Drill"
desc = "Extending from a stabilization bracer built into the upper forearm, this implant allows for a masterwork diamond mining drill to extend over the user's hand. This drill will open a hole in the universe, and that hole will be a path for those behind us!"
icon_state = "diamond"
@@ -249,14 +249,14 @@
usesound = 'sound/items/weapons/drill.ogg'
hitsound = 'sound/items/weapons/drill.ogg'
-/obj/item/organ/internal/cyberimp/arm/hacker
+/obj/item/organ/cyberimp/arm/hacker
name = "hacking arm implant"
desc = "An small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "toolkit_engiborg_multitool"
items_to_create = list(/obj/item/screwdriver/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/abductor/implant)
-/obj/item/organ/internal/cyberimp/arm/botany
+/obj/item/organ/cyberimp/arm/botany
name = "botany arm implant"
desc = "A rather simple arm implant containing tools used in gardening and botanical research."
items_to_create = list(/obj/item/cultivator, /obj/item/shovel/spade, /obj/item/hatchet, /obj/item/gun/energy/floragun, /obj/item/plant_analyzer, /obj/item/geneshears, /obj/item/secateurs, /obj/item/storage/bag/plants, /obj/item/storage/bag/plants/portaseeder)
@@ -280,7 +280,7 @@
tool_behaviour = TOOL_SAW
toolspeed = 1
-/obj/item/organ/internal/cyberimp/arm/botany/emag_act()
+/obj/item/organ/cyberimp/arm/botany/emag_act()
if(obj_flags & EMAGGED)
return FALSE
for(var/datum/weakref/created_item in items_list)
@@ -295,12 +295,12 @@
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "toolkit_engiborg_multitool"
-/obj/item/organ/internal/cyberimp/arm/janitor
+/obj/item/organ/cyberimp/arm/janitor
name = "janitorial tools implant"
desc = "A set of janitorial tools on the user's arm."
items_to_create = list(/obj/item/lightreplacer, /obj/item/holosign_creator, /obj/item/soap/nanotrasen, /obj/item/reagent_containers/spray/cyborg_drying, /obj/item/mop/advanced, /obj/item/paint/paint_remover, /obj/item/reagent_containers/cup/beaker/large, /obj/item/reagent_containers/spray/cleaner) //Beaker if for refilling sprays
-/obj/item/organ/internal/cyberimp/arm/janitor/emag_act()
+/obj/item/organ/cyberimp/arm/janitor/emag_act()
if(obj_flags & EMAGGED)
return FALSE
for(var/datum/weakref/created_item in items_list)
@@ -310,12 +310,12 @@
obj_flags |= EMAGGED
return TRUE
-/obj/item/organ/internal/cyberimp/arm/lighter
+/obj/item/organ/cyberimp/arm/lighter
name = "lighter implant"
desc = "A... implanted lighter. Incredibly useless."
items_to_create = list(/obj/item/lighter/greyscale) //Hilariously useless.
-/obj/item/organ/internal/cyberimp/arm/lighter/emag_act()
+/obj/item/organ/cyberimp/arm/lighter/emag_act()
if(obj_flags & EMAGGED)
return FALSE
for(var/datum/weakref/created_item in items_list)
@@ -372,7 +372,7 @@
),
)
-/obj/item/organ/internal/cyberimp/arm/razorwire
+/obj/item/organ/cyberimp/arm/razorwire
name = "razorwire spool implant"
desc = "An integrated spool of razorwire, capable of being used as a weapon when whipped at your foes. \
Built into the back of your hand, try your best to not get it tangled."
@@ -382,7 +382,7 @@
/obj/item/autosurgeon/syndicate/razorwire
name = "razorwire autosurgeon"
- starting_organ = /obj/item/organ/internal/cyberimp/arm/razorwire
+ starting_organ = /obj/item/organ/cyberimp/arm/razorwire
// Shell launch system, an arm mounted single-shot shotgun/.980 grenade launcher that comes out of your arm
@@ -425,7 +425,7 @@
max_ammo = 1
multiload = FALSE
-/obj/item/organ/internal/cyberimp/arm/shell_launcher
+/obj/item/organ/cyberimp/arm/shell_launcher
name = "shell launch system implant"
desc = "A mounted, single-shot housing for a shell launch cannon; capable of firing either twelve gauge shotgun shells, or .980 Tydhouer grenades."
items_to_create = list(/obj/item/gun/ballistic/shotgun/shell_launcher)
@@ -434,7 +434,7 @@
/obj/item/autosurgeon/syndicate/shell_launcher
name = "shell launcher autosurgeon"
- starting_organ = /obj/item/organ/internal/cyberimp/arm/shell_launcher
+ starting_organ = /obj/item/organ/cyberimp/arm/shell_launcher
#undef KNIFE_HITSOUND
#undef KNIFE_USESOUND
diff --git a/modular_nova/modules/implants/code/augments_chest.dm b/modular_nova/modules/implants/code/augments_chest.dm
index 7dd0395bd6c..16191776a3c 100644
--- a/modular_nova/modules/implants/code/augments_chest.dm
+++ b/modular_nova/modules/implants/code/augments_chest.dm
@@ -1,7 +1,7 @@
// for readability's sake, define here to match the healthscan() proc's use of it
// if someone updates that upstream, fix that here too, wouldja?
-/obj/item/organ/internal/cyberimp/chest/scanner
+/obj/item/organ/cyberimp/chest/scanner
name = "internal health analyzer"
desc = "An advanced health analyzer implant, designed to directly interface with a host's body and relay scan information to the brain on command."
slot = ORGAN_SLOT_SCANNER
@@ -17,7 +17,7 @@
/datum/action/item_action/organ_action/use/internal_analyzer/Trigger(trigger_flags)
. = ..()
- var/obj/item/organ/internal/cyberimp/chest/scanner/our_scanner = target
+ var/obj/item/organ/cyberimp/chest/scanner/our_scanner = target
if(our_scanner.organ_flags & ORGAN_FAILING)
to_chat(owner, span_warning("Your health analyzer relays an error! It can't interface with your body in its current condition!"))
return
diff --git a/modular_nova/modules/implants/code/augments_eyes.dm b/modular_nova/modules/implants/code/augments_eyes.dm
index d940eb5e789..9c8bbfd10e2 100644
--- a/modular_nova/modules/implants/code/augments_eyes.dm
+++ b/modular_nova/modules/implants/code/augments_eyes.dm
@@ -1,23 +1,23 @@
-/obj/item/organ/internal/eyes/robotic
+/obj/item/organ/eyes/robotic
icon = 'modular_nova/modules/implants/icons/internal_HA.dmi' //So I had to fucking include the eye sprites
icon_state = "cybernetic_eyeballs"
-/obj/item/organ/internal/eyes/robotic/xray
+/obj/item/organ/eyes/robotic/xray
eye_color_left = "#00ffe5"
eye_color_right = "#00ffe5"
icon_state = "xray_eyes"
-/obj/item/organ/internal/eyes/robotic/thermals
+/obj/item/organ/eyes/robotic/thermals
eye_color_left = "#FC0"
eye_color_right = "#FC0"
icon_state = "thermal_eyes"
-/obj/item/organ/internal/eyes/robotic/shield
+/obj/item/organ/eyes/robotic/shield
eye_color_left = "#ff2700"
eye_color_right = "#ff2700"
icon_state = "shielded_eyes"
-/obj/item/organ/internal/eyes/night_vision/cyber
+/obj/item/organ/eyes/night_vision/cyber
name = "nightvision eyes"
icon = 'modular_nova/modules/implants/icons/internal_HA.dmi' //All in the chest implants .dmi
icon_state = "eyes_nvcyber"
diff --git a/modular_nova/modules/implants/code/augments_head.dm b/modular_nova/modules/implants/code/augments_head.dm
index d46f9972fd3..3c0b784d373 100644
--- a/modular_nova/modules/implants/code/augments_head.dm
+++ b/modular_nova/modules/implants/code/augments_head.dm
@@ -5,7 +5,7 @@
// An implant that injects you with twitch on demand, acting like a bootleg sandevistan
-/obj/item/organ/internal/cyberimp/sensory_enhancer
+/obj/item/organ/cyberimp/sensory_enhancer
name = "\improper Qani-Laaca sensory computer"
desc = "An experimental implant replacing the spine of organics. When activated, it can give a temporary boost to mental processing speed, \
Which many users percieve as a slowing of time and quickening of their ability to act. Due to its nature, it is incompatible with \
@@ -25,7 +25,7 @@
/// TODO: Refactor this to be used as a mutant bodypart_overlay instead.
var/datum/bodypart_overlay/simple/sensory_enhancer/simple_bodypart_overlay
-/obj/item/organ/internal/cyberimp/sensory_enhancer/proc/vomit_blood()
+/obj/item/organ/cyberimp/sensory_enhancer/proc/vomit_blood()
owner.spray_blood(owner.dir, 2)
owner.emote("cough")
owner.visible_message(
@@ -33,7 +33,7 @@
span_danger("You feel your chest seize up, a worrying amount of blood flying out of your mouth as you cough uncontrollably.")
)
-/obj/item/organ/internal/cyberimp/sensory_enhancer/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
+/obj/item/organ/cyberimp/sensory_enhancer/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
. = ..()
if(isteshari(owner))
return
@@ -41,7 +41,7 @@
limb.add_bodypart_overlay(simple_bodypart_overlay)
owner?.update_body_parts()
-/obj/item/organ/internal/cyberimp/sensory_enhancer/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/cyberimp/sensory_enhancer/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
bodypart_owner?.remove_bodypart_overlay(simple_bodypart_overlay)
QDEL_NULL(simple_bodypart_overlay)
@@ -49,7 +49,7 @@
/obj/item/autosurgeon/syndicate/sandy
name = "\improper Qani-Laaca sensory computer autosurgeon"
- starting_organ = /obj/item/organ/internal/cyberimp/sensory_enhancer
+ starting_organ = /obj/item/organ/cyberimp/sensory_enhancer
/datum/bodypart_overlay/simple/sensory_enhancer
icon = 'modular_nova/modules/implants/icons/implants_onmob.dmi'
@@ -107,7 +107,7 @@
button_icon_state = "sandy_overcharge"
injection_amount = 20
-/obj/item/organ/internal/cyberimp/sensory_enhancer/emp_act(severity)
+/obj/item/organ/cyberimp/sensory_enhancer/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
@@ -123,7 +123,7 @@
// Hackerman deck, lets you emag or doorjack things (NO CYBORGS) within a short range of yourself
-/obj/item/organ/internal/cyberimp/hackerman_deck
+/obj/item/organ/cyberimp/hackerman_deck
name = "\improper Binyat wireless hacking system"
desc = "A rare-to-find neural chip that allows its user to interface with nearby machinery \
and effect it in (usually) beneficial ways. Due to the rudimentary connection, fine manipulation \
@@ -141,7 +141,7 @@
/// TODO: Refactor this to be used as a mutant bodypart_overlay instead.
var/datum/bodypart_overlay/simple/hackerman/simple_bodypart_overlay
-/obj/item/organ/internal/cyberimp/hackerman_deck/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
+/obj/item/organ/cyberimp/hackerman_deck/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
. = ..()
if(isteshari(owner))
return
@@ -149,7 +149,7 @@
limb.add_bodypart_overlay(simple_bodypart_overlay)
owner?.update_body_parts()
-/obj/item/organ/internal/cyberimp/hackerman_deck/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/cyberimp/hackerman_deck/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
bodypart_owner?.remove_bodypart_overlay(simple_bodypart_overlay)
QDEL_NULL(simple_bodypart_overlay)
@@ -183,7 +183,7 @@
/obj/machinery/computer/holodeck,
/obj/machinery/computer/emergency_shuttle,
/obj/machinery/recycler,
- /obj/item/organ/internal/cyberimp/arm/armblade,
+ /obj/item/organ/cyberimp/arm/armblade,
)
/// How far away we can hack things
var/hack_range = 2
@@ -232,7 +232,7 @@
human_owner.adjust_bodytemperature(HACKERMAN_DECK_TEMPERATURE_INCREASE)
-/obj/item/organ/internal/cyberimp/hackerman_deck/emp_act(severity)
+/obj/item/organ/cyberimp/hackerman_deck/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
diff --git a/modular_nova/modules/implants/code/augments_internal.dm b/modular_nova/modules/implants/code/augments_internal.dm
index 1d52cedeacf..5f550f244e4 100644
--- a/modular_nova/modules/implants/code/augments_internal.dm
+++ b/modular_nova/modules/implants/code/augments_internal.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/brain/anti_sleep
+/obj/item/organ/cyberimp/brain/anti_sleep
name = "CNS jumpstarter"
desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious outside of REM sleeping cycles. Has a short cooldown. Conflicts with the CNS Rebooter, making them incompatible with eachother."
icon_state = "brain_implant_rebooter"
@@ -6,7 +6,7 @@
slot = ORGAN_SLOT_BRAIN_CNS //One or the other, not both.
var/cooldown
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/cyberimp/brain/anti_sleep/on_life(seconds_per_tick, times_fired)
if(timeleft(cooldown))
return
@@ -19,11 +19,11 @@
to_chat(owner, span_notice("You feel a rush of energy course through your body!"))
cooldown = addtimer(CALLBACK(src, PROC_REF(sleepytimerend)), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE | TIMER_DELETE_ME)
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/sleepytimerend()
+/obj/item/organ/cyberimp/brain/anti_sleep/proc/sleepytimerend()
to_chat(owner, span_notice("You hear a small beep in your head as your CNS Jumpstarter finishes recharging."))
cooldown = null
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/emp_act(severity)
+/obj/item/organ/cyberimp/brain/anti_sleep/emp_act(severity)
. = ..()
var/mob/living/carbon/human/human_owner = owner
if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
@@ -32,5 +32,5 @@
human_owner.AdjustUnconscious(200)
cooldown = addtimer(CALLBACK(src, PROC_REF(reboot)), (9 SECONDS / severity), TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE | TIMER_DELETE_ME)
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/reboot()
+/obj/item/organ/cyberimp/brain/anti_sleep/proc/reboot()
organ_flags &= ~ORGAN_FAILING
diff --git a/modular_nova/modules/implants/code/medical_designs.dm b/modular_nova/modules/implants/code/medical_designs.dm
index ebe20540baa..1bebd142782 100644
--- a/modular_nova/modules/implants/code/medical_designs.dm
+++ b/modular_nova/modules/implants/code/medical_designs.dm
@@ -9,7 +9,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 20 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/armblade
+ build_path = /obj/item/organ/cyberimp/arm/armblade
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT,
)
@@ -29,7 +29,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 30 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/razorwire
+ build_path = /obj/item/organ/cyberimp/arm/razorwire
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
@@ -48,7 +48,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 30 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/shell_launcher
+ build_path = /obj/item/organ/cyberimp/arm/shell_launcher
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
@@ -70,7 +70,7 @@
/datum/material/gold = SHEET_MATERIAL_AMOUNT * 2,
)
construction_time = 30 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/sensory_enhancer
+ build_path = /obj/item/organ/cyberimp/sensory_enhancer
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
@@ -91,7 +91,7 @@
/datum/material/gold = SHEET_MATERIAL_AMOUNT * 2,
)
construction_time = 30 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/hackerman_deck
+ build_path = /obj/item/organ/cyberimp/hackerman_deck
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
@@ -108,7 +108,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 20 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/razor_claws
+ build_path = /obj/item/organ/cyberimp/arm/razor_claws
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
)
@@ -125,7 +125,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 20 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/mining_drill
+ build_path = /obj/item/organ/cyberimp/arm/mining_drill
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
)
@@ -142,7 +142,7 @@
/datum/material/diamond = SHEET_MATERIAL_AMOUNT,
)
construction_time = 30 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/mining_drill/diamond
+ build_path = /obj/item/organ/cyberimp/arm/mining_drill/diamond
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
@@ -159,7 +159,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 20 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/hacker
+ build_path = /obj/item/organ/cyberimp/arm/hacker
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY,
)
@@ -176,7 +176,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 20 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/flash
+ build_path = /obj/item/organ/cyberimp/arm/flash
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT,
)
@@ -194,7 +194,7 @@
/datum/material/plastic = SHEET_MATERIAL_AMOUNT,
)
construction_time = 20 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/botany
+ build_path = /obj/item/organ/cyberimp/arm/botany
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
)
@@ -213,7 +213,7 @@
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 6,
/datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/eyes/night_vision/cyber
+ build_path = /obj/item/organ/eyes/night_vision/cyber
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY,
)
@@ -231,7 +231,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/cyberimp/brain/anti_sleep
+ build_path = /obj/item/organ/cyberimp/brain/anti_sleep
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT,
)
@@ -249,7 +249,7 @@
/datum/material/silver = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/cyberimp/chest/scanner
+ build_path = /obj/item/organ/cyberimp/chest/scanner
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH,
)
@@ -266,7 +266,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 20 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/janitor
+ build_path = /obj/item/organ/cyberimp/arm/janitor
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
)
@@ -283,7 +283,7 @@
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
)
construction_time = 10 SECONDS
- build_path = /obj/item/organ/internal/cyberimp/arm/lighter
+ build_path = /obj/item/organ/cyberimp/arm/lighter
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC,
)
diff --git a/modular_nova/modules/interaction_menu/code/interaction_datum.dm b/modular_nova/modules/interaction_menu/code/interaction_datum.dm
index 95e6a46e4e7..b9dd186b923 100644
--- a/modular_nova/modules/interaction_menu/code/interaction_datum.dm
+++ b/modular_nova/modules/interaction_menu/code/interaction_datum.dm
@@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
if(user_required_parts.len)
for(var/thing in user_required_parts)
- var/obj/item/organ/external/genital/required_part = user.get_organ_slot(thing)
+ var/obj/item/organ/genital/required_part = user.get_organ_slot(thing)
if(isnull(required_part))
return FALSE
if(!required_part.is_exposed())
@@ -70,7 +70,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
if(target_required_parts.len)
for(var/thing in target_required_parts)
- var/obj/item/organ/external/genital/required_part = target.get_organ_slot(thing)
+ var/obj/item/organ/genital/required_part = target.get_organ_slot(thing)
if(isnull(required_part))
return FALSE
if(!required_part.is_exposed())
diff --git a/modular_nova/modules/modular_implants/code/misc_devices.dm b/modular_nova/modules/modular_implants/code/misc_devices.dm
index 8e0e0f1a034..755b5078871 100644
--- a/modular_nova/modules/modular_implants/code/misc_devices.dm
+++ b/modular_nova/modules/modular_implants/code/misc_devices.dm
@@ -13,7 +13,7 @@
/obj/item/nifsoft_remover/attack(mob/living/carbon/human/target_mob, mob/living/user)
. = ..()
- var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = target_mob.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/target_nif = target_mob.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
if(!target_nif || !length(target_nif.loaded_nifsofts))
balloon_alert(user, "[target_mob] has no NIFSofts!")
@@ -80,7 +80,7 @@
/obj/item/nif_repair_kit/attack(mob/living/carbon/human/mob_to_repair, mob/living/user)
. = ..()
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = mob_to_repair.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = mob_to_repair.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
if(!installed_nif)
balloon_alert(user, "[mob_to_repair] lacks a NIF")
diff --git a/modular_nova/modules/modular_implants/code/nif_actions.dm b/modular_nova/modules/modular_implants/code/nif_actions.dm
index eda612f4fc3..6c360cd256c 100644
--- a/modular_nova/modules/modular_implants/code/nif_actions.dm
+++ b/modular_nova/modules/modular_implants/code/nif_actions.dm
@@ -11,7 +11,7 @@
/datum/action/item_action/nif/open_menu/Trigger(trigger_flags)
. = ..()
- var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = target
+ var/obj/item/organ/cyberimp/brain/nif/target_nif = target
if(target_nif.calibrating)
target_nif.send_message("The NIF is still calibrating, please wait!", TRUE)
diff --git a/modular_nova/modules/modular_implants/code/nif_implants.dm b/modular_nova/modules/modular_implants/code/nif_implants.dm
index a52cc75494c..15e6c4e103b 100644
--- a/modular_nova/modules/modular_implants/code/nif_implants.dm
+++ b/modular_nova/modules/modular_implants/code/nif_implants.dm
@@ -1,10 +1,10 @@
///This is the standard 'baseline' NIF model.
-/obj/item/organ/internal/cyberimp/brain/nif/standard
+/obj/item/organ/cyberimp/brain/nif/standard
name = "Standard Type NIF"
desc = "'Standard-Type' is a classification for high-quality Nanite Implant Frameworks. This category primarily includes Framework patterns with high reliability, seamless bonding with a user, and a combination of storage space and processing power to run a wide array of programs."
manufacturer_notes = "While countless manufacturers produce their own implementation of NIFs, open-source or not, there's less than a thousand Standard-Type models out there in the galaxy. These are the results of almost five years of improvements on older models of Frameworks, and are rather coveted due to being extremely difficult to 'homebrew."
-/obj/item/organ/internal/cyberimp/brain/nif/roleplay_model
+/obj/item/organ/cyberimp/brain/nif/roleplay_model
name = "Econo-Deck Type NIF"
desc = "'Econo-Deck' is a classification for lower-quality Nanite Implant Frameworks. Typically, these are off-brand 'economical' bootlegs of higher-quality Frameworks featuring lower-grade power cells, outdated and risky construction patterns, and far rougher calibration with a user."
manufacturer_notes = "Most webspaces for hobbyists or hardcore users, Corpo neurologists, and developers of 'softs such as the Altspace Coven recommend against their purchase. Despite their affordability by the layman, it's a common notion in Framework user circles that a device directly hooked into a user's nervous system is never something which should be skimped on; hence, Econo-Decks typically find themselves in the hands of the truly desperate, criminals, or coming out of workshops as 'homebrews.'"
@@ -16,7 +16,7 @@
death_durability_loss = 10
-/obj/item/organ/internal/cyberimp/brain/nif/roleplay_model/cheap
+/obj/item/organ/cyberimp/brain/nif/roleplay_model/cheap
name = "Trial-Lite Type NIF"
desc = "'Trial-Lite' is a classification for temporary Nanite Implant Frameworks. These are typically distributed at promotional events, for the use of single-purpose NIFsofts, or at some Corporate dealerships to offer prospective users a look into the scene. Normally, Trial-Lite frameworks do not actually 'bond' with their user, forming an extremely loose connection before dissolving into scattered and dead nanomachines within a few hours, typically exhaled."
manufacturer_notes = "Normally, Trial-Lite frameworks do not actually 'bond' with their user, forming an extremely loose connection before dissolving into scattered and dead nanomachines within a few hours, typically exhaled. It's so far been impossible to extend the lifespan of a Trial-Lite NIF, owing to their far inferior construction and programming."
@@ -24,14 +24,14 @@
/obj/item/autosurgeon/organ/nif/disposable //Disposable, as in the fact that this only lasts for one shift
name = "Econo-Deck Type Autosurgeon"
- starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/roleplay_model/cheap
+ starting_organ = /obj/item/organ/cyberimp/brain/nif/roleplay_model/cheap
uses = 1
-/obj/item/organ/internal/cyberimp/brain/nif/standard/ghost_role
+/obj/item/organ/cyberimp/brain/nif/standard/ghost_role
nif_persistence = FALSE
is_calibrated = TRUE
/obj/item/autosurgeon/organ/nif/ghost_role
name = "Enhanced Standard Type NIF Autosurgeon"
- starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/standard/ghost_role
+ starting_organ = /obj/item/organ/cyberimp/brain/nif/standard/ghost_role
uses = 1
diff --git a/modular_nova/modules/modular_implants/code/nif_persistence.dm b/modular_nova/modules/modular_implants/code/nif_persistence.dm
index ce4d865f7cf..a633dab637c 100644
--- a/modular_nova/modules/modular_implants/code/nif_persistence.dm
+++ b/modular_nova/modules/modular_implants/code/nif_persistence.dm
@@ -20,7 +20,7 @@
/// Saves the NIF data for a individual user.
/mob/living/carbon/human/proc/save_nif_data(datum/modular_persistence/persistence, remove_nif = FALSE)
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
if(HAS_TRAIT(src, TRAIT_GHOSTROLE)) //Nothing is lost from playing a ghost role
return FALSE
@@ -75,7 +75,7 @@
if(!persistence.nif_path)
return
- var/obj/item/organ/internal/cyberimp/brain/nif/new_nif = new persistence.nif_path
+ var/obj/item/organ/cyberimp/brain/nif/new_nif = new persistence.nif_path
new_nif.durability = persistence.nif_durability
new_nif.current_theme = persistence.nif_theme
@@ -108,7 +108,7 @@
/datum/nifsoft/proc/load_persistence_data()
if(!linked_mob || !persistence)
return FALSE
- var/obj/item/organ/internal/brain/linked_brain = linked_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/linked_brain = linked_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!linked_brain || !linked_brain.modular_persistence)
return FALSE
diff --git a/modular_nova/modules/modular_implants/code/nifs.dm b/modular_nova/modules/modular_implants/code/nifs.dm
index 1862d28014d..4145a9beeee 100644
--- a/modular_nova/modules/modular_implants/code/nifs.dm
+++ b/modular_nova/modules/modular_implants/code/nifs.dm
@@ -12,7 +12,7 @@
#define MAX_NIF_REWARDS_POINTS 2000
// This is the original NIF that other NIFs are based on.
-/obj/item/organ/internal/cyberimp/brain/nif
+/obj/item/organ/cyberimp/brain/nif
name = "Nanite Implant Framework"
desc = "A brain implant that infuses the user with nanites."
icon = 'modular_nova/modules/modular_implants/icons/obj/nifs.dmi'
@@ -108,13 +108,13 @@
///What icon does the NIF display in chat when sending out alerts? Icon states are stored in 'modular_nova/modules/modular_implants/icons/chat.dmi'
var/chat_icon = "standard"
-/obj/item/organ/internal/cyberimp/brain/nif/Initialize(mapload)
+/obj/item/organ/cyberimp/brain/nif/Initialize(mapload)
. = ..()
durability = max_durability
power_level = max_power_level
-/obj/item/organ/internal/cyberimp/brain/nif/Destroy()
+/obj/item/organ/cyberimp/brain/nif/Destroy()
if(linked_mob)
UnregisterSignal(linked_mob, COMSIG_LIVING_DEATH, PROC_REF(damage_on_death))
@@ -127,7 +127,7 @@
QDEL_LIST(loaded_nifsofts)
return ..()
-/obj/item/organ/internal/cyberimp/brain/nif/mob_insert(mob/living/carbon/human/insertee, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/cyberimp/brain/nif/mob_insert(mob/living/carbon/human/insertee, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
if(linked_mob && stored_ckey != insertee.ckey && theft_protection)
@@ -154,7 +154,7 @@
send_message("Loading preinstalled and stored NIFSofts, please wait...")
addtimer(CALLBACK(src, PROC_REF(install_preinstalled_nifsofts)), 3 SECONDS)
-/obj/item/organ/internal/cyberimp/brain/nif/mob_remove(mob/living/carbon/organ_owner, special = FALSE)
+/obj/item/organ/cyberimp/brain/nif/mob_remove(mob/living/carbon/organ_owner, special = FALSE)
. = ..()
organ_owner.log_message("'s [src] was removed from [organ_owner]", LOG_GAME)
@@ -170,7 +170,7 @@
QDEL_LIST(loaded_nifsofts)
///Installs preinstalled NIFSofts
-/obj/item/organ/internal/cyberimp/brain/nif/proc/install_preinstalled_nifsofts()
+/obj/item/organ/cyberimp/brain/nif/proc/install_preinstalled_nifsofts()
if(!preinstalled_nifsofts)
return FALSE
@@ -183,7 +183,7 @@
return TRUE
-/obj/item/organ/internal/cyberimp/brain/nif/process(seconds_per_tick)
+/obj/item/organ/cyberimp/brain/nif/process(seconds_per_tick)
. = ..()
if(!linked_mob || broken || HAS_TRAIT(linked_mob, TRAIT_STASIS))
@@ -212,7 +212,7 @@
change_power_level(power_usage)
///Modifies power based off power_to_change. Negative numbers add charge, positive numbers remove charge
-/obj/item/organ/internal/cyberimp/brain/nif/proc/change_power_level(power_to_change)
+/obj/item/organ/cyberimp/brain/nif/proc/change_power_level(power_to_change)
if(!power_to_change)
return TRUE
@@ -227,7 +227,7 @@
return TRUE
///Toggles nutrition drain as a power source on NIFs on/off. Bypass - Ignores the need to perform the nutirition_check() proc.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/toggle_nutrition_drain(bypass = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/toggle_nutrition_drain(bypass = FALSE)
if(!bypass && !nutrition_check())
return FALSE
@@ -245,7 +245,7 @@
return TRUE
/// Checks to see if the mob has a nutrition that can be drain from
-/obj/item/organ/internal/cyberimp/brain/nif/proc/nutrition_check() //This is a seperate proc so that TGUI can perform this check on the menu
+/obj/item/organ/cyberimp/brain/nif/proc/nutrition_check() //This is a seperate proc so that TGUI can perform this check on the menu
if(!linked_mob || !linked_mob.nutrition)
return FALSE
@@ -255,7 +255,7 @@
return linked_mob.nutrition >= minimum_nutrition
///Toggles Blood Drain. Bypasss - Ignores the need to perform the blood_check proc.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/toggle_blood_drain(bypass = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/toggle_blood_drain(bypass = FALSE)
if(!bypass && !blood_check())
return
@@ -271,14 +271,14 @@
balloon_alert(linked_mob, "Blood draining enabled")
///Checks if the NIF is able to draw blood as a power source?
-/obj/item/organ/internal/cyberimp/brain/nif/proc/blood_check()
+/obj/item/organ/cyberimp/brain/nif/proc/blood_check()
if(!linked_mob || !linked_mob.blood_volume || (linked_mob.blood_volume <= minimum_blood_level))
return FALSE
return TRUE
///Calibrates the Parent NIF, this is ran every time the parent NIF is first installed inside of someone.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/perform_calibration()
+/obj/item/organ/cyberimp/brain/nif/proc/perform_calibration()
if(linked_mob.stat >= DEAD)
return FALSE
@@ -311,7 +311,7 @@
stack_trace("persistence was not saved for [linked_mob]!")
///Installs the loaded_nifsoft to the parent NIF.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/install_nifsoft(datum/nifsoft/loaded_nifsoft)
+/obj/item/organ/cyberimp/brain/nif/proc/install_nifsoft(datum/nifsoft/loaded_nifsoft)
if(broken || calibrating) //NIFSofts can't be installed to a broken NIF
return FALSE
@@ -344,7 +344,7 @@
return TRUE
///Removes a NIFSoft from a NIF. Silent - determines whether or not alerts will be given to the owner of the NIF
-/obj/item/organ/internal/cyberimp/brain/nif/proc/remove_nifsoft(datum/nifsoft/removed_nifsoft, silent = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/remove_nifsoft(datum/nifsoft/removed_nifsoft, silent = FALSE)
if(!is_type_in_list(removed_nifsoft, loaded_nifsofts) || broken)
return FALSE
@@ -357,7 +357,7 @@
return TRUE
///Adjusts the NIF based on the adjustment_amount. Positive values repair, negative values damage
-/obj/item/organ/internal/cyberimp/brain/nif/proc/adjust_durability(adjustment_amount)
+/obj/item/organ/cyberimp/brain/nif/proc/adjust_durability(adjustment_amount)
if(!adjustment_amount || ((adjustment_amount > 0) && (durability >= max_durability) || ((adjustment_amount < 0) && (durability <= NIF_MINIMUM_DURABILITY))))
return FALSE
@@ -369,7 +369,7 @@
return TRUE
///Sends a message to the owner of the NIF. Typically used for messages from the NIF itself or from NIFSofts.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/send_message(message_to_send, alert = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/send_message(message_to_send, alert = FALSE)
var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat)
var/tag = sheet.icon_tag("nif-[chat_icon]")
var/nif_icon = ""
@@ -387,7 +387,7 @@
///Changes the broken variable to be false. This does not relate to durability.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/fix_nif()
+/obj/item/organ/cyberimp/brain/nif/proc/fix_nif()
if(!broken)
return FALSE
@@ -396,14 +396,14 @@
return TRUE
///Re-enables the durability_loss_vulnerable variable, allowing the parent NIF to take durability damage again.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/make_vulnerable()
+/obj/item/organ/cyberimp/brain/nif/proc/make_vulnerable()
durability_loss_vulnerable = TRUE
//This is here so that a TGUI can't be opened by using the implant while it isn't implanted.
-/obj/item/organ/internal/cyberimp/brain/nif/attack_self(mob/user, modifiers)
+/obj/item/organ/cyberimp/brain/nif/attack_self(mob/user, modifiers)
return FALSE
-/obj/item/organ/internal/cyberimp/brain/nif/emp_act(severity)
+/obj/item/organ/cyberimp/brain/nif/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
@@ -433,7 +433,7 @@
send_message("ELECTROMAGNETIC INTERFERENCE DETECTED.", TRUE)
///Applies damage to the parent NIF whenever the user dies.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/damage_on_death()
+/obj/item/organ/cyberimp/brain/nif/proc/damage_on_death()
SIGNAL_HANDLER
if(!durability_loss_vulnerable)
@@ -445,7 +445,7 @@
addtimer(CALLBACK(src, PROC_REF(make_vulnerable)), 20 MINUTES) //Players should have a decent grace period on this.
/// Removes rewards points from the parent NIF. Returns FALSE if there are not enough points to remove, returns TRUE if the points have been succesfully removed.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/remove_rewards_points(points_to_remove)
+/obj/item/organ/cyberimp/brain/nif/proc/remove_rewards_points(points_to_remove)
if(points_to_remove > rewards_points)
return FALSE
@@ -475,7 +475,7 @@
///Checks to see if a human with a NIF has the nifsoft_to_find type of NIFSoft installed?
/mob/living/carbon/human/proc/find_nifsoft(datum/nifsoft/nifsoft_to_find)
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
var/list/nifsoft_list = installed_nif?.loaded_nifsofts
if(!nifsoft_list)
@@ -493,14 +493,14 @@
InsertAll("nif", 'modular_nova/modules/modular_implants/icons/chat.dmi')
/obj/item/autosurgeon/organ/nif
- starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/standard
+ starting_organ = /obj/item/organ/cyberimp/brain/nif/standard
uses = 1
-/obj/item/organ/internal/cyberimp/brain/nif/debug
+/obj/item/organ/cyberimp/brain/nif/debug
is_calibrated = TRUE
/obj/item/autosurgeon/organ/nif/debug
- starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/debug
+ starting_organ = /obj/item/organ/cyberimp/brain/nif/debug
uses = 1
/obj/item/storage/box/nif_ghost_box
diff --git a/modular_nova/modules/modular_implants/code/nifs_tgui.dm b/modular_nova/modules/modular_implants/code/nifs_tgui.dm
index 520a155215b..d754795a42e 100644
--- a/modular_nova/modules/modular_implants/code/nifs_tgui.dm
+++ b/modular_nova/modules/modular_implants/code/nifs_tgui.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/brain/nif
+/obj/item/organ/cyberimp/brain/nif
///Currently Avalible themese for the NIFs
var/static/list/ui_themes = list(
"abductor",
@@ -16,22 +16,22 @@
///What theme is currently being used on the NIF?
var/current_theme = "default"
-/obj/item/organ/internal/cyberimp/brain/nif/ui_interact(mob/user, datum/tgui/ui)
+/obj/item/organ/cyberimp/brain/nif/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "NifPanel", name)
ui.open()
-/obj/item/organ/internal/cyberimp/brain/nif/ui_state(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_state(mob/user)
return GLOB.conscious_state
-/obj/item/organ/internal/cyberimp/brain/nif/ui_status(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_status(mob/user)
if(user == linked_mob)
return UI_INTERACTIVE
return UI_CLOSE
-/obj/item/organ/internal/cyberimp/brain/nif/ui_static_data(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_static_data(mob/user)
var/list/data = list()
data["loaded_nifsofts"] = list()
@@ -60,7 +60,7 @@
return data
-/obj/item/organ/internal/cyberimp/brain/nif/ui_data(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_data(mob/user)
var/list/data = list()
//User Preference Variables
data["linked_mob_name"] = linked_mob.name
@@ -82,7 +82,7 @@
return data
-/obj/item/organ/internal/cyberimp/brain/nif/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+/obj/item/organ/cyberimp/brain/nif/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
diff --git a/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm b/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm
index 1b2275b658f..910cb5c3a8b 100644
--- a/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm
+++ b/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm
@@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list(
var/rewards_points = 0
if(target_nif)
- var/obj/item/organ/internal/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
+ var/obj/item/organ/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
if(buyer_nif)
rewards_points = buyer_nif.rewards_points
@@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list(
target_nif = null
else
- var/obj/item/organ/internal/cyberimp/brain/nif/user_nif = nif_user.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/user_nif = nif_user.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
if(!user_nif)
target_nif = null
@@ -114,7 +114,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list(
paying_account.bank_card_talk("You need a NIF implant to purchase this.")
return FALSE
- var/obj/item/organ/internal/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
+ var/obj/item/organ/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
if(rewards_purchase)
if(buyer_nif.rewards_points < amount_to_charge)
diff --git a/modular_nova/modules/modular_implants/code/nifsofts.dm b/modular_nova/modules/modular_implants/code/nifsofts.dm
index 66082718df9..7e5db4e521d 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts.dm
@@ -41,7 +41,7 @@
///How long is the cooldown for?
var/cooldown_duration = DEFAULT_NIFSOFT_COOLDOWN
///What NIF models can this software be installed on?
- var/list/compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/list/compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif)
/// How much of the NIFSoft's purchase price is paid out as reward points, if any?
var/rewards_points_rate = 0.5
@@ -56,13 +56,13 @@
///Is it a lewd item?
var/lewd_nifsoft = FALSE
-/datum/nifsoft/New(obj/item/organ/internal/cyberimp/brain/nif/recepient_nif, no_rewards_points = FALSE)
+/datum/nifsoft/New(obj/item/organ/cyberimp/brain/nif/recepient_nif, no_rewards_points = FALSE)
. = ..()
if(no_rewards_points) //This is mostly so that credits can't be farmed through printed or stolen NIFSoft disks
rewards_points_rate = 0
- compatible_nifs += /obj/item/organ/internal/cyberimp/brain/nif/debug
+ compatible_nifs += /obj/item/organ/cyberimp/brain/nif/debug
program_name = name
if(!recepient_nif.install_nifsoft(src))
@@ -77,7 +77,7 @@
linked_mob = null
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
if(installed_nif)
installed_nif.loaded_nifsofts.Remove(src)
@@ -85,7 +85,7 @@
/// Activates the parent NIFSoft
/datum/nifsoft/proc/activate()
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
if(!installed_nif)
stack_trace("NIFSoft [src] activated on a null parent!") // NIFSoft is -really- broken
@@ -121,7 +121,7 @@
///Refunds the activation cost of a NIFSoft.
/datum/nifsoft/proc/refund_activation_cost()
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
if(!installed_nif)
return
installed_nif.change_power_level(-activation_cost)
@@ -153,7 +153,7 @@
/// Updates the theme of the NIFSoft to match the parent NIF
/datum/nifsoft/proc/update_theme()
- var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = parent_nif?.resolve()
+ var/obj/item/organ/cyberimp/brain/nif/target_nif = parent_nif?.resolve()
if(!target_nif)
return FALSE
@@ -190,7 +190,7 @@
/// Attempts to install the NIFSoft on the disk to the target
/obj/item/disk/nifsoft_uploader/proc/attempt_software_install(mob/living/carbon/human/target)
- var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = target.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+ var/obj/item/organ/cyberimp/brain/nif/installed_nif = target.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
if(!ishuman(target) || !installed_nif)
return FALSE
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/huds.dm b/modular_nova/modules/modular_implants/code/nifsofts/huds.dm
index 1fd07b658ac..c7b9e3dab5d 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/huds.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/huds.dm
@@ -1,7 +1,7 @@
/datum/nifsoft/hud
name = "Scrying Lens"
program_desc = "An umbrella term for all sorts of NIFsofts dealing with heads-up displays, this sort of technology dates back almost to the beginning of NIFsoft development. These 'softs are commonly used in the civilian field for integration with all sorts of activities; piloting, swordplay, scientific research, or even AI copiloting for important social interactions. While normally the nanomachines involved in the program's operation are used as a sort of artificial contact lens over the user's visual organs, NanoTrasen regulations have bid these particular forks to instead integrate with glasses the user's already wearing."
- compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard)
+ compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard)
active_mode = TRUE
active_cost = 0.5
ui_icon = "eye"
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm b/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm
index 166f64b9846..785252d82ab 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm
@@ -7,7 +7,7 @@
program_desc = "Connects the user's brain to a database containing the current monetary values for most items, allowing them to determine their value in realtime"
active_mode = TRUE
active_cost = 0.5
- compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard)
+ compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard)
buying_category = NIFSOFT_CATEGORY_UTILITY
ui_icon = "coins"
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm b/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm
index 9dc40fd5944..7773bfa0e36 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm
@@ -16,7 +16,7 @@
/datum/nifsoft/scryer/New()
. = ..()
- var/obj/item/organ/internal/cyberimp/brain/nif/parent_resolved = parent_nif.resolve()
+ var/obj/item/organ/cyberimp/brain/nif/parent_resolved = parent_nif.resolve()
if(!istype(parent_resolved))
stack_trace("[src] ([REF(src)]) tried to create a linked scryer but it had no parent_nif!")
if(!linked_scryer)
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm b/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm
index 7aa1819e4a2..dda90544976 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm
@@ -5,7 +5,7 @@
/datum/nifsoft/action_granter/shapeshifter
name = "Polymorph"
program_desc = "This program is a large-scale refitting of the nanomachine channels running over the skin of a NIF user. This allows the nanites to reach under the skin and even into the very bone structure of the host; including incorporation of mimetic materials and femto-level manipulation devices all for the purpose of allowing the user to, essentially, shapeshift on a low level. However, despite the incredible complexity behind these processes, there are still limits on the range of 'forms' a user can take. Mass can neither be created nor destroyed, after all, and you can only distribute and rearrange it in so many ways across a functioning humanoid body; meaning, the user cannot adopt forms too far out of their 'true' one."
- compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard)
+ compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard)
purchase_price = 350
buying_category = NIFSOFT_CATEGORY_COSMETIC
ui_icon = "paintbrush"
diff --git a/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm b/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm
index 2dc1408eca4..670cc4c3f9a 100644
--- a/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm
+++ b/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm
@@ -115,7 +115,7 @@
if(!istype(target_mob))
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
- var/obj/item/organ/internal/brain/target_brain = target_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/target_brain = target_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!istype(target_brain))
to_chat(user, span_warning("[target_mob] lacks a brain!"))
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
diff --git a/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm b/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm
index d925adba3f1..da4076262b3 100644
--- a/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm
+++ b/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm
@@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(soulcatchers)
qdel(soulcatcher_room)
var/mob/living/soulcatcher_owner = parent
- var/obj/item/organ/internal/cyberimp/brain/nif/parent_nif = parent
+ var/obj/item/organ/cyberimp/brain/nif/parent_nif = parent
if(istype(parent_nif))
soulcatcher_owner = parent_nif.linked_mob
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm
index 6c1edbcdca3..e7932fad8c9 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm
@@ -13,7 +13,7 @@
arousal_status = arousal_flag
if(istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/target = src
- for(var/obj/item/organ/external/genital/target_genital in target.organs)
+ for(var/obj/item/organ/genital/target_genital in target.organs)
if(!target_genital.aroused == AROUSAL_CANT)
target_genital.aroused = arousal_status
target_genital.update_sprite_suffix()
@@ -38,7 +38,7 @@
if(get_organ_slot(ORGAN_SLOT_VAGINA) && !has_status_effect(/datum/status_effect/body_fluid_regen/vagina))
apply_status_effect(/datum/status_effect/body_fluid_regen/vagina)
- var/obj/item/organ/external/genital/breasts/breasts = get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/breasts = get_organ_slot(ORGAN_SLOT_BREASTS)
if(!breasts || !breasts.lactates)
remove_status_effect(/datum/status_effect/body_fluid_regen/breasts)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm
index ef20812614e..2260e31d2a9 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm
@@ -54,7 +54,7 @@
var/self_their = p_their()
if(climax_choice == CLIMAX_PENIS || climax_choice == CLIMAX_BOTH)
- var/obj/item/organ/external/genital/penis/penis = get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis/penis = get_organ_slot(ORGAN_SLOT_PENIS)
if(!get_organ_slot(ORGAN_SLOT_TESTICLES)) //If we have no god damn balls, we can't cum anywhere... GET BALLS!
visible_message(span_userlove("[src] orgasms, but nothing comes out of [self_their] penis!"), \
span_userlove("You orgasm, it feels great, but nothing comes out of your penis!"))
@@ -109,7 +109,7 @@
if(target_human.has_anus(REQUIRE_GENITAL_EXPOSED))
target_buttons += "asshole"
if(target_human.has_penis(REQUIRE_GENITAL_EXPOSED))
- var/obj/item/organ/external/genital/penis/other_penis = target_human.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis/other_penis = target_human.get_organ_slot(ORGAN_SLOT_PENIS)
if(other_penis.sheath != "None")
target_buttons += "sheath"
target_buttons += "On [target_human_them]"
@@ -129,7 +129,7 @@
span_userlove("You hilt your cock into [target_human]'s [climax_into_choice], shooting cum into [target_human_them]!"))
to_chat(target_human, span_userlove("Your [climax_into_choice] fills with warm cum as [src] shoots [self_their] load into it."))
- var/obj/item/organ/external/genital/testicles/testicles = get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/testicles/testicles = get_organ_slot(ORGAN_SLOT_TESTICLES)
testicles.transfer_internal_fluid(null, testicles.internal_fluid_count * 0.6) // yep. we are sending semen to nullspace
if(create_cum_decal)
add_cum_splatter_floor(get_turf(src))
@@ -143,7 +143,7 @@
return TRUE
if(climax_choice == CLIMAX_VAGINA || climax_choice == CLIMAX_BOTH)
- var/obj/item/organ/external/genital/vagina/vagina = get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/vagina/vagina = get_organ_slot(ORGAN_SLOT_VAGINA)
if(is_bottomless() || vagina.visibility_preference == GENITAL_ALWAYS_SHOW)
visible_message(span_userlove("[src] twitches and moans as [p_they()] climax from their vagina!"), span_userlove("You twitch and moan as you climax from your vagina!"))
add_cum_splatter_floor(get_turf(src), female = TRUE)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm
index ec632635bbd..db4baa355b3 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm
@@ -25,7 +25,7 @@
var/temp_pleasure = BASE_PAIN_AND_PLEASURE_ADJUSTMENT
var/temp_pain = BASE_PAIN_AND_PLEASURE_ADJUSTMENT
- var/obj/item/organ/external/genital/testicles/balls = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/testicles/balls = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
if(balls && balls.internal_fluid_full())
temp_arousal += BLUEBALL_AROUSAL_MODIFIER
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm
index f55fb3264f6..f7953b7c4cc 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm
@@ -48,10 +48,10 @@
alert_type = null
/datum/status_effect/climax_cooldown/tick(seconds_between_ticks)
- var/obj/item/organ/external/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
- var/obj/item/organ/external/genital/testicles/balls = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
- var/obj/item/organ/external/genital/penis/penis = owner.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/anus/anus = owner.get_organ_slot(ORGAN_SLOT_ANUS)
+ var/obj/item/organ/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/testicles/balls = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/penis/penis = owner.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/anus/anus = owner.get_organ_slot(ORGAN_SLOT_ANUS)
if(penis)
penis.aroused = AROUSAL_NONE
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm
index a75205bb528..7c98828156b 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm
@@ -23,7 +23,7 @@
if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human))
return FALSE
- var/obj/item/organ/external/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
if(!vagina)
return FALSE
@@ -41,7 +41,7 @@
if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human))
return FALSE
- var/obj/item/organ/external/genital/testicles/testes = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/testicles/testes = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
if(!testes || (affected_human.arousal < AROUSAL_LOW))
return FALSE
@@ -56,7 +56,7 @@
if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human))
return FALSE
- var/obj/item/organ/external/genital/breasts/breasts = owner.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/breasts = owner.get_organ_slot(ORGAN_SLOT_BREASTS)
if(!breasts || !breasts.lactates)
return FALSE
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm
index 34d27290e00..20f47b2dba3 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm
@@ -151,7 +151,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_penis the penis to cause to grow
*/
-/datum/reagent/drug/aphrodisiac/proc/grow_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
+/datum/reagent/drug/aphrodisiac/proc/grow_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
// Check if we actually have a penis to grow
if(!mob_penis)
@@ -191,7 +191,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_testicles - the testicles to cause to grow
*/
-/datum/reagent/drug/aphrodisiac/proc/grow_balls(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
+/datum/reagent/drug/aphrodisiac/proc/grow_balls(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
//no balls
if(!mob_testicles)
@@ -201,7 +201,7 @@
if(!exposed_mob.client?.prefs?.read_preference(/datum/preference/toggle/erp/penis_enlargement))
return
- var/obj/item/organ/external/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
if(mob_testicles.genital_size < balls_big_size && prob(balls_increase_chance)) // Add some randomness so growth happens more gradually in most cases
mob_testicles.genital_size = min(mob_testicles.genital_size + testicles_size_increase_step, balls_max_size)
@@ -220,7 +220,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_breasts the breasts to cause to grow
*/
-/datum/reagent/drug/aphrodisiac/proc/grow_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/proc/grow_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
if(!mob_breasts)
return
@@ -276,7 +276,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_penis the penis to shrink
*/
-/datum/reagent/drug/aphrodisiac/proc/shrink_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
+/datum/reagent/drug/aphrodisiac/proc/shrink_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
// Is there a penis to shrink?
if(!mob_penis)
@@ -310,7 +310,7 @@
* mob_penis, mob_testicles - the mob's penis and testicles
* message - the message to send to chat
*/
-/datum/reagent/drug/aphrodisiac/proc/shrink_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS), obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
+/datum/reagent/drug/aphrodisiac/proc/shrink_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS), obj/item/organ/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
if(!mob_testicles)
return
@@ -335,7 +335,7 @@
* mob_breasts - the breasts to be shrunk
* message - the message to send to chat
*/
-/datum/reagent/drug/aphrodisiac/proc/shrink_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/proc/shrink_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
if(!mob_breasts)
return
@@ -359,7 +359,7 @@
* mob_vagina - the vagina to shrink
* message - the message to send to chat
*/
-/datum/reagent/drug/aphrodisiac/proc/shrink_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
+/datum/reagent/drug/aphrodisiac/proc/shrink_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
var/message = "You can the feel the muscles in your groin begin to tighten as your vagina seals itself completely shut."
remove_genital(exposed_mob, mob_vagina, suppress_chat, message)
@@ -370,7 +370,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_womb - the womb to shrink
*/
-/datum/reagent/drug/aphrodisiac/proc/shrink_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
+/datum/reagent/drug/aphrodisiac/proc/shrink_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
remove_genital(exposed_mob, mob_womb, suppress_chat)
/** ---- Genital Removal ----
@@ -383,13 +383,13 @@
* message - the message to send to chat
*/
/datum/reagent/drug/aphrodisiac/proc/remove_genitals(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, list/genitals_to_remove, message)
- for(var/obj/item/organ/external/genital/mob_genital in genitals_to_remove)
+ for(var/obj/item/organ/genital/mob_genital in genitals_to_remove)
remove_genital(exposed_mob, mob_genital, suppress_chat)
if(!suppress_chat && message)
to_chat(exposed_mob, span_purple(message))
-/datum/reagent/drug/aphrodisiac/proc/remove_genital(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/mob_genital, suppress_chat = FALSE, message)
+/datum/reagent/drug/aphrodisiac/proc/remove_genital(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/mob_genital, suppress_chat = FALSE, message)
if(!mob_genital)
return
@@ -432,7 +432,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_penis the mob's penis
*/
-/datum/reagent/drug/aphrodisiac/proc/create_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
+/datum/reagent/drug/aphrodisiac/proc/create_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
// Create the new penis if we don't already have one and if prefs allow
if(mob_penis)
@@ -461,7 +461,7 @@
exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_PENIS][MUTANT_INDEX_COLOR_LIST] = list(colour)
// Create the new penis
- var/obj/item/organ/external/genital/penis/new_penis = new
+ var/obj/item/organ/genital/penis/new_penis = new
new_penis.build_from_dna(exposed_mob.dna, ORGAN_SLOT_PENIS)
new_penis.Insert(exposed_mob, 0, FALSE)
new_penis.genital_size = 4
@@ -478,7 +478,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_testicles - the mob's testicles
*/
-/datum/reagent/drug/aphrodisiac/proc/create_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/testicles/mob_balls = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES))
+/datum/reagent/drug/aphrodisiac/proc/create_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/testicles/mob_balls = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES))
// Create the new testicles if we don't already have them and if prefs allow
if(mob_balls)
@@ -487,7 +487,7 @@
if(!exposed_mob.client?.prefs.read_preference(/datum/preference/toggle/erp/new_genitalia_growth))
return
- var/obj/item/organ/external/genital/testicles/new_balls = new
+ var/obj/item/organ/genital/testicles/new_balls = new
new_balls.build_from_dna(exposed_mob.dna, ORGAN_SLOT_TESTICLES)
new_balls.Insert(exposed_mob, 0, FALSE)
new_balls.genital_size = 0
@@ -502,7 +502,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_breasts - the mob's breasts
*/
-/datum/reagent/drug/aphrodisiac/proc/create_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/proc/create_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
// Make sure we don't already have them
if(mob_breasts)
@@ -516,7 +516,7 @@
exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_BREASTS][MUTANT_INDEX_NAME] = "Pair"
// Create the new breasts
- var/obj/item/organ/external/genital/breasts/new_breasts = new
+ var/obj/item/organ/genital/breasts/new_breasts = new
new_breasts.build_from_dna(exposed_mob.dna, ORGAN_SLOT_BREASTS)
new_breasts.Insert(exposed_mob, FALSE, FALSE)
new_breasts.genital_size = 2
@@ -541,7 +541,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_vagina - the mob's vagina
*/
-/datum/reagent/drug/aphrodisiac/proc/create_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
+/datum/reagent/drug/aphrodisiac/proc/create_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
// Add new vagina if we don't already have one. Use dna prefs before assigning a default human one.
if(mob_vagina)
@@ -553,7 +553,7 @@
if (exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_VAGINA][MUTANT_INDEX_NAME] == "None")
exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_VAGINA][MUTANT_INDEX_NAME] = "Human"
- var/obj/item/organ/external/genital/vagina/new_vagina = new
+ var/obj/item/organ/genital/vagina/new_vagina = new
new_vagina.build_from_dna(exposed_mob.dna, ORGAN_SLOT_VAGINA)
new_vagina.Insert(exposed_mob, 0, FALSE)
update_appearance(exposed_mob)
@@ -567,7 +567,7 @@
* suppress_chat - whether or not to display a message in chat
* mob_womb - the mob's womb
*/
-/datum/reagent/drug/aphrodisiac/proc/create_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
+/datum/reagent/drug/aphrodisiac/proc/create_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
// Add a new womb if we don't already have one. Use dna prefs before assigning a default normal one.
if(mob_womb)
@@ -576,7 +576,7 @@
if (exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_WOMB][MUTANT_INDEX_NAME] == "None")
exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_WOMB][MUTANT_INDEX_NAME] = "Normal"
- var/obj/item/organ/external/genital/womb/new_womb = new
+ var/obj/item/organ/genital/womb/new_womb = new
new_womb.build_from_dna(exposed_mob.dna, ORGAN_SLOT_WOMB)
new_womb.Insert(exposed_mob, 0, FALSE)
update_appearance(exposed_mob)
@@ -588,12 +588,12 @@
* genital - the genital that is causing the messages
* suppress_chat - whether or not to display a message in chat
*/
-/datum/reagent/drug/aphrodisiac/proc/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/genital, suppress_chat = FALSE)
+/datum/reagent/drug/aphrodisiac/proc/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/genital, suppress_chat = FALSE)
/**
* Called after growth/shrinkage to update mob sprites
*/
-/datum/reagent/drug/aphrodisiac/proc/update_appearance(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/genital, mutations_overlay = FALSE)
+/datum/reagent/drug/aphrodisiac/proc/update_appearance(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/genital, mutations_overlay = FALSE)
if(genital)
genital.update_sprite_suffix()
if(exposed_mob)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm
index d5542ea5740..ca861099f86 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm
@@ -30,7 +30,7 @@
exposed_mob.set_gender(exposed_mob.client?.prefs?.read_preference(/datum/preference/choiced/gender))
if(exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS))
- var/obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/mob_breasts = exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS)
var/original_breast_size = GLOB.breast_size_to_number[exposed_mob.client?.prefs.read_preference(/datum/preference/choiced/breasts_size)]
if(original_breast_size)
if(mob_breasts?.genital_size > original_breast_size)
@@ -43,7 +43,7 @@
modified_genitals = TRUE
if(exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS))
- var/obj/item/organ/external/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
if(exposed_mob.client?.prefs?.read_preference(/datum/preference/numeric/penis_length))
var/original_penis_length = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/penis_length)
var/original_penis_girth = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/penis_girth)
@@ -66,7 +66,7 @@
modified_genitals = TRUE
if(exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES))
- var/obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/testicles/mob_testicles = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
if(exposed_mob.client?.prefs?.read_preference(/datum/preference/numeric/balls_size))
var/original_ball_size = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/balls_size)
if(mob_testicles?.genital_size > original_ball_size)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm
index abb45ae5c04..070cea0cd53 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm
@@ -37,7 +37,7 @@
exposed_mob.adjust_pain(pain_adjust_amount)
var/modified_genitals = FALSE
- for(var/obj/item/organ/external/genital/mob_genitals in exposed_mob.organs)
+ for(var/obj/item/organ/genital/mob_genitals in exposed_mob.organs)
if(!mob_genitals.aroused == AROUSAL_CANT)
mob_genitals.aroused = AROUSAL_FULL
mob_genitals.update_sprite_suffix()
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm
index 6b5f8ee4f57..80a7611de60 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm
@@ -87,13 +87,13 @@
if(exposed_mob.client?.prefs?.read_preference(/datum/preference/toggle/erp/penis_enlargement))
// Attempt to make new male genitals if applicable
create_genitals(exposed_mob, suppress_chat, list(GENITAL_PENIS, GENITAL_TESTICLES))
-
+
// Make the balls bigger if they're small.
grow_balls(exposed_mob, suppress_chat)
-
+
// Separates gender change stuff from cock growth, breast shrinkage, and female genitalia removal
change_gender(exposed_mob, MALE, suppress_chat)
-
+
// Attempt genital shrinkage where applicable
shrink_genitals(exposed_mob, suppress_chat, list(GENITAL_BREASTS, GENITAL_VAGINA, GENITAL_WOMB))
@@ -102,14 +102,14 @@
*
* exposed_mob - the mob being affected by the reagent
* genital - the genital that is causing the messages
-*/
-/datum/reagent/drug/aphrodisiac/incubus_draft/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/mob_genital, suppress_chat = FALSE)
+*/
+/datum/reagent/drug/aphrodisiac/incubus_draft/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/mob_genital, suppress_chat = FALSE)
if(!mob_genital)
return
-
- if(istype(mob_genital, /obj/item/organ/external/genital/penis))
+
+ if(istype(mob_genital, /obj/item/organ/genital/penis))
penis_growth_to_chat(exposed_mob, mob_genital)
- else if(istype(mob_genital, /obj/item/organ/external/genital/testicles))
+ else if(istype(mob_genital, /obj/item/organ/genital/testicles))
testicles_growth_to_chat(exposed_mob, mob_genital, suppress_chat)
/**
@@ -118,12 +118,12 @@
* exposed_mob - the mob being affected by the reagent
* mob_penis - the penis that is causing the message
* NOTE: this function doesn't get called often enough to warrant suppressing chat, hence the var's omission
-*/
-/datum/reagent/drug/aphrodisiac/incubus_draft/proc/penis_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/penis/mob_penis)
+*/
+/datum/reagent/drug/aphrodisiac/incubus_draft/proc/penis_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/penis/mob_penis)
if(!mob_penis)
return
-
+
if(mob_penis.visibility_preference == GENITAL_ALWAYS_SHOW || exposed_mob.is_bottomless())
if(mob_penis.genital_size >= (penis_max_length - 2))
if(exposed_mob.dna.features["penis_sheath"] == SHEATH_SLIT)
@@ -142,14 +142,14 @@
to_chat(exposed_mob, span_purple("Your [pick(words_for_bigger_cock)] [pick(bigger_cock_text_list)] [pick(cock_action_text_list)]about [mob_penis.genital_size] inches long, and [mob_penis.girth] inches in circumference."))
else
to_chat(exposed_mob, span_purple("Your [pick(cock_text_list)] [pick(cock_action_text_list)]about [mob_penis.genital_size] inches long, and [mob_penis.girth] inches in circumference."))
-
+
/**
* Helper function for the helper function used to display the messages that appear in chat while the testicles growth is occurring
*
* exposed_mob - the mob being affected by the reagent
* mob_testicles - the testicles that are causing the message
-*/
-/datum/reagent/drug/aphrodisiac/incubus_draft/proc/testicles_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/testicles/mob_testicles, suppress_chat = FALSE)
+*/
+/datum/reagent/drug/aphrodisiac/incubus_draft/proc/testicles_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/testicles/mob_testicles, suppress_chat = FALSE)
// So we don't spam chat
if(suppress_chat)
@@ -157,13 +157,13 @@
if(!mob_testicles)
return
-
+
// Display a different message when they reach 'enormous'
- if(mob_testicles.genital_size <= balls_big_size)
- to_chat(exposed_mob, span_purple("Your balls [pick(ball_action_text_list)]. They are now [mob_testicles.balls_size_to_description(mob_testicles.genital_size)]."))
+ if(mob_testicles.genital_size <= balls_big_size)
+ to_chat(exposed_mob, span_purple("Your balls [pick(ball_action_text_list)]. They are now [mob_testicles.balls_size_to_description(mob_testicles.genital_size)]."))
else if(mob_testicles.genital_size == balls_max_size)
- to_chat(exposed_mob, span_purple("You can feel your heavy balls churn as they swell to enormous proportions!"))
-
+ to_chat(exposed_mob, span_purple("You can feel your heavy balls churn as they swell to enormous proportions!"))
+
// Notify the user that they're overdosing. Doesn't affect their mood.
/datum/reagent/drug/aphrodisiac/incubus_draft/overdose_start(mob/living/carbon/human/exposed_mob)
to_chat(exposed_mob, span_userdanger("You feel like you took too much [name]!"))
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm
index 50dd2095f35..5c8f7419cd5 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm
@@ -113,7 +113,7 @@
* suppress_chat - whether or not to display a message in chat
* NOTE: this function doesn't get called often enough to warrant suppressing chat, hence the var's omission
*/
-/datum/reagent/drug/aphrodisiac/succubus_milk/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/succubus_milk/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
if(!mob_breasts)
return
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm
index 688f29650fa..993495a5a47 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm
@@ -32,7 +32,7 @@
/obj/item/clothing/under/misc/latex_catsuit/equipped(mob/living/affected_mob, slot)
. = ..()
var/mob/living/carbon/human/affected_human = affected_mob
- var/obj/item/organ/external/genital/breasts/affected_breasts = affected_human.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/affected_breasts = affected_human.get_organ_slot(ORGAN_SLOT_BREASTS)
if(src == affected_human.w_uniform)
if(affected_mob.gender == FEMALE)
icon_state = "latex_catsuit_female"
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm
index f0ab08638b8..88d57070358 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm
@@ -56,10 +56,10 @@
/obj/item/clothing/strapon/equipped(mob/user, slot)
. = ..()
var/mob/living/carbon/human/affected_mob = user
- var/obj/item/organ/external/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
- var/obj/item/organ/external/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
- var/obj/item/organ/external/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
+ var/obj/item/organ/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
if(src == affected_mob.belt)
affected_vagina?.visibility_preference = GENITAL_NEVER_SHOW
@@ -73,10 +73,10 @@
/obj/item/clothing/strapon/dropped(mob/living/user)
. = ..()
var/mob/living/carbon/human/affected_mob = user
- var/obj/item/organ/external/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
- var/obj/item/organ/external/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
- var/obj/item/organ/external/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
+ var/obj/item/organ/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
if(strapon_item && !ismob(loc) && in_hands == TRUE && src != affected_mob.belt)
qdel(strapon_item)
@@ -193,7 +193,7 @@
return
var/message = ""
- var/obj/item/organ/external/genital/vagina = hit_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/vagina = hit_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
if(hit_mob.check_erp_prefs(/datum/preference/toggle/erp/sex_toy, user, src))
switch(user.zone_selected) //to let code know what part of body we gonna fuck
if(BODY_ZONE_PRECISE_GROIN)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm
index 2e3de6cf96b..0227bd63bea 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm
@@ -38,7 +38,7 @@
/// Returns true if the human has an accessible penis for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
/mob/living/carbon/human/proc/has_penis(required_state = REQUIRE_GENITAL_ANY)
- var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_PENIS)
if(!genital)
return FALSE
@@ -54,7 +54,7 @@
/// Returns true if the human has a accessible balls for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
/mob/living/carbon/human/proc/has_balls(required_state = REQUIRE_GENITAL_ANY)
- var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_TESTICLES)
if(!genital)
return FALSE
@@ -70,7 +70,7 @@
/// Returns true if the human has an accessible vagina for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
/mob/living/carbon/human/proc/has_vagina(required_state = REQUIRE_GENITAL_ANY)
- var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_VAGINA)
if(!genital)
return FALSE
@@ -86,7 +86,7 @@
/// Returns true if the human has a accessible breasts for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
/mob/living/carbon/human/proc/has_breasts(required_state = REQUIRE_GENITAL_ANY)
- var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_BREASTS)
if(!genital)
return FALSE
@@ -104,7 +104,7 @@
/mob/living/carbon/human/proc/has_anus(required_state = REQUIRE_GENITAL_ANY)
if(issilicon(src))
return TRUE
- var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_ANUS)
+ var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_ANUS)
if(!genital)
return FALSE
@@ -380,5 +380,5 @@
..()
/// Checks if the tail is exposed.
-/obj/item/organ/external/tail/proc/is_exposed()
+/obj/item/organ/tail/proc/is_exposed()
return TRUE // your tail is always exposed, dummy! why are you checking this
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm
index 1730e8f121a..098917bfe61 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain/on_life(seconds_per_tick, times_fired) //All your horny is here *points to the head*
+/obj/item/organ/brain/on_life(seconds_per_tick, times_fired) //All your horny is here *points to the head*
. = ..()
var/mob/living/carbon/human/brain_owner = owner
if(istype(brain_owner, /mob/living/carbon/human) && brain_owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy))
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm
index 315af756af4..7f3fe235c3a 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm
@@ -18,8 +18,8 @@
return
var/mob/living/carbon/human/affected_human = user
- var/obj/item/organ/external/genital/testicles/testicles = affected_human.get_organ_slot(ORGAN_SLOT_TESTICLES)
- var/obj/item/organ/external/genital/penis/penis = affected_human.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/testicles/testicles = affected_human.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/penis/penis = affected_human.get_organ_slot(ORGAN_SLOT_PENIS)
var/datum/sprite_accessory/genital/penis_sprite = SSaccessories.sprite_accessories[ORGAN_SLOT_PENIS][affected_human.dna.species.mutant_bodyparts[ORGAN_SLOT_PENIS][MUTANT_INDEX_NAME]]
if(penis_sprite.is_hidden(affected_human))
to_chat(user, span_notice("You need to expose yourself in order to masturbate."))
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm
index aa24175ebef..c0e7826d666 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm
@@ -40,7 +40,7 @@
. = ..()
if(!istype(user))
return
- var/obj/item/organ/external/genital/breasts/user_breast = user.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/user_breast = user.get_organ_slot(ORGAN_SLOT_BREASTS)
if(src == user.nipples)
if(user_breast)
@@ -70,7 +70,7 @@
/obj/item/clothing/sextoy/nipple_clamps/process(seconds_per_tick)
. = ..()
var/mob/living/carbon/human/target = loc
- var/obj/item/organ/external/genital/breasts/target_breast = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts/target_breast = target.get_organ_slot(ORGAN_SLOT_BREASTS)
if(!target || !target_breast)
return
target.adjust_arousal(1 * seconds_per_tick)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm
index cac7a71e7ac..820ce6f9cf9 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm
@@ -105,7 +105,7 @@
var/list/possible_emotes = list("moan")
switch(user.zone_selected) //to let code know what part of body we gonna fuck
if(BODY_ZONE_PRECISE_GROIN)
- var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
if(!vagina)
to_chat(user, span_danger("[target] don't have suitable genitalia for that!"))
return FALSE
@@ -327,11 +327,11 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors
. = ..()
if(!istype(user))
return
- var/obj/item/organ/external/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
- var/obj/item/organ/external/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
- var/obj/item/organ/external/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
- var/obj/item/organ/external/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
+ var/obj/item/organ/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
+ var/obj/item/organ/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
if(src == user.vagina)
vagina?.visibility_preference = GENITAL_NEVER_SHOW
@@ -360,11 +360,11 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors
if(other_end)
QDEL_NULL(other_end)
- var/obj/item/organ/external/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
- var/obj/item/organ/external/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
- var/obj/item/organ/external/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
- var/obj/item/organ/external/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
+ var/obj/item/organ/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
+ var/obj/item/organ/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
+ var/obj/item/organ/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
if(!(src == user.vagina))
anus?.visibility_preference = GENITAL_HIDDEN_BY_CLOTHES
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm
index 3248b9b35ea..423431f78b4 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm
@@ -29,7 +29,7 @@
if(BODY_ZONE_CHEST)
targetedsomewhere = TRUE
- var/obj/item/organ/external/genital/badonkers = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/badonkers = target.get_organ_slot(ORGAN_SLOT_BREASTS)
if(!(target.is_topless() || badonkers.visibility_preference == GENITAL_ALWAYS_SHOW))
to_chat(user, span_danger("[target]'s chest is covered!"))
return
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm
index 10ae92b9200..8cd272a2258 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm
@@ -61,7 +61,7 @@
return
switch(user.zone_selected) //to let code know what part of body we gonna... Uhh... You get the point.
if(BODY_ZONE_PRECISE_GROIN)
- var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
if(!penis)
to_chat(user, span_danger("[target] doesn't have a penis!"))
return
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm
index 2330cc87729..cac170fed7b 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm
@@ -124,8 +124,8 @@
switch(user.zone_selected) //to let code know what part of body we gonna tickle
if(BODY_ZONE_PRECISE_GROIN)
targetedsomewhere = TRUE
- var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
if(vagina && penis)
if(target.is_bottomless() || (penis.visibility_preference == GENITAL_ALWAYS_SHOW && vagina.visibility_preference == GENITAL_ALWAYS_SHOW))
message = (user == target) ? pick("leans [src] against [target.p_their()] penis, letting it shock it. Ouch...",
@@ -184,7 +184,7 @@
if(BODY_ZONE_CHEST)
targetedsomewhere = TRUE
- var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
if(breasts)
if(breasts.visibility_preference == GENITAL_ALWAYS_SHOW || target.is_topless())
message = (user == target) ? pick("leans [src] against [target.p_their()] breasts, letting it shock it.",
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm
index 80add499a9a..8bac2f1bba8 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm
@@ -117,8 +117,8 @@
switch(user.zone_selected)
if(BODY_ZONE_PRECISE_GROIN)
- var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
if(!vagina && !penis)
return FALSE
@@ -144,7 +144,7 @@
target.adjust_pleasure((vibration_mode == "low" ? 2 : (vibration_mode == "high" ? 10 : 5)))
if(BODY_ZONE_CHEST)
- var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
if(!(target.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW))
to_chat(user, span_danger("Looks like [target]'s chest is covered!"))
return FALSE
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm
index aa786d4c593..c59afdcc427 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm
@@ -147,8 +147,8 @@
switch(user.zone_selected) //to let code know what part of body we gonna wax
if(BODY_ZONE_PRECISE_GROIN)
targeted_somewhere = TRUE
- var/obj/item/organ/external/genital/penis = attacked.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/vagina = attacked.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/penis = attacked.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/vagina = attacked.get_organ_slot(ORGAN_SLOT_VAGINA)
if((vagina && penis) && (attacked.is_bottomless() || vagina.visibility_preference == GENITAL_ALWAYS_SHOW && penis.visibility_preference == GENITAL_ALWAYS_SHOW))
message = (user == attacked) ? pick("drips some wax on [attacked.p_their()] genitals, moaning in pleasure",
"drips some wax on [attacked.p_them()]self, moaning in pleasure as it reaches [attacked.p_their()] genitals") : pick(
@@ -180,7 +180,7 @@
if(BODY_ZONE_CHEST)
targeted_somewhere = TRUE
- var/obj/item/organ/external/genital/breasts = attacked.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts = attacked.get_organ_slot(ORGAN_SLOT_BREASTS)
if(attacked.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW)
var/breasts_or_nipples = breasts ? ORGAN_SLOT_BREASTS : ORGAN_SLOT_NIPPLES
message = (user == attacked) ? pick("drips some wax on [attacked.p_their()] [breasts_or_nipples], releasing all [attacked.p_their()] lustness", "drips some wax right on [attacked.p_their()] [breasts ? "tits" : "chest"], making [attacked.p_their()] feel faint.") : pick("pours the wax that is slowly dripping from [src] onto [attacked]'s [breasts_or_nipples], [attacked.p_they()] shows pure enjoyment.", "tilts the candle. Right in the moment when wax drips on [attacked]'s [breasts_or_nipples], [attacked.p_they()] shivers", "tilts the candle. Just when hot drops of wax fell on [attacked]'s [breasts_or_nipples], [attacked.p_they()] quietly moans in pleasure")
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm
index 5e12ff253d6..9667f5d1641 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm
@@ -124,8 +124,8 @@
switch(user.zone_selected) //to let code know what part of body we gonna vibe
if(BODY_ZONE_PRECISE_GROIN)
targetedsomewhere = TRUE
- var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
- var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
if((vagina && penis) && (vagina.visibility_preference == GENITAL_ALWAYS_SHOW && penis.visibility_preference == GENITAL_ALWAYS_SHOW || target.is_bottomless()))
message = (user == target) ? pick("massages their vagina with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their pussy with [src]", "massages their penis with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their penis with [src]") : pick("[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] massages [target]'s vagina with [src]", "uses [src] to [vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] massage [target]'s crotch", "leans the massager against [target]'s pussy", "[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] massages [target]'s penis with [src]", "uses [src] to [vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] massage [target]'s penis", "leans the massager against [target]'s penis")
target.adjust_arousal(DEFAULT_AROUSAL_INCREASE)
@@ -150,7 +150,7 @@
if(BODY_ZONE_CHEST)
targetedsomewhere = TRUE
- var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+ var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
if(target.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW)
var/breasts_or_nipples = breasts ? ORGAN_SLOT_BREASTS : ORGAN_SLOT_NIPPLES
message = (user == target) ? pick("massages their [breasts_or_nipples] with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their tits with [src]") : pick("[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] teases [target]'s [breasts_or_nipples] with [src]", "uses [src] to[vibration_mode == "low" ? " slowly" : ""] massage [target]'s [breasts ? "tits" : ORGAN_SLOT_NIPPLES]", "uses [src] to tease [target]'s [breasts ? "boobs" : ORGAN_SLOT_NIPPLES]", "rubs [target]'s [breasts ? "tits" : ORGAN_SLOT_NIPPLES] with [src]")
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm
index 9991547d878..5f338310fe4 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm
@@ -80,7 +80,7 @@
var/mob/living/carbon/human/user = loc
if(!user || !istype(user))
return PROCESS_KILL
- var/obj/item/organ/external/genital/testicles/balls = user.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/testicles/balls = user.get_organ_slot(ORGAN_SLOT_PENIS)
if(!toy_on || !balls)
return
user.adjust_arousal(1 * seconds_per_tick)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm
index 8db24c2ee5f..3a8e054a827 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm
@@ -43,17 +43,17 @@
*/
/// What organ is fluid being extracted from?
- var/obj/item/organ/external/genital/current_selected_organ = null
+ var/obj/item/organ/genital/current_selected_organ = null
/// What beaker is liquid being outputted to?
var/obj/item/reagent_containers/cup/beaker = null
/// What human mob is currently buckled to the machine?
var/mob/living/carbon/human/current_mob = null
/// What is the current breast organ of the buckled mob?
- var/obj/item/organ/external/genital/breasts/current_breasts = null
+ var/obj/item/organ/genital/breasts/current_breasts = null
/// What is the current testicles organ of the buckled mob?
- var/obj/item/organ/external/genital/testicles/current_testicles = null
+ var/obj/item/organ/genital/testicles/current_testicles = null
/// What is the current vagina organ of the buckled mob?
- var/obj/item/organ/external/genital/vagina/current_vagina = null
+ var/obj/item/organ/genital/vagina/current_vagina = null
/// What color is the machine currently set to?
var/machine_color = "pink"
@@ -355,7 +355,7 @@
update_all_visuals()
return FALSE
- if((istype(current_selected_organ, /obj/item/organ/external/genital/testicles) && (semen_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/external/genital/vagina) && (girlcum_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/external/genital/breasts) && (milk_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)))
+ if((istype(current_selected_organ, /obj/item/organ/genital/testicles) && (semen_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/genital/vagina) && (girlcum_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/genital/breasts) && (milk_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)))
current_mode = MILKING_PUMP_MODE_OFF
pump_state = MILKING_PUMP_STATE_OFF
update_all_visuals()
@@ -386,11 +386,11 @@
var/obj/item/reagent_containers/target_container
switch(current_selected_organ.type)
- if(/obj/item/organ/external/genital/breasts)
+ if(/obj/item/organ/genital/breasts)
target_container = milk_vessel
- if(/obj/item/organ/external/genital/vagina)
+ if(/obj/item/organ/genital/vagina)
target_container = girlcum_vessel
- if(/obj/item/organ/external/genital/testicles)
+ if(/obj/item/organ/genital/testicles)
target_container = semen_vessel
if(!target_container || current_selected_organ.internal_fluid_count <= 0)
@@ -449,7 +449,7 @@
var/current_selected_organ_size = current_selected_organ.genital_size
cut_overlay(organ_overlay)
- if(istype(current_selected_organ, /obj/item/organ/external/genital/breasts))
+ if(istype(current_selected_organ, /obj/item/organ/genital/breasts))
switch(current_selected_organ.genital_type)
if("pair")
current_selected_organ_type = "double_breast"
@@ -473,14 +473,14 @@
else
current_selected_organ_size = "5"
- if(istype(current_selected_organ, /obj/item/organ/external/genital/testicles))
+ if(istype(current_selected_organ, /obj/item/organ/genital/testicles))
current_selected_organ_type = ORGAN_SLOT_PENIS
- if(istype(current_selected_organ, /obj/item/organ/external/genital/vagina))
+ if(istype(current_selected_organ, /obj/item/organ/genital/vagina))
current_selected_organ_type = ORGAN_SLOT_VAGINA
organ_overlay_new_icon_state = "[current_selected_organ_type]_pump_[pump_state]"
- if(istype(current_selected_organ, /obj/item/organ/external/genital/breasts))
+ if(istype(current_selected_organ, /obj/item/organ/genital/breasts))
organ_overlay_new_icon_state += "_[current_selected_organ_size]"
if(current_mode == MILKING_PUMP_MODE_OFF)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm
index 176750d8d64..f93a67c5adb 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm
@@ -30,8 +30,8 @@
if (covered)
continue
- var/obj/item/organ/external/genital/vagina/found_vagina = buckled_human.get_organ_slot(ORGAN_SLOT_VAGINA)
- var/obj/item/organ/external/genital/vagina/found_penis = buckled_human.get_organ_slot(ORGAN_SLOT_PENIS)
+ var/obj/item/organ/genital/vagina/found_vagina = buckled_human.get_organ_slot(ORGAN_SLOT_VAGINA)
+ var/obj/item/organ/genital/vagina/found_penis = buckled_human.get_organ_slot(ORGAN_SLOT_PENIS)
var/arousal_mult = seconds_per_tick
var/message_chance = 40
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm
index ff1fdfe8cb5..319683e3c39 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/genital
+/obj/item/organ/genital
/// The fluid count of the genital.
var/internal_fluid_count = 0
@@ -12,15 +12,15 @@
var/obj/item/inserted_item
/// Helper proc for checking if internal fluids are full or not.
-/obj/item/organ/external/genital/proc/internal_fluid_full()
+/obj/item/organ/genital/proc/internal_fluid_full()
return internal_fluid_count >= internal_fluid_maximum
/// Adds the given amount to the internal fluid count, clamping it between 0 and internal_fluid_maximum.
-/obj/item/organ/external/genital/proc/adjust_internal_fluid(amount)
+/obj/item/organ/genital/proc/adjust_internal_fluid(amount)
internal_fluid_count = clamp(internal_fluid_count + amount, 0, internal_fluid_maximum)
/// Tries to add the specified amount to the target reagent container, or removes it if none are available. Keeps in mind internal_fluid_count.
-/obj/item/organ/external/genital/proc/transfer_internal_fluid(datum/reagents/reagent_container = null, attempt_amount)
+/obj/item/organ/genital/proc/transfer_internal_fluid(datum/reagents/reagent_container = null, attempt_amount)
if(!internal_fluid_datum || !internal_fluid_count || !internal_fluid_maximum)
return FALSE
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm
index 8899db9d003..9e2686001a3 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm
@@ -1,7 +1,7 @@
-/obj/item/organ/external/genital/breasts
+/obj/item/organ/genital/breasts
internal_fluid_datum = /datum/reagent/consumable/breast_milk
-/obj/item/organ/external/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
. = ..()
var/breasts_capacity = 0
var/size = 0.5
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm
index e9864538174..dfe777b38a6 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm
@@ -1,7 +1,7 @@
-/obj/item/organ/external/genital/testicles
+/obj/item/organ/genital/testicles
internal_fluid_datum = /datum/reagent/consumable/cum
-/obj/item/organ/external/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
. = ..()
var/size = 0.5
if(DNA.features["balls_size"] > 0)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm
index c74995845a1..9a201ea5c5e 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm
@@ -1,6 +1,6 @@
-/obj/item/organ/external/genital/vagina
+/obj/item/organ/genital/vagina
internal_fluid_datum = /datum/reagent/consumable/femcum
-/obj/item/organ/external/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
. = ..()
internal_fluid_maximum = 10
diff --git a/modular_nova/modules/modular_persistence/code/modular_persistence.dm b/modular_nova/modules/modular_persistence/code/modular_persistence.dm
index 2919b4e3837..834f6a3bf59 100644
--- a/modular_nova/modules/modular_persistence/code/modular_persistence.dm
+++ b/modular_nova/modules/modular_persistence/code/modular_persistence.dm
@@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
"stored_character_slot_index",
))
-/obj/item/organ/internal/brain
+/obj/item/organ/brain
/// The modular persistence data for a character.
var/datum/modular_persistence/modular_persistence
@@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
player.save_individual_persistence()
/// Loads the contents of the player's modular_persistence file to their character.
-/datum/controller/subsystem/persistence/proc/load_modular_persistence(obj/item/organ/internal/brain/brain)
+/datum/controller/subsystem/persistence/proc/load_modular_persistence(obj/item/organ/brain/brain)
if(!brain)
return FALSE
@@ -51,11 +51,11 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
/// The owner's character slot index.
var/stored_character_slot_index
-/datum/modular_persistence/New(obj/item/organ/internal/brain/brain, list/persistence_data)
+/datum/modular_persistence/New(obj/item/organ/brain/brain, list/persistence_data)
owner_brain = WEAKREF(brain)
. = ..()
- var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve()
+ var/obj/item/organ/brain/our_brain = owner_brain?.resolve()
if(!our_brain)
owner_brain = null
return
@@ -74,7 +74,9 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
if(var_entry)
vars[var_name] = var_entry
-
+ if(findtext(nif_path, "/obj/item/organ/internal"))
+ var/trimmed_nif_path = copytext(nif_path, length("/obj/item/organ/internal") + 1)
+ nif_path = "/obj/item/organ[trimmed_nif_path]"
if(!our_brain.owner)
CRASH("Tried to load modular persistence on a brain with no owner! How did this happen?! (\ref[brain], [brain.brainmob?.ckey], [brain])")
@@ -94,7 +96,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
/datum/modular_persistence/proc/serialize_contents_to_list()
var/list/returned_list = list()
- var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve()
+ var/obj/item/organ/brain/our_brain = owner_brain?.resolve()
if(!our_brain)
owner_brain = null
return
@@ -115,7 +117,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
/// Saves the held persistence data to where it needs to go.
/datum/modular_persistence/proc/save_data(var/ckey)
- var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve()
+ var/obj/item/organ/brain/our_brain = owner_brain?.resolve()
if(!our_brain)
owner_brain = null
return
@@ -139,6 +141,6 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
/// Saves the persistence data for the owner.
/mob/living/carbon/human/proc/save_individual_persistence(var/ckey)
- var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
return brain?.modular_persistence?.save_data(ckey)
diff --git a/modular_nova/modules/modular_vending/code/wardrobes.dm b/modular_nova/modules/modular_vending/code/wardrobes.dm
index 1ada597beba..1026917e24c 100644
--- a/modular_nova/modules/modular_vending/code/wardrobes.dm
+++ b/modular_nova/modules/modular_vending/code/wardrobes.dm
@@ -75,7 +75,7 @@
)
contraband_nova = list(
- /obj/item/organ/internal/tongue/lizard/robot = 2,
+ /obj/item/organ/tongue/lizard/robot = 2,
)
/obj/machinery/vending/wardrobe/science_wardrobe
diff --git a/modular_nova/modules/moretraitoritems/code/autosurgeon.dm b/modular_nova/modules/moretraitoritems/code/autosurgeon.dm
index fcd156c7475..fa773964ba0 100644
--- a/modular_nova/modules/moretraitoritems/code/autosurgeon.dm
+++ b/modular_nova/modules/moretraitoritems/code/autosurgeon.dm
@@ -1,36 +1,36 @@
/obj/item/autosurgeon/toolset
- starting_organ = /obj/item/organ/internal/cyberimp/arm/toolset
+ starting_organ = /obj/item/organ/cyberimp/arm/toolset
/obj/item/autosurgeon/surgery
- starting_organ = /obj/item/organ/internal/cyberimp/arm/surgery
+ starting_organ = /obj/item/organ/cyberimp/arm/surgery
/obj/item/autosurgeon/botany
- starting_organ = /obj/item/organ/internal/cyberimp/arm/botany
+ starting_organ = /obj/item/organ/cyberimp/arm/botany
/obj/item/autosurgeon/janitor
- starting_organ = /obj/item/organ/internal/cyberimp/arm/janitor
+ starting_organ = /obj/item/organ/cyberimp/arm/janitor
/obj/item/autosurgeon/armblade
- starting_organ = /obj/item/organ/internal/cyberimp/arm/armblade
+ starting_organ = /obj/item/organ/cyberimp/arm/armblade
/obj/item/autosurgeon/muscle
- starting_organ = /obj/item/organ/internal/cyberimp/arm/strongarm
+ starting_organ = /obj/item/organ/cyberimp/arm/strongarm
//syndie
/obj/item/autosurgeon/syndicate/hackerman
- starting_organ = /obj/item/organ/internal/cyberimp/arm/hacker
+ starting_organ = /obj/item/organ/cyberimp/arm/hacker
/obj/item/autosurgeon/syndicate/esword_arm
- starting_organ = /obj/item/organ/internal/cyberimp/arm/esword
+ starting_organ = /obj/item/organ/cyberimp/arm/esword
/obj/item/autosurgeon/syndicate/nodrop
- starting_organ = /obj/item/organ/internal/cyberimp/brain/anti_drop
+ starting_organ = /obj/item/organ/cyberimp/brain/anti_drop
/obj/item/autosurgeon/syndicate/baton
- starting_organ = /obj/item/organ/internal/cyberimp/arm/baton
+ starting_organ = /obj/item/organ/cyberimp/arm/baton
/obj/item/autosurgeon/syndicate/flash
- starting_organ = /obj/item/organ/internal/cyberimp/arm/flash
+ starting_organ = /obj/item/organ/cyberimp/arm/flash
//bodypart
/obj/item/autosurgeon/bodypart/r_arm_robotic
@@ -45,9 +45,9 @@
name = "strange autosurgeon"
icon = 'modular_nova/modules/moretraitoritems/icons/alien.dmi'
surgery_speed = 2
- organ_whitelist = list(/obj/item/organ/internal/alien)
+ organ_whitelist = list(/obj/item/organ/alien)
-/obj/item/organ/internal/alien/plasmavessel/opfor
+/obj/item/organ/alien/plasmavessel/opfor
stored_plasma = 500
max_plasma = 500
plasma_rate = 10
@@ -62,12 +62,12 @@
/obj/item/storage/organbox/strange/PopulateContents()
new /obj/item/autosurgeon/xeno(src)
- new /obj/item/organ/internal/alien/plasmavessel/opfor(src)
- new /obj/item/organ/internal/alien/resinspinner(src)
- new /obj/item/organ/internal/alien/acid(src)
- new /obj/item/organ/internal/alien/neurotoxin(src)
- new /obj/item/organ/internal/alien/hivenode(src)
+ new /obj/item/organ/alien/plasmavessel/opfor(src)
+ new /obj/item/organ/alien/resinspinner(src)
+ new /obj/item/organ/alien/acid(src)
+ new /obj/item/organ/alien/neurotoxin(src)
+ new /obj/item/organ/alien/hivenode(src)
/obj/item/storage/organbox/strange/eggsac/PopulateContents()
. = ..()
- new /obj/item/organ/internal/alien/eggsac(src)
+ new /obj/item/organ/alien/eggsac(src)
diff --git a/modular_nova/modules/mutants/code/mutant_species.dm b/modular_nova/modules/mutants/code/mutant_species.dm
index 773baefb150..e353d724a64 100644
--- a/modular_nova/modules/mutants/code/mutant_species.dm
+++ b/modular_nova/modules/mutants/code/mutant_species.dm
@@ -19,7 +19,7 @@
TRAIT_NO_ZOMBIFY,
)
inherent_biotypes = MOB_UNDEAD | MOB_HUMANOID
- mutanttongue = /obj/item/organ/internal/tongue/zombie
+ mutanttongue = /obj/item/organ/tongue/zombie
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | ERT_SPAWN
bodytemp_normal = T0C // They have no natural body heat, the environment regulates body temp
bodytemp_heat_damage_limit = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD // Take damage at fire temp
@@ -56,7 +56,7 @@
name = "Mutated Abomination"
id = SPECIES_MUTANT_INFECTIOUS
damage_modifier = 10
- mutanteyes = /obj/item/organ/internal/eyes/zombie
+ mutanteyes = /obj/item/organ/eyes/zombie
changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN
bodypart_overrides = list(
BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant_zombie,
diff --git a/modular_nova/modules/night_vision/night_vision.dm b/modular_nova/modules/night_vision/night_vision.dm
index 942d52fa645..5e2bfc04c52 100644
--- a/modular_nova/modules/night_vision/night_vision.dm
+++ b/modular_nova/modules/night_vision/night_vision.dm
@@ -21,7 +21,7 @@
/datum/quirk/night_vision/proc/refresh_quirk_holder_eyes()
var/mob/living/carbon/human/human_quirk_holder = quirk_holder
- var/obj/item/organ/internal/eyes/eyes = human_quirk_holder.get_organ_by_type(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/eyes/eyes = human_quirk_holder.get_organ_by_type(/obj/item/organ/eyes)
if(!eyes)
return
// We've either added or removed TRAIT_NIGHT_VISION before calling this proc. Just refresh the eyes.
diff --git a/modular_nova/modules/organs/code/ears.dm b/modular_nova/modules/organs/code/ears.dm
index f7bbd6d622f..c5567132e7d 100644
--- a/modular_nova/modules/organs/code/ears.dm
+++ b/modular_nova/modules/organs/code/ears.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears/teshari
+/obj/item/organ/ears/teshari
name = "teshari ears"
desc = "A set of four long rabbit-like ears, a Teshari's main tool while hunting. Naturally extremely sensitive to loud sounds."
damage_multiplier = 1.5
@@ -6,7 +6,7 @@
overrides_sprite_datum_organ_type = TRUE
bodypart_overlay = /datum/bodypart_overlay/mutant/ears
-/obj/item/organ/internal/ears/teshari/on_mob_remove(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/teshari/on_mob_remove(mob/living/carbon/ear_owner)
. = ..()
REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)
@@ -41,7 +41,7 @@
user.visible_message(span_notice("[user], pricks up [user.p_their()] four ears, each twitching intently!"), span_notice("You perk up all four of your ears, hunting for even the quietest sounds."))
update_button_state("echolocation_on")
- var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
if(ears)
ears.damage_multiplier = 3
@@ -53,7 +53,7 @@
user.visible_message(span_notice("[user] drops [user.p_their()] ears down a bit, no longer listening as closely."), span_notice("You drop your ears down, no longer paying close attention."))
update_button_state("echolocation_off")
- var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
if(ears)
ears.damage_multiplier = 1.5
diff --git a/modular_nova/modules/organs/code/heart.dm b/modular_nova/modules/organs/code/heart.dm
index 7764b29685a..59966fd0a3a 100644
--- a/modular_nova/modules/organs/code/heart.dm
+++ b/modular_nova/modules/organs/code/heart.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/snail
+/obj/item/organ/heart/snail
name = "twin gastropod hearts"
desc = "A primary heart normally nestled inside a gastropod's shell, and another in the owner's actual chest; necessary to maintain ample bloodflow through essentially two torsos."
icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
@@ -9,7 +9,7 @@
COOLDOWN_DECLARE(shell_effect_cd)
-/obj/item/organ/internal/heart/snail/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/snail/on_mob_insert(mob/living/carbon/organ_owner, special)
. = ..()
if(!ishuman(organ_owner))
return
@@ -22,7 +22,7 @@
RegisterSignal(human_owner, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(modify_damage))
RegisterSignal(human_owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(do_block_effect))
-/obj/item/organ/internal/heart/snail/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/snail/on_mob_remove(mob/living/carbon/organ_owner, special)
. = ..()
if(!ishuman(organ_owner) || QDELETED(organ_owner))
return
@@ -36,7 +36,7 @@
*
* Adds a 0.5 modifier to attacks from the back, code borrowed (wholesale) from the roach heart.
*/
-/obj/item/organ/internal/heart/snail/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/snail/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
SIGNAL_HANDLER
if(!is_blocking(source, damage_amount, damagetype, attack_direction))
@@ -49,7 +49,7 @@
*
* Does a special effect if we blocked damage with our shell.
*/
-/obj/item/organ/internal/heart/snail/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/snail/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
SIGNAL_HANDLER
if(!is_blocking(source, damage_dealt, damagetype, attack_direction))
@@ -62,7 +62,7 @@
COOLDOWN_START(src, shell_effect_cd, 5 SECONDS) // Cooldown resets EVERY time we get hit
/// Checks if the passed mob is in a valid state to be blocking damage with the snail shell
-/obj/item/organ/internal/heart/snail/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
+/obj/item/organ/heart/snail/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
if(damage_amount < 5 || damagetype != BRUTE || !attack_direction)
return
if(!ishuman(blocker) || blocker.stat >= UNCONSCIOUS)
diff --git a/modular_nova/modules/organs/code/liver.dm b/modular_nova/modules/organs/code/liver.dm
index 628ce9add87..9d7114f5b30 100644
--- a/modular_nova/modules/organs/code/liver.dm
+++ b/modular_nova/modules/organs/code/liver.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/liver/snail
+/obj/item/organ/liver/snail
name = "gastropod liver"
icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
icon_state = "liver-snail"
diff --git a/modular_nova/modules/organs/code/lungs.dm b/modular_nova/modules/organs/code/lungs.dm
index 9b60ef7d1d1..e7110a6b0a0 100644
--- a/modular_nova/modules/organs/code/lungs.dm
+++ b/modular_nova/modules/organs/code/lungs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs/cold
+/obj/item/organ/lungs/cold
name = "cold-adapted lungs"
icon = 'modular_nova/modules/organs/icons/lungs.dmi'
desc = "A set of lungs adapted to low temperatures, though they are more susceptible to high temperatures"
@@ -22,7 +22,7 @@
heat_damage_type = BURN
-/obj/item/organ/internal/lungs/hot
+/obj/item/organ/lungs/hot
name = "heat-adapted lungs"
icon = 'modular_nova/modules/organs/icons/lungs.dmi'
desc = "A set of lungs adapted to high temperatures, though they are more susceptible to low temperatures"
@@ -45,7 +45,7 @@
heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_2
heat_damage_type = BURN
-/obj/item/organ/internal/lungs/toxin
+/obj/item/organ/lungs/toxin
name = "toxin-adapted lungs"
icon = 'modular_nova/modules/organs/icons/lungs.dmi'
desc = "A set of lungs adapted to toxic environments, though more susceptible to extreme temperatures."
@@ -72,7 +72,7 @@
heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
heat_damage_type = BURN
-/obj/item/organ/internal/lungs/oxy
+/obj/item/organ/lungs/oxy
name = "low-oxygen-adapted lungs"
icon = 'modular_nova/modules/organs/icons/lungs.dmi'
desc = "A set of lungs adapted to lower-pressure environments, though more susceptible to extreme temperatures."
@@ -97,7 +97,7 @@
cold_level_3_damage = COLD_GAS_DAMAGE_LEVEL_3
cold_damage_type = BURN
-/obj/item/organ/internal/lungs/ethereal
+/obj/item/organ/lungs/ethereal
cold_level_1_threshold = 208
cold_level_2_threshold = 200
cold_level_3_threshold = 170
diff --git a/modular_nova/modules/organs/code/stomach.dm b/modular_nova/modules/organs/code/stomach.dm
index b43d364f989..cd68bfc4c36 100644
--- a/modular_nova/modules/organs/code/stomach.dm
+++ b/modular_nova/modules/organs/code/stomach.dm
@@ -1,8 +1,8 @@
-/obj/item/organ/internal/stomach
+/obj/item/organ/stomach
/// Whether the organ is an oversized version
var/is_oversized
-/obj/item/organ/internal/stomach/oversized
+/obj/item/organ/stomach/oversized
name = "huge guts"
desc = "Typically found in huge creatures, this monstrous engine has developed to be highly efficient, made to get an enormous amount of nutrients to an enormous eater."
icon = 'modular_nova/modules/organs/icons/stomach.dmi'
@@ -11,7 +11,7 @@
metabolism_efficiency = 0.07
is_oversized = TRUE
-/obj/item/organ/internal/stomach/synth/oversized
+/obj/item/organ/stomach/synth/oversized
name = "huge synthetic bio-reactor"
desc = "Typically found in huge synthetics, this monstrous engine has been developed to be highly efficient, made to provide an enormous amount of power to an enormous machine."
icon = 'modular_nova/modules/organs/icons/stomach.dmi'
@@ -20,7 +20,7 @@
metabolism_efficiency = 0.07
is_oversized = TRUE
-/obj/item/organ/internal/stomach/slime/oversized
+/obj/item/organ/stomach/slime/oversized
name = "huge golgi apparatus"
desc = "Typically found in huge slimes, this monstrous organelle has been developed to be highly efficient, made to provide an enormous amount of nutrients to an enormous ooze."
maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD
@@ -28,12 +28,12 @@
is_oversized = TRUE
// Not a stomach, but suitable for where we keep oversized schtuff.
-/obj/item/organ/internal/brain/slime/oversized
+/obj/item/organ/brain/slime/oversized
name = "oversized core"
desc = "The central core of a slimeperson, technically their 'extract.' Where the cytoplasm, membrane, and organelles come from; perhaps this is also a mitochondria? This one is enormous."
brain_size = 2
-/obj/item/organ/internal/stomach/ethereal/proc/ethereal_shock_absorb(mob/living/stomach_owner = owner, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
+/obj/item/organ/stomach/ethereal/proc/ethereal_shock_absorb(mob/living/stomach_owner = owner, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
do_sparks(number = 5, cardinal_only = TRUE, source = shock_source)
playsound(src, SFX_SPARKS, 75, TRUE, -1)
adjust_charge(25)
@@ -50,7 +50,7 @@
return COMPONENT_LIVING_BLOCK_SHOCK
//lithovore stomach - modified golem - this whole section calls to the vars set under stomach/golem, they work in game
-/obj/item/organ/internal/stomach/lithovore
+/obj/item/organ/stomach/lithovore
name = "litho-adapted stomach"
icon_state = "stomach-p"
desc = "An unfamiliar digestive organ that excels in material deconstruction."
@@ -59,7 +59,7 @@
organ_traits = list(TRAIT_ROCK_EATER)
//i eat MORE ROCKS. WORSE.
-/obj/item/organ/internal/stomach/lithovore/oversized
+/obj/item/organ/stomach/lithovore/oversized
name = "huge litho-adapted stomach"
icon = 'modular_nova/modules/organs/icons/stomach.dmi'
icon_state = "stomach_big_p"
diff --git a/modular_nova/modules/organs/code/tongue.dm b/modular_nova/modules/organs/code/tongue.dm
index 57ff8f5714c..31cce08e47b 100644
--- a/modular_nova/modules/organs/code/tongue.dm
+++ b/modular_nova/modules/organs/code/tongue.dm
@@ -1,60 +1,60 @@
-/obj/item/organ/internal/tongue/copy_traits_from(obj/item/organ/internal/tongue/old_tongue, copy_actions = FALSE)
+/obj/item/organ/tongue/copy_traits_from(obj/item/organ/tongue/old_tongue, copy_actions = FALSE)
. = ..()
// make sure we get food preferences too, because those are now tied to tongues for some reason
liked_foodtypes = old_tongue.liked_foodtypes
disliked_foodtypes = old_tongue.disliked_foodtypes
toxic_foodtypes = old_tongue.toxic_foodtypes
-/obj/item/organ/internal/tongue/dog
+/obj/item/organ/tongue/dog
name = "long tongue"
desc = "A long and wet tongue. It seems to jump when it's called good, oddly enough."
say_mod = "woofs"
icon_state = "tongue"
modifies_speech = TRUE
-/obj/item/organ/internal/tongue/dog/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/tongue/dog/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
signer.verb_ask = "arfs"
signer.verb_exclaim = "wans"
signer.verb_whisper = "whimpers"
signer.verb_yell = "barks"
-/obj/item/organ/internal/tongue/dog/mob_remove(mob/living/carbon/speaker, special = FALSE)
+/obj/item/organ/tongue/dog/mob_remove(mob/living/carbon/speaker, special = FALSE)
. = ..()
speaker.verb_ask = initial(verb_ask)
speaker.verb_exclaim = initial(verb_exclaim)
speaker.verb_whisper = initial(verb_whisper)
speaker.verb_yell = initial(verb_yell)
-/obj/item/organ/internal/tongue/cat/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/tongue/cat/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
signer.verb_ask = "mrrps"
signer.verb_exclaim = "mrrowls"
signer.verb_whisper = "purrs"
signer.verb_yell = "yowls"
-/obj/item/organ/internal/tongue/cat/mob_remove(mob/living/carbon/speaker, special = FALSE)
+/obj/item/organ/tongue/cat/mob_remove(mob/living/carbon/speaker, special = FALSE)
. = ..()
speaker.verb_ask = initial(verb_ask)
speaker.verb_exclaim = initial(verb_exclaim)
speaker.verb_whisper = initial(verb_whisper)
speaker.verb_yell = initial(verb_yell)
-/obj/item/organ/internal/tongue/avian
+/obj/item/organ/tongue/avian
name = "avian tongue"
desc = "A short and stubby tongue that craves seeds."
say_mod = "chirps"
icon_state = "tongue"
modifies_speech = TRUE
-/obj/item/organ/internal/tongue/avian/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/tongue/avian/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
signer.verb_ask = "peeps"
signer.verb_exclaim = "squawks"
signer.verb_whisper = "murmurs"
signer.verb_yell = "shrieks"
-/obj/item/organ/internal/tongue/avian/mob_remove(mob/living/carbon/speaker, special = FALSE)
+/obj/item/organ/tongue/avian/mob_remove(mob/living/carbon/speaker, special = FALSE)
. = ..()
speaker.verb_ask = initial(verb_ask)
speaker.verb_exclaim = initial(verb_exclaim)
@@ -63,10 +63,10 @@
/// This "human" tongue is only used in Character Preferences / Augmentation menu.
/// The base tongue class lacked a say_mod. With say_mod included it makes a non-Human user sound like a Human.
-/obj/item/organ/internal/tongue/human
+/obj/item/organ/tongue/human
say_mod = "says"
-/obj/item/organ/internal/tongue/lizard/robot
+/obj/item/organ/tongue/lizard/robot
name = "robotic lizard voicebox"
desc = "A lizard-like voice synthesizer that can interface with organic lifeforms."
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
@@ -81,14 +81,14 @@
organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED)
voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000"
-/obj/item/organ/internal/tongue/lizard/robot/can_speak_language(language)
+/obj/item/organ/tongue/lizard/robot/can_speak_language(language)
return TRUE // THE MAGIC OF ELECTRONICS
-/obj/item/organ/internal/tongue/lizard/robot/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/lizard/robot/modify_speech(datum/source, list/speech_args)
. = ..()
speech_args[SPEECH_SPANS] |= SPAN_ROBOT
-/obj/item/organ/internal/tongue/lizard/cybernetic
+/obj/item/organ/tongue/lizard/cybernetic
name = "forked cybernetic tongue"
icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi'
icon_state = "cybertongue-lizard"
@@ -100,7 +100,7 @@
disliked_foodtypes = NONE
modifies_speech = TRUE
-/obj/item/organ/internal/tongue/cybernetic
+/obj/item/organ/tongue/cybernetic
name = "cybernetic tongue"
icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi'
icon_state = "cybertongue"
@@ -112,20 +112,20 @@
liked_foodtypes = NONE
disliked_foodtypes = NONE
-/obj/item/organ/internal/tongue/vox
+/obj/item/organ/tongue/vox
name = "vox tongue"
desc = "A fleshy muscle mostly used for skreeing."
say_mod = "skrees"
liked_foodtypes = MEAT | FRIED
-/obj/item/organ/internal/tongue/dwarven
+/obj/item/organ/tongue/dwarven
name = "dwarven tongue"
desc = "A fleshy muscle mostly used for bellowing."
say_mod = "bellows"
liked_foodtypes = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products.
disliked_foodtypes = JUNKFOOD | FRIED | CLOTH //Dwarves hate foods that have no nutrition other than alcohol.
-/obj/item/organ/internal/tongue/ghoul
+/obj/item/organ/tongue/ghoul
name = "ghoulish tongue"
desc = "A fleshy muscle mostly used for rasping."
say_mod = "rasps"
@@ -133,7 +133,7 @@
disliked_foodtypes = VEGETABLES | FRUIT | CLOTH
toxic_foodtypes = DAIRY | PINEAPPLE
-/obj/item/organ/internal/tongue/insect
+/obj/item/organ/tongue/insect
name = "insect tongue"
desc = "A fleshy muscle mostly used for chittering."
say_mod = "chitters"
@@ -141,7 +141,7 @@
disliked_foodtypes = CLOTH | GRAIN | FRIED
toxic_foodtypes = DAIRY
-/obj/item/organ/internal/tongue/xeno_hybrid
+/obj/item/organ/tongue/xeno_hybrid
name = "alien tongue"
desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"."
icon_state = "tonguexeno"
@@ -149,21 +149,21 @@
taste_sensitivity = 10
liked_foodtypes = MEAT
-/obj/item/organ/internal/tongue/xeno_hybrid/Initialize(mapload)
+/obj/item/organ/tongue/xeno_hybrid/Initialize(mapload)
. = ..()
- voice_filter = /obj/item/organ/internal/tongue/alien::voice_filter
+ voice_filter = /obj/item/organ/tongue/alien::voice_filter
-/obj/item/organ/internal/tongue/skrell
+/obj/item/organ/tongue/skrell
name = "skrell tongue"
desc = "A fleshy muscle mostly used for warbling."
say_mod = "warbles"
-/obj/item/organ/internal/tongue/lizard/filterless
+/obj/item/organ/tongue/lizard/filterless
name = "smooth forked tongue"
voice_filter = null
-/obj/item/organ/internal/tongue/lizard/filterless/Initialize(mapload)
+/obj/item/organ/tongue/lizard/filterless/Initialize(mapload)
. = ..()
desc += " This one is noticeably smooth, and would lack any non-hissing lisps if used."
diff --git a/modular_nova/modules/oversized/code/oversized_quirk.dm b/modular_nova/modules/oversized/code/oversized_quirk.dm
index 7b17b666365..85ce0a4c673 100644
--- a/modular_nova/modules/oversized/code/oversized_quirk.dm
+++ b/modular_nova/modules/oversized/code/oversized_quirk.dm
@@ -75,9 +75,9 @@
continue
// if it's a brain, make sure the mob doesn't get stuck outside their body
- var/obj/item/organ/internal/brain/possibly_a_brain = organ_to_restore
+ var/obj/item/organ/brain/possibly_a_brain = organ_to_restore
if(istype(possibly_a_brain))
- var/obj/item/organ/internal/brain/current_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/current_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
possibly_a_brain.brainmob = current_brain.brainmob
organ_to_restore.replace_into(quirk_holder)
diff --git a/modular_nova/modules/primitive_catgirls/code/organs.dm b/modular_nova/modules/primitive_catgirls/code/organs.dm
index 94e8acd121d..4a57693ba54 100644
--- a/modular_nova/modules/primitive_catgirls/code/organs.dm
+++ b/modular_nova/modules/primitive_catgirls/code/organs.dm
@@ -2,13 +2,13 @@
// Lungs
-/obj/item/organ/internal/lungs/icebox_adapted
+/obj/item/organ/lungs/icebox_adapted
name = "hardy lungs"
desc = "Lungs adapted to frozen environments that would be otherwise inhospitable to most races. Feels cold."
icon_state = "hardylungs"
icon = 'modular_nova/modules/primitive_catgirls/icons/organs.dmi'
-/obj/item/organ/internal/lungs/icebox_adapted/Initialize(mapload)
+/obj/item/organ/lungs/icebox_adapted/Initialize(mapload)
. = ..()
var/datum/gas_mixture/immutable/planetary/mix = SSair.planetary[ICEMOON_DEFAULT_ATMOS]
@@ -59,12 +59,12 @@
// Eyes
-/obj/item/organ/internal/eyes/low_light_adapted
+/obj/item/organ/eyes/low_light_adapted
color_cutoffs = list(30, 15, 15)
// Tongue
-/obj/item/organ/internal/tongue/cat/primitive
+/obj/item/organ/tongue/cat/primitive
liked_foodtypes = SEAFOOD | MEAT | GORE
diff --git a/modular_nova/modules/primitive_catgirls/code/spawner.dm b/modular_nova/modules/primitive_catgirls/code/spawner.dm
index b7657298c12..1d4045aea65 100644
--- a/modular_nova/modules/primitive_catgirls/code/spawner.dm
+++ b/modular_nova/modules/primitive_catgirls/code/spawner.dm
@@ -137,7 +137,7 @@
return
if(target.key && target != user)
- if(!target.get_organ_by_type(/obj/item/organ/internal/brain) || (target.mind && !target.ssd_indicator))
+ if(!target.get_organ_by_type(/obj/item/organ/brain) || (target.mind && !target.ssd_indicator))
to_chat(user, span_danger("Awake kin cannot be put back to sleep against their will."))
return
diff --git a/modular_nova/modules/primitive_catgirls/code/species.dm b/modular_nova/modules/primitive_catgirls/code/species.dm
index e52207d31ef..6cdab65720a 100644
--- a/modular_nova/modules/primitive_catgirls/code/species.dm
+++ b/modular_nova/modules/primitive_catgirls/code/species.dm
@@ -16,9 +16,9 @@
name = "Primitive Demihuman"
id = SPECIES_FELINE_PRIMITIVE
- mutantlungs = /obj/item/organ/internal/lungs/icebox_adapted
- mutanteyes = /obj/item/organ/internal/eyes/low_light_adapted
- mutanttongue = /obj/item/organ/internal/tongue/cat/primitive
+ mutantlungs = /obj/item/organ/lungs/icebox_adapted
+ mutanteyes = /obj/item/organ/eyes/low_light_adapted
+ mutanttongue = /obj/item/organ/tongue/cat/primitive
species_language_holder = /datum/language_holder/primitive_felinid
language_prefs_whitelist = list(/datum/language/primitive_catgirl)
diff --git a/modular_nova/modules/resleeving/code/rsd_interface.dm b/modular_nova/modules/resleeving/code/rsd_interface.dm
index b065891d171..9c90c1869e2 100644
--- a/modular_nova/modules/resleeving/code/rsd_interface.dm
+++ b/modular_nova/modules/resleeving/code/rsd_interface.dm
@@ -9,7 +9,7 @@
/// Attempts to use the item on the target brain.
/obj/item/rsd_interface/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
- if(!istype(interacting_with, /obj/item/organ/internal/brain))
+ if(!istype(interacting_with, /obj/item/organ/brain))
return NONE
if(HAS_TRAIT(interacting_with, TRAIT_RSD_COMPATIBLE))
@@ -25,7 +25,7 @@
/datum/element/rsd_interface/Attach(datum/target)
. = ..()
- if(!istype(target, /obj/item/organ/internal/brain))
+ if(!istype(target, /obj/item/organ/brain))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
diff --git a/modular_nova/modules/roundstart_implants/code/loadout_implants.dm b/modular_nova/modules/roundstart_implants/code/loadout_implants.dm
index a104481367f..bb396316511 100644
--- a/modular_nova/modules/roundstart_implants/code/loadout_implants.dm
+++ b/modular_nova/modules/roundstart_implants/code/loadout_implants.dm
@@ -2,22 +2,22 @@
// EYE IMPLANTS
-/obj/item/organ/internal/eyes/robotic/binoculars
+/obj/item/organ/eyes/robotic/binoculars
name = "digital magnification optics"
desc = "Commonly used on frontier worlds with comparatively vast overland distances to aid in visual acquisition of coworkers and targets."
actions_types = list(/datum/action/item_action/organ_action/toggle)
var/zoomed = FALSE
var/range_power = 2 // what kind of range modifier do we feed to the scope component?
-/obj/item/organ/internal/eyes/robotic/binoculars/Initialize(mapload)
+/obj/item/organ/eyes/robotic/binoculars/Initialize(mapload)
. = ..()
AddComponent(/datum/component/scope, range_modifier = range_power)
-/obj/item/organ/internal/eyes/robotic/binoculars/ui_action_click(mob/user, actiontype)
+/obj/item/organ/eyes/robotic/binoculars/ui_action_click(mob/user, actiontype)
if (istype(actiontype, /datum/action/item_action/organ_action/toggle))
toggle_active(user)
-/obj/item/organ/internal/eyes/robotic/binoculars/proc/toggle_active(mob/user)
+/obj/item/organ/eyes/robotic/binoculars/proc/toggle_active(mob/user)
//this is so unbelievably, hysterically jank. i actually cannot believe this works. what the fuck
var/datum/component/scope/zoom = src.GetComponent(/datum/component/scope)
if (zoomed)
@@ -33,67 +33,67 @@
zoomed = TRUE
// ARM IMPLANTS
-/obj/item/organ/internal/cyberimp/arm/adjuster
+/obj/item/organ/cyberimp/arm/adjuster
name = "adjuster arm implant"
desc = "A miniaturized toolset implant containing a simple fingertip-mounted universal screwdriver bit with an inverted torque-wrench head. Most commonly used when rearranging furniture or other station machinery."
items_to_create = list(/obj/item/wrench/integrated, /obj/item/screwdriver/integrated)
-/obj/item/organ/internal/cyberimp/arm/adjuster/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/adjuster/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA)
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset
+/obj/item/organ/cyberimp/arm/electrical_toolset
name = "electrical toolset implant"
desc = "Bereft of any kind of insulation to speak of, this aug has a very distinct nickname amongst frontier outpost crews: 'the sizzler'. Often used in high verticality environments where loadout space is at a premium."
items_to_create = list(/obj/item/screwdriver/integrated, /obj/item/multitool/integrated, /obj/item/wirecutters/integrated)
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/electrical_toolset/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA)
-/obj/item/organ/internal/cyberimp/arm/arc_welder
+/obj/item/organ/cyberimp/arm/arc_welder
name = "shipbreaker's toolset implant"
desc = "A specialized salvage-grade implant that houses an arc welder, miniaturized crowbar within the bearer's arm, plus a fingertip torque-wrench rated for enough newtons to get the job done. Renowned across the frontier for being the 'trashy tattoo' equivalent of someone's first aug."
items_to_create = list(/obj/item/wrench/integrated, /obj/item/crowbar/integrated, /obj/item/weldingtool/electric/arc_welder/integrated)
-/obj/item/organ/internal/cyberimp/arm/arc_welder/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/arc_welder/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER)
-/obj/item/organ/internal/cyberimp/arm/emt_triage
+/obj/item/organ/cyberimp/arm/emt_triage
name = "triage actuator implant"
desc = "Pioneered by Interdyne Pharmaceuticals for use in their frontier postings, this set of in-arm augments allows medical staff to perform basic life-saving surgeries out on the field with the assistance of a bladed instrument."
items_to_create = list(/obj/item/surgical_drapes/integrated, /obj/item/retractor/integrated, /obj/item/hemostat/integrated)
-/obj/item/organ/internal/cyberimp/arm/emt_triage/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/emt_triage/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_INTERDYNE)
-/obj/item/organ/internal/cyberimp/arm/civilian_barstaff
+/obj/item/organ/cyberimp/arm/civilian_barstaff
name = "waitstaff implant"
desc = "The galactic service industry demands only the finest from its (underpaid) employees, leading to the development of this sordid piece of technology which substitutes a user's organic arm for a food storage space and an integrated chamois cleaning cloth. Why?"
items_to_create = list(/obj/item/storage/bag/tray/integrated, /obj/item/reagent_containers/cup/rag/integrated)
-/obj/item/organ/internal/cyberimp/arm/civilian_lighter
+/obj/item/organ/cyberimp/arm/civilian_lighter
name = "thumbtip lighter implant"
desc = "This extraordinarily useless implant was a product of market demand, and it exists because the galactic diaspora apparently craves the ability to light things with their thumbtips."
items_to_create = list(/obj/item/lighter/integrated)
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging
+/obj/item/organ/cyberimp/arm/blacksteel_forging
name = "Blacksteel 'Starforge' metalworking toolset implant"
desc = "A galactic favorite amongst burgeoning starfarer races with a fascination for basic metallurgy or mundane weaponry, this unlikely toolset augmentation is one of the Foundation's most popular products."
items_to_create = list(/obj/item/forging/hammer/integrated, /obj/item/forging/tongs/integrated, /obj/item/forging/billow/integrated)
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/blacksteel_forging/Initialize(mapload)
. = ..()
AddElement(/datum/element/manufacturer_examine, COMPANY_BLACKSTEEL)
-/obj/item/organ/internal/cyberimp/arm/bureaucracy
+/obj/item/organ/cyberimp/arm/bureaucracy
name = "bureaucrat's 'Jacent' toolset implant"
desc = "Popular amongst coreworld corporates, this integrated toolset includes a wrist-sheathed four-colour pen, a special motorized sheaf hollow for holding up to ten pieces of galactic-standard A4 paper and a set of two fingertip stamps for approving and denying things. Does not replenish."
items_to_create = list(/obj/item/pen/fourcolor/integrated, /obj/item/paper_bin/integrated, /obj/item/stamp/integrated, /obj/item/stamp/denied/integrated)
-/obj/item/organ/internal/cyberimp/arm/cargo
+/obj/item/organ/cyberimp/arm/cargo
name = "FTU 'Deckhand' toolset implant"
desc = "Containing a fingertip-mounted universal scanner and a boxcutter, deck workers across the sector favor this cheap and effective implant as both a means of self-defense from irate consumers and for keeping a set of handy scanners quite literally, close at hand."
items_to_create = list(/obj/item/universal_scanner/integrated, /obj/item/boxcutter/extended/integrated)
diff --git a/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm b/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm
index 84562826077..f25d82fc1e0 100644
--- a/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm
+++ b/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm
@@ -2,90 +2,90 @@
//Purely code readability.
// ARM IMPLANTS
-/obj/item/organ/internal/cyberimp/arm/adjuster/left_arm
+/obj/item/organ/cyberimp/arm/adjuster/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/adjuster/right_arm
+/obj/item/organ/cyberimp/arm/adjuster/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/power_cord/left_arm
+/obj/item/organ/cyberimp/arm/power_cord/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/power_cord/right_arm
+/obj/item/organ/cyberimp/arm/power_cord/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/lighter/left_arm
+/obj/item/organ/cyberimp/arm/lighter/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/lighter/right_arm
+/obj/item/organ/cyberimp/arm/lighter/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm
+/obj/item/organ/cyberimp/arm/arc_welder/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm
+/obj/item/organ/cyberimp/arm/arc_welder/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm
+/obj/item/organ/cyberimp/arm/electrical_toolset/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm
+/obj/item/organ/cyberimp/arm/electrical_toolset/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm
+/obj/item/organ/cyberimp/arm/emt_triage/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm
+/obj/item/organ/cyberimp/arm/emt_triage/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm
+/obj/item/organ/cyberimp/arm/civilian_barstaff/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm
+/obj/item/organ/cyberimp/arm/civilian_barstaff/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm
+/obj/item/organ/cyberimp/arm/civilian_lighter/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm
+/obj/item/organ/cyberimp/arm/civilian_lighter/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm
+/obj/item/organ/cyberimp/arm/blacksteel_forging/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm
+/obj/item/organ/cyberimp/arm/blacksteel_forging/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm
+/obj/item/organ/cyberimp/arm/bureaucracy/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm
+/obj/item/organ/cyberimp/arm/bureaucracy/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/cargo/left_arm
+/obj/item/organ/cyberimp/arm/cargo/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
-/obj/item/organ/internal/cyberimp/arm/cargo/right_arm
+/obj/item/organ/cyberimp/arm/cargo/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
diff --git a/modular_nova/modules/synths/code/bodyparts/brain.dm b/modular_nova/modules/synths/code/bodyparts/brain.dm
index 953b2bad433..f0f7a8de28f 100644
--- a/modular_nova/modules/synths/code/bodyparts/brain.dm
+++ b/modular_nova/modules/synths/code/bodyparts/brain.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain/synth
+/obj/item/organ/brain/synth
name = "compact positronic brain"
slot = ORGAN_SLOT_BRAIN
zone = BODY_ZONE_CHEST
@@ -11,7 +11,7 @@
var/last_message_time = 0
organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED)
-/obj/item/organ/internal/brain/synth/mob_insert(mob/living/carbon/brain_owner, special, movement_flags)
+/obj/item/organ/brain/synth/mob_insert(mob/living/carbon/brain_owner, special, movement_flags)
. = ..()
if(brain_owner.stat != DEAD || !ishuman(brain_owner))
@@ -21,7 +21,7 @@
if(HAS_TRAIT(human_brain_owner, TRAIT_REVIVES_BY_HEALING) && human_brain_owner.health > SYNTH_BRAIN_WAKE_THRESHOLD)
human_brain_owner.revive(FALSE)
-/obj/item/organ/internal/brain/synth/emp_act(severity) // EMP act against the posi, keep the cap far below the organ health
+/obj/item/organ/brain/synth/emp_act(severity) // EMP act against the posi, keep the cap far below the organ health
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
@@ -38,7 +38,7 @@
to_chat(owner, span_warning("Alert: Electromagnetic damage taken in central processing unit. Error Code: 401-YT"))
apply_organ_damage(SYNTH_ORGAN_LIGHT_EMP_DAMAGE, SYNTH_EMP_BRAIN_DAMAGE_MAXIMUM, required_organ_flag = ORGAN_ROBOTIC)
-/obj/item/organ/internal/brain/synth/apply_organ_damage(damage_amount, maximum, required_organ_flag)
+/obj/item/organ/brain/synth/apply_organ_damage(damage_amount, maximum, required_organ_flag)
. = ..()
if(owner && damage > 0 && (world.time - last_message_time) > SYNTH_BRAIN_DAMAGE_MESSAGE_INTERVAL)
@@ -51,7 +51,7 @@
if(damage > BRAIN_DAMAGE_MILD)
to_chat(owner, span_warning("Alert: Minor corruption in central processing unit. Error Code: 001-HP"))
-/obj/item/organ/internal/brain/synth/circuit
+/obj/item/organ/brain/synth/circuit
name = "compact AI circuit"
desc = "A compact and extremely complex circuit, perfectly dimensioned to fit in the same slot as a synthetic-compatible positronic brain. It is usually slotted into the chest of synthetic crewmembers."
icon = 'modular_nova/master_files/icons/obj/alt_silicon_brains.dmi'
@@ -60,7 +60,7 @@
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
-/obj/item/organ/internal/brain/synth/mmi
+/obj/item/organ/brain/synth/mmi
name = "compact man-machine interface"
desc = "A compact man-machine interface, perfectly dimensioned to fit in the same slot as a synthetic-compatible positronic brain. Unfortunately, the brain seems to be permanently attached to the circuitry, and it seems relatively sensitive to its environment. It is usually slotted into the chest of synthetic crewmembers."
icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
diff --git a/modular_nova/modules/synths/code/bodyparts/ears.dm b/modular_nova/modules/synths/code/bodyparts/ears.dm
index cc5906bb7f8..a3a0213a067 100644
--- a/modular_nova/modules/synths/code/bodyparts/ears.dm
+++ b/modular_nova/modules/synths/code/bodyparts/ears.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears/synth
+/obj/item/organ/ears/synth
name = "auditory sensors"
icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
icon_state = "ears-ipc"
@@ -11,7 +11,7 @@
overrides_sprite_datum_organ_type = TRUE
bodypart_overlay = /datum/bodypart_overlay/mutant/ears
-/obj/item/organ/internal/ears/synth/emp_act(severity)
+/obj/item/organ/ears/synth/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
@@ -39,7 +39,7 @@
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/ears/synth
+ build_path = /obj/item/organ/ears/synth
category = list(
RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
)
diff --git a/modular_nova/modules/synths/code/bodyparts/eyes.dm b/modular_nova/modules/synths/code/bodyparts/eyes.dm
index 80f54876b7e..aa72a25c46e 100644
--- a/modular_nova/modules/synths/code/bodyparts/eyes.dm
+++ b/modular_nova/modules/synths/code/bodyparts/eyes.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/internal/eyes/synth
+/obj/item/organ/eyes/synth
name = "optical sensors"
icon_state = "cybernetic_eyeballs"
desc = "A very basic set of optical sensors with no extra vision modes or functions."
maxHealth = 1 * STANDARD_ORGAN_THRESHOLD
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
-/obj/item/organ/internal/eyes/synth/emp_act(severity)
+/obj/item/organ/eyes/synth/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
@@ -29,7 +29,7 @@
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/eyes/synth
+ build_path = /obj/item/organ/eyes/synth
category = list(
RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
)
diff --git a/modular_nova/modules/synths/code/bodyparts/heart.dm b/modular_nova/modules/synths/code/bodyparts/heart.dm
index a8f8f46b4e4..b23dc1a4967 100644
--- a/modular_nova/modules/synths/code/bodyparts/heart.dm
+++ b/modular_nova/modules/synths/code/bodyparts/heart.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/synth
+/obj/item/organ/heart/synth
name = "hydraulic pump engine"
desc = "An electronic device that handles the hydraulic pumps, powering one's robotic limbs. Without this, synthetics are unable to move."
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
@@ -10,7 +10,7 @@
slot = ORGAN_SLOT_HEART
var/last_message_time = 0
-/obj/item/organ/internal/heart/synth/emp_act(severity)
+/obj/item/organ/heart/synth/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
@@ -37,7 +37,7 @@
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/heart/synth
+ build_path = /obj/item/organ/heart/synth
category = list(
RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
)
diff --git a/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm b/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm
index cb20bb9737c..d6dd1f08c49 100644
--- a/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm
+++ b/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm
@@ -1,17 +1,17 @@
-/obj/item/organ/internal/brain/synth
+/obj/item/organ/brain/synth
var/obj/item/modular_computer/pda/synth/internal_computer
actions_types = list(/datum/action/item_action/synth/open_internal_computer)
-/obj/item/organ/internal/brain/synth/Initialize(mapload)
+/obj/item/organ/brain/synth/Initialize(mapload)
. = ..()
internal_computer = new(src)
ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT)
-/obj/item/organ/internal/brain/synth/Destroy()
+/obj/item/organ/brain/synth/Destroy()
QDEL_NULL(internal_computer)
return ..()
-/obj/item/organ/internal/brain/synth/on_mob_insert(mob/living/carbon/human/brain_owner, special, movement_flags)
+/obj/item/organ/brain/synth/on_mob_insert(mob/living/carbon/human/brain_owner, special, movement_flags)
. = ..()
if(!istype(brain_owner))
return
@@ -19,7 +19,7 @@
if(internal_computer && brain_owner.wear_id)
internal_computer.handle_id_slot(brain_owner, brain_owner.wear_id)
-/obj/item/organ/internal/brain/synth/on_mob_remove(mob/living/carbon/human/brain_owner, special)
+/obj/item/organ/brain/synth/on_mob_remove(mob/living/carbon/human/brain_owner, special)
. = ..()
if(!istype(brain_owner))
return
@@ -28,7 +28,7 @@
internal_computer.handle_id_slot(brain_owner)
internal_computer.clear_id_slot_signals(brain_owner.wear_id)
-/obj/item/organ/internal/brain/synth/proc/on_equip_signal(datum/source, obj/item/item, slot)
+/obj/item/organ/brain/synth/proc/on_equip_signal(datum/source, obj/item/item, slot)
SIGNAL_HANDLER
if(isnull(internal_computer))
return
diff --git a/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm b/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm
index 2e0bdd6385a..70d8e34600c 100644
--- a/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm
+++ b/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm
@@ -15,7 +15,7 @@
. = ..()
// prevent these from being created outside of synth brains
- if(!istype(loc, /obj/item/organ/internal/brain/synth))
+ if(!istype(loc, /obj/item/organ/brain/synth))
return INITIALIZE_HINT_QDEL
/obj/item/modular_computer/pda/synth/check_power_override()
@@ -28,14 +28,14 @@
/datum/action/item_action/synth/open_internal_computer/Trigger(trigger_flags)
. = ..()
- var/obj/item/organ/internal/brain/synth/targetmachine = target
+ var/obj/item/organ/brain/synth/targetmachine = target
targetmachine.internal_computer.interact(owner)
/obj/item/modular_computer/pda/synth/ui_state(mob/user)
return GLOB.default_state
/obj/item/modular_computer/pda/synth/ui_status(mob/user)
- var/obj/item/organ/internal/brain/synth/brain_loc = loc
+ var/obj/item/organ/brain/synth/brain_loc = loc
if(!istype(brain_loc))
return UI_CLOSE
@@ -49,7 +49,7 @@
/// Id card arg is optional. Leaving it null causes the id to become unpaired from the synth computer
/obj/item/modular_computer/pda/synth/proc/update_id_slot(obj/item/card/id/id_card)
- var/obj/item/organ/internal/brain/synth/brain_loc = loc
+ var/obj/item/organ/brain/synth/brain_loc = loc
if(!istype(brain_loc))
return
if(isnull(brain_loc.internal_computer))
@@ -144,7 +144,7 @@
if(!istype(targetmachine))
return ..()
- var/obj/item/organ/internal/brain/synth/robotbrain = targetmachine.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/synth/robotbrain = targetmachine.get_organ_slot(ORGAN_SLOT_BRAIN)
if(istype(robotbrain))
if(user.zone_selected == BODY_ZONE_PRECISE_EYES)
balloon_alert(user, "Establishing SSH login with persocom...")
@@ -157,7 +157,7 @@
/obj/item/modular_computer/pda/synth/get_header_data()
var/list/data = ..()
- var/obj/item/organ/internal/brain/synth/brain_loc = loc
+ var/obj/item/organ/brain/synth/brain_loc = loc
// Battery level is now according to the synth charge
if(istype(brain_loc))
var/charge_level = (brain_loc.owner.nutrition / NUTRITION_LEVEL_FULL) * 100
diff --git a/modular_nova/modules/synths/code/bodyparts/limbs.dm b/modular_nova/modules/synths/code/bodyparts/limbs.dm
index c2d826e3e64..4fe4120fa8d 100644
--- a/modular_nova/modules/synths/code/bodyparts/limbs.dm
+++ b/modular_nova/modules/synths/code/bodyparts/limbs.dm
@@ -112,7 +112,7 @@
bodypart_flags = BODYPART_UNHUSKABLE
wing_types = list(
- /obj/item/organ/external/wings/functional/robotic,
+ /obj/item/organ/wings/functional/robotic,
)
/datum/design/synth_chest
diff --git a/modular_nova/modules/synths/code/bodyparts/liver.dm b/modular_nova/modules/synths/code/bodyparts/liver.dm
index 9c1fe7382a0..b6713adfa98 100644
--- a/modular_nova/modules/synths/code/bodyparts/liver.dm
+++ b/modular_nova/modules/synths/code/bodyparts/liver.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/liver/synth
+/obj/item/organ/liver/synth
name = "reagent processing unit"
desc = "An electronic device that processes the beneficial chemicals for the synthetic user."
icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
@@ -9,7 +9,7 @@
maxHealth = 1 * STANDARD_ORGAN_THRESHOLD
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
-/obj/item/organ/internal/liver/synth/emp_act(severity)
+/obj/item/organ/liver/synth/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
@@ -37,7 +37,7 @@
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/liver/synth
+ build_path = /obj/item/organ/liver/synth
category = list(
RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
)
diff --git a/modular_nova/modules/synths/code/bodyparts/lungs.dm b/modular_nova/modules/synths/code/bodyparts/lungs.dm
index 1b5ce199c01..556e0388ed8 100644
--- a/modular_nova/modules/synths/code/bodyparts/lungs.dm
+++ b/modular_nova/modules/synths/code/bodyparts/lungs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs/synth
+/obj/item/organ/lungs/synth
name = "heatsink"
desc = "A device that transfers generated heat to a fluid medium to cool it down. Required to keep your synthetics cool-headed. Its shape resembles lungs." //Purposefully left the 'fluid medium' ambigious for interpretation of the character, whether it be air or fluid cooling
icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
@@ -14,7 +14,7 @@
maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
-/obj/item/organ/internal/lungs/synth/emp_act(severity)
+/obj/item/organ/lungs/synth/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
@@ -44,7 +44,7 @@
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/lungs/synth
+ build_path = /obj/item/organ/lungs/synth
category = list(
RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
)
diff --git a/modular_nova/modules/synths/code/bodyparts/power_cord.dm b/modular_nova/modules/synths/code/bodyparts/power_cord.dm
index 58a55faf9a8..d0b97c94816 100644
--- a/modular_nova/modules/synths/code/bodyparts/power_cord.dm
+++ b/modular_nova/modules/synths/code/bodyparts/power_cord.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/arm/power_cord
+/obj/item/organ/cyberimp/arm/power_cord
name = "charging implant"
desc = "An internal power cord. Useful if you run on elecricity. Not so much otherwise."
items_to_create = list(/obj/item/synth_powercord)
@@ -46,7 +46,7 @@
var/nutrition_level_joules = user.nutrition * SYNTH_JOULES_PER_NUTRITION
user.changeNext_move(CLICK_CD_MELEE)
- var/obj/item/organ/internal/stomach/synth/synth_cell = user.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/synth/synth_cell = user.get_organ_slot(ORGAN_SLOT_STOMACH)
if(QDELETED(synth_cell) || !istype(synth_cell))
to_chat(user, span_warning("You plug into [target], but nothing happens! It seems you don't have an internal cell to charge."))
return
diff --git a/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm b/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm
index 53092375080..409680e2c96 100644
--- a/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm
+++ b/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm
@@ -24,13 +24,13 @@
/mob/living/proc/prefs_get_brain_to_use(value, is_cyborg = FALSE)
switch(value)
if(ORGAN_PREF_POSI_BRAIN)
- return is_cyborg ? /obj/item/mmi/posibrain : /obj/item/organ/internal/brain/synth
+ return is_cyborg ? /obj/item/mmi/posibrain : /obj/item/organ/brain/synth
if(ORGAN_PREF_MMI_BRAIN)
- return is_cyborg ? /obj/item/mmi : /obj/item/organ/internal/brain/synth/mmi
+ return is_cyborg ? /obj/item/mmi : /obj/item/organ/brain/synth/mmi
if(ORGAN_PREF_CIRCUIT_BRAIN)
- return is_cyborg ? /obj/item/mmi/posibrain/circuit : /obj/item/organ/internal/brain/synth/circuit
+ return is_cyborg ? /obj/item/mmi/posibrain/circuit : /obj/item/organ/brain/synth/circuit
/mob/living/silicon/robot/Initialize(mapload)
. = ..()
@@ -76,7 +76,7 @@
new_mmi = new new_mmi(src)
// Probably shitcode, but silicon code is spaghetti as fuck.
- new_mmi.brain = new /obj/item/organ/internal/brain(new_mmi)
+ new_mmi.brain = new /obj/item/organ/brain(new_mmi)
new_mmi.brain.organ_flags |= ORGAN_FROZEN
new_mmi.brain.name = "[real_name]'s brain"
new_mmi.name = "[initial(new_mmi.name)]: [real_name]"
diff --git a/modular_nova/modules/synths/code/bodyparts/stomach.dm b/modular_nova/modules/synths/code/bodyparts/stomach.dm
index b297662d9f0..dc6a5168b03 100644
--- a/modular_nova/modules/synths/code/bodyparts/stomach.dm
+++ b/modular_nova/modules/synths/code/bodyparts/stomach.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/stomach/synth
+/obj/item/organ/stomach/synth
name = "synthetic bio-reactor"
icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
icon_state = "stomach-ipc"
@@ -11,7 +11,7 @@
desc = "A specialised mini reactor, for synthetic use only. Has a low-power mode to ensure baseline functions. Without this, synthetics are unable to stay powered."
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
-/obj/item/organ/internal/stomach/synth/emp_act(severity)
+/obj/item/organ/stomach/synth/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
@@ -41,22 +41,22 @@
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/stomach/synth
+ build_path = /obj/item/organ/stomach/synth
category = list(
RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
-/obj/item/organ/internal/stomach/synth/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/stomach/synth/mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
RegisterSignal(receiver, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(on_borg_charge))
-/obj/item/organ/internal/stomach/synth/mob_remove(mob/living/carbon/stomach_owner, special)
+/obj/item/organ/stomach/synth/mob_remove(mob/living/carbon/stomach_owner, special)
. = ..()
UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
///Handles charging the synth from borg chargers
-/obj/item/organ/internal/stomach/synth/proc/on_borg_charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
+/obj/item/organ/stomach/synth/proc/on_borg_charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
SIGNAL_HANDLER
if(owner.nutrition >= NUTRITION_LEVEL_FULL)
diff --git a/modular_nova/modules/synths/code/bodyparts/tongue.dm b/modular_nova/modules/synths/code/bodyparts/tongue.dm
index cc35fcf41b4..44ba4f11d9a 100644
--- a/modular_nova/modules/synths/code/bodyparts/tongue.dm
+++ b/modular_nova/modules/synths/code/bodyparts/tongue.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/tongue/synth
+/obj/item/organ/tongue/synth
name = "synthetic voicebox"
desc = "A fully-functional synthetic tongue, encased in soft silicone. Features include high-resolution vocals and taste receptors."
icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi'
@@ -15,10 +15,10 @@
slot = ORGAN_SLOT_TONGUE
organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
-/obj/item/organ/internal/tongue/synth/can_speak_language(language)
+/obj/item/organ/tongue/synth/can_speak_language(language)
return TRUE
-/obj/item/organ/internal/tongue/synth/handle_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/synth/handle_speech(datum/source, list/speech_args)
speech_args[SPEECH_SPANS] |= SPAN_ROBOT
/datum/design/synth_tongue
@@ -31,7 +31,7 @@
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
)
- build_path = /obj/item/organ/internal/tongue/synth
+ build_path = /obj/item/organ/tongue/synth
category = list(
RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
)
diff --git a/modular_nova/modules/synths/code/defib.dm b/modular_nova/modules/synths/code/defib.dm
index ecb6e2e952e..bd797d92f10 100644
--- a/modular_nova/modules/synths/code/defib.dm
+++ b/modular_nova/modules/synths/code/defib.dm
@@ -2,10 +2,10 @@
* Global timer proc used in defib.dm. Removes the temporary trauma caused by being defibbed as a synth.
*
* Args:
- * * obj/item/organ/internal/brain/synth_brain: The brain with the trauma on it. Non-nullable.
+ * * obj/item/organ/brain/synth_brain: The brain with the trauma on it. Non-nullable.
* * datum/brain_trauma/trauma: The trauma itself. Non-nullable.
*/
-/proc/remove_synth_defib_trauma(obj/item/organ/internal/brain/synth_brain, datum/brain_trauma/trauma)
+/proc/remove_synth_defib_trauma(obj/item/organ/brain/synth_brain, datum/brain_trauma/trauma)
if (QDELETED(synth_brain) || QDELETED(trauma))
return
diff --git a/modular_nova/modules/synths/code/species/synthetic.dm b/modular_nova/modules/synths/code/species/synthetic.dm
index 4c89c80bc1b..c5ef2264329 100644
--- a/modular_nova/modules/synths/code/species/synthetic.dm
+++ b/modular_nova/modules/synths/code/species/synthetic.dm
@@ -25,15 +25,15 @@
payday_modifier = 1.0 // Matches the rest of the pay penalties the non-human crew have
death_sound = 'modular_nova/master_files/sound/effects/hacked.ogg'
species_language_holder = /datum/language_holder/machine
- mutant_organs = list(/obj/item/organ/internal/cyberimp/arm/power_cord/left_arm)
- mutantbrain = /obj/item/organ/internal/brain/synth
- mutantstomach = /obj/item/organ/internal/stomach/synth
- mutantears = /obj/item/organ/internal/ears/synth
- mutanttongue = /obj/item/organ/internal/tongue/synth
- mutanteyes = /obj/item/organ/internal/eyes/synth
- mutantlungs = /obj/item/organ/internal/lungs/synth
- mutantheart = /obj/item/organ/internal/heart/synth
- mutantliver = /obj/item/organ/internal/liver/synth
+ mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord/left_arm)
+ mutantbrain = /obj/item/organ/brain/synth
+ mutantstomach = /obj/item/organ/stomach/synth
+ mutantears = /obj/item/organ/ears/synth
+ mutanttongue = /obj/item/organ/tongue/synth
+ mutanteyes = /obj/item/organ/eyes/synth
+ mutantlungs = /obj/item/organ/lungs/synth
+ mutantheart = /obj/item/organ/heart/synth
+ mutantliver = /obj/item/organ/liver/synth
mutantappendix = null
exotic_blood = /datum/reagent/fuel/oil
bodypart_overrides = list(
@@ -95,7 +95,7 @@
sing_action.Grant(transformer)
var/screen_mutant_bodypart = transformer.dna.mutant_bodyparts[MUTANT_SYNTH_SCREEN]
- var/obj/item/organ/internal/eyes/eyes = transformer.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = transformer.get_organ_slot(ORGAN_SLOT_EYES)
if(!screen && screen_mutant_bodypart && screen_mutant_bodypart[MUTANT_INDEX_NAME] && screen_mutant_bodypart[MUTANT_INDEX_NAME] != "None")
@@ -151,7 +151,7 @@
UnregisterSignal(human, COMSIG_ATOM_EMAG_ACT)
- var/obj/item/organ/internal/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
+ var/obj/item/organ/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
if(eyes)
eyes.eye_icon_state = initial(eyes.eye_icon_state)
@@ -164,11 +164,11 @@
if(isnull(human_holder.loc))
return // preview characters don't need funny organs, prevents a runtime
- var/obj/item/organ/internal/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
if(old_stomach.is_oversized) // don't override augments that are already oversized
return
- var/obj/item/organ/internal/stomach/synth/oversized/new_synth_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE reactor! RIP AND TEAR YOUR HUGE reactor!
+ var/obj/item/organ/stomach/synth/oversized/new_synth_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE reactor! RIP AND TEAR YOUR HUGE reactor!
oversized_quirk.old_organs += list(old_stomach)
@@ -211,7 +211,7 @@
return
// This is awful. Please find a better way to do this.
- var/obj/item/organ/external/synth_screen/screen_organ = transformer.get_organ_slot(ORGAN_SLOT_EXTERNAL_SYNTH_SCREEN)
+ var/obj/item/organ/synth_screen/screen_organ = transformer.get_organ_slot(ORGAN_SLOT_EXTERNAL_SYNTH_SCREEN)
if(!istype(screen_organ))
return
@@ -220,7 +220,7 @@
transformer.update_body()
/datum/species/synthetic/get_types_to_preload()
- return ..() - typesof(/obj/item/organ/internal/cyberimp/arm/power_cord) // Don't cache things that lead to hard deletions.
+ return ..() - typesof(/obj/item/organ/cyberimp/arm/power_cord) // Don't cache things that lead to hard deletions.
/datum/species/synthetic/create_pref_unique_perks()
var/list/perk_descriptions = list()
diff --git a/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm
index 94ecc2907d0..07b1161bf0f 100644
--- a/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm
@@ -16,7 +16,7 @@
/datum/surgery/robot_brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
. = ..()
- var/obj/item/organ/internal/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ var/obj/item/organ/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
if(!istype(brain) && !issynthetic(target))
return FALSE
else
diff --git a/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm
index 21676fddfb4..64e2d96a3bc 100644
--- a/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm
@@ -17,7 +17,7 @@
desc = "A mechanical surgery procedure designed to repair an androids internal hydraulic pump."
/datum/surgery/hydraulic_maintenance/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/heart/hydraulic_pump = target.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/hydraulic_pump = target.get_organ_slot(ORGAN_SLOT_HEART)
if(isnull(hydraulic_pump) || !issynthetic(target) || hydraulic_pump.damage < 10)
return FALSE
return ..()
@@ -45,7 +45,7 @@
/datum/surgery_step/hydraulic/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/carbon/human/patient = target
- var/obj/item/organ/internal/heart/hydraulic = patient.get_organ_slot(ORGAN_SLOT_HEART)
+ var/obj/item/organ/heart/hydraulic = patient.get_organ_slot(ORGAN_SLOT_HEART)
patient.setOrganLoss(ORGAN_SLOT_HEART, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
if(hydraulic.organ_flags & ORGAN_EMP)
hydraulic.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm
index 685d36580ad..7b74de90793 100644
--- a/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm
@@ -17,7 +17,7 @@
desc = "A mechanical list of actions to reset the reagent processor and purge built up minerals."
/datum/surgery/reagent_pump/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
if(isnull(reagent_processor) || !issynthetic(target) || reagent_processor.damage < 10)
return FALSE
return ..()
@@ -46,7 +46,7 @@
/datum/surgery_step/reagent_pump/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/carbon/human/patient = target
- var/obj/item/organ/internal/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
+ var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
patient.setOrganLoss(ORGAN_SLOT_LIVER, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
if(reagent_processor.organ_flags & ORGAN_EMP)
reagent_processor.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm
index 3213cc954b3..684fa7cd560 100644
--- a/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm
@@ -18,7 +18,7 @@
desc = "A mechanical surgery procedure designed to repair an androids internal heatsink."
/datum/surgery/heatsink/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
- var/obj/item/organ/internal/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
if(isnull(target_lungs) || !issynthetic(target) || target_lungs.damage < 10 )
return FALSE
return ..()
@@ -46,7 +46,7 @@
/datum/surgery_step/heatsink/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(ishuman(target))
var/mob/living/carbon/human/patient = target
- var/obj/item/organ/internal/lungs/heatsink = patient.get_organ_slot(ORGAN_SLOT_LUNGS)
+ var/obj/item/organ/lungs/heatsink = patient.get_organ_slot(ORGAN_SLOT_LUNGS)
patient.setOrganLoss(ORGAN_SLOT_LUNGS, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
if(heatsink.organ_flags & ORGAN_EMP)
heatsink.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm
index 823eb48203d..2c8e05d2192 100644
--- a/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm
@@ -17,7 +17,7 @@
desc = "A mechanical surgery procedure designed to repair an androids internal bioreactor."
/datum/surgery/bioreactor/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/internal/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
if(isnull(bioreactor) || !issynthetic(target) || bioreactor.damage < 10)
return FALSE
return ..()
@@ -46,7 +46,7 @@
/datum/surgery_step/bioreactor/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/carbon/human/patient = target
- var/obj/item/organ/internal/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
patient.setOrganLoss(ORGAN_SLOT_STOMACH, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
if(bioreactor.organ_flags & ORGAN_EMP)
bioreactor.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/taur_mechanics/code/constrict.dm b/modular_nova/modules/taur_mechanics/code/constrict.dm
index 952733dd05e..10b8c415be6 100644
--- a/modular_nova/modules/taur_mechanics/code/constrict.dm
+++ b/modular_nova/modules/taur_mechanics/code/constrict.dm
@@ -508,13 +508,13 @@
UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_GRAB, COMSIG_LIVING_TRY_PULL, COMSIG_LIVING_SET_BODY_POSITION, COMSIG_ATOM_POST_DIR_CHANGE))
if (owner)
- var/obj/item/organ/external/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
taur_body.hide_self = FALSE
owner = new_owner
if (owner)
- var/obj/item/organ/external/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
taur_body.hide_self = TRUE
RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(owner_moved))
diff --git a/modular_nova/modules/taur_mechanics/code/preferences.dm b/modular_nova/modules/taur_mechanics/code/preferences.dm
index 35e9eba4a52..d050a0c5b60 100644
--- a/modular_nova/modules/taur_mechanics/code/preferences.dm
+++ b/modular_nova/modules/taur_mechanics/code/preferences.dm
@@ -15,6 +15,6 @@
/datum/preference/toggle/naga_soles/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
if (value)
return
- var/obj/item/organ/external/taur_body/serpentine/snake_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+ var/obj/item/organ/taur_body/serpentine/snake_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
if (istype(snake_body))
snake_body.add_hardened_soles(target)
diff --git a/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm b/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm
index a17d0b338bf..638727bf7e1 100644
--- a/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm
+++ b/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm
@@ -1,15 +1,15 @@
-/obj/item/organ/external/taur_body/serpentine
+/obj/item/organ/taur_body/serpentine
/// The constrict ability we have given our owner. Nullable, if we have no owner.
var/datum/action/innate/constrict/constrict_ability
/// Did our owner have their feet blocked before we ran on_mob_insert? Used for determining if we should unblock their feet slots on removal.
var/owner_blocked_feet_before_insert
-/obj/item/organ/external/taur_body/serpentine/Destroy()
+/obj/item/organ/taur_body/serpentine/Destroy()
QDEL_NULL(constrict_ability) // handled in remove, but lets be safe
return ..()
-/obj/item/organ/external/taur_body/serpentine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/taur_body/serpentine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
constrict_ability = new /datum/action/innate/constrict(organ_owner)
@@ -37,10 +37,10 @@
add_hardened_soles(organ_owner)
/// Adds TRAIT_HARD_SOLES to our owner.
-/obj/item/organ/external/taur_body/serpentine/proc/add_hardened_soles(mob/living/carbon/organ_owner = owner)
+/obj/item/organ/taur_body/serpentine/proc/add_hardened_soles(mob/living/carbon/organ_owner = owner)
ADD_TRAIT(organ_owner, TRAIT_HARD_SOLES, ORGAN_TRAIT)
-/obj/item/organ/external/taur_body/serpentine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/taur_body/serpentine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
QDEL_NULL(constrict_ability)
diff --git a/modular_nova/modules/teshari/code/_teshari.dm b/modular_nova/modules/teshari/code/_teshari.dm
index 33268063ce4..ee58342b13b 100644
--- a/modular_nova/modules/teshari/code/_teshari.dm
+++ b/modular_nova/modules/teshari/code/_teshari.dm
@@ -15,7 +15,7 @@
digitigrade_customization = DIGITIGRADE_NEVER
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
payday_modifier = 1.0
- mutanttongue = /obj/item/organ/internal/tongue/teshari
+ mutanttongue = /obj/item/organ/tongue/teshari
custom_worn_icons = list(
LOADOUT_ITEM_HEAD = TESHARI_HEAD_ICON,
LOADOUT_ITEM_MASK = TESHARI_MASK_ICON,
@@ -36,7 +36,7 @@
bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET)
bodytemp_cold_damage_limit = (BODYTEMP_COLD_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET)
species_language_holder = /datum/language_holder/teshari
- mutantears = /obj/item/organ/internal/ears/teshari
+ mutantears = /obj/item/organ/ears/teshari
body_size_restricted = TRUE
bodypart_overrides = list(
BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/teshari,
@@ -54,7 +54,7 @@
"legs" = list("Normal Legs", FALSE),
)
-/obj/item/organ/internal/tongue/teshari
+/obj/item/organ/tongue/teshari
liked_foodtypes = MEAT | GORE | RAW
disliked_foodtypes = GROSS | GRAIN
diff --git a/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm b/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm
index bacf3a5ff39..11c4064e46f 100644
--- a/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm
+++ b/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm
@@ -3,7 +3,7 @@ GLOBAL_LIST_INIT(tier1_reward, list(
/obj/item/stack/sheet/sinew = 1,
/obj/item/stack/sheet/animalhide/goliath_hide = 1,
/obj/item/stack/sheet/bone = 1,
- /obj/item/organ/internal/monster_core/regenerative_core/legion = 1,
+ /obj/item/organ/monster_core/regenerative_core/legion = 1,
))
GLOBAL_LIST_INIT(tier2_reward, list(
@@ -96,7 +96,7 @@ GLOBAL_LIST_INIT(animal_reward, list(
/obj/item/stack/sheet/sinew = 1,
/obj/item/stack/sheet/animalhide/goliath_hide = 1,
/obj/item/stack/sheet/bone = 1,
- /obj/item/organ/internal/monster_core/regenerative_core/legion = 1,
+ /obj/item/organ/monster_core/regenerative_core/legion = 1,
))
GLOBAL_LIST_INIT(alien_reward, list(
diff --git a/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm b/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm
index 8afa84427f2..59379673fcb 100644
--- a/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm
+++ b/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm
@@ -85,7 +85,7 @@
to_chat(carbon_mob, "AAAAAAH")
carbon_mob.SetSleeping(0)
carbon_mob.adjust_stutter(40 SECONDS)
- var/obj/item/organ/internal/ears/ears = carbon_mob.get_organ_slot(ORGAN_SLOT_EARS)
+ var/obj/item/organ/ears/ears = carbon_mob.get_organ_slot(ORGAN_SLOT_EARS)
if(ears)
ears.adjustEarDamage(0, 30)
carbon_mob.Paralyze(6 SECONDS)
diff --git a/tgstation.dme b/tgstation.dme
index 3a7331b8b9b..c3e6e03fc3b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -5835,6 +5835,7 @@
#include "code\modules\reagents\chemistry\items.dm"
#include "code\modules\reagents\chemistry\reagents.dm"
#include "code\modules\reagents\chemistry\recipes.dm"
+#include "code\modules\reagents\chemistry\taste.dm"
#include "code\modules\reagents\chemistry\holder\holder.dm"
#include "code\modules\reagents\chemistry\holder\mob_life.dm"
#include "code\modules\reagents\chemistry\holder\properties.dm"
diff --git a/tgui/packages/tgui/interfaces/MODsuit.tsx b/tgui/packages/tgui/interfaces/MODsuit.tsx
index 8f45a323dc0..9f57de5c081 100644
--- a/tgui/packages/tgui/interfaces/MODsuit.tsx
+++ b/tgui/packages/tgui/interfaces/MODsuit.tsx
@@ -25,25 +25,29 @@ import { Window } from '../layouts';
type MODsuitData = {
// Static
ui_theme: string;
- control: string;
complexity_max: number;
- parts: PartData[];
// Dynamic
suit_status: SuitStatus;
user_status: UserStatus;
module_custom_status: ModuleCustomStatus;
module_info: Module[];
+ control: string;
+ parts: PartData[];
};
type PartData = {
slot: string;
name: string;
+ deployed: BooleanLike;
+ ref: string;
};
type SuitStatus = {
core_name: string;
- cell_charge_current: number;
- cell_charge_max: number;
+ charge_current: number;
+ charge_max: number;
+ chargebar_color: string;
+ chargebar_string: string;
active: BooleanLike;
open: BooleanLike;
seconds_electrified: number;
@@ -53,8 +57,8 @@ type SuitStatus = {
complexity: number;
selected_module: string;
ai_name: string;
- has_pai: boolean;
- is_ai: boolean;
+ has_pai: BooleanLike;
+ is_ai: BooleanLike;
link_id: string;
link_freq: string;
link_call: string;
@@ -257,6 +261,20 @@ const ConfigurePinEntry = (props) => {
);
};
+// fuck u smartkar configs werent meant to be used as actions 🖕🖕🖕
+// and really u couldnt be bothered to make this and instead used
+// the pin entry? 🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕
+const ConfigureButtonEntry = (props) => {
+ const { name, value, module_ref } = props;
+ const { act } = useBackend();
+ return (
+