diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 114bada5e19..d6b86307d63 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -94,6 +94,7 @@ name = "Glass Airlock" icon = 'icons/obj/doors/Doorglass.dmi' opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_glass glass = 1 doorOpen = 'sound/machines/windowdoor.ogg' doorClose = 'sound/machines/windowdoor.ogg' diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 509d6adb0a7..503e0e5a1be 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -63,13 +63,13 @@ var/global/list/datum/stack_recipe/metal_recipes = list( new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 50, one_per_turf = 1, on_floor = 1), -/* new /datum/stack_recipe("science airlock assembly", /obj/structure/door_assembly/door_assembly_science, 4, time = 50, one_per_turf = 1, on_floor = 1), */ new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 50, one_per_turf = 1, on_floor = 1), new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 50, one_per_turf = 1, on_floor = 1), + new /datum/stack_recipe("glass airlock assembly", /obj/structure/door_assembly/door_assembly_glass, 4, time = 50, one_per_turf = 1, on_floor = 1), 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("multi-tile airlock assembly", /obj/structure/door_assembly/multi_tile, 4, time = 50, one_per_turf = 1, on_floor = 1), ), 4), diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 9dddd902740..affe4c12145 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -1,4 +1,4 @@ -obj/structure/door_assembly +/obj/structure/door_assembly icon = 'icons/obj/doors/door_assembly.dmi' name = "Airlock Assembly" @@ -14,119 +14,133 @@ obj/structure/door_assembly var/glass = 0 // 0 = glass can be installed. -1 = glass can't be installed. 1 = glass is already installed. Text = mineral plating is installed instead. var/created_name = null - New() - update_state() +/obj/structure/door_assembly/New() + update_state() -obj/structure/door_assembly/door_assembly_com +/obj/structure/door_assembly/door_assembly_com base_icon_state = "com" base_name = "Command Airlock" glass_type = "/glass_command" airlock_type = "/command" -obj/structure/door_assembly/door_assembly_sec +/obj/structure/door_assembly/door_assembly_sec base_icon_state = "sec" base_name = "Security Airlock" glass_type = "/glass_security" airlock_type = "/security" -obj/structure/door_assembly/door_assembly_eng +/obj/structure/door_assembly/door_assembly_eng base_icon_state = "eng" base_name = "Engineering Airlock" glass_type = "/glass_engineering" airlock_type = "/engineering" -obj/structure/door_assembly/door_assembly_min +/obj/structure/door_assembly/door_assembly_min base_icon_state = "min" base_name = "Mining Airlock" glass_type = "/glass_mining" airlock_type = "/mining" -obj/structure/door_assembly/door_assembly_atmo +/obj/structure/door_assembly/door_assembly_atmo base_icon_state = "atmo" base_name = "Atmospherics Airlock" glass_type = "/glass_atmos" airlock_type = "/atmos" -obj/structure/door_assembly/door_assembly_research +/obj/structure/door_assembly/door_assembly_research base_icon_state = "res" base_name = "Research Airlock" glass_type = "/glass_research" airlock_type = "/research" -obj/structure/door_assembly/door_assembly_science +/obj/structure/door_assembly/door_assembly_science base_icon_state = "sci" base_name = "Science Airlock" glass_type = "/glass_science" airlock_type = "/science" -obj/structure/door_assembly/door_assembly_med +/obj/structure/door_assembly/door_assembly_med base_icon_state = "med" base_name = "Medical Airlock" glass_type = "/glass_medical" airlock_type = "/medical" -obj/structure/door_assembly/door_assembly_mai +/obj/structure/door_assembly/door_assembly_mai base_icon_state = "mai" base_name = "Maintenance Airlock" airlock_type = "/maintenance" glass = -1 -obj/structure/door_assembly/door_assembly_ext +/obj/structure/door_assembly/door_assembly_ext base_icon_state = "ext" base_name = "External Airlock" airlock_type = "/external" glass = -1 -obj/structure/door_assembly/door_assembly_fre +/obj/structure/door_assembly/door_assembly_fre base_icon_state = "fre" base_name = "Freezer Airlock" airlock_type = "/freezer" glass = -1 -obj/structure/door_assembly/door_assembly_hatch +/obj/structure/door_assembly/door_assembly_hatch base_icon_state = "hatch" base_name = "Airtight Hatch" airlock_type = "/hatch" glass = -1 -obj/structure/door_assembly/door_assembly_mhatch +/obj/structure/door_assembly/door_assembly_mhatch base_icon_state = "mhatch" base_name = "Maintenance Hatch" airlock_type = "/maintenance_hatch" glass = -1 -obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly +/obj/structure/door_assembly/door_assembly_glass + base_icon_state = "glass" + base_name = "Glass Airlock" + airlock_type = "/glass" + glass_type = "/glass" + var/list/items_allowed // The glass airlock does not have a "base" type to which glass can be inserted, so this list is used to ensure players have to insert reinforced glass first before constructing it + +/obj/structure/door_assembly/door_assembly_glass/New() + ..() + items_allowed = typecacheof(list(/obj/item/weapon/weldingtool, /obj/item/weapon/wrench, /obj/item/weapon/pen, /obj/item/stack/sheet/rglass)) + +/obj/structure/door_assembly/door_assembly_glass/attackby(obj/item/W as obj, mob/user as mob, params) + if(is_type_in_list(W, items_allowed) || glass == 1) + ..() + else if(istype(W, /obj/item/stack/cable_coil) + to_chat(user, "You need to insert the airlock's glass first.") + else + ..() + +/obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly base_icon_state = "highsec" base_name = "High Security Airlock" airlock_type = "/highsecurity" glass = -1 -obj/structure/door_assembly/door_assembly_shuttle +/obj/structure/door_assembly/door_assembly_shuttle base_icon_state = "shuttle" base_name = "shuttle airlock" airlock_type = "/shuttle" glass = -1 -obj/structure/door_assembly/multi_tile +/obj/structure/door_assembly/multi_tile icon = 'icons/obj/doors/door_assembly2x1.dmi' dir = EAST var/width = 1 -/*Temporary until we get sprites. - glass_type = "/multi_tile/glass" - airlock_type = "/multi_tile/maint" - glass = 1*/ base_icon_state = "g" //Remember to delete this line when reverting "glass" var to 1. airlock_type = "/multi_tile/glass" glass = -1 //To prevent bugs in deconstruction process. - /obj/structure/door_assembly/door_assembly_cult base_name = "cult airlock assembly" icon = 'icons/obj/doors/Doorcult.dmi' base_icon_state ="construction" airlock_type = "/cult" -obj/structure/door_assembly/multi_tile/New() +/obj/structure/door_assembly/multi_tile/New() if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size @@ -135,7 +149,7 @@ obj/structure/door_assembly/multi_tile/New() bound_height = width * world.icon_size update_state() -obj/structure/door_assembly/multi_tile/Move() +/obj/structure/door_assembly/multi_tile/Move() . = ..() if(dir in list(EAST, WEST)) bound_width = width * world.icon_size diff --git a/icons/obj/doors/Doorfire.dmi b/icons/obj/doors/Doorfire.dmi index 6686844372a..1f3999b774e 100644 Binary files a/icons/obj/doors/Doorfire.dmi and b/icons/obj/doors/Doorfire.dmi differ diff --git a/icons/obj/doors/door_assembly.dmi b/icons/obj/doors/door_assembly.dmi index 232a54da317..ae045bbb501 100644 Binary files a/icons/obj/doors/door_assembly.dmi and b/icons/obj/doors/door_assembly.dmi differ