diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index e4680171208..d20f61df1f3 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -345,7 +345,7 @@ "gG" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1; icon_state = "comfychair_beige"},/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general) "gH" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/fancy/carpet,/area/awaymission/centcomAway/courtroom) "gI" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint) -"gJ" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general) +"gJ" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general) "gK" = (/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general) "gL" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "103"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/general) "gM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general) @@ -409,7 +409,7 @@ "hS" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom) "hT" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/awaymission/centcomAway/courtroom) "hU" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/hangar) -"hV" = (/obj/structure/crematorium,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general) +"hV" = (/obj/structure/bodycontainer/crematorium,/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general) "hW" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/centcomAway/general) "hX" = (/obj/machinery/crema_switch{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "engine"},/area/awaymission/centcomAway/general) "hY" = (/obj/structure/closet/secure_closet/injection,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/courtroom) diff --git a/_maps/RandomZLevels/stationCollision.dmm b/_maps/RandomZLevels/stationCollision.dmm index 0a25b1f52dd..4d1cbd867aa 100644 --- a/_maps/RandomZLevels/stationCollision.dmm +++ b/_maps/RandomZLevels/stationCollision.dmm @@ -559,7 +559,7 @@ "kM" = (/obj/structure/sink/kitchen{pixel_y = 32},/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "kN" = (/obj/item/weapon/melee/energy/sword/saber/red,/obj/item/clothing/shoes/syndigaloshes,/obj/item/clothing/under/syndicate,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/weapon/paper/sc_safehint_paper_hydro,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "kO" = (/obj/machinery/hydroponics,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) -"kP" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock) +"kP" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock) "kQ" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock) "kR" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/southblock) "kS" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet{pixel_x = 2; pixel_y = 2},/obj/item/weapon/paper/pamphlet{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/awaymission/gateroom) @@ -570,7 +570,7 @@ "kX" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock) "kY" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock) "kZ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock) -"la" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/awaymission/southblock) +"la" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/awaymission/southblock) "lb" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/awaymission/southblock) "lc" = (/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/awaymission/southblock) "ld" = (/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/awaymission/southblock) diff --git a/_maps/map_files/Asteroidstation/Asteroidstation.dmm b/_maps/map_files/Asteroidstation/Asteroidstation.dmm index 40ff181066b..96338fdbc7d 100644 --- a/_maps/map_files/Asteroidstation/Asteroidstation.dmm +++ b/_maps/map_files/Asteroidstation/Asteroidstation.dmm @@ -4251,7 +4251,7 @@ "bDM" = (/obj/machinery/door_control{dir = 2; id = "Mechbay"; name = "Mech Bay Door Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "29"},/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bDN" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bDO" = (/turf/simulated/floor/plasteel,/area/assembly/chargebay) -"bDP" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/assembly/assembly_line) +"bDP" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/assembly/assembly_line) "bDQ" = (/obj/machinery/camera{c_tag = "Robotics Morgue"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/assembly/assembly_line) "bDR" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/assembly/assembly_line) "bDS" = (/obj/machinery/door/window/southleft{name = "Robotics Deliveries"; req_access_txt = "29"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/assembly/assembly_line) @@ -5438,7 +5438,7 @@ "caD" = (/obj/structure/cable/cyan{tag = "icon-1-2"; icon_state = "1-2"},/obj/structure/cable/cyan{tag = "icon-1-4"; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/asteroidstation/medbay) "caE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/cyan{tag = "icon-2-8"; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/asteroidstation/medbay) "caF" = (/obj/machinery/power/apc{dir = 1; name = "Genetics Research APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/cyan{tag = "icon-0-2"; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/genetics) -"caG" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"caG" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "caH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "caI" = (/obj/machinery/camera{c_tag = "Medbay Morgue"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "caJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) @@ -5586,7 +5586,7 @@ "cdv" = (/obj/item/clothing/head/ushanka,/obj/item/clothing/under/soviet,/turf/simulated/floor/plating,/area/hallway/primary/aft{name = "Aft Hallway"}) "cdw" = (/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/obj/item/toy/snappop,/turf/simulated/floor/plating,/area/hallway/primary/aft{name = "Aft Hallway"}) "cdx" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"cdy" = (/obj/structure/crematorium,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"cdy" = (/obj/structure/bodycontainer/crematorium,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cdz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cdA" = (/obj/structure/closet/wardrobe/chaplain_black,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cdB" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) @@ -5683,7 +5683,7 @@ "cfo" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/primary/aft{name = "Aft Hallway"}) "cfp" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/hallway/primary/aft{name = "Aft Hallway"}) "cfq" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/hallway/primary/aft{name = "Aft Hallway"}) -"cfr" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"cfr" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cfs" = (/obj/machinery/camera{c_tag = "Chapel Crematorium"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cft" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cfu" = (/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/item/weapon/storage/fancy/crayons,/obj/structure/table/wood,/turf/simulated/floor/fancy/carpet,/area/chapel/main) diff --git a/_maps/map_files/Asteroidstation/z6.dmm b/_maps/map_files/Asteroidstation/z6.dmm index 8ca97b0aa8c..f8b85b35692 100644 --- a/_maps/map_files/Asteroidstation/z6.dmm +++ b/_maps/map_files/Asteroidstation/z6.dmm @@ -249,7 +249,7 @@ "eO" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/space) "eP" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/derelict/arrival) "eQ" = (/obj/machinery/door/morgue{name = "coffin storage"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"eR" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"eR" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) "eS" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "eT" = (/turf/simulated/floor/airless{icon_state = "white"},/area/space) "eU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 2c83d827d2b..b87ff8b21a2 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -1738,7 +1738,7 @@ "aHv" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library) "aHw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/library) "aHx" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library) -"aHy" = (/obj/structure/crematorium,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) +"aHy" = (/obj/structure/bodycontainer/crematorium,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "aHz" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "aHA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aHB" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) @@ -1968,7 +1968,7 @@ "aLR" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/wood,/area/library) "aLS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/library) "aLT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/library) -"aLU" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) +"aLU" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "aLV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "aLW" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aLX" = (/obj/machinery/camera{c_tag = "Chapel North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) @@ -3102,8 +3102,8 @@ "bhH" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) "bhI" = (/turf/simulated/floor/plasteel,/area/security/checkpoint/medical) "bhJ" = (/obj/machinery/computer/secure_data,/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) -"bhK" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"bhL" = (/obj/structure/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"bhK" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"bhL" = (/obj/structure/bodycontainer/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bhM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bhN" = (/turf/simulated/floor/plating,/area/storage/emergency) "bhO" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plating,/area/storage/emergency) @@ -3251,7 +3251,7 @@ "bkA" = (/obj/machinery/power/apc{dir = 8; name = "Medbay Security APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) "bkB" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/security/checkpoint/medical) "bkC" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) -"bkD" = (/obj/structure/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"bkD" = (/obj/structure/bodycontainer/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bkE" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bkF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bkG" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable,/turf/simulated/floor/plating,/area/assembly/chargebay) diff --git a/_maps/map_files/generic/z4.dmm b/_maps/map_files/generic/z4.dmm index 0b6b03799ea..982f946219b 100644 --- a/_maps/map_files/generic/z4.dmm +++ b/_maps/map_files/generic/z4.dmm @@ -352,7 +352,7 @@ "gN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/derelict/arrival) "gO" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/arrival) "gP" = (/obj/machinery/door/morgue{name = "coffin storage"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gQ" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"gQ" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) "gR" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "gS" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/space) "gT" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless{icon_state = "white"},/area/space) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index f07deae0109..fd314a167c3 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -1,40 +1,108 @@ /* Morgue stuff * Contains: * Morgue - * Morgue trays - * Creamatorium - * Creamatorium trays + * Morgue tray + * Crematorium + * Crematorium tray + * Crematorium button */ /* - * Morgue + * Bodycontainer + * Parent class for morgue and crematorium + * For overriding only */ - -/obj/structure/morgue - name = "Morgue" - desc = "Used to keep bodies in until someone fetches them." +/obj/structure/bodycontainer icon = 'icons/obj/stationobjs.dmi' icon_state = "morgue1" density = 1 - var/obj/structure/m_tray/connected = null anchored = 1.0 -/obj/structure/morgue/New() - connected = new(src) - connected.connected = src + var/obj/structure/tray/connected = null + var/locked = 0 + var/opendir = SOUTH + +/obj/structure/bodycontainer/New() ..() -/obj/structure/morgue/Destroy() +/obj/structure/bodycontainer/Destroy() open() if(connected) qdel(connected) connected = null ..() -/obj/structure/morgue/on_log() +/obj/structure/bodycontainer/on_log() update_icon() -/obj/structure/morgue/update_icon() +/obj/structure/bodycontainer/update_icon() + return + +/obj/structure/bodycontainer/alter_health() + return src.loc + +/obj/structure/bodycontainer/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/obj/structure/bodycontainer/attack_hand(mob/user as mob) + if(locked) + user << "It's locked." + return + if(!connected) + user << "That doesn't appear to have a tray." + return + if(connected.loc == src) + open() + else + close() + add_fingerprint(user) + +/obj/structure/bodycontainer/attackby(P as obj, mob/user as mob) + if (istype(P, /obj/item/weapon/pen)) + var/t = input(user, "What would you like the label to be?", text("[]", name), null) as text + if (user.get_active_hand() != P) + return + if ((!in_range(src, usr) && src.loc != user)) + return + t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + if (t) + name = text("[]- '[]'", initial(name), t) + else + name = initial(name) + add_fingerprint(user) + +/obj/structure/bodycontainer/container_resist() + open() + +/obj/structure/bodycontainer/proc/open() + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + var/turf/T = get_step(src, opendir) + for(var/atom/movable/A in src) + A.loc = T + update_icon() + +/obj/structure/bodycontainer/proc/close() + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + for(var/atom/movable/A in connected.loc) + if(!A.anchored || A == connected) + A.loc = src + update_icon() + +/* + * Morgue + */ +/obj/structure/bodycontainer/morgue + name = "morgue" + desc = "Used to keep bodies in until someone fetches them." + icon_state = "morgue1" + opendir = EAST + +/obj/structure/bodycontainer/morgue/New() + connected = new/obj/structure/tray/m_tray(src) + connected.connected = src + ..() + +/obj/structure/bodycontainer/morgue/update_icon() if (!connected || connected.loc != src) //open or the tray broke off somehow src.icon_state = "morgue0" else @@ -55,128 +123,29 @@ src.icon_state = "morgue4"//clone that mofo break -/obj/structure/morgue/alter_health() - return src.loc - -/obj/structure/morgue/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/morgue/attack_hand(mob/user as mob) - if(!connected) - user << "That doesn't appear to have a tray." - return - if(connected.loc == src) - open() - else - close() - add_fingerprint(user) - -/obj/structure/morgue/attackby(P as obj, mob/user as mob) - if (istype(P, /obj/item/weapon/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text - if (user.get_active_hand() != P) - return - if ((!in_range(src, usr) && src.loc != user)) - return - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) - if (t) - src.name = text("Morgue- '[]'", t) - else - src.name = "Morgue" - add_fingerprint(user) - -/obj/structure/morgue/container_resist() - open() - -/obj/structure/morgue/proc/open() - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - var/turf/T = get_step(src, EAST) - for(var/atom/movable/A in src) - A.loc = T - update_icon() - -/obj/structure/morgue/proc/close() - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - for(var/atom/movable/A in connected.loc) - if(!A.anchored || A == connected) - A.loc = src - update_icon() - - -/* - * Morgue tray - */ -/obj/structure/m_tray - name = "morgue tray" - desc = "Apply corpse before closing." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "morguet" - density = 1 - layer = 2.0 - var/obj/structure/morgue/connected = null - anchored = 1.0 - throwpass = 1 - -/obj/structure/m_tray/Destroy() - if(connected) - connected.connected = null - connected.update_icon() - connected = null - ..() - -/obj/structure/m_tray/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/m_tray/attack_hand(mob/user as mob) - if (src.connected) - connected.close() - add_fingerprint(user) - else - user << "That's not connected to anything." - -/obj/structure/m_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) - if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O))) - return - if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag)) - return - if (!ismob(user) || user.stat || user.lying || user.stunned) - return - O.loc = src.loc - if (user != O) - for(var/mob/B in viewers(user, 3)) - B.show_message("[user] stuffs [O] into [src]!", 1) - return - - /* * Crematorium */ - -/obj/structure/crematorium +var/global/list/crematoriums = new/list() +/obj/structure/bodycontainer/crematorium name = "crematorium" desc = "A human incinerator. Works well on barbeque nights." - icon = 'icons/obj/stationobjs.dmi' icon_state = "crema1" - density = 1 - var/obj/structure/c_tray/connected = null - anchored = 1.0 - var/cremating = 0 + opendir = SOUTH var/id = 1 - var/locked = 0 -/obj/structure/crematorium/New() - connected = new(src) +/obj/structure/bodycontainer/crematorium/Destroy() + crematoriums.Remove(src) + ..() + +/obj/structure/bodycontainer/crematorium/New() + connected = new/obj/structure/tray/c_tray(src) connected.connected = src + + crematoriums.Add(src) ..() -/obj/structure/crematorium/Destroy() - open() - if(connected) - qdel(connected) - connected = null - ..() - -/obj/structure/crematorium/update_icon() +/obj/structure/bodycontainer/crematorium/update_icon() if(!connected || connected.loc != src) icon_state = "crema0" else @@ -186,51 +155,13 @@ else src.icon_state = "crema1" - if(cremating) + if(locked) src.icon_state = "crema_active" return - -/obj/structure/crematorium/alter_health() - return src.loc - -/obj/structure/crematorium/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/crematorium/attack_hand(mob/user as mob) - if (cremating || locked) - user << "It's locked." - return - if (!connected) - user << "That doesn't appear to have a tray." - return - if(connected.loc == src) - open() - else - close() - add_fingerprint(user) - -/obj/structure/crematorium/attackby(P as obj, mob/user as mob) - if (istype(P, /obj/item/weapon/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text - if (user.get_active_hand() != P) - return - if ((!in_range(src, usr) > 1 && src.loc != user)) - return - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) - if (t) - src.name = text("Crematorium- '[]'", t) - else - src.name = "Crematorium" - src.add_fingerprint(user) - return - -/obj/structure/crematorium/container_resist() - open() - -/obj/structure/crematorium/proc/cremate(mob/user as mob) - if(cremating) +/obj/structure/bodycontainer/crematorium/proc/cremate(mob/user as mob) + if(locked) return //don't let you cremate something twice or w/e if(contents.len <= 1) @@ -240,7 +171,6 @@ else audible_message("You hear a roar as the crematorium activates.") - cremating = 1 locked = 1 update_icon() @@ -261,57 +191,62 @@ new /obj/effect/decal/cleanable/ash(src) sleep(30) - cremating = 0 locked = 0 update_icon() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - -/obj/structure/crematorium/proc/open() - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - var/turf/T = get_step(src, SOUTH) - for(var/atom/movable/A in src) - A.loc = T - update_icon() - -/obj/structure/crematorium/proc/close() - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - for(var/atom/movable/A in connected.loc) - if(!A.anchored || A == connected) - A.loc = src - update_icon() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) //you horrible people /* - * Crematorium tray +Crematorium Switch +*/ +/obj/machinery/crema_switch/attack_hand(mob/user as mob) + if(src.allowed(usr)) + for (var/obj/structure/bodycontainer/crematorium/C in crematoriums) + if (C.id != id) + continue + + C.cremate(user) + else + usr << "Access denied." + return + +/obj/machinery/crema_switch/attackby(obj/item/W as obj, mob/user as mob) + if(W.GetID()) + attack_hand(user) + else + return ..() + + +/* + * Generic Tray + * Parent class for morguetray and crematoriumtray + * For overriding only */ -/obj/structure/c_tray - name = "crematorium tray" - desc = "Apply body before burning." +/obj/structure/tray icon = 'icons/obj/stationobjs.dmi' - icon_state = "cremat" density = 1 - layer = 2.0 - var/obj/structure/crematorium/connected = null + layer = 2.9 + var/obj/structure/bodycontainer/connected = null anchored = 1.0 throwpass = 1 -/obj/structure/c_tray/Destroy() +/obj/structure/tray/Destroy() if(connected) connected.connected = null connected.update_icon() connected = null ..() -/obj/structure/c_tray/attack_paw(mob/user as mob) +/obj/structure/tray/attack_paw(mob/user as mob) return src.attack_hand(user) -/obj/structure/c_tray/attack_hand(mob/user as mob) +/obj/structure/tray/attack_hand(mob/user as mob) if (src.connected) connected.close() add_fingerprint(user) else user << "That's not connected to anything." -/obj/structure/c_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) +/obj/structure/tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O))) return if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag)) @@ -325,13 +260,19 @@ //Foreach goto(99) return -/obj/machinery/crema_switch/attack_hand(mob/user as mob) - if(src.allowed(usr)) - for (var/obj/structure/crematorium/C in world) - if (C.id == id) - if (!C.cremating) - C.cremate(user) - else - usr << "Access denied." - return +/* + * Crematorium tray + */ +/obj/structure/tray/c_tray + name = "crematorium tray" + desc = "Apply body before burning." + icon_state = "cremat" + +/* + * Morgue tray + */ +/obj/structure/tray/m_tray + name = "morgue tray" + desc = "Apply corpse before closing." + icon_state = "morguet"