From 0ab7e25f3d06b2dbcd5eeb9599746d09f8c8c028 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Aug 2015 01:57:12 -0400 Subject: [PATCH 01/12] Fixes toxins mass driver chamber not being enterable after use Currently there's no way for scientists to safely enter the mass driver chamber after it's been used once. This fixes that with a small adjustment to the air pipe layout. --- maps/exodus-1.dmm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 26c8a80c44..26f37f5585 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -4894,7 +4894,7 @@ "bQf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/mixing) "bQg" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/miningdock) "bQh" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/rnd/mixing) -"bQi" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins Test Area"); pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/rnd/mixing) +"bQi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/rnd/mixing) "bQj" = (/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/obj/structure/table/steel,/turf/simulated/floor/plating,/area/storage/tech) "bQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) "bQl" = (/turf/simulated/floor/airless{dir = 9; icon_state = "warning"},/area/rnd/test_area) @@ -4972,7 +4972,7 @@ "bRF" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/rnd/mixing) "bRG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bRH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/rnd/mixing) -"bRI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/rnd/mixing) +"bRI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "warning"},/area/rnd/mixing) "bRJ" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/rnd/mixing) "bRK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) "bRL" = (/turf/simulated/floor/airless{dir = 8; icon_state = "warning"},/area/rnd/test_area) @@ -5014,7 +5014,7 @@ "bSv" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bSw" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bSx" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) -"bSy" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins Test Area"); pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/rnd/mixing) +"bSy" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins Test Area"); pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/rnd/mixing) "bSz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bSA" = (/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay Lobby)"; pixel_x = 0; pixel_y = -30},/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bSB" = (/obj/machinery/light,/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) @@ -5040,7 +5040,7 @@ "bSV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Heater to Waste"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/rnd/mixing) "bSW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bSX" = (/obj/machinery/disposal,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/rnd/mixing) -"bSY" = (/turf/simulated/floor{icon_state = "warning"},/area/rnd/mixing) +"bSY" = (/obj/machinery/door/window/southright{name = "Toxins Launcher"; req_access = list(8)},/obj/machinery/door/window/southright{dir = 1; name = "Toxins Launcher"; req_access = list(8)},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/rnd/mixing) "bSZ" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/medical/sleeper) "bTa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) "bTb" = (/turf/simulated/floor/airless{dir = 4; icon_state = "warning"},/area/rnd/test_area) @@ -5231,7 +5231,7 @@ "bWE" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bWF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/patient_wing) "bWG" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "whitered_a"; tag = "icon-whitered_a (WEST)"},/area/medical/patient_wing) -"bWH" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/bed/chair/comfy/brown,/turf/simulated/floor/carpet,/area/engineering/break_room) +"bWH" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/airlock_sensor{pixel_y = -25},/turf/simulated/floor/plating/airless,/area/rnd/mixing) "bWI" = (/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/wirecutters,/obj/structure/table/steel,/turf/simulated/floor/plating,/area/storage/tech) "bWJ" = (/turf/simulated/floor/carpet,/area/engineering/break_room) "bWK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitered_b"; tag = "icon-whitered_b (WEST)"},/area/medical/patient_wing) @@ -5270,7 +5270,7 @@ "bXr" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_5_berth"; pixel_x = -25; pixel_y = 25; tag_door = "escape_pod_5_berth_hatch"},/turf/simulated/floor/plating,/area/maintenance/cargo) "bXs" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/cargo) "bXt" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bXu" = (/obj/machinery/door/window/southright{name = "Toxins Launcher"; req_access = list(8)},/obj/machinery/door/window/southright{dir = 1; name = "Toxins Launcher"; req_access = list(8)},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) +"bXu" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/bed/chair/comfy/brown,/turf/simulated/floor/carpet,/area/engineering/break_room) "bXv" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/cargo) "bXw" = (/obj/machinery/atm{pixel_y = 28},/turf/simulated/floor{dir = 4; icon_state = "yellowpatch"},/area/engineering/foyer) "bXx" = (/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/table/steel,/turf/simulated/floor/plating,/area/storage/tech) @@ -7530,12 +7530,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbNAbLXbNBbLVbLZbMabMbbGtbMcbMdbMebMfbMgbNLbNKbMjbMjbMkbtCbtCbtCbNQbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbMmbMnbMobtCbtCbtCbtCbtCbNZbtCbtCbtCaJlaJlbObaJlaKSaMpbMraJlbKZbOcbOdbGFbLdbxCbDzbLDbxCbOfbMzbMAbMBbwkbOibMDbMEbOkbMGbOlbOnbMJbMKbMLbItbJObFDbFDbOtbJObCpbMNbMObMObMObMObMObMObMObMObMObMObOxbMQbMRbMRbzAbOCbODbMUbwwbMVbMVbMVbMWbOEbMYbMVbMVbMVbMVbMVbMVbNabNbaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymbOFbLRbLRbNebKtbKtbLTbLTbOGbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbNgbMsbNgbKxbNibNjbOHbNlbNmbNnbKAbNobNpbGvbOIbNrbOJbOKbGvbNubNvbNwbNxaaaaaaaaaaaabNybOLbONbOMbNDbNCbNEbNFbNGbNHbNIbNFbNJbOQbORbNMbNNbNObNPbOTbNRbNSbNTbNUbNUbNUbNUbDtbDtbDtbDtbMtbMtbxCbOUbOabPebMzbMvbMubOebPubOgbOhbPvbOjbPCbPAbOmbPDbMKbOobFDbFDbNVbJObJObOobCpbMNbMObOqbOrbOsbPEbOubOvbOwbPFbMObOybOzbOAbOAbzAbOBbPGbCvbzIbPHbPKbPJbPMbPLbPVbPSbPXbPWbPYbVFbMVbPZbEnbOObOObOObOObOOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabOPbKtbOFbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbNgbNgbNgbQcbQbbKAbOSbQebQdbKAbQgbOVbOWbGvbGvbGvbGvbGvbGvbOXbOYbOZbPaaaabPbbPcbPcbPdbQjbPfbPgbPhbPfbPibNFbPjbPkbPlbNFbPmbNXbPobPpbPqbPrbPsbPtbPtbNSbQubQpbPwbPxbPybDtbNYbLbbQBbGFbGFbQDbDzbQLbxCbQMbQXbQPbRbbwkbRcbPIbwkbRdbRibRebRpbPNbMKbCpbCpbCpbCpbCpbCpbCpbCpbPObMObPPbQYbPRbOsbOsbOsbOsbRvbMObPTbLEbPUbPUbzAbBhbSLbCvbRxbQabQabRybRAbRzbRDbRBbRJbRFbRJbRMbMVbQfbRObOObQhbRWbOpbQkaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbQlbQmbQmbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbMsbMsbMsbKxbQnbQobScbQqbQrbKAbKAbQsbQtbSgbQvbQvbQvbQvbQvbQvbQwbQxbQyaaabQzbQAbSibQCbSlbPfbQEbQGbQFbPfbNFbQIbQJbQKbNFbSrbSnbQNbQObSubQQbQRbPtbQSbPxbQTbNUbPxbPxbQUbDtbPnbGFbQVbSwbGFbPzbDzbLebRCbQZbPBbSEbSMbRGbDEbIkbSpbRdbRebRebRpbRfbMKbRgbRhbSNbRjbRkbRlbSObRnbPObMObOsbOsbRobOsbOsbOsbOsbSPbMObRqbLEbRrbRrbzAbRsbRtbRubSQbRwbSSbSRbSWbSVbTsbTgbTAbTubTNbTMbTObREbTWbTTbRHbRIbQibRKaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaabLVbUbbRNbUkbLVbRPbMabMbbGtbGtbRQbRQbRQbGtbGtbNxbRRbRRbRSbRSbRSbRSbNwbQyaaabRTbRUbRVbUobRXbRYbRZbSabSbbSbbUqbSdbSebUwbNFbPtbPtbPtbPtbPtbUAbPtbPtbShbUGbSjbNUbPxbSkbUObDtbQHbLbbQVbSmbUPbPzbSobJAbJBbSqbRabSsbStbJzbFsbSvbIEbSxbUWbURbSAbSBbMKbRmbSDbVebRjbSfbSGbVjbRnbPObMObMObMObRobOsbOsbOsbMObMObMObSIbSJbRrbRrbzAbSKbSLbCvbzIbVkbVvbVmbRDbVybVGbVzbVVbVObWibWgbMVbQfbWkbOObSXbSYbSybTaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbTcbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTdbKwbTebKwbTfbWoaafaaaaaabGtbThbTibTjbGtaaabNxbTkbTlbTmbTnbTnbTnbTobQyaaabQzbTpbTqbTrbWIbPfbTtbTvbWMbTwbNFbSzbTybTzbWVbTBbTBbTBbTCbTCbTDbTEbULbPxbPxbTFbNUbNUbNUbNUbDtbDtbLfbLkbLcbDtbTJbTKbTLbJFbJEbTJbPebLlbLmbTRbTSbTJbMKbMKbMKbMKbMKbMKbXabTUbTVbRjbXcbTXbTYbRnbPObMObTZbQWbPQbXfbXebNWbNcbTZbUgbUhbUibIIbIJbzAbIKbSLbUjbwwbMVbMVbXibXnbMVbMVbMVbMVbXpbSCbVFbMVbXqbUnbOObUpbXubUrbOOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbUsbUsbUsbUsbUsbUsbUtbLTbUubUsbTcbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUvbNxbNxbNxbNxbRSbXvbNwbUxaaabUybPcbPcbUzbXxbPfbPfbUBbPfbSFbNFbUDbSHbSTbNFbSUbSUbSUbSUbSUbSUbSUbSUbUHbUIbUJbUKbUKbUMbNUbDtbUNbSZbTxbUQbYabwabUTbUUbYtbYobYwbUTbUYbUZbVabVbbUebTPbVdbYybVgbVhbVibUlbYzbUmbRjbUCbYHbUCbRnbPObMObVnbUFbVpbVqbVrbVsbVtbVubUgbzAbYMbzAbzAbVwbCxbSLbCxbVxaafbnxbYSbYYblSbVBbYZbZcbZbbZebUVbMVbVHbVIbOObVJbVKbVKbwhaaLaaLaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibLRbLRbLRbLRbLRbLRbLRbVNbLUbLTbLTbLTbLTbZibLUbKuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbMsbMsbMsbKxbQnbQobScbQqbQrbKAbKAbQsbQtbSgbQvbQvbQvbQvbQvbQvbQwbQxbQyaaabQzbQAbSibQCbSlbPfbQEbQGbQFbPfbNFbQIbQJbQKbNFbSrbSnbQNbQObSubQQbQRbPtbQSbPxbQTbNUbPxbPxbQUbDtbPnbGFbQVbSwbGFbPzbDzbLebRCbQZbPBbSEbSMbRGbDEbIkbSpbRdbRebRebRpbRfbMKbRgbRhbSNbRjbRkbRlbSObRnbPObMObOsbOsbRobOsbOsbOsbOsbSPbMObRqbLEbRrbRrbzAbRsbRtbRubSQbRwbSSbSRbSWbSVbTsbTgbTAbTubTNbTMbTObREbTWbTTbRHbQibOpbRKaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaabLVbUbbRNbUkbLVbRPbMabMbbGtbGtbRQbRQbRQbGtbGtbNxbRRbRRbRSbRSbRSbRSbNwbQyaaabRTbRUbRVbUobRXbRYbRZbSabSbbSbbUqbSdbSebUwbNFbPtbPtbPtbPtbPtbUAbPtbPtbShbUGbSjbNUbPxbSkbUObDtbQHbLbbQVbSmbUPbPzbSobJAbJBbSqbRabSsbStbJzbFsbSvbIEbSxbUWbURbSAbSBbMKbRmbSDbVebRjbSfbSGbVjbRnbPObMObMObMObRobOsbOsbOsbMObMObMObSIbSJbRrbRrbzAbSKbSLbCvbzIbVkbVvbVmbRDbVybVGbVzbVVbVObWibWgbMVbQfbWkbOObSXbRIbSybTaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbTcbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTdbKwbTebKwbTfbWoaafaaaaaabGtbThbTibTjbGtaaabNxbTkbTlbTmbTnbTnbTnbTobQyaaabQzbTpbTqbTrbWIbPfbTtbTvbWMbTwbNFbSzbTybTzbWVbTBbTBbTBbTCbTCbTDbTEbULbPxbPxbTFbNUbNUbNUbNUbDtbDtbLfbLkbLcbDtbTJbTKbTLbJFbJEbTJbPebLlbLmbTRbTSbTJbMKbMKbMKbMKbMKbMKbXabTUbTVbRjbXcbTXbTYbRnbPObMObTZbQWbPQbXfbXebNWbNcbTZbUgbUhbUibIIbIJbzAbIKbSLbUjbwwbMVbMVbXibXnbMVbMVbMVbMVbXpbSCbVFbMVbXqbUnbOObUpbSYbUrbOOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbUsbUsbUsbUsbUsbUsbUtbLTbUubUsbTcbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUvbNxbNxbNxbNxbRSbXvbNwbUxaaabUybPcbPcbUzbXxbPfbPfbUBbPfbSFbNFbUDbSHbSTbNFbSUbSUbSUbSUbSUbSUbSUbSUbUHbUIbUJbUKbUKbUMbNUbDtbUNbSZbTxbUQbYabwabUTbUUbYtbYobYwbUTbUYbUZbVabVbbUebTPbVdbYybVgbVhbVibUlbYzbUmbRjbUCbYHbUCbRnbPObMObVnbUFbVpbVqbVrbVsbVtbVubUgbzAbYMbzAbzAbVwbCxbSLbCxbVxaafbnxbYSbYYblSbVBbYZbZcbZbbZebUVbMVbVHbVIbOObVJbWHbVKbwhaaLaaLaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibLRbLRbLRbLRbLRbLRbLRbVNbLUbLTbLTbLTbLTbZibLUbKuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVPbVQbVQbVRbVSbNxbVTbRSbVUbNxaaaaaaaaaaaabNybZrbVWbVXbVZbVYbPfbNFbWabWbbNIbNFbSUbUXbVfbVcbVDbVCbVEbSUcaqcaqcaqcaqcaqbTFbWjbZsbWlbWcbWdbZubWpbxgbWrbWsbWtbWubWtbWvbWtbWwbWxbWybWzbWAbWBbWAbWCbWDbWEbWFbWGbWebZvbWfbWKbWLbZzbxVbMObxWbZBbzlbWSbWTbWhbWSbWSbZCbWWbWXbWYbWZbCxbCxbSLbCxbFTaafbnxbZLbZLbXbbZObXdbZSbZPbXgbXhbMVbVHbZUbOObOObOObOObOOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbQmbQmbQmbQmbQmbQmbXkbLTbQlbQmbXlbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXmbZVbWmcaabRScanbXrbRSbXsbNxaaKaaaaaaaaabNybNybNybNybNybNybNybNFbUDbUEbXtbNFbSUbWnbWJbWHbWHbWJbWRbSUcaobWUbWUbXocaqbXBbDtbDtbXCbXDbXEbXFbXGblRbXIbXJbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbznbzpbzobAPbzqbARbAQbATbAScaxbAUbYfbYgbIwbYhbVobCqbWObWNbWPbYmbYncaJbYpbYqbYrbYscaLbYrbYubYvbILaafbnxcaMcaWbrBbVBcaXcbecbdcbfbYAbMVbVHbYBbYCbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbXlbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXmbZVbWmcaabRScanbXrbRSbXsbNxaaKaaaaaaaaabNybNybNybNybNybNybNybNFbUDbUEbXtbNFbSUbWnbWJbXubXubWJbWRbSUcaobWUbWUbXocaqbXBbDtbDtbXCbXDbXEbXFbXGblRbXIbXJbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbznbzpbzobAPbzqbARbAQbATbAScaxbAUbYfbYgbIwbYhbVobCqbWObWNbWPbYmbYncaJbYpbYqbYrbYscaLbYrbYubYvbILaafbnxcaMcaWbrBbVBcaXcbecbdcbfbYAbMVbVHbYBbYCbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbXlbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYDbVQbVQbVRbYEbYFbYGbNxcbgbNxbYIbYJbYKbYIbYIbYLcbibYNbYObYPcbjbXwbXzbXybYebXAbYjbWJbYQbYxbYRcbkbYTcbmbYVbYUbYXbYWcaqbZhbNScbnbZjbZkbZlbZlbZmbnEbZobZpbTJbTJbZqcbrbTJbTJcbycbtcbAcaIcbBbWQbZxbZycbCbZybZAbZacbDbZabZAcbJbYfbMNbIwbZEbXWbXVbZdcbKbZJbZKbMObMObwwbwwbwwbwwbwwboIbnFbofbwwbMVbMVbMVbMVbMVbMVbMVbMVbMVbMVbMVbMVcbLbZQbZRbUnaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamcbOaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaabZfbZgbZgbZgbZHbZgbZgbZTbZIbYIbZYbZZbYIcbQcabcbWcadbZWcafcccbZXcaecaccahcagcaibWJbYQcajcakcbkcalbSUcaqcaqcaqcaqcaqcarbNSbDtcascatccecamcawccncaycazbTJccrcaBcaCcaDcaEcaFcaGcaHcaIbZxbWQcapbZycaKcctbZAccucaNcaObZAbXXbYfbPObIwbXYccvbXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwccEbwwbwwccGcaYcaucaAcavccJcaZcbacbcccQccMccYccScbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbUubUsbUsbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcbbcdmcdjcblcdpcdBcdtcbpcbobYIcdGcbsbYIbYIcdNcbucbvcbwcbxcdTcbqbXzbXybYecbzcdUbWJbWJcdYcdZbWJcebbSUcbFcbGcaqcbHcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJceccbEbTJcedcbMcbNcefcaEcbPceicelcaIbZxbWQcbRbZycbScbTbZAcbUcbVceobZAccqbYfbYbbYdbYcbYiccsccAbYccepbYkbYlcktbZDbZwbZFcktcerbZGccCccBceuccDccPccFcexcevceHceCcevceIceZceKcfeccwccxccycczbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbOFbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From a43f77b070f6b093d8598da4ee406b71b158b75d Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 12 Aug 2015 15:25:01 -0400 Subject: [PATCH 02/12] Gives hydro soil recipe a better name Gives the hydro soil recipe a name that better conveys it's purpose. --- code/modules/materials/material_recipes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index 67e60fc4c4..84fb8ddc76 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -86,7 +86,7 @@ /material/sandstone/generate_recipes() ..() - recipes += new/datum/stack_recipe("pile of dirt", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1) + recipes += new/datum/stack_recipe("planting bed", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1) /material/plastic/generate_recipes() ..() From 3e6889927ede0928062d4b8a506108feaf36cd0d Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 12 Aug 2015 15:26:57 -0400 Subject: [PATCH 03/12] Fixes #10500 --- code/modules/materials/materials.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index dd839dbbb2..46ce8ea445 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -361,7 +361,7 @@ var/list/name_to_material weight = 15 door_icon_base = "stone" destruction_desc = "shatters" - window_options = list("One Direction", "Full Window") + window_options = list("One Direction" = 1, "Full Window" = 4) created_window = /obj/structure/window/basic wire_product = /obj/item/stack/light_w rod_product = /obj/item/stack/material/glass/reinforced @@ -419,9 +419,8 @@ var/list/name_to_material return 1 var/build_path = /obj/structure/windoor_assembly - var/sheets_needed = 4 + var/sheets_needed = window_options[choice] if(choice == "Windoor") - sheets_needed = 5 build_dir = user.dir else build_path = created_window @@ -452,7 +451,7 @@ var/list/name_to_material weight = 30 stack_origin_tech = "materials=2" composite_material = list(DEFAULT_WALL_MATERIAL = 1875,"glass" = 3750) - window_options = list("One Direction", "Full Window", "Windoor") + window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 5) created_window = /obj/structure/window/reinforced wire_product = null rod_product = null From 19fbc712498f1a51a7f74d28237d818c92f89e36 Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 12 Aug 2015 15:54:16 -0400 Subject: [PATCH 04/12] Removes req_amount from stack_recipe_list The stack_recipe_list datum itself is not used to make anything, so having a req_amount made little sense. Fixes #10572. --- code/game/objects/items/stacks/stack.dm | 9 ++------- code/modules/materials/material_recipes.dm | 8 ++++---- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 8d24c875db..72226c542e 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -68,10 +68,7 @@ if (istype(E, /datum/stack_recipe_list)) var/datum/stack_recipe_list/srl = E - if (src.get_amount() >= srl.req_amount) - t1 += "[srl.title] ([srl.req_amount] [src.singular_name]\s)" - else - t1 += "[srl.title] ([srl.req_amount] [src.singular_name]\s)
" + t1 += "[srl.title]" if (istype(E, /datum/stack_recipe)) var/datum/stack_recipe/R = E @@ -360,8 +357,6 @@ /datum/stack_recipe_list var/title = "ERROR" var/list/recipes = null - var/req_amount = 1 - New(title, recipes, req_amount = 1) + New(title, recipes) src.title = title src.recipes = recipes - src.req_amount = req_amount diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index 84fb8ddc76..a5a0608f06 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -28,7 +28,7 @@ recipes += new/datum/stack_recipe_list("office chairs",list( \ new/datum/stack_recipe("dark office chair", /obj/structure/bed/chair/office/dark, 5, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("light office chair", /obj/structure/bed/chair/office/light, 5, one_per_turf = 1, on_floor = 1) \ - ), 5) + )) recipes += new/datum/stack_recipe_list("comfy chairs", list( \ new/datum/stack_recipe("beige comfy chair", /obj/structure/bed/chair/comfy/beige, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("black comfy chair", /obj/structure/bed/chair/comfy/black, 2, one_per_turf = 1, on_floor = 1), \ @@ -39,7 +39,7 @@ new/datum/stack_recipe("blue comfy chair", /obj/structure/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("purple comfy chair", /obj/structure/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("green comfy chair", /obj/structure/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1), \ - ), 2) + )) recipes += new/datum/stack_recipe("table frame", /obj/structure/table, 1, time = 10, one_per_turf = 1, on_floor = 1) recipes += new/datum/stack_recipe("rack", /obj/structure/table/rack, 1, time = 5, one_per_turf = 1, on_floor = 1) @@ -69,7 +69,7 @@ new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("emergency shutter", /obj/structure/firedoor_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("multi-tile airlock assembly", /obj/structure/door_assembly/multi_tile, 4, time = 50, one_per_turf = 1, on_floor = 1), \ - ), 4) + )) recipes += new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade) recipes += new/datum/stack_recipe("light fixture frame", /obj/item/frame/light, 2) @@ -122,4 +122,4 @@ new/datum/stack_recipe("red folder", /obj/item/weapon/folder/red), \ new/datum/stack_recipe("white folder", /obj/item/weapon/folder/white), \ new/datum/stack_recipe("yellow folder", /obj/item/weapon/folder/yellow), \ - ), 3) \ No newline at end of file + )) From 7a86d6e658ed4f060e7f49a57c5e3a699a579c8d Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 12 Aug 2015 16:06:31 -0400 Subject: [PATCH 05/12] Fixes #10571 Adds another snowflake electronic item to the can_hold list. --- code/modules/mob/living/silicon/robot/drone/drone_items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 84611ecb95..0ec65be420 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -14,6 +14,7 @@ /obj/item/weapon/firealarm_electronics, /obj/item/weapon/airalarm_electronics, /obj/item/weapon/airlock_electronics, + /obj/item/weapon/tracker_electronics, /obj/item/weapon/module/power_control, /obj/item/weapon/stock_parts, /obj/item/frame, From 74f9e6ce63786ba7cb296612cb5d43bc21400677 Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 12 Aug 2015 16:18:50 -0400 Subject: [PATCH 06/12] Fixes #10552 --- code/modules/mob/living/simple_animal/friendly/cat.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 3197c6023c..daf7b3768e 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -59,8 +59,13 @@ var/mob/dead/observer/spook = locate() in range(src,5) if(spook) var/turf/T = spook.loc - var/obj/O = pick(T.contents) - visible_emote("suddenly stops and stares at something unseen[istype(O) ? " near [O]":""].") + var/list/visible = list() + for(var/obj/O in T.contents) + if(!O.invisibility && O.name) + visible += O + if(visible.len) + var/atom/A = pick(visible) + visible_emote("suddenly stops and stares at something unseen[istype(A) ? " near [A]":""].") /mob/living/simple_animal/cat/proc/handle_movement_target() //if our target is neither inside a turf or inside a human(???), stop From f41387a57f3828de1a7f87a514e725b2489f1e2d Mon Sep 17 00:00:00 2001 From: Atlantis Date: Thu, 13 Aug 2015 00:07:32 +0200 Subject: [PATCH 07/12] Communications emergency-fix - Comments out buggy code that caused some telecommunication machines to introduce insane delay (up to 30s) --- code/game/machinery/telecomms/telecomunications.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 99c1847961..d1ac6df4c5 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -47,11 +47,13 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() signal.data["slow"] += rand(0, round((100-integrity))) // apply some lag based on integrity + /* + // Edit by Atlantis: Commented out as emergency fix due to causing extreme delays in communications. // Apply some lag based on traffic rates var/netlag = round(traffic / 50) if(netlag > signal.data["slow"]) signal.data["slow"] = netlag - + */ // Loop through all linked machines and send the signal or copy. for(var/obj/machinery/telecomms/machine in links) if(filter && !istype( machine, text2path(filter) )) From 83b26cf43a17da8ef136ecff1babdbcee2e93305 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Thu, 13 Aug 2015 01:45:41 +0100 Subject: [PATCH 08/12] Revert "Debug code to try to figure out the cause of the player-panel etc breaking" This reverts commit 9dacc146cd96b6361002a4c48a01621900e32e30. --- code/__HELPERS/lists.dm | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 25267f4f6e..ed0f0c9780 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -211,23 +211,14 @@ proc/listclearnulls(list/list) return (result + R.Copy(Ri, 0)) //Mergesort: divides up the list into halves to begin the sort -/proc/sortAtom(var/list/atom/L, var/order = 1, first = 1) +/proc/sortAtom(var/list/atom/L, var/order = 1) if(isnull(L) || L.len < 2) - if(!L) - testing("sortAtom() called with null as first parameter!") return L - if(first) - var/msg = "sortAtom() called with list([L.len]): " - for(var/x in L) - msg += "'[x]'; " - testing(msg) var/middle = L.len / 2 + 1 - return mergeAtoms(sortAtom(L.Copy(0,middle), order, 0), sortAtom(L.Copy(middle), order, 0), order) + return mergeAtoms(sortAtom(L.Copy(0,middle)), sortAtom(L.Copy(middle)), order) //Mergsort: does the actual sorting and returns the results back to sortAtom /proc/mergeAtoms(var/list/atom/L, var/list/atom/R, var/order = 1) - if(!L || !R) - testing("mergeAtoms([L] ([L ? L.len : "*null*"]), [R] ([R ? R.len : "*null*"]))") var/Li=1 var/Ri=1 var/list/result = new() @@ -240,14 +231,8 @@ proc/listclearnulls(list/list) result += R[Ri++] if(Li <= L.len) - . = (result + L.Copy(Li, 0)) - if(!.) - testing("mergeAtoms returning [.]") - return - . = (result + R.Copy(Ri, 0)) - if(!.) - testing("mergeAtoms returning [.]") - return + return (result + L.Copy(Li, 0)) + return (result + R.Copy(Ri, 0)) From 8d57f25fd58b376805071d3ae4ed1da7fa0f2a4c Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Thu, 13 Aug 2015 01:51:40 +0100 Subject: [PATCH 09/12] Add a runtime-generating call to the "object was deleted via del() rather than qdel()" log, so we can get a stack trace from it --- code/game/atoms_movable.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index c4d2abbea5..c881ea648c 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -21,9 +21,14 @@ if(auto_init && ticker && ticker.current_state == GAME_STATE_PLAYING) initialize() +/proc/generate_debug_runtime() // Guaranteed to runtime and print a stack trace to the runtime log + var/t = 0 // BYOND won't let us do var/t = 1/0 directly, but it's fine with this. + t = 1 / t + /atom/movable/Del() if(isnull(gcDestroyed) && loc) testing("GC: -- [type] was deleted via del() rather than qdel() --") + generate_debug_runtime() // stick a stack trace in the runtime logs // else if(isnull(gcDestroyed)) // testing("GC: [type] was deleted via GC without qdel()") //Not really a huge issue but from now on, please qdel() // else From 62ad3a7be408b2216d41157cb16d01e6c58fc607 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Aug 2015 22:24:14 -0400 Subject: [PATCH 10/12] Fixes #10593 Adds a embedded_needs_process() proc to determine if the mob has embedded objects that still need to be processed. The get_visible_implants() remains to determine which implants can be seen on examine and yanked out. --- code/modules/mob/living/carbon/human/human.dm | 6 ++++++ code/modules/mob/living/carbon/human/life.dm | 4 +--- code/modules/mob/mob.dm | 3 +++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e6b0744538..9421123ae5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1030,6 +1030,12 @@ return(visible_implants) +/mob/living/carbon/human/embedded_needs_process() + for(var/obj/item/organ/external/organ in src.organs) + if(organ.implants.len) + return 1 + return 0 + /mob/living/carbon/human/proc/handle_embedded_objects() for(var/obj/item/organ/external/organ in src.organs) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 18312abf92..d3268bfc39 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1018,9 +1018,7 @@ //Periodically double-check embedded_flag if(embedded_flag && !(life_tick % 10)) - var/list/E - E = get_visible_implants(0) - if(!E.len) + if(!embedded_needs_process()) embedded_flag = 0 //Eyes diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 0010f189e6..f93b139430 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -856,6 +856,9 @@ visible_implants += O return visible_implants +/mob/proc/embedded_needs_process() + return (embedded.len > 0) + mob/proc/yank_out_object() set category = "Object" set name = "Yank out object" From 99e1d88285ef7337c64ca4ab1b57491e9edd5100 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Aug 2015 22:41:30 -0400 Subject: [PATCH 11/12] Fixes #10592 Fixes the right hand being affected if the left arm was broken. --- .../mob/living/carbon/human/human_organs.dm | 35 ++++++++++--------- code/modules/organs/organ_external.dm | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index f2c64fa52a..8598ce04b3 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -134,28 +134,29 @@ continue if(E.is_broken() || E.is_dislocated()) - if(E.body_part == HAND_LEFT) - if(!l_hand) - continue - drop_from_inventory(l_hand) - else - if(!r_hand) - continue - drop_from_inventory(r_hand) + switch(E.body_part) + if(HAND_LEFT, ARM_LEFT) + if(!l_hand) + continue + drop_from_inventory(l_hand) + if(HAND_RIGHT, ARM_RIGHT) + if(!r_hand) + continue + drop_from_inventory(r_hand) var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") emote("me", 1, "[(species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [E.name]!") else if(E.is_malfunctioning()) - - if(E.body_part == HAND_LEFT) - if(!l_hand) - continue - drop_from_inventory(l_hand) - else - if(!r_hand) - continue - drop_from_inventory(r_hand) + switch(E.body_part) + if(HAND_LEFT, ARM_LEFT) + if(!l_hand) + continue + drop_from_inventory(l_hand) + if(HAND_RIGHT, ARM_RIGHT) + if(!r_hand) + continue + drop_from_inventory(r_hand) emote("me", 1, "drops what they were holding, their [E.name] malfunctioning!") diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index db62aa91d0..94e1c94ae7 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -50,7 +50,7 @@ var/joint = "joint" // Descriptive string used in dislocation. var/amputation_point // Descriptive string used in amputation. var/dislocated = 0 // If you target a joint, you can dislocate the limb, causing temporary damage to the organ. - var/can_grasp + var/can_grasp //It would be more appropriate if these two were named "affects_grasp" and "affects_stand" at this point var/can_stand /obj/item/organ/external/Destroy() From 1dc853710c408c84c43e02d1e709b5033aefacbe Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Aug 2015 23:38:44 -0400 Subject: [PATCH 12/12] Implant items do not count for continuing to process embedded objects Also makes embedded pain messages respect NO_PAIN. --- code/modules/mob/living/carbon/human/human.dm | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9421123ae5..43a4fd8914 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1032,8 +1032,9 @@ /mob/living/carbon/human/embedded_needs_process() for(var/obj/item/organ/external/organ in src.organs) - if(organ.implants.len) - return 1 + for(var/obj/item/O in organ.implants) + if(!istype(O, /obj/item/weapon/implant)) //implant type items do not cause embedding effects, see handle_embedded_objects() + return 1 return 0 /mob/living/carbon/human/proc/handle_embedded_objects() @@ -1041,18 +1042,17 @@ for(var/obj/item/organ/external/organ in src.organs) if(organ.status & ORGAN_SPLINTED) //Splints prevent movement. continue - for(var/obj/item/weapon/O in organ.implants) + for(var/obj/item/O in organ.implants) if(!istype(O,/obj/item/weapon/implant) && prob(5)) //Moving with things stuck in you could be bad. // All kinds of embedded objects cause bleeding. - var/msg = null - switch(rand(1,3)) - if(1) - msg ="A spike of pain jolts your [organ.name] as you bump [O] inside." - if(2) - msg ="Your movement jostles [O] in your [organ.name] painfully." - if(3) - msg ="[O] in your [organ.name] twists painfully as you move." - src << msg + if(species.flags & NO_PAIN) + src << "You feel [O] moving inside your [organ.name]." + else + var/msg = pick( \ + "A spike of pain jolts your [organ.name] as you bump [O] inside.", \ + "Your movement jostles [O] in your [organ.name] painfully.", \ + "Your movement jostles [O] in your [organ.name] painfully.") + src << msg organ.take_damage(rand(1,3), 0, 0) if(!(organ.status & ORGAN_ROBOT) && !(species.flags & NO_BLOOD)) //There is no blood in protheses.