diff --git a/.gitignore b/.gitignore index a888a47c90..f3af83cda0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ vchat.db* *.dmb *.lk *.backup +*.before *.pyc data/ cfg/ diff --git a/code/ATMOSPHERICS/_atmos_setup.dm b/code/ATMOSPHERICS/_atmos_setup.dm index 6af102cf38..a2735133e2 100644 --- a/code/ATMOSPHERICS/_atmos_setup.dm +++ b/code/ATMOSPHERICS/_atmos_setup.dm @@ -6,15 +6,6 @@ // atmospherics devices. //-------------------------------------------- -#define PIPE_COLOR_GREY "#ffffff" //yes white is grey -#define PIPE_COLOR_RED "#ff0000" -#define PIPE_COLOR_BLUE "#0000ff" -#define PIPE_COLOR_CYAN "#00ffff" -#define PIPE_COLOR_GREEN "#00ff00" -#define PIPE_COLOR_YELLOW "#ffcc00" -#define PIPE_COLOR_BLACK "#444444" -#define PIPE_COLOR_PURPLE "#5c1ec0" - var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "black" = PIPE_COLOR_BLACK, "purple" = PIPE_COLOR_PURPLE) /proc/pipe_color_lookup(var/color) diff --git a/code/__defines/_planes+layers.dm b/code/__defines/_planes+layers.dm index c2d33e0726..586a87cd4e 100644 --- a/code/__defines/_planes+layers.dm +++ b/code/__defines/_planes+layers.dm @@ -64,10 +64,11 @@ What is the naming convention for planes or layers? #define ABOVE_UTILITY 2.5 // Above stuff like pipes and wires #define TURF_PLANE -45 // Turfs themselves, most flooring #define WATER_FLOOR_LAYER 2.0 // The 'bottom' of water tiles. + #define BUILTIN_DECAL_LAYER 2.01 // For floors that automatically add decal overlays + #define MAPPER_DECAL_LAYER 2.02 // For intentionally placed floor decal overlays #define UNDERWATER_LAYER 2.5 // Anything on this layer will render under the water layer. #define WATER_LAYER 3.0 // Layer for water overlays. #define ABOVE_TURF_LAYER 3.1 // Snow and wallmounted/floormounted equipment - #define TURF_DECAL_LAYER 3.2 // Mapped in floor decals, not automatic edges/corners #define DECAL_PLANE -44 // Permanent decals #define DIRTY_PLANE -43 // Nonpermanent decals #define BLOOD_PLANE -42 // Blood is really dirty, but we can do special stuff if we separate it diff --git a/code/__defines/color.dm b/code/__defines/color.dm index c1416a5e92..56c3f5fa7e 100644 --- a/code/__defines/color.dm +++ b/code/__defines/color.dm @@ -1,3 +1,141 @@ +// BYOND lower-cases color values, and thus we do so as well to ensure atom.color == COLOR_X will work correctly +#define COLOR_BLACK "#000000" +#define COLOR_NAVY "#000080" +#define COLOR_NAVY_BLUE "#000080" +#define COLOR_GREEN "#008000" +#define COLOR_DARK_GRAY "#404040" +#define COLOR_MAROON "#800000" +#define COLOR_PURPLE "#800080" +#define COLOR_VIOLET "#9933ff" +#define COLOR_OLIVE "#808000" +#define COLOR_BROWN_ORANGE "#824b28" +#define COLOR_DARK_ORANGE "#b95a00" +#define COLOR_GRAY40 "#666666" +#define COLOR_GRAY20 "#333333" +#define COLOR_GRAY15 "#151515" +#define COLOR_SEDONA "#cc6600" +#define COLOR_DARK_BROWN "#917448" +#define COLOR_BLUE "#0000ff" +#define COLOR_DEEP_SKY_BLUE "#00e1ff" +#define COLOR_LIME "#00ff00" +#define COLOR_CYAN "#00ffff" +#define COLOR_TEAL "#33cccc" +#define COLOR_RED "#ff0000" +#define COLOR_PINK "#ff00ff" +#define COLOR_PALE_PINK "#bf89ba" +#define COLOR_ORANGE "#ff9900" +#define COLOR_YELLOW "#ffff00" +#define COLOR_YELLOW_GRAY "#c9a344" +#define COLOR_PALE_YELLOW "#c1bb7a" +#define COLOR_WARM_YELLOW "#b3863c" +#define COLOR_GRAY "#808080" +#define COLOR_RED_GRAY "#aa5f61" +#define COLOR_BROWN "#b19664" +#define COLOR_GREEN_GRAY "#8daf6a" +#define COLOR_DARK_GREEN_GRAY "#54654c" +#define COLOR_BLUE_GRAY "#6a97b0" +#define COLOR_DARK_BLUE_GRAY "#3e4855" +#define COLOR_SURGERY_BLUE "#e0f2f6" +#define COLOR_SUN "#ec8b2f" +#define COLOR_PURPLE_GRAY "#a2819e" +#define COLOR_BLUE_LIGHT "#33ccff" +#define COLOR_RED_LIGHT "#ff3333" +#define COLOR_BEIGE "#ceb689" +#define COLOR_BABY_BLUE "#89cff0" +#define COLOR_PALE_GREEN_GRAY "#aed18b" +#define COLOR_PALE_RED_GRAY "#cc9090" +#define COLOR_PALE_PURPLE_GRAY "#bda2ba" +#define COLOR_PALE_BLUE_GRAY "#8bbbd5" +#define COLOR_LUMINOL "#66ffff" +#define COLOR_SILVER "#c0c0c0" +#define COLOR_GRAY80 "#cccccc" +#define COLOR_OFF_WHITE "#eeeeee" +#define COLOR_WHITE "#ffffff" +#define COLOR_GOLD "#ffcc33" +#define COLOR_CLOSET_GOLD "#6d6133" +#define COLOR_NT_RED "#9d2300" +#define COLOR_BOTTLE_GREEN "#1f6b4f" +#define COLOR_PALE_BTL_GREEN "#57967f" +#define COLOR_GUNMETAL "#545c68" +#define COLOR_WALL_GUNMETAL "#353a42" +#define COLOR_STEEL "#a8b0b2" +#define COLOR_MUZZLE_FLASH "#ffffb2" +#define COLOR_CHESTNUT "#996633" +#define COLOR_BEASTY_BROWN "#663300" +#define COLOR_WHEAT "#ffff99" +#define COLOR_CYAN_BLUE "#3366cc" +#define COLOR_LIGHT_CYAN "#66ccff" +#define COLOR_PAKISTAN_GREEN "#006600" +#define COLOR_HULL "#436b8e" +#define COLOR_AMBER "#ffbf00" +#define COLOR_COMMAND_BLUE "#46698c" +#define COLOR_SKY_BLUE "#5ca1cc" +#define COLOR_PALE_ORANGE "#b88a3b" +#define COLOR_CIVIE_GREEN "#b7f27d" +#define COLOR_TITANIUM "#d1e6e3" +#define COLOR_DARK_GUNMETAL "#4c535b" +#define COLOR_BRONZE "#8c7853" +#define COLOR_BRASS "#b99d71" +#define COLOR_INDIGO "#4b0082" +#define COLOR_ALUMINIUM "#bbbbbb" +#define COLOR_CRYSTAL "#00c8a5" +#define COLOR_ASTEROID_ROCK "#735555" +#define COLOR_NULLGLASS "#ff6088" +#define COLOR_DIAMOND "#d8d4ea" + +#define PIPE_COLOR_GREY "#808080" +#define PIPE_COLOR_RED "#ff0000" +#define PIPE_COLOR_BLUE "#0000ff" +#define PIPE_COLOR_CYAN "#00ffff" +#define PIPE_COLOR_GREEN "#00ff00" +#define PIPE_COLOR_YELLOW "#ffcc00" +#define PIPE_COLOR_BLACK "#444444" +#define PIPE_COLOR_ORANGE "#b95a00" +#define PIPE_COLOR_WHITE "#ffffff" +#define PIPE_COLOR_PURPLE "#5c1ec0" + +#define COMMS_COLOR_DEFAULT "#ff00ff" +#define COMMS_COLOR_ENTERTAIN "#666666" +#define COMMS_COLOR_AI "#ff00ff" +#define COMMS_COLOR_COMMON "#408010" +#define COMMS_COLOR_SERVICE "#709b00" +#define COMMS_COLOR_SUPPLY "#7f6539" +#define COMMS_COLOR_SCIENCE "#993399" +#define COMMS_COLOR_MEDICAL "#009190" +#define COMMS_COLOR_MEDICAL_I "#509190" +#define COMMS_COLOR_EXPLORER "#929820" +#define COMMS_COLOR_ENGINEER "#a66300" +#define COMMS_COLOR_SECURITY "#930000" +#define COMMS_COLOR_SECURITY_I "#935050" +#define COMMS_COLOR_COMMAND "#204090" +#define COMMS_COLOR_CENTCOMM "#5c5c7c" +#define COMMS_COLOR_SYNDICATE "#6d3f40" +#define COMMS_COLOR_SKRELL "#7331c4" + +#define WOOD_COLOR_GENERIC "#d5a66e" +#define WOOD_COLOR_RICH "#792f27" +#define WOOD_COLOR_PALE "#d2bc9d" +#define WOOD_COLOR_PALE2 "#e6d2ba" +#define WOOD_COLOR_BLACK "#332521" +#define WOOD_COLOR_CHOCOLATE "#543c30" +#define WOOD_COLOR_YELLOW "#e3994e" + +#define GLASS_COLOR "#74c1ee" +#define GLASS_COLOR_PHORON "#7c3a9a" +#define GLASS_COLOR_TINTED "#222222" +#define GLASS_COLOR_FROSTED "#ffffff" + +#define COLOR_BLOOD_HUMAN "#a10808" + +//Colors defines used by e-sword lighting +#define COLOR_SABER_BLUE "#40ceff" +#define COLOR_SABER_RED "#ff0000" //In case someone wants to tweak COLOR_RED, since COLOR_GREEN is not #00ff00 +#define COLOR_SABER_GREEN "#00ff00" +#define COLOR_SABER_PURPLE "#6800f4" +#define COLOR_SABER_SKRELL "#6600cc" +#define COLOR_SABER_AXE "#00ccff" +#define COLOR_SABER_CUTLASS "#ff0033" + //Color defines used by the assembly detailer. #define COLOR_ASSEMBLY_BLACK "#545454" #define COLOR_ASSEMBLY_BGRAY "#9497AB" diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 4db75508b3..0a0e4b7fe7 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -44,40 +44,6 @@ #define LIFE_HUD 10 // STATUS_HUD that only reports dead or alive #define TOTAL_HUDS 10 // Total number of HUDs. Like body layers, and other things, it comes up sometimes. -//some colors -#define COLOR_WHITE "#FFFFFF" -#define COLOR_SILVER "#C0C0C0" -#define COLOR_GRAY "#808080" -#define COLOR_BLACK "#000000" -#define COLOR_RED "#FF0000" -#define COLOR_MAROON "#800000" -#define COLOR_YELLOW "#FFFF00" -#define COLOR_OLIVE "#808000" -#define COLOR_LIME "#00FF00" -#define COLOR_GREEN "#008000" -#define COLOR_CYAN "#00FFFF" -#define COLOR_TEAL "#008080" -#define COLOR_BLUE "#0000FF" -#define COLOR_NAVY "#000080" -#define COLOR_PINK "#FF00FF" -#define COLOR_PURPLE "#800080" -#define COLOR_ORANGE "#FF9900" -#define COLOR_LUMINOL "#66FFFF" -#define COLOR_BEIGE "#CEB689" -#define COLOR_BLUE_GRAY "#6A97B0" -#define COLOR_BROWN "#B19664" -#define COLOR_DARK_BROWN "#917448" -#define COLOR_DARK_ORANGE "#B95A00" -#define COLOR_GREEN_GRAY "#8DAF6A" -#define COLOR_RED_GRAY "#AA5F61" -#define COLOR_PALE_BLUE_GRAY "#8BBBD5" -#define COLOR_PALE_GREEN_GRAY "#AED18B" -#define COLOR_PALE_RED_GRAY "#CC9090" -#define COLOR_PALE_PURPLE_GRAY "#BDA2BA" -#define COLOR_PURPLE_GRAY "#A2819E" -#define COLOR_RED_LIGHT "#FF3333" -#define COLOR_DEEP_SKY_BLUE "#00e1ff" - #define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (isclient(I) ? I : null)) // Shuttles. diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 8a34fb50b7..7b82945564 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -25,6 +25,9 @@ var/list/mannequins_ // Times that players are allowed to respawn ("ckey" = world.time) GLOBAL_LIST_EMPTY(respawn_timers) +// Closets have magic appearances +GLOBAL_LIST_EMPTY(closet_appearances) + // Posters var/global/list/poster_designs = list() var/global/list/NT_poster_designs = list() @@ -204,6 +207,12 @@ var/global/list/string_slot_flags = list( var/datum/poster/P = new T NT_poster_designs += P + //Closet appearances + paths = typesof(/decl/closet_appearance) + for(var/T in paths) + var/decl/closet_appearance/app = new T() + GLOB.closet_appearances[T] = app + // VOREStation Add - Vore Modes! paths = typesof(/datum/digest_mode) - /datum/digest_mode/transform for(var/T in paths) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 69e644a239..c4edacd933 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -52,12 +52,14 @@ animate(alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING) if(alert.timeout) - spawn(alert.timeout) - if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout) - clear_alert(category) + addtimer(CALLBACK(src, .proc/alert_timeout, alert, category), alert.timeout) alert.timeout = world.time + alert.timeout - world.tick_lag return alert +/mob/proc/alert_timeout(obj/screen/alert/alert, category) + if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout) + clear_alert(category) + // Proc to clear an existing alert. /mob/proc/clear_alert(category) var/obj/screen/alert/alert = alerts[category] @@ -455,7 +457,7 @@ so as to remain in compliance with the most up-to-date laws." return var/paramslist = params2list(params) if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat - usr << "[name] - [desc]" + to_chat(usr,"[name] - [desc]") return if(master) return usr.client.Click(master, location, control, params) diff --git a/code/datums/outfits/outfit_vr.dm b/code/datums/outfits/outfit_vr.dm index e262fba3b7..7f978fafb0 100644 --- a/code/datums/outfits/outfit_vr.dm +++ b/code/datums/outfits/outfit_vr.dm @@ -115,16 +115,10 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go l_ear = /obj/item/device/radio/headset/explorer id_slot = slot_wear_id pda_slot = slot_l_store - pda_type = /obj/item/device/pda/explorer //VORESTation Edit - Better Brown - id_type = /obj/item/weapon/card/id/explorer //VOREStation Edit + pda_type = /obj/item/device/pda/explorer + id_type = /obj/item/weapon/card/id/explorer id_pda_assignment = "Explorer" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL - backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) - -/decl/hierarchy/outfit/job/explorer2/post_equip(mob/living/carbon/human/H) - ..() - for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents) - permit.set_name(H.real_name) /decl/hierarchy/outfit/job/pilot name = OUTFIT_JOB_NAME("Pilot") @@ -136,21 +130,21 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go l_ear = /obj/item/device/radio/headset/pilot/alt id_slot = slot_wear_id pda_slot = slot_belt - pda_type = /obj/item/device/pda //VOREStation Edit - Civilian + pda_type = /obj/item/device/pda id_pda_assignment = "Pilot" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL /decl/hierarchy/outfit/job/medical/sar - name = OUTFIT_JOB_NAME("Field Medic") //VOREStation Edit + name = OUTFIT_JOB_NAME("Field Medic") uniform = /obj/item/clothing/under/utility/blue - //suit = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar //VOREStation Edit + //suit = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar shoes = /obj/item/clothing/shoes/boots/winter/explorer l_ear = /obj/item/device/radio/headset/sar l_hand = /obj/item/weapon/storage/firstaid/regular belt = /obj/item/weapon/storage/belt/medical/emt pda_slot = slot_l_store - pda_type = /obj/item/device/pda/sar //VOREStation Add - id_pda_assignment = "Field Medic" //VOREStation Edit + pda_type = /obj/item/device/pda/sar + id_pda_assignment = "Field Medic" flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL /decl/hierarchy/outfit/job/pathfinder @@ -164,12 +158,6 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go id_type = /obj/item/weapon/card/id/explorer/head id_pda_assignment = "Pathfinder" flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL - backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) - -/decl/hierarchy/outfit/job/pathfinder/post_equip(mob/living/carbon/human/H) - ..() - for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents) - permit.set_name(H.real_name) /decl/hierarchy/outfit/job/assistant/explorer id_type = /obj/item/weapon/card/id/explorer diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index 357f0eaead..134ae76e30 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -66,7 +66,7 @@ contains = list( /obj/item/device/pipe_painter = 2, /obj/item/device/floor_painter = 2, - /obj/item/device/closet_painter = 2 + ///obj/item/device/closet_painter = 2 ) /datum/supply_pack/recreation/cheapbait diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index f8e6351380..d303fce767 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1721,7 +1721,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/security/brig/prison_break() for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) temp_closet.locked = 0 - temp_closet.icon_state = temp_closet.icon_closed + temp_closet.icon_state = "closed_unlocked" for(var/obj/machinery/door_timer/temp_timer in src) temp_timer.releasetime = 1 ..() @@ -1733,7 +1733,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/security/prison/prison_break() for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) temp_closet.locked = 0 - temp_closet.icon_state = temp_closet.icon_closed + temp_closet.icon_state = "closed_unlocked" for(var/obj/machinery/door_timer/temp_timer in src) temp_timer.releasetime = 1 ..() diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index ba737a416a..083a90fc09 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -187,7 +187,7 @@ var/hadevent = 0 for (var/obj/structure/closet/secure_closet/brig/temp_closet in A) temp_closet.locked = 0 - temp_closet.icon_state = temp_closet.icon_closed + temp_closet.icon_state = "closed_unlocked" for (var/obj/machinery/door/airlock/security/temp_airlock in A) spawn(0) temp_airlock.prison_open() diff --git a/code/game/machinery/deployable_vr.dm b/code/game/machinery/deployable_vr.dm index 9f7e79af5b..2f2f2f6adf 100644 --- a/code/game/machinery/deployable_vr.dm +++ b/code/game/machinery/deployable_vr.dm @@ -15,7 +15,7 @@ var/human_name = TRUE var/static/list/cutout_types - var/static/list/painters = list(/obj/item/weapon/reagent_containers/glass/paint, /obj/item/device/floor_painter, /obj/item/device/closet_painter) + var/static/list/painters = list(/obj/item/weapon/reagent_containers/glass/paint, /obj/item/device/floor_painter)//, /obj/item/device/closet_painter) /obj/structure/barricade/cutout/New() . = ..() diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index a15887cc58..3722e66cf6 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -114,7 +114,7 @@ if(C.broken) continue if(C.opened && !C.close()) continue C.locked = 1 - C.icon_state = C.icon_locked + C.icon_state = "closed_locked" return 1 @@ -135,7 +135,7 @@ if(C.broken) continue if(C.opened) continue C.locked = 0 - C.icon_state = C.icon_closed + C.icon_state = "closed_unlocked" return 1 diff --git a/code/game/machinery/machinery_power.dm b/code/game/machinery/machinery_power.dm index aa3d301e53..be648d0f80 100644 --- a/code/game/machinery/machinery_power.dm +++ b/code/game/machinery/machinery_power.dm @@ -42,8 +42,7 @@ stat &= ~NOPOWER else stat |= NOPOWER - . = (stat != oldstat) - return + return (stat != oldstat) // Get the amount of power this machine will consume each cycle. Override by experts only! /obj/machinery/proc/get_power_usage() diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index db5594685e..75b78d4114 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -10,7 +10,7 @@ active_power_usage = 40000 //40 kW var/efficiency = 40000 //will provide the modified power rate when upgraded var/obj/item/charging = null - var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/modular_computer, /obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/device/defib_kit, /obj/item/ammo_casing/microbattery) //VOREStation Add - NSFW Batteries + var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/modular_computer, /obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/cell, /obj/item/device/suit_cooling_unit/emergency, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/device/defib_kit, /obj/item/ammo_casing/microbattery) //VOREStation Add - NSFW Batteries var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index a95f2e3b7e..b56a964626 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -780,15 +780,13 @@ product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" icon_state = "snack" - products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 6,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6,/obj/item/weapon/reagent_containers/food/snacks/chips =6, - /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6, - /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 6, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 3) - contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6,/obj/item/weapon/reagent_containers/food/snacks/unajerky = 6,) - //VOREStation Edit Start - prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 1,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 2,/obj/item/weapon/reagent_containers/food/snacks/chips = 1, + products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 12,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 12,/obj/item/weapon/reagent_containers/food/snacks/chips =12, + /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 12,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 12,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 12, + /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 12, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 12, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 6) + contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6,/obj/item/weapon/reagent_containers/food/snacks/unajerky = 12,) + prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 1,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 5,/obj/item/weapon/reagent_containers/food/snacks/chips = 1, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 2,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 1,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 1, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 1, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 2, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 2) - //VOREStation Edit End /obj/machinery/vending/cola name = "Robust Softdrinks" @@ -814,11 +812,11 @@ name = "SweatMAX" desc = "Fueled by your inner inadequacy!" icon_state = "fitness" - products = list(/obj/item/weapon/reagent_containers/food/drinks/smallmilk = 8, - /obj/item/weapon/reagent_containers/food/drinks/smallchocmilk = 8, - /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake = 16, //VOREStation Edit, + products = list(/obj/item/weapon/reagent_containers/food/drinks/smallmilk = 16, + /obj/item/weapon/reagent_containers/food/drinks/smallchocmilk = 16, + /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake = 8, /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask = 8, - /obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 8, + /obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 16, /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 8, /obj/item/weapon/reagent_containers/pill/diet = 8, /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5, //VOREStation Removal, YW Readdition, @@ -858,13 +856,13 @@ product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs.;Feeling temperamental? Try a Temperamento!;Carcinoma Angels - go fuck yerself!;Don't be so hard on yourself, kid. Smoke a Lucky Star!" vend_delay = 34 icon_state = "cigs" - products = list(/obj/item/weapon/storage/fancy/cigarettes = 5, - /obj/item/weapon/storage/fancy/cigarettes/dromedaryco = 5, - /obj/item/weapon/storage/fancy/cigarettes/killthroat = 5, - /obj/item/weapon/storage/fancy/cigarettes/luckystars = 5, - /obj/item/weapon/storage/fancy/cigarettes/jerichos = 5, - /obj/item/weapon/storage/fancy/cigarettes/menthols = 5, - /obj/item/weapon/storage/rollingpapers = 5, + products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, + /obj/item/weapon/storage/fancy/cigarettes/dromedaryco = 10, + /obj/item/weapon/storage/fancy/cigarettes/killthroat = 10, + /obj/item/weapon/storage/fancy/cigarettes/luckystars = 10, + /obj/item/weapon/storage/fancy/cigarettes/jerichos = 10, + /obj/item/weapon/storage/fancy/cigarettes/menthols = 10, + /obj/item/weapon/storage/rollingpapers = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/random = 4) contraband = list(/obj/item/weapon/flame/lighter/zippo = 4) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 181eea4137..87f2c2d1a5 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -3,7 +3,7 @@ /obj/item/bodybag name = "body bag" desc = "A folded bag designed for the storage and transportation of cadavers." - icon = 'icons/obj/bodybag.dmi' + icon = 'icons/obj/closets/bodybag.dmi' icon_state = "bodybag_folded" w_class = ITEMSIZE_SMALL @@ -31,10 +31,8 @@ /obj/structure/closet/body_bag name = "body bag" desc = "A plastic bag designed for the storage and transportation of cadavers." - icon = 'icons/obj/bodybag.dmi' - icon_state = "bodybag_closed" - icon_closed = "bodybag_closed" - icon_opened = "bodybag_open" + icon = 'icons/obj/closets/bodybag.dmi' + closet_appearance = null open_sound = 'sound/items/zip.ogg' close_sound = 'sound/items/zip.ogg' var/item_path = /obj/item/bodybag @@ -128,19 +126,22 @@ /obj/structure/closet/body_bag/update_icon() if(opened) - icon_state = icon_opened + icon_state = "open" else - if(contains_body > 0) - icon_state = "bodybag_closed1" - else - icon_state = icon_closed + icon_state = "closed_unlocked" + + src.overlays.Cut() + /* Ours don't have toetags + if(has_label) + src.overlays += image(src.icon, "bodybag_label") + */ /obj/item/bodybag/cryobag name = "stasis bag" desc = "A non-reusable plastic bag designed to slow down bodily functions such as circulation and breathing, \ especially useful if short on time or in a hostile enviroment." - icon = 'icons/obj/cryobag.dmi' + icon = 'icons/obj/closets/cryobag.dmi' icon_state = "bodybag_folded" item_state = "bodybag_cryo_folded" origin_tech = list(TECH_BIO = 4) @@ -158,7 +159,7 @@ name = "stasis bag" desc = "A non-reusable plastic bag designed to slow down bodily functions such as circulation and breathing, \ especially useful if short on time or in a hostile enviroment." - icon = 'icons/obj/cryobag.dmi' + icon = 'icons/obj/closets/cryobag.dmi' item_path = /obj/item/bodybag/cryobag store_misc = 0 store_items = 0 @@ -189,13 +190,17 @@ /obj/structure/closet/body_bag/cryobag/open() . = ..() if(used) - var/obj/item/O = new/obj/item(src.loc) - O.name = "used [name]" - O.icon = src.icon - O.icon_state = "bodybag_used" - O.desc = "Pretty useless now..." + new /obj/item/usedcryobag(loc) qdel(src) +/obj/structure/closet/body_bag/cryobag/update_icon() + ..() + overlays.Cut() + var/image/I = image(icon, "indicator[opened]") + I.appearance_flags = RESET_COLOR + I.color = COLOR_LIME + overlays += I + /obj/structure/closet/body_bag/cryobag/MouseDrop(over_object, src_location, over_location) . = ..() if(. && syringe) @@ -283,3 +288,9 @@ else ..() + +/obj/item/usedcryobag + name = "used stasis bag" + desc = "Pretty useless now.." + icon_state = "bodybag_used" + icon = 'icons/obj/closets/cryobag.dmi' diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index 0c097295bb..390084f9fe 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -18,7 +18,7 @@ var/on = 0 //is it turned on? var/cover_open = 0 //is the cover open? - var/obj/item/weapon/cell/cell + var/obj/item/weapon/cell/cell = /obj/item/weapon/cell/high var/max_cooling = 15 // in degrees per second - probably don't need to mess with heat capacity here var/charge_consumption = 3 // charge per second at max_cooling var/thermostat = T20C @@ -30,7 +30,8 @@ /obj/item/device/suit_cooling_unit/Initialize() . = ..() - cell = new/obj/item/weapon/cell/high(src) //comes not with the crappy default power cell - because this is dedicated EVA equipment + if(ispath(cell)) + cell = new cell(src) /obj/item/device/suit_cooling_unit/Destroy() qdel_null(cell) @@ -200,3 +201,23 @@ . += "The charge meter reads [round(cell.percent())]%." else . += "It doesn't have a power cell installed." + +/obj/item/device/suit_cooling_unit/emergency + icon_state = "esuitcooler" + cell = /obj/item/weapon/cell + w_class = ITEMSIZE_NORMAL + +/obj/item/device/suit_cooling_unit/emergency/updateicon() + return + +/obj/item/device/suit_cooling_unit/emergency/get_cell() + if(on) + return null // Don't let recharging happen while we're on + return cell + +/obj/item/device/suit_cooling_unit/emergency/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (W.is_screwdriver()) + to_chat(user, "This model has the cell permanently installed!") + return + + return ..() diff --git a/code/game/objects/items/poi_items.dm b/code/game/objects/items/poi_items.dm index b86d93aec8..4300eeed71 100644 --- a/code/game/objects/items/poi_items.dm +++ b/code/game/objects/items/poi_items.dm @@ -61,10 +61,8 @@ /obj/structure/closet/crate/oldreactor name = "fission reactor rack" desc = "Used in older models of nuclear reactors, essentially a cooling rack for high volumes of radioactive material." - icon = 'icons/obj/objects.dmi' - icon_state = "poireactor" - icon_opened = "poireactor_open" - icon_closed = "poireactor" + icon = 'icons/obj/closets/poireactor.dmi' + closet_appearance = null catalogue_data = list(/datum/category_item/catalogue/information/objects/oldreactor) climbable = 0 diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm similarity index 85% rename from code/game/objects/structures/crates_lockers/closets.dm rename to code/game/objects/structures/crates_lockers/__closets.dm index 9938173a2b..2706e11bd3 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/__closets.dm @@ -1,474 +1,486 @@ -/obj/structure/closet - name = "closet" - desc = "It's a basic storage unit." - icon = 'icons/obj/closet.dmi' - icon_state = "closed" - density = 1 - w_class = ITEMSIZE_HUGE - layer = UNDER_JUNK_LAYER - var/icon_closed = "closed" - var/icon_opened = "open" - var/opened = 0 - var/sealed = 0 - var/seal_tool = /obj/item/weapon/weldingtool //Tool used to seal the closet, defaults to welder - var/wall_mounted = 0 //never solid (You can always pass over it) - var/health = 100 - - var/breakout = 0 //if someone is currently breaking out. mutex - var/breakout_time = 2 //2 minutes by default - var/breakout_sound = 'sound/effects/grillehit.ogg' //Sound that plays while breaking out - - var/storage_capacity = 2 * MOB_MEDIUM //This is so that someone can't pack hundreds of items in a locker/crate - //then open it in a populated area to crash clients. - var/storage_cost = 40 //How much space this closet takes up if it's stuffed in another closet - - var/open_sound = 'sound/machines/click.ogg' - var/close_sound = 'sound/machines/click.ogg' - - var/store_misc = 1 //Chameleon item check - var/store_items = 1 //Will the closet store items? - var/store_mobs = 1 //Will the closet store mobs? - var/max_closets = 0 //Number of other closets allowed on tile before it won't close. - - var/list/starts_with - -/obj/structure/closet/Initialize() - ..() - // Closets need to come later because of spawners potentially creating objects during init. - return INITIALIZE_HINT_LATELOAD - -/obj/structure/closet/LateInitialize() - . = ..() - if(starts_with) - create_objects_in_loc(src, starts_with) - starts_with = null - - if(!opened) // if closed, any item at the crate's loc is put in the contents - if(istype(loc, /mob/living)) return //VOREStation Edit - No collecting mob organs if spawned inside mob - var/obj/item/I - for(I in src.loc) - if(I.density || I.anchored || I == src) continue - I.forceMove(src) - // adjust locker size to hold all items with 5 units of free store room - var/content_size = 0 - for(I in src.contents) - content_size += CEILING(I.w_class/2, 1) - if(content_size > storage_capacity-5) - storage_capacity = content_size + 5 - update_icon() - -/obj/structure/closet/examine(mob/user) - . = ..() - if(Adjacent(user) || isobserver(user)) - var/content_size = 0 - for(var/obj/item/I in src.contents) - if(!I.anchored) - content_size += CEILING(I.w_class/2, 1) - if(!content_size) - . += "It is empty." - else if(storage_capacity > content_size*4) - . += "It is barely filled." - else if(storage_capacity > content_size*2) - . += "It is less than half full." - else if(storage_capacity > content_size) - . += "There is still some free space." - else - . += "It is full." - - if(!src.opened && isobserver(user)) - . += "It contains: [counting_english_list(contents)]" - -/obj/structure/closet/CanPass(atom/movable/mover, turf/target) - if(wall_mounted) - return TRUE - return ..() - -/obj/structure/closet/proc/can_open() - if(src.sealed) - return 0 - return 1 - -/obj/structure/closet/proc/can_close() - var/closet_count = 0 - for(var/obj/structure/closet/closet in get_turf(src)) - if(closet != src) - if(!closet.anchored) - closet_count ++ - if(closet_count > max_closets) - return 0 - return 1 - -/obj/structure/closet/proc/dump_contents() - //Cham Projector Exception - for(var/obj/effect/dummy/chameleon/AD in src) - AD.forceMove(src.loc) - - for(var/obj/I in src) - I.forceMove(src.loc) - - for(var/mob/M in src) - M.forceMove(src.loc) - if(M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - -/obj/structure/closet/proc/open() - if(src.opened) - return 0 - - if(!src.can_open()) - return 0 - - src.dump_contents() - - src.icon_state = src.icon_opened - src.opened = 1 - playsound(src, open_sound, 15, 1, -3) - if(initial(density)) - density = !density - return 1 - -/obj/structure/closet/proc/close() - if(!src.opened) - return 0 - if(!src.can_close()) - return 0 - - var/stored_units = 0 - - if(store_misc) - stored_units += store_misc(stored_units) - if(store_items) - stored_units += store_items(stored_units) - if(store_mobs) - stored_units += store_mobs(stored_units) - if(max_closets) - stored_units += store_closets(stored_units) - - src.icon_state = src.icon_closed - src.opened = 0 - - playsound(src, close_sound, 15, 1, -3) - if(initial(density)) - density = !density - return 1 - -//Cham Projector Exception -/obj/structure/closet/proc/store_misc(var/stored_units) - var/added_units = 0 - for(var/obj/effect/dummy/chameleon/AD in src.loc) - if((stored_units + added_units) > storage_capacity) - break - AD.forceMove(src) - added_units++ - return added_units - -/obj/structure/closet/proc/store_items(var/stored_units) - var/added_units = 0 - for(var/obj/item/I in src.loc) - var/item_size = CEILING(I.w_class / 2, 1) - if(stored_units + added_units + item_size > storage_capacity) - continue - if(!I.anchored) - I.forceMove(src) - added_units += item_size - return added_units - -/obj/structure/closet/proc/store_mobs(var/stored_units) - var/added_units = 0 - for(var/mob/living/M in src.loc) - if(M.buckled || M.pinned.len) - continue - if(stored_units + added_units + M.mob_size > storage_capacity) - break - if(M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.forceMove(src) - added_units += M.mob_size - return added_units - -/obj/structure/closet/proc/store_closets(var/stored_units) - var/added_units = 0 - for(var/obj/structure/closet/C in src.loc) - if(C == src) //Don't store ourself - continue - if(C.anchored) //Don't worry about anchored things on the same tile - continue - if(C.max_closets) //Prevents recursive storage - continue - if(stored_units + added_units + storage_cost > storage_capacity) - break - C.forceMove(src) - added_units += storage_cost - return added_units - - -/obj/structure/closet/proc/toggle(mob/user as mob) - if(!(src.opened ? src.close() : src.open())) - to_chat(user, "It won't budge!") - return - update_icon() - -// this should probably use dump_contents() -/obj/structure/closet/ex_act(severity) - switch(severity) - if(1) - for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion - A.forceMove(src.loc) - A.ex_act(severity + 1) - qdel(src) - if(2) - if(prob(50)) - for (var/atom/movable/A as mob|obj in src) - A.forceMove(src.loc) - A.ex_act(severity + 1) - qdel(src) - if(3) - if(prob(5)) - for(var/atom/movable/A as mob|obj in src) - A.forceMove(src.loc) - qdel(src) - -/obj/structure/closet/blob_act() - damage(100) - -/obj/structure/closet/proc/damage(var/damage) - health -= damage - if(health <= 0) - for(var/atom/movable/A in src) - A.forceMove(src.loc) - qdel(src) - -/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj) - var/proj_damage = Proj.get_structure_damage() - if(!proj_damage) - return - - ..() - damage(proj_damage) - - return - -/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(src.opened) - if(istype(W, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = W - src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet - return 0 - if(istype(W,/obj/item/tk_grab)) - return 0 - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(!WT.remove_fuel(0,user)) - if(!WT.isOn()) - return - else - to_chat(user, "You need more welding fuel to complete this task.") - return - playsound(src, WT.usesound, 50) - new /obj/item/stack/material/steel(src.loc) - for(var/mob/M in viewers(src)) - M.show_message("\The [src] has been cut apart by [user] with \the [WT].", 3, "You hear welding.", 2) - qdel(src) - return - if(istype(W, /obj/item/weapon/storage/laundry_basket) && W.contents.len) - var/obj/item/weapon/storage/laundry_basket/LB = W - var/turf/T = get_turf(src) - for(var/obj/item/I in LB.contents) - LB.remove_from_storage(I, T) - user.visible_message("[user] empties \the [LB] into \the [src].", \ - "You empty \the [LB] into \the [src].", \ - "You hear rustling of clothes.") - return - if(isrobot(user)) - return - if(W.loc != user) // This should stop mounted modules ending up outside the module. - return - usr.drop_item() - if(W) - W.forceMove(src.loc) - else if(istype(W, /obj/item/weapon/packageWrap)) - return - else if(seal_tool) - if(istype(W, seal_tool)) - var/obj/item/weapon/S = W - if(istype(S, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = S - if(!WT.remove_fuel(0,user)) - if(!WT.isOn()) - return - else - to_chat(user, "You need more welding fuel to complete this task.") - return - if(do_after(user, 20 * S.toolspeed)) - playsound(src, S.usesound, 50) - src.sealed = !src.sealed - src.update_icon() - for(var/mob/M in viewers(src)) - M.show_message("[src] has been [sealed?"sealed":"unsealed"] by [user.name].", 3) - else if(W.is_wrench()) - if(sealed) - if(anchored) - user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") - else - user.visible_message("\The [user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.") - playsound(src, W.usesound, 50) - if(do_after(user, 20 * W.toolspeed)) - if(!src) return - to_chat(user, "You [anchored? "un" : ""]secured \the [src]!") - anchored = !anchored - else - src.attack_hand(user) - return - -/obj/structure/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) - if(istype(O, /obj/screen)) //fix for HUD elements making their way into the world -Pete - return - if(O.loc == user) - return - if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis) - return - if((!( istype(O, /atom/movable) ) || O.anchored || !Adjacent(user) || !Adjacent(O) || !user.Adjacent(O) || user.contents.Find(src))) - return - if(!isturf(user.loc)) // are you in a container/closet/pod/etc? - return - if(!src.opened) - return - if(istype(O, /obj/structure/closet)) - return - step_towards(O, src.loc) - if(user != O) - user.show_viewers("[user] stuffs [O] into [src]!") - src.add_fingerprint(user) - return - -/obj/structure/closet/attack_robot(mob/user) - if(Adjacent(user)) - attack_hand(user) - -/obj/structure/closet/relaymove(mob/user as mob) - if(user.stat || !isturf(src.loc)) - return - - if(!src.open()) - to_chat(user, "It won't budge!") - -/obj/structure/closet/attack_hand(mob/user as mob) - src.add_fingerprint(user) - src.toggle(user) - -// tk grab then use on self -/obj/structure/closet/attack_self_tk(mob/user as mob) - src.add_fingerprint(user) - if(!src.toggle()) - to_chat(usr, "It won't budge!") - -/obj/structure/closet/verb/verb_toggleopen() - set src in oview(1) - set category = "Object" - set name = "Toggle Open" - - if(!usr.canmove || usr.stat || usr.restrained()) - return - - if(ishuman(usr) || isrobot(usr)) - src.add_fingerprint(usr) - src.toggle(usr) - else - to_chat(usr, "This mob type can't use this verb.") - -/obj/structure/closet/update_icon()//Putting the sealed stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot) - overlays.Cut() - if(!opened) - icon_state = icon_closed - if(sealed) - overlays += "welded" - else - icon_state = icon_opened - -/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys") - if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD) - return - user.do_attack_animation(src) - visible_message("[user] [attack_message] the [src]!") - dump_contents() - spawn(1) qdel(src) - return 1 - -/obj/structure/closet/proc/req_breakout() - if(opened) - return 0 //Door's open... wait, why are you in it's contents then? - if(!sealed) - return 0 //closed but not sealed... - return 1 - -/obj/structure/closet/container_resist(var/mob/living/escapee) - if(breakout || !req_breakout()) - return - - escapee.setClickCooldown(100) - - //okay, so the closet is either sealed or locked... resist!!! - to_chat(escapee, "You lean on the back of \the [src] and start pushing the door open. (this will take about [breakout_time] minutes)") - - visible_message("\The [src] begins to shake violently!") - - breakout = 1 //can't think of a better way to do this right now. - for(var/i in 1 to (6*breakout_time * 2)) //minutes * 6 * 5seconds * 2 - if(!do_after(escapee, 50)) //5 seconds - breakout = 0 - return - if(!escapee || escapee.incapacitated() || escapee.loc != src) - breakout = 0 - return //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened - //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... - if(!req_breakout()) - breakout = 0 - return - - playsound(src, breakout_sound, 100, 1) - animate_shake() - add_fingerprint(escapee) - - //Well then break it! - breakout = 0 - to_chat(escapee, "You successfully break out!") - visible_message("\The [escapee] successfully broke out of \the [src]!") - playsound(src, breakout_sound, 100, 1) - break_open() - animate_shake() - -/obj/structure/closet/proc/break_open() - sealed = 0 - update_icon() - //Do this to prevent contents from being opened into nullspace (read: bluespace) - if(istype(loc, /obj/structure/bigDelivery)) - var/obj/structure/bigDelivery/BD = loc - BD.unwrap() - open() - -/obj/structure/closet/proc/animate_shake() - var/init_px = pixel_x - var/shake_dir = pick(-1, 1) - animate(src, transform=turn(matrix(), 8*shake_dir), pixel_x=init_px + 2*shake_dir, time=1) - animate(transform=null, pixel_x=init_px, time=6, easing=ELASTIC_EASING) - -/obj/structure/closet/onDropInto(var/atom/movable/AM) - return - -/obj/structure/closet/AllowDrop() - return TRUE - -/obj/structure/closet/return_air_for_internal_lifeform(var/mob/living/L) - if(src.loc) - if(istype(src.loc, /obj/structure/closet)) - return (loc.return_air_for_internal_lifeform(L)) - return return_air() - -/obj/structure/closet/take_damage(var/damage) - if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD) - return - dump_contents() - spawn(1) qdel(src) - return 1 +// Someone should really merge secure closets and crates into this, which Bay has done already. +/obj/structure/closet + name = "closet" + desc = "It's a basic storage unit." + icon = 'icons/obj/closets/bases/closet.dmi' + icon_state = "base" + density = 1 + w_class = ITEMSIZE_HUGE + layer = UNDER_JUNK_LAYER + + var/opened = 0 + var/sealed = 0 + + var/seal_tool = /obj/item/weapon/weldingtool //Tool used to seal the closet, defaults to welder + var/wall_mounted = 0 //never solid (You can always pass over it) + var/health = 100 + + var/breakout = 0 //if someone is currently breaking out. mutex + var/breakout_time = 2 //2 minutes by default + var/breakout_sound = 'sound/effects/grillehit.ogg' //Sound that plays while breaking out + + var/storage_capacity = 2 * MOB_MEDIUM //This is so that someone can't pack hundreds of items in a locker/crate + //then open it in a populated area to crash clients. + var/storage_cost = 40 //How much space this closet takes up if it's stuffed in another closet + + var/open_sound = 'sound/machines/click.ogg' + var/close_sound = 'sound/machines/click.ogg' + + var/store_misc = 1 //Chameleon item check + var/store_items = 1 //Will the closet store items? + var/store_mobs = 1 //Will the closet store mobs? + var/max_closets = 0 //Number of other closets allowed on tile before it won't close. + + var/list/starts_with // List of type = count (or just type for 1) + + var/closet_appearance = /decl/closet_appearance // The /decl that defines what decals we end up with, that makes our look unique + +/obj/structure/closet/Initialize() + ..() + // Closets need to come later because of spawners potentially creating objects during init. + return INITIALIZE_HINT_LATELOAD + +/obj/structure/closet/LateInitialize() + . = ..() + if(starts_with) + create_objects_in_loc(src, starts_with) + starts_with = null + + if(!opened) // if closed, any item at the crate's loc is put in the contents + if(istype(loc, /mob/living)) return //VOREStation Edit - No collecting mob organs if spawned inside mob + var/obj/item/I + for(I in loc) + if(I.density || I.anchored || I == src) continue + I.forceMove(src) + // adjust locker size to hold all items with 5 units of free store room + var/content_size = 0 + for(I in contents) + content_size += CEILING(I.w_class/2, 1) + if(content_size > storage_capacity-5) + storage_capacity = content_size + 5 + + if(ispath(closet_appearance)) + var/decl/closet_appearance/app = GLOB.closet_appearances[closet_appearance] + if(app) + icon = app.icon + color = null + update_icon() + +/obj/structure/closet/examine(mob/user) + . = ..() + if(Adjacent(user) || isobserver(user)) + var/content_size = 0 + for(var/obj/item/I in contents) + if(!I.anchored) + content_size += CEILING(I.w_class/2, 1) + if(!content_size) + . += "It is empty." + else if(storage_capacity > content_size*4) + . += "It is barely filled." + else if(storage_capacity > content_size*2) + . += "It is less than half full." + else if(storage_capacity > content_size) + . += "There is still some free space." + else + . += "It is full." + + if(!opened && isobserver(user)) + . += "It contains: [counting_english_list(contents)]" + +/obj/structure/closet/CanPass(atom/movable/mover, turf/target) + if(wall_mounted) + return TRUE + return ..() + +/obj/structure/closet/proc/can_open() + if(sealed) + return 0 + return 1 + +/obj/structure/closet/proc/can_close() + var/closet_count = 0 + for(var/obj/structure/closet/closet in get_turf(src)) + if(closet != src) + if(!closet.anchored) + closet_count ++ + if(closet_count > max_closets) + return 0 + return 1 + +/obj/structure/closet/proc/dump_contents() + //Cham Projector Exception + for(var/obj/effect/dummy/chameleon/AD in src) + AD.forceMove(loc) + + for(var/obj/I in src) + I.forceMove(loc) + + for(var/mob/M in src) + M.forceMove(loc) + if(M.client) + M.client.eye = M.client.mob + M.client.perspective = MOB_PERSPECTIVE + +/obj/structure/closet/proc/open() + if(opened) + return 0 + + if(!can_open()) + return 0 + + dump_contents() + + opened = 1 + playsound(src, open_sound, 15, 1, -3) + if(initial(density)) + density = !density + update_icon() + return 1 + +/obj/structure/closet/proc/close() + if(!opened) + return 0 + if(!can_close()) + return 0 + + var/stored_units = 0 + + if(store_misc) + stored_units += store_misc(stored_units) + if(store_items) + stored_units += store_items(stored_units) + if(store_mobs) + stored_units += store_mobs(stored_units) + if(max_closets) + stored_units += store_closets(stored_units) + + opened = 0 + + playsound(src, close_sound, 15, 1, -3) + if(initial(density)) + density = !density + update_icon() + return 1 + +//Cham Projector Exception +/obj/structure/closet/proc/store_misc(var/stored_units) + var/added_units = 0 + for(var/obj/effect/dummy/chameleon/AD in loc) + if((stored_units + added_units) > storage_capacity) + break + AD.forceMove(src) + added_units++ + return added_units + +/obj/structure/closet/proc/store_items(var/stored_units) + var/added_units = 0 + for(var/obj/item/I in loc) + var/item_size = CEILING(I.w_class / 2, 1) + if(stored_units + added_units + item_size > storage_capacity) + continue + if(!I.anchored) + I.forceMove(src) + added_units += item_size + return added_units + +/obj/structure/closet/proc/store_mobs(var/stored_units) + var/added_units = 0 + for(var/mob/living/M in loc) + if(M.buckled || M.pinned.len) + continue + if(stored_units + added_units + M.mob_size > storage_capacity) + break + if(M.client) + M.client.perspective = EYE_PERSPECTIVE + M.client.eye = src + M.forceMove(src) + added_units += M.mob_size + return added_units + +/obj/structure/closet/proc/store_closets(var/stored_units) + var/added_units = 0 + for(var/obj/structure/closet/C in loc) + if(C == src) //Don't store ourself + continue + if(C.anchored) //Don't worry about anchored things on the same tile + continue + if(C.max_closets) //Prevents recursive storage + continue + if(stored_units + added_units + storage_cost > storage_capacity) + break + C.forceMove(src) + added_units += storage_cost + return added_units + + +/obj/structure/closet/proc/toggle(mob/user as mob) + if(!(opened ? close() : open())) + to_chat(user, "It won't budge!") + return + update_icon() + +// this should probably use dump_contents() +/obj/structure/closet/ex_act(severity) + switch(severity) + if(1) + for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion + A.forceMove(loc) + A.ex_act(severity + 1) + qdel(src) + if(2) + if(prob(50)) + for (var/atom/movable/A as mob|obj in src) + A.forceMove(loc) + A.ex_act(severity + 1) + qdel(src) + if(3) + if(prob(5)) + for(var/atom/movable/A as mob|obj in src) + A.forceMove(loc) + qdel(src) + +/obj/structure/closet/blob_act() + damage(100) + +/obj/structure/closet/proc/damage(var/damage) + health -= damage + if(health <= 0) + for(var/atom/movable/A in src) + A.forceMove(loc) + qdel(src) + +/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj) + var/proj_damage = Proj.get_structure_damage() + if(!proj_damage) + return + + ..() + damage(proj_damage) + + return + +/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(opened) + if(istype(W, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = W + MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet + return 0 + if(istype(W,/obj/item/tk_grab)) + return 0 + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.remove_fuel(0,user)) + if(!WT.isOn()) + return + else + to_chat(user, "You need more welding fuel to complete this task.") + return + playsound(src, WT.usesound, 50) + new /obj/item/stack/material/steel(loc) + for(var/mob/M in viewers(src)) + M.show_message("\The [src] has been cut apart by [user] with \the [WT].", 3, "You hear welding.", 2) + qdel(src) + return + if(istype(W, /obj/item/weapon/storage/laundry_basket) && W.contents.len) + var/obj/item/weapon/storage/laundry_basket/LB = W + var/turf/T = get_turf(src) + for(var/obj/item/I in LB.contents) + LB.remove_from_storage(I, T) + user.visible_message("[user] empties \the [LB] into \the [src].", \ + "You empty \the [LB] into \the [src].", \ + "You hear rustling of clothes.") + return + if(isrobot(user)) + return + if(W.loc != user) // This should stop mounted modules ending up outside the module. + return + usr.drop_item() + if(W) + W.forceMove(loc) + else if(istype(W, /obj/item/weapon/packageWrap)) + return + else if(seal_tool) + if(istype(W, seal_tool)) + var/obj/item/weapon/S = W + if(istype(S, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = S + if(!WT.remove_fuel(0,user)) + if(!WT.isOn()) + return + else + to_chat(user, "You need more welding fuel to complete this task.") + return + if(do_after(user, 20 * S.toolspeed)) + playsound(src, S.usesound, 50) + sealed = !sealed + update_icon() + for(var/mob/M in viewers(src)) + M.show_message("[src] has been [sealed?"sealed":"unsealed"] by [user.name].", 3) + else if(W.is_wrench()) + if(sealed) + if(anchored) + user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") + else + user.visible_message("\The [user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.") + playsound(src, W.usesound, 50) + if(do_after(user, 20 * W.toolspeed)) + if(!src) return + to_chat(user, "You [anchored? "un" : ""]secured \the [src]!") + anchored = !anchored + else + attack_hand(user) + return + +/obj/structure/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) + if(istype(O, /obj/screen)) //fix for HUD elements making their way into the world -Pete + return + if(O.loc == user) + return + if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis) + return + if((!( istype(O, /atom/movable) ) || O.anchored || !Adjacent(user) || !Adjacent(O) || !user.Adjacent(O) || user.contents.Find(src))) + return + if(!isturf(user.loc)) // are you in a container/closet/pod/etc? + return + if(!opened) + return + if(istype(O, /obj/structure/closet)) + return + step_towards(O, loc) + if(user != O) + user.show_viewers("[user] stuffs [O] into [src]!") + add_fingerprint(user) + return + +/obj/structure/closet/attack_robot(mob/user) + if(Adjacent(user)) + attack_hand(user) + +/obj/structure/closet/relaymove(mob/user as mob) + if(user.stat || !isturf(loc)) + return + + if(!open()) + to_chat(user, "It won't budge!") + +/obj/structure/closet/attack_hand(mob/user as mob) + add_fingerprint(user) + toggle(user) + +// tk grab then use on self +/obj/structure/closet/attack_self_tk(mob/user as mob) + add_fingerprint(user) + if(!toggle()) + to_chat(usr, "It won't budge!") + +/obj/structure/closet/verb/verb_toggleopen() + set src in oview(1) + set category = "Object" + set name = "Toggle Open" + + if(!usr.canmove || usr.stat || usr.restrained()) + return + + if(ishuman(usr) || isrobot(usr)) + add_fingerprint(usr) + toggle(usr) + else + to_chat(usr, "This mob type can't use this verb.") + +/obj/structure/closet/update_icon() + if(opened) + icon_state = "open" + else + icon_state = "closed_unlocked[sealed ? "_welded" : ""]" + +/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys") + if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD) + return + user.do_attack_animation(src) + visible_message("[user] [attack_message] the [src]!") + dump_contents() + spawn(1) qdel(src) + return 1 + +/obj/structure/closet/proc/req_breakout() + if(opened) + return 0 //Door's open... wait, why are you in it's contents then? + if(!sealed) + return 0 //closed but not sealed... + return 1 + +/obj/structure/closet/container_resist(var/mob/living/escapee) + if(breakout || !req_breakout()) + return + + escapee.setClickCooldown(100) + + //okay, so the closet is either sealed or locked... resist!!! + to_chat(escapee, "You lean on the back of \the [src] and start pushing the door open. (this will take about [breakout_time] minutes)") + + visible_message("\The [src] begins to shake violently!") + + breakout = 1 //can't think of a better way to do this right now. + for(var/i in 1 to (6*breakout_time * 2)) //minutes * 6 * 5seconds * 2 + if(!do_after(escapee, 50)) //5 seconds + breakout = 0 + return + if(!escapee || escapee.incapacitated() || escapee.loc != src) + breakout = 0 + return //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened + //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... + if(!req_breakout()) + breakout = 0 + return + + playsound(src, breakout_sound, 100, 1) + animate_shake() + add_fingerprint(escapee) + + //Well then break it! + breakout = 0 + to_chat(escapee, "You successfully break out!") + visible_message("\The [escapee] successfully broke out of \the [src]!") + playsound(src, breakout_sound, 100, 1) + break_open() + animate_shake() + +/obj/structure/closet/proc/break_open() + sealed = 0 + update_icon() + //Do this to prevent contents from being opened into nullspace (read: bluespace) + if(istype(loc, /obj/structure/bigDelivery)) + var/obj/structure/bigDelivery/BD = loc + BD.unwrap() + open() + +/obj/structure/closet/proc/animate_shake() + var/init_px = pixel_x + var/shake_dir = pick(-1, 1) + animate(src, transform=turn(matrix(), 8*shake_dir), pixel_x=init_px + 2*shake_dir, time=1) + animate(transform=null, pixel_x=init_px, time=6, easing=ELASTIC_EASING) + +/obj/structure/closet/onDropInto(var/atom/movable/AM) + return + +/obj/structure/closet/AllowDrop() + return TRUE + +/obj/structure/closet/return_air_for_internal_lifeform(var/mob/living/L) + if(loc) + if(istype(loc, /obj/structure/closet)) + return (loc.return_air_for_internal_lifeform(L)) + return return_air() + +/obj/structure/closet/take_damage(var/damage) + if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD) + return + dump_contents() + spawn(1) qdel(src) + return 1 + +// Just a generic cabinet for mappers to use +/obj/structure/closet/cabinet + name = "cabinet" + icon = 'icons/obj/closets/bases/cabinet.dmi' + closet_appearance = /decl/closet_appearance/cabinet diff --git a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm new file mode 100644 index 0000000000..2436e6a99f --- /dev/null +++ b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm @@ -0,0 +1,917 @@ +/obj/structure/closet/debug/Initialize(var/maploading, var/newappearance) + closet_appearance = newappearance + . = ..() + +/decl/closet_appearance + var/color = COLOR_GRAY40 + var/decals = list( + "upper_vent", + "lower_vent" + ) + var/list/extra_decals + var/icon/icon + var/base_icon = 'icons/obj/closets/bases/closet.dmi' + var/decal_icon = 'icons/obj/closets/decals/closet.dmi' + var/can_lock = FALSE + +/decl/closet_appearance/New() + // Build our colour and decal lists. + if(LAZYLEN(extra_decals)) + if(!decals) + decals = list() + for(var/thing in extra_decals) + decals[thing] = extra_decals[thing] + for(var/thing in decals) + if(isnull(decals[thing])) + decals[thing] = color + + // Declare storage vars for icons. + var/icon/open_icon + var/icon/closed_emagged_icon + var/icon/closed_emagged_welded_icon + var/icon/closed_locked_icon + var/icon/closed_locked_welded_icon + var/icon/closed_unlocked_icon + var/icon/closed_unlocked_welded_icon + + // Create open icon. + var/icon/new_icon = new + open_icon = icon(base_icon, "base") + open_icon.Blend(icon(base_icon, "open"), ICON_OVERLAY) + open_icon.Blend(color, BLEND_ADD) + open_icon.Blend(icon(base_icon, "interior"), ICON_OVERLAY) + if(decal_icon) + for(var/thing in decals) + var/icon/this_decal_icon = icon(decal_icon, "[thing]_open") + this_decal_icon.Blend(decals[thing], BLEND_ADD) + open_icon.Blend(this_decal_icon, ICON_OVERLAY) + + // Generate basic closed icons. + closed_emagged_icon = icon(base_icon, "base") + if(can_lock) + closed_emagged_icon.Blend(icon(base_icon, "lock"), ICON_OVERLAY) + closed_emagged_icon.Blend(color, BLEND_ADD) + if(decal_icon) + for(var/thing in decals) + var/icon/this_decal_icon = icon(decal_icon, thing) + this_decal_icon.Blend(decals[thing], BLEND_ADD) + closed_emagged_icon.Blend(this_decal_icon, ICON_OVERLAY) + closed_locked_icon = icon(closed_emagged_icon) + closed_unlocked_icon = icon(closed_emagged_icon) + + // Add lock lights. + if(can_lock) + var/icon/light = icon(base_icon, "light") + light.Blend(COLOR_RED, BLEND_ADD) + closed_locked_icon.Blend(light, ICON_OVERLAY) + light = icon(base_icon, "light") + light.Blend(COLOR_LIME, BLEND_ADD) + closed_unlocked_icon.Blend(light, ICON_OVERLAY) + + // Add welded states. + var/icon/welded = icon(base_icon, "welded") + closed_locked_welded_icon = icon(closed_locked_icon) + closed_unlocked_welded_icon = icon(closed_unlocked_icon) + closed_emagged_welded_icon = icon(closed_emagged_icon) + closed_locked_welded_icon.Blend(welded, ICON_OVERLAY) + closed_unlocked_welded_icon.Blend(welded, ICON_OVERLAY) + closed_emagged_welded_icon.Blend(welded, ICON_OVERLAY) + + // Finish up emagged icons. + var/icon/sparks = icon(base_icon, "sparks") + closed_emagged_icon.Blend(sparks, ICON_OVERLAY) + closed_emagged_welded_icon.Blend(sparks, ICON_OVERLAY) + + // Insert our bevy of icons into the final icon file. + new_icon.Insert(open_icon, "open") + new_icon.Insert(closed_emagged_icon, "closed_emagged") + new_icon.Insert(closed_emagged_welded_icon, "closed_emagged_welded") + new_icon.Insert(closed_locked_icon, "closed_locked") + new_icon.Insert(closed_locked_welded_icon, "closed_locked_welded") + new_icon.Insert(closed_unlocked_icon, "closed_unlocked") + new_icon.Insert(closed_unlocked_welded_icon, "closed_unlocked_welded") + + // Set icon! + icon = new_icon + +/decl/closet_appearance/tactical + color = COLOR_RED_GRAY + extra_decals = list( + "inset" = COLOR_GRAY + ) + +/decl/closet_appearance/tactical/alt + color = COLOR_PALE_BTL_GREEN + +/decl/closet_appearance/wardrobe + extra_decals = list( + "stripe_horizontal" = COLOR_PALE_BLUE_GRAY, + "stripe_w" = COLOR_GRAY + ) + +/decl/closet_appearance/wardrobe/mixed + extra_decals = list( + "stripe_horizontal_upper" = COLOR_PURPLE_GRAY, + "stripe_horizontal_lower" = COLOR_PALE_RED_GRAY, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/orange + extra_decals = list( + "stripe_horizontal" = COLOR_PALE_ORANGE, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/green + extra_decals = list( + "stripe_horizontal" = COLOR_GREEN_GRAY, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/grey + extra_decals = list( + "stripe_horizontal" = COLOR_GRAY, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/pink + extra_decals = list( + "stripe_horizontal" = COLOR_PALE_PINK, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/black + extra_decals = list( + "stripe_horizontal" = COLOR_GRAY20, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/yellow + extra_decals = list( + "stripe_horizontal" = COLOR_PALE_YELLOW, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/red + extra_decals = list( + "stripe_horizontal" = COLOR_RED_GRAY, + "stripe_w" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/wardrobe/white + extra_decals = list( + "stripe_horizontal" = COLOR_GRAY, + "stripe_w" = COLOR_OFF_WHITE, + ) + +/decl/closet_appearance/bio + color = COLOR_PALE_ORANGE + decals = list( + "l3" = COLOR_OFF_WHITE, + "stripe_horizontal_narrow" = COLOR_ORANGE + ) + extra_decals = list( + "biohazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/bio/command + extra_decals = list( + "lower_half_solid" = COLOR_BLUE_GRAY, + "biohazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/bio/science + extra_decals = list( + "lower_half_solid" = COLOR_PALE_YELLOW, + "biohazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/bio/security + extra_decals = list( + "lower_half_solid" = COLOR_RED_GRAY, + "biohazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/bio/janitor + color = COLOR_PURPLE + decals = list( + "l3" = COLOR_OFF_WHITE, + ) + extra_decals = list( + "stripe_horizontal_broad" = COLOR_ORANGE, + "biohazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/bio/virology + extra_decals = list( + "lower_half_solid" = COLOR_GREEN_GRAY, + "biohazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet + can_lock = TRUE + +/decl/closet_appearance/secure_closet/engineering + can_lock = TRUE + color = COLOR_YELLOW_GRAY + decals = list( + "upper_side_vent", + "lower_side_vent" + ) + extra_decals = list( + "stripe_vertical_right_partial" = COLOR_BEASTY_BROWN, + "stripe_vertical_left_partial" = COLOR_BEASTY_BROWN, + "eng" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/engineering/electrical + decals = list( + "lower_vent" + ) + extra_decals = list( + "electric" = COLOR_BEASTY_BROWN, + "vertical_stripe_simple" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/engineering/atmos + extra_decals = list( + "stripe_vertical_right_partial" = COLOR_CYAN_BLUE, + "stripe_vertical_mid_partial" = COLOR_CYAN_BLUE, + "atmos" = COLOR_CYAN_BLUE + ) + +/decl/closet_appearance/secure_closet/engineering/welding + decals = list( + "lower_vent" + ) + extra_decals = list( + "fire" = COLOR_BEASTY_BROWN, + "vertical_stripe_simple" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/engineering/tools + can_lock = FALSE + decals = list( + "lower_vent" + ) + extra_decals = list( + "tool" = COLOR_BEASTY_BROWN, + "vertical_stripe_simple" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/engineering/tools/radiation + extra_decals = list( + "l2" = COLOR_BEASTY_BROWN, + "rads" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/engineering/ce + color = COLOR_OFF_WHITE + extra_decals = list( + "stripe_vertical_right_partial" = COLOR_CLOSET_GOLD, + "stripe_vertical_mid_partial" = COLOR_CLOSET_GOLD, + "eng_narrow" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/mining + color = COLOR_WARM_YELLOW + decals = list( + "upper_side_vent", + "lower_side_vent" + ) + extra_decals = list( + "stripe_vertical_mid_partial" = COLOR_BEASTY_BROWN, + "stripe_vertical_left_partial" = COLOR_BEASTY_BROWN, + "mining" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/mining/sec + decals = list( + "stripe_vertical_mid_partial" = COLOR_NT_RED, + "stripe_vertical_left_partial" = COLOR_NT_RED, + "mining" = COLOR_NT_RED + ) + +/decl/closet_appearance/secure_closet/command + color = COLOR_BLUE_GRAY + decals = list( + "lower_holes", + "upper_holes" + ) + extra_decals = list( + "stripe_vertical_left_partial" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_partial" = COLOR_CLOSET_GOLD, + "captain" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/command/hop + color = COLOR_PALE_BLUE_GRAY + extra_decals = list( + "stripe_vertical_mid_partial" = COLOR_CLOSET_GOLD, + "hop" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/cmo + color = COLOR_BABY_BLUE + decals = list( + "upper_side_vent", + "lower_side_vent" + ) + extra_decals = list( + "medcircle" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_partial" = COLOR_CLOSET_GOLD, + "stripe_vertical_mid_partial" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/medical + color = COLOR_OFF_WHITE + decals = null + extra_decals = list( + "circle" = COLOR_BLUE_GRAY, + "stripes_horizontal" = COLOR_BLUE_GRAY + ) + +/decl/closet_appearance/secure_closet/medical/virology + decals = list( + "upper_side_vent", + "lower_side_vent" + ) + extra_decals = list( + "stripe_vertical_right_partial" = COLOR_BOTTLE_GREEN, + "stripe_vertical_mid_partial" = COLOR_BOTTLE_GREEN, + "viro" = COLOR_BOTTLE_GREEN + ) + +/decl/closet_appearance/secure_closet/medical/alt + extra_decals = list( + "medcircle" =COLOR_BLUE_GRAY, + "stripe_vertical_right_partial" = COLOR_BLUE_GRAY, + "stripe_vertical_mid_partial" = COLOR_BLUE_GRAY + ) + +/decl/closet_appearance/secure_closet/cargo + color = COLOR_WARM_YELLOW + decals = list( + "upper_side_vent", + "lower_side_vent" + ) + extra_decals = list( + "cargo" = COLOR_GRAY40, + "stripe_vertical_left_partial" = COLOR_GRAY40, + "stripe_vertical_mid_partial" = COLOR_GRAY40 + ) + +/decl/closet_appearance/secure_closet/cargo/qm + extra_decals = list( + "cargo" = COLOR_BEASTY_BROWN, + "stripe_vertical_left_partial" = COLOR_BEASTY_BROWN, + "stripe_vertical_mid_partial" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/security + color = COLOR_NT_RED + decals = list( + "lower_holes" + ) + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_WARM_YELLOW, + "security" = COLOR_WARM_YELLOW + ) + +/decl/closet_appearance/secure_closet/security/warden + extra_decals = list( + "stripe_vertical_left_full" = COLOR_WARM_YELLOW, + "stripe_vertical_right_full" = COLOR_WARM_YELLOW, + "security" = COLOR_WARM_YELLOW + ) + +/decl/closet_appearance/secure_closet/security/hos + extra_decals = list( + "stripe_vertical_left_full" = COLOR_WARM_YELLOW, + "stripe_vertical_right_full" = COLOR_WARM_YELLOW, + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD, + "security" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/bomb + color = COLOR_DARK_GREEN_GRAY + decals = list( + "l4" = COLOR_OFF_WHITE + ) + extra_decals = list( + "lower_half_solid" = COLOR_GREEN_GRAY + ) + +/decl/closet_appearance/bomb/security + extra_decals = list( + "lower_half_solid" = COLOR_WARM_YELLOW + ) + +/decl/closet_appearance/oxygen + color = COLOR_LIGHT_CYAN + decals = list( + "lower_vent" + ) + extra_decals = list( + "oxy" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/oxygen/fire + color = COLOR_RED_GRAY + extra_decals = list( + "extinguisher" = COLOR_OFF_WHITE, + "vertical_stripe_simple" = COLOR_OFF_WHITE, + ) + +/decl/closet_appearance/alien + color = COLOR_PURPLE + +/decl/closet_appearance/secure_closet/expedition + color = COLOR_BLUE_GRAY + decals = list( + "lower_side_vent" + ) + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_PURPLE, + "security" = COLOR_PURPLE + ) + +/decl/closet_appearance/secure_closet/expedition/pathfinder + extra_decals = list( + "stripe_vertical_left_full" = COLOR_PURPLE, + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_full" = COLOR_PURPLE, + "security" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/expedition/science + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_PURPLE, + "research" = COLOR_PURPLE + ) + +/decl/closet_appearance/secure_closet/rd + color = COLOR_BOTTLE_GREEN + decals = list( + "lower_holes" + ) + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_GOLD, + "stripe_vertical_left_full" = COLOR_PURPLE, + "stripe_vertical_right_full" = COLOR_PURPLE, + "research" = COLOR_GOLD + ) + +/decl/closet_appearance/secure_closet/corporate + color = COLOR_GREEN_GRAY + decals = list( + "lower_holes" + ) + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_GRAY80, + "research" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet/hydroponics + color = COLOR_GREEN_GRAY + decals = list( + "lower_side_vent", + "upper_side_vent" + ) + extra_decals = list( + "stripe_vertical_right_partial" = COLOR_DARK_GREEN_GRAY, + "stripe_vertical_mid_partial" = COLOR_DARK_GREEN_GRAY, + "hydro" = COLOR_DARK_GREEN_GRAY + ) + +/decl/closet_appearance/secure_closet/chaplain + decals = list( + "lower_side_vent", + "upper_side_vent" + ) + extra_decals = list( + "stripe_vertical_right_full" = COLOR_GRAY20, + "stripe_vertical_mid_full" = COLOR_GRAY20 + ) + +/decl/closet_appearance/secure_closet/sol + color = COLOR_BABY_BLUE + decals = list( + "lower_side_vent" + ) + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_BOTTLE_GREEN, + "security" = COLOR_BOTTLE_GREEN + ) + +/decl/closet_appearance/secure_closet/sol/two + extra_decals = list( + "stripe_vertical_left_full" = COLOR_BOTTLE_GREEN, + "stripe_vertical_right_full" = COLOR_BOTTLE_GREEN, + "security" = COLOR_BOTTLE_GREEN + ) + +/decl/closet_appearance/secure_closet/sol/two/dark + color = COLOR_DARK_BLUE_GRAY + +// Crates. +/decl/closet_appearance/crate + decals = null + extra_decals = null + base_icon = 'icons/obj/closets/bases/crate.dmi' + decal_icon = 'icons/obj/closets/decals/crate.dmi' + color = COLOR_GRAY40 + +/decl/closet_appearance/crate/plastic + color = COLOR_GRAY80 + +/decl/closet_appearance/crate/oxygen + color = COLOR_CYAN_BLUE + decals = list( + "crate_stripes" = COLOR_OFF_WHITE, + "crate_oxy" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/medical + color = COLOR_GRAY80 + decals = list( + "crate_stripe" = COLOR_WARM_YELLOW, + "crate_cross" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/medical/trauma + decals = list( + "crate_stripe" = COLOR_NT_RED, + "crate_cross" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/medical/oxygen + decals = list( + "crate_stripe" = COLOR_BABY_BLUE, + "crate_cross" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/medical/toxins + decals = list( + "crate_stripe" = COLOR_GREEN_GRAY, + "crate_cross" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/hydroponics + decals = list( + "crate_stripe_left" = COLOR_GREEN_GRAY, + "crate_stripe_right" = COLOR_GREEN_GRAY + ) + +/decl/closet_appearance/crate/radiation + color = COLOR_BROWN_ORANGE + extra_decals = list( + "crate_radiation_left" = COLOR_WARM_YELLOW, + "crate_radiation_right" = COLOR_WARM_YELLOW, + "lid_stripes" = COLOR_NT_RED + ) + +/decl/closet_appearance/crate/freezer + color = COLOR_BABY_BLUE + +/decl/closet_appearance/crate/secure + can_lock = TRUE + +/decl/closet_appearance/crate/secure/hazard + color = COLOR_NT_RED + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_OFF_WHITE, + "crate_stripe_right" = COLOR_OFF_WHITE, + "toxin" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/weapon + color = COLOR_GREEN_GRAY + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_OFF_WHITE, + "crate_stripe_right" = COLOR_OFF_WHITE, + "hazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/hydroponics + extra_decals = list( + "crate_stripe_left" = COLOR_GREEN_GRAY, + "crate_stripe_right" = COLOR_GREEN_GRAY + ) + +/decl/closet_appearance/crate/secure/shuttle + extra_decals = list( + "crate_stripe_left" = COLOR_YELLOW_GRAY, + "crate_stripe_right" = COLOR_YELLOW_GRAY + ) + +// Large crates. +/decl/closet_appearance/large_crate + base_icon = 'icons/obj/closets/bases/large_crate.dmi' + decal_icon = 'icons/obj/closets/decals/large_crate.dmi' + decals = null + extra_decals = null + +/decl/closet_appearance/large_crate/critter + decals = list( + "airholes" + ) + extra_decals = list( + "oxy" = COLOR_WHITE + ) + +/decl/closet_appearance/large_crate/hydroponics + extra_decals = list( + "stripes" = COLOR_GREEN_GRAY, + "text" = COLOR_GREEN_GRAY + ) + +/decl/closet_appearance/large_crate/secure + can_lock = TRUE + +/decl/closet_appearance/large_crate/secure/hazard + color = COLOR_NT_RED + decals = list( + "crate_bracing" + ) + extra_decals = list( + "marking" = COLOR_OFF_WHITE, + "text_upper" = COLOR_OFF_WHITE + ) + +// Cabinets. +/decl/closet_appearance/cabinet + base_icon = 'icons/obj/closets/bases/cabinet.dmi' + decal_icon = null + color = WOOD_COLOR_RICH + decals = null + extra_decals = null + +/decl/closet_appearance/cabinet/secure + can_lock = TRUE + +// Wall lockers. +/decl/closet_appearance/wall + base_icon = 'icons/obj/closets/bases/wall.dmi' + decal_icon = 'icons/obj/closets/decals/wall.dmi' + decals = list( + "vent" + ) + extra_decals = null + +/decl/closet_appearance/wall/emergency + decals = null + extra_decals = list( + "glass" = COLOR_WHITE + ) + +/decl/closet_appearance/wall/medical + decals = null + color = COLOR_OFF_WHITE + extra_decals = list( + "stripe_outer" = COLOR_BLUE_GRAY, + "stripe_inner" = COLOR_OFF_WHITE, + "cross" = COLOR_BLUE_GRAY + ) + +/decl/closet_appearance/wall/shipping + color = COLOR_WARM_YELLOW + decals = null + extra_decals = list( + "stripes" = COLOR_BEASTY_BROWN, + "glass" = COLOR_WHITE + ) + +/decl/closet_appearance/wall/hydrant + color = COLOR_NT_RED + decals = null + extra_decals = list( + "stripes" = COLOR_OFF_WHITE, + "glass" = COLOR_WHITE + ) + +// Carts +/decl/closet_appearance/cart + color = COLOR_GRAY20 + base_icon = 'icons/obj/closets/bases/cart.dmi' + decal_icon = 'icons/obj/closets/decals/cart.dmi' + decals = null + extra_decals = null + +/decl/closet_appearance/cart/trash + color = COLOR_BOTTLE_GREEN + +/decl/closet_appearance/cart/biohazard + can_lock = TRUE + decals = list( + "biohazard" = COLOR_GRAY80 + ) + +/decl/closet_appearance/cart/biohazard/alt + color = COLOR_SURGERY_BLUE + decals = list( + "biohazard" = COLOR_RED_GRAY + ) + +// From the Torch +/decl/closet_appearance/secure_closet/exploration // These three renamed since Polaris actually uses these + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_PURPLE, + "exped" = COLOR_PURPLE + ) + +/decl/closet_appearance/secure_closet/exploration/pilot + extra_decals = list( + "stripe_vertical_left_full" = COLOR_PURPLE, + "stripe_vertical_right_full" = COLOR_PURPLE, + "exped" = COLOR_PURPLE + ) + +/decl/closet_appearance/secure_closet/exploration/pathfinder + extra_decals = list( + "stripe_vertical_left_full" = COLOR_PURPLE, + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_full" = COLOR_PURPLE, + "exped" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/command + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/command/bo + extra_decals = list( + "stripe_vertical_left_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_full" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/command/xo + extra_decals = list( + "stripe_vertical_left_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_full" = COLOR_CLOSET_GOLD, + "command" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/command/co + extra_decals = list( + "stripe_vertical_left_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_mid_full" = COLOR_OFF_WHITE, + "stripe_vertical_right_full" = COLOR_CLOSET_GOLD, + "command" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet/torch/engineering + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_WARM_YELLOW, + "exped" = COLOR_WARM_YELLOW + ) + +/decl/closet_appearance/secure_closet/torch/engineering/atmos + extra_decals = list( + "stripe_vertical_right_full" = COLOR_WARM_YELLOW, + "stripe_vertical_mid_full" = COLOR_CYAN_BLUE, + "atmos_upper" = COLOR_WARM_YELLOW + ) + +/decl/closet_appearance/secure_closet/torch/engineering/se + extra_decals = list( + "stripe_vertical_left_full" = COLOR_WARM_YELLOW, + "stripe_vertical_right_full" = COLOR_WARM_YELLOW, + "exped" = COLOR_WARM_YELLOW + ) + +/decl/closet_appearance/secure_closet/torch/engineering/ce + extra_decals = list( + "stripe_vertical_left_full" = COLOR_WARM_YELLOW, + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_full" = COLOR_WARM_YELLOW, + "exped" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/medical + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_BABY_BLUE, + "medical" = COLOR_BABY_BLUE + ) + +/decl/closet_appearance/secure_closet/torch/medical/physician + extra_decals = list( + "stripe_vertical_left_full" = COLOR_BABY_BLUE, + "stripe_vertical_right_full" = COLOR_BABY_BLUE, + "medical" = COLOR_BABY_BLUE + ) + +/decl/closet_appearance/secure_closet/torch/medical/cmo + extra_decals = list( + "stripe_vertical_left_full" = COLOR_BABY_BLUE, + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_full" = COLOR_BABY_BLUE, + "medical" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/sol + color = COLOR_BABY_BLUE + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet/torch/sol/rep + color = COLOR_BABY_BLUE + extra_decals = list( + "stripe_vertical_left_full" = COLOR_OFF_WHITE, + "stripe_vertical_right_full" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet/torch/corporate + color = COLOR_BOTTLE_GREEN + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet/torch/corporate/liaison + extra_decals = list( + "stripe_vertical_left_full" = COLOR_OFF_WHITE, + "stripe_vertical_right_full" = COLOR_OFF_WHITE, + "command" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet/torch/science + extra_decals = list( + "stripe_vertical_left_full" = COLOR_PURPLE_GRAY, + "stripe_vertical_right_full" = COLOR_PURPLE_GRAY, + "research" = COLOR_PURPLE_GRAY + ) + +/decl/closet_appearance/secure_closet/torch/science/cso + color = COLOR_BOTTLE_GREEN + decals = list( + "lower_holes" + ) + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_GOLD, + "stripe_vertical_left_full" = COLOR_PURPLE, + "stripe_vertical_right_full" = COLOR_PURPLE, + "research" = COLOR_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/security + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_NT_RED, + "security" = COLOR_NT_RED + ) + +/decl/closet_appearance/secure_closet/torch/security/forensics + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_NT_RED, + "forensics" = COLOR_NT_RED + ) + +/decl/closet_appearance/secure_closet/torch/security/warden + extra_decals = list( + "stripe_vertical_left_full" = COLOR_NT_RED, + "stripe_vertical_right_full" = COLOR_NT_RED, + "security" = COLOR_NT_RED + ) + +/decl/closet_appearance/secure_closet/torch/security/hos + extra_decals = list( + "stripe_vertical_left_full" = COLOR_NT_RED, + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_right_full" = COLOR_NT_RED, + "security" = COLOR_CLOSET_GOLD + ) + +/decl/closet_appearance/secure_closet/torch/hydroponics + extra_decals = list( + "stripe_vertical_right_partial" = COLOR_GREEN_GRAY, + "stripe_vertical_mid_partial" = COLOR_GREEN_GRAY, + "hydro" = COLOR_GREEN_GRAY + ) + +/decl/closet_appearance/secure_closet/torch/cargo + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_BEASTY_BROWN, + "cargo_upper" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/torch/cargo/worker + extra_decals = list( + "stripe_vertical_left_full" = COLOR_BEASTY_BROWN, + "stripe_vertical_right_full" = COLOR_BEASTY_BROWN, + "cargo_upper" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/torch/cargo/deck_officer + extra_decals = list( + "stripe_vertical_mid_full" = COLOR_CLOSET_GOLD, + "stripe_vertical_left_full" = COLOR_BEASTY_BROWN, + "stripe_vertical_right_full" = COLOR_BEASTY_BROWN, + "cargo_upper" = COLOR_CLOSET_GOLD + ) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm new file mode 100644 index 0000000000..73b009a1da --- /dev/null +++ b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm @@ -0,0 +1,38 @@ +/decl/closet_appearance/wall/autolok + color = COLOR_GRAY20 + decals = null + extra_decals = list( + "stripe_outer" = COLOR_BLUE_GRAY, + "stripe_inner" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/secure_closet/talon + color = COLOR_GRAY80 + decals = list( + "lower_holes" + ) + +/decl/closet_appearance/secure_closet/talon/engineer + extra_decals = list( + "stripes_horizontal" = COLOR_BEASTY_BROWN + ) + +/decl/closet_appearance/secure_closet/talon/guard + extra_decals = list( + "stripes_horizontal" = COLOR_NT_RED + ) + +/decl/closet_appearance/secure_closet/talon/pilot + extra_decals = list( + "stripes_horizontal" = COLOR_PURPLE + ) + +/decl/closet_appearance/secure_closet/talon/doctor + extra_decals = list( + "stripes_horizontal" = COLOR_SKY_BLUE + ) + +/decl/closet_appearance/secure_closet/talon/captain + extra_decals = list( + "stripes_horizontal" = COLOR_GOLD + ) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index 7ea80de7ff..14e1c276b2 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -1,30 +1,25 @@ /obj/structure/closet/coffin name = "coffin" desc = "It's a burial receptacle for the dearly departed." - icon_state = "coffin" - icon_closed = "coffin" - icon_opened = "coffin_open" + icon = 'icons/obj/closets/coffin.dmi' + + icon_state = "closed_unlocked" seal_tool = /obj/item/weapon/tool/screwdriver breakout_sound = 'sound/weapons/tablehit1.ogg' - -/obj/structure/closet/coffin/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened + closet_appearance = null // Special icon for us /* Graves */ /obj/structure/closet/grave name = "grave" desc = "Dirt." - icon_state = "grave" - icon_closed = "grave" - icon_opened = "grave_open" + icon = 'icons/obj/closets/grave.dmi' + icon_state = "closed_unlocked" seal_tool = null breakout_sound = 'sound/weapons/thudswoosh.ogg' anchored = 1 max_closets = 1 opened = 1 + closet_appearance = null // Special icon for us /obj/structure/closet/grave/attack_hand(mob/user as mob) if(opened) diff --git a/code/game/objects/structures/crates_lockers/closets/crittercrate.dm b/code/game/objects/structures/crates_lockers/closets/crittercrate.dm index 3546cd52e7..72a9188d12 100644 --- a/code/game/objects/structures/crates_lockers/closets/crittercrate.dm +++ b/code/game/objects/structures/crates_lockers/closets/crittercrate.dm @@ -1,6 +1,4 @@ /obj/structure/closet/crate/critter name = "critter crate" desc = "A crate which can sustain life for a while." - icon_state = "critter" - icon_opened = "critteropen" - icon_closed = "critter" + closet_appearance = /decl/closet_appearance/large_crate/critter \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/egg_vr.dm b/code/game/objects/structures/crates_lockers/closets/egg_vr.dm index 1a1bd40e2f..3efa8ded8b 100644 --- a/code/game/objects/structures/crates_lockers/closets/egg_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/egg_vr.dm @@ -4,15 +4,24 @@ icon = 'icons/obj/egg_vr.dmi' icon_state = "egg" density = 0 //Just in case there's a lot of eggs, so it doesn't block hallways/areas. - icon_closed = "egg" - icon_opened = "egg_open" - icon_locked = "egg" + var/icon_closed = "egg" + var/icon_opened = "egg_open" + var/icon_locked = "egg" open_sound = 'sound/vore/schlorp.ogg' close_sound = 'sound/vore/schlorp.ogg' opened = 0 sealed = 0 //Don't touch this. health = 100 +/obj/structure/closet/secure_closet/egg/update_icon() + if(opened) + icon_state = icon_opened + else + if(sealed) + icon_state = icon_locked + else + icon_state = icon_closed + /obj/structure/closet/secure_closet/egg/attackby(obj/item/weapon/W, mob/user as mob) //This also prevents crew from welding the eggs and making them unable to be opened. if(istype(W, /obj/item/weapon/weldingtool)) src.dump_contents() diff --git a/code/game/objects/structures/crates_lockers/closets/fitness.dm b/code/game/objects/structures/crates_lockers/closets/fitness.dm index c261d8d2f6..a3515fd3fd 100644 --- a/code/game/objects/structures/crates_lockers/closets/fitness.dm +++ b/code/game/objects/structures/crates_lockers/closets/fitness.dm @@ -1,8 +1,7 @@ /obj/structure/closet/athletic_mixed name = "athletic wardrobe" desc = "It's a storage unit for athletic wear." - icon_state = "mixed" - icon_closed = "mixed" + closet_appearance = /decl/closet_appearance/wardrobe/mixed starts_with = list( /obj/item/clothing/under/shorts/grey, @@ -44,8 +43,7 @@ /obj/structure/closet/lasertag/red name = "red laser tag equipment" desc = "It's a storage unit for laser tag equipment." - icon_state = "red" - icon_closed = "red" + closet_appearance = /decl/closet_appearance/wardrobe/red starts_with = list( /obj/item/weapon/gun/energy/lasertag/red = 5, @@ -55,8 +53,7 @@ /obj/structure/closet/lasertag/blue name = "blue laser tag equipment" desc = "It's a storage unit for laser tag equipment." - icon_state = "blue" - icon_closed = "blue" + closet_appearance = /decl/closet_appearance/wardrobe starts_with = list( /obj/item/weapon/gun/energy/lasertag/blue = 5, diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index f567cdbd3a..2ca6dc3c6e 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -1,38 +1,23 @@ /obj/structure/closet/cabinet name = "cabinet" desc = "Old will forever be in fashion." - icon_state = "cabinet_closed" - icon_closed = "cabinet_closed" - icon_opened = "cabinet_open" - -/obj/structure/closet/cabinet/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened + closet_appearance = /decl/closet_appearance/cabinet /obj/structure/closet/acloset name = "strange closet" desc = "It looks alien!" - icon_state = "acloset" - icon_closed = "acloset" - icon_opened = "aclosetopen" - + closet_appearance = /decl/closet_appearance/alien /obj/structure/closet/gimmick name = "administrative supply closet" desc = "It's a storage unit for things that have no right being here." - icon_state = "syndicate1" - icon_closed = "syndicate1" - icon_opened = "syndicate1open" + closet_appearance = /decl/closet_appearance/tactical anchored = 0 /obj/structure/closet/gimmick/russian name = "russian surplus closet" desc = "It's a storage unit for Russian standard-issue surplus." - icon_state = "syndicate1" - icon_closed = "syndicate1" - icon_opened = "syndicate1open" + closet_appearance = /decl/closet_appearance/tactical starts_with = list( /obj/item/clothing/head/ushanka = 5, @@ -42,9 +27,7 @@ /obj/structure/closet/gimmick/tacticool name = "tacticool gear closet" desc = "It's a storage unit for Tacticool gear." - icon_state = "syndicate1" - icon_closed = "syndicate1" - icon_opened = "syndicate1open" + closet_appearance = /decl/closet_appearance/tactical starts_with = list( /obj/item/clothing/glasses/eyepatch, @@ -60,9 +43,7 @@ /obj/structure/closet/thunderdome name = "\improper Thunderdome closet" desc = "Everything you need!" - icon_state = "syndicate" - icon_closed = "syndicate" - icon_opened = "syndicateopen" + closet_appearance = /decl/closet_appearance/tactical/alt anchored = 1 /obj/structure/closet/thunderdome/tdred @@ -78,9 +59,7 @@ /obj/structure/closet/thunderdome/tdgreen name = "green-team Thunderdome closet" - icon_state = "syndicate1" - icon_closed = "syndicate1" - icon_opened = "syndicate1open" + closet_appearance = /decl/closet_appearance/tactical starts_with = list( /obj/item/clothing/suit/armor/tdome/green = 3, @@ -93,8 +72,6 @@ /obj/structure/closet/alien name = "alien container" desc = "Contains secrets of the universe." - icon = 'icons/obj/abductor.dmi' - icon_state = "alien_locker" - icon_closed = "alien_locker" - icon_opened = "alien_locker_open" + icon = 'icons/obj/closets/abductor.dmi' anchored = TRUE + closet_appearance = null // special icons diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index cfed9c545f..642935973d 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -11,8 +11,7 @@ /obj/structure/closet/gmcloset name = "formal closet" desc = "It's a storage unit for formal clothing." - icon_state = "black" - icon_closed = "black" + closet_appearance = /decl/closet_appearance/wardrobe/black starts_with = list( /obj/item/clothing/head/that = 2, @@ -37,8 +36,7 @@ /obj/structure/closet/chefcloset name = "chef's closet" desc = "It's a storage unit for foodservice garments." - icon_state = "black" - icon_closed = "black" + closet_appearance = /decl/closet_appearance/wardrobe/black starts_with = list( /obj/item/clothing/under/sundress, @@ -55,8 +53,7 @@ /obj/structure/closet/jcloset name = "custodial closet" desc = "It's a storage unit for janitorial clothes and gear." - icon_state = "mixed" - icon_closed = "mixed" + closet_appearance = /decl/closet_appearance/wardrobe/mixed starts_with = list( /obj/item/clothing/under/rank/janitor, @@ -79,8 +76,7 @@ /obj/structure/closet/lawcloset name = "legal closet" desc = "It's a storage unit for courtroom apparel and items." - icon_state = "blue" - icon_closed = "blue" + closet_appearance = /decl/closet_appearance/wardrobe starts_with = list( /obj/item/clothing/under/lawyer/female = 2, diff --git a/code/game/objects/structures/crates_lockers/closets/l3closet.dm b/code/game/objects/structures/crates_lockers/closets/l3closet.dm index 695b5575d2..66af8329f5 100644 --- a/code/game/objects/structures/crates_lockers/closets/l3closet.dm +++ b/code/game/objects/structures/crates_lockers/closets/l3closet.dm @@ -1,14 +1,10 @@ /obj/structure/closet/l3closet name = "level-3 biohazard suit closet" desc = "It's a storage unit for level-3 biohazard gear." - icon_state = "bio" - icon_closed = "bio" - icon_opened = "bioopen" + closet_appearance = /decl/closet_appearance/bio /obj/structure/closet/l3closet/general - icon_state = "bio_general" - icon_closed = "bio_general" - icon_opened = "bio_generalopen" + closet_appearance = /decl/closet_appearance/bio starts_with = list( /obj/item/clothing/suit/bio_suit/general, @@ -16,9 +12,7 @@ /obj/structure/closet/l3closet/virology - icon_state = "bio_virology" - icon_closed = "bio_virology" - icon_opened = "bio_virologyopen" + closet_appearance = /decl/closet_appearance/bio/virology starts_with = list( /obj/item/clothing/suit/bio_suit/virology, @@ -28,9 +22,7 @@ /obj/structure/closet/l3closet/security - icon_state = "bio_security" - icon_closed = "bio_security" - icon_opened = "bio_securityopen" + closet_appearance = /decl/closet_appearance/bio/security starts_with = list( /obj/item/clothing/suit/bio_suit/security, @@ -38,9 +30,7 @@ ///obj/item/weapon/gun/energy/taser/xeno/sec) //VOREStation Removal /obj/structure/closet/l3closet/janitor - icon_state = "bio_janitor" - icon_closed = "bio_janitor" - icon_opened = "bio_janitoropen" + closet_appearance = /decl/closet_appearance/bio/janitor starts_with = list( /obj/item/clothing/suit/bio_suit/janitor = 2, @@ -50,9 +40,7 @@ /obj/structure/closet/l3closet/scientist - icon_state = "bio_scientist" - icon_closed = "bio_scientist" - icon_opened = "bio_scientistopen" + closet_appearance = /decl/closet_appearance/bio/science starts_with = list( /obj/item/clothing/suit/bio_suit/scientist, @@ -65,9 +53,7 @@ /obj/structure/closet/l3closet/medical - icon_state = "bio_scientist" - icon_closed = "bio_scientist" - icon_opened = "bio_scientistopen" + closet_appearance = /decl/closet_appearance/bio/science starts_with = list( /obj/item/clothing/suit/bio_suit/general = 3, diff --git a/code/game/objects/structures/crates_lockers/closets/l3closet_vr.dm b/code/game/objects/structures/crates_lockers/closets/l3closet_vr.dm deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/code/game/objects/structures/crates_lockers/closets/malfunction.dm b/code/game/objects/structures/crates_lockers/closets/malfunction.dm index 40b6ec68b9..feaa63e39f 100644 --- a/code/game/objects/structures/crates_lockers/closets/malfunction.dm +++ b/code/game/objects/structures/crates_lockers/closets/malfunction.dm @@ -1,8 +1,6 @@ /obj/structure/closet/malf/suits desc = "It's a storage unit for operational gear." - icon_state = "syndicate" - icon_closed = "syndicate" - icon_opened = "syndicateopen" + closet_appearance = /decl/closet_appearance/tactical starts_with = list( /obj/item/weapon/tank/jetpack/void, diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm index 851da13468..99f486cb7c 100644 --- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -37,14 +37,8 @@ /obj/structure/closet/secure_closet/explorer name = "explorer locker" - icon = 'icons/obj/closet_vr.dmi' - icon_state = "secureexp1" - icon_closed = "secureexp" - icon_locked = "secureexp1" - icon_opened = "secureexpopen" - icon_broken = "secureexpbroken" - icon_off = "secureexpoff" req_access = list(access_explorer) + closet_appearance = /decl/closet_appearance/secure_closet/exploration starts_with = list( /obj/item/clothing/under/explorer, @@ -81,13 +75,8 @@ /obj/structure/closet/secure_closet/sar name = "field medic locker" desc = "Supplies for a wilderness first responder." - icon_state = "medical1" - icon_closed = "medical" - icon_locked = "medical1" - icon_opened = "medicalopen" - icon_broken = "medicalbroken" - icon_off = "medicaloff" req_access = list(access_medical_equip) + closet_appearance = /decl/closet_appearance/secure_closet/medical starts_with = list( /obj/item/weapon/storage/backpack/dufflebag/emt, @@ -128,6 +117,7 @@ /obj/structure/closet/secure_closet/pilot name = "pilot locker" req_access = list(access_pilot) + closet_appearance = /decl/closet_appearance/secure_closet/exploration/pilot starts_with = list( /obj/item/weapon/storage/backpack/parachute, @@ -162,14 +152,8 @@ /obj/structure/closet/secure_closet/pathfinder name = "pathfinder locker" - icon = 'icons/obj/closet_vr.dmi' - icon_state = "secureexp1" - icon_closed = "secureexp" - icon_locked = "secureexp1" - icon_opened = "secureexpopen" - icon_broken = "secureexpbroken" - icon_off = "secureexpoff" req_access = list(access_gateway) + closet_appearance = /decl/closet_appearance/secure_closet/exploration/pathfinder starts_with = list( /obj/item/clothing/under/explorer, @@ -217,3 +201,19 @@ /obj/item/seeds/kudzuseed, /obj/item/seeds/libertymycelium, /obj/item/seeds/reishimycelium) + +/obj/structure/closet/autolok_wall + name = "autolok suit storage" + desc = "It's wall-mounted storage unit for an AutoLok suit." + icon = 'icons/obj/closets/bases/wall.dmi' + closet_appearance = /decl/closet_appearance/wall/autolok + anchored = 1 + density = 0 + wall_mounted = 1 + store_mobs = 0 + + starts_with = list( + /obj/item/clothing/suit/space/void/autolok, + /obj/item/weapon/tank/emergency/oxygen/double, + /obj/item/device/suit_cooling_unit/emergency + ) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index 516d2a645e..52b949f809 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -1,24 +1,7 @@ /obj/structure/closet/secure_closet/bar name = "booze closet" req_access = list(access_bar) - icon_state = "cabinetdetective_locked" - icon_closed = "cabinetdetective" - icon_locked = "cabinetdetective_locked" - icon_opened = "cabinetdetective_open" - icon_broken = "cabinetdetective_broken" - icon_off = "cabinetdetective_broken" + closet_appearance = /decl/closet_appearance/cabinet/secure starts_with = list( /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer = 10) - -/obj/structure/closet/secure_closet/bar/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index d7b6ed4e80..0196736d8d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -1,12 +1,7 @@ /obj/structure/closet/secure_closet/cargotech name = "cargo technician's locker" req_access = list(access_cargo) - icon_state = "securecargo1" - icon_closed = "securecargo" - icon_locked = "securecargo1" - icon_opened = "securecargoopen" - icon_broken = "securecargobroken" - icon_off = "securecargooff" + closet_appearance = /decl/closet_appearance/secure_closet/cargo starts_with = list( /obj/item/clothing/under/rank/cargotech, @@ -34,12 +29,7 @@ /obj/structure/closet/secure_closet/quartermaster name = "quartermaster's locker" req_access = list(access_qm) - icon_state = "secureqm1" - icon_closed = "secureqm" - icon_locked = "secureqm1" - icon_opened = "secureqmopen" - icon_broken = "secureqmbroken" - icon_off = "secureqmoff" + closet_appearance = /decl/closet_appearance/secure_closet/cargo/qm starts_with = list( /obj/item/clothing/under/rank/cargo, @@ -70,13 +60,8 @@ /obj/structure/closet/secure_closet/miner name = "miner's equipment" - icon_state = "miningsec1" - icon_closed = "miningsec" - icon_locked = "miningsec1" - icon_opened = "miningsecopen" - icon_broken = "miningsecbroken" - icon_off = "miningsecoff" req_access = list(access_mining) + closet_appearance = /decl/closet_appearance/secure_closet/mining starts_with = list( /obj/item/device/radio/headset/headset_mine, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 4710efdbd4..feef58e05a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -1,12 +1,7 @@ /obj/structure/closet/secure_closet/engineering_chief name = "chief engineer's locker" - icon_state = "securece1" - icon_closed = "securece" - icon_locked = "securece1" - icon_opened = "secureceopen" - icon_broken = "securecebroken" - icon_off = "secureceoff" req_access = list(access_ce) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/ce starts_with = list( /obj/item/clothing/accessory/storage/brown_vest, @@ -47,13 +42,8 @@ /obj/structure/closet/secure_closet/engineering_electrical name = "electrical supplies" - icon_state = "secureengelec1" - icon_closed = "secureengelec" - icon_locked = "secureengelec1" - icon_opened = "toolclosetopen" - icon_broken = "secureengelecbroken" - icon_off = "secureengelecoff" req_access = list(access_engine_equip) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/electrical starts_with = list( /obj/item/clothing/gloves/yellow = 2, @@ -64,13 +54,8 @@ /obj/structure/closet/secure_closet/engineering_welding name = "welding supplies" - icon_state = "secureengweld1" - icon_closed = "secureengweld" - icon_locked = "secureengweld1" - icon_opened = "toolclosetopen" - icon_broken = "secureengweldbroken" - icon_off = "secureengweldoff" req_access = list(access_construction) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/welding starts_with = list( /obj/item/clothing/head/welding = 3, @@ -80,13 +65,8 @@ /obj/structure/closet/secure_closet/engineering_personal name = "engineer's locker" - icon_state = "secureeng1" - icon_closed = "secureeng" - icon_locked = "secureeng1" - icon_opened = "secureengopen" - icon_broken = "secureengbroken" - icon_off = "secureengoff" req_access = list(access_engine_equip) + closet_appearance = /decl/closet_appearance/secure_closet/engineering starts_with = list( /obj/item/clothing/accessory/storage/brown_vest, @@ -116,13 +96,8 @@ /obj/structure/closet/secure_closet/atmos_personal name = "technician's locker" - icon_state = "secureatm1" - icon_closed = "secureatm" - icon_locked = "secureatm1" - icon_opened = "secureatmopen" - icon_broken = "secureatmbroken" - icon_off = "secureatmoff" req_access = list(access_atmospherics) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/atmos starts_with = list( /obj/item/clothing/accessory/storage/brown_vest, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index f6ca40fe2b..afb8b1c3ba 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -1,20 +1,6 @@ -/obj/structure/closet/secure_closet/freezer - -/obj/structure/closet/secure_closet/freezer/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened - /obj/structure/closet/secure_closet/freezer/kitchen name = "kitchen cabinet" - req_access = list() + req_access = list(access_kitchen) starts_with = list( /obj/item/weapon/reagent_containers/food/condiment/flour = 7, @@ -26,12 +12,8 @@ /obj/structure/closet/secure_closet/freezer/meat name = "meat fridge" - icon_state = "fridge1" - icon_closed = "fridge" - icon_locked = "fridge1" - icon_opened = "fridgeopen" - icon_broken = "fridgebroken" - icon_off = "fridge1" + icon = 'icons/obj/closets/fridge.dmi' + closet_appearance = null starts_with = list( /obj/item/weapon/reagent_containers/food/snacks/meat/monkey = 10) @@ -39,12 +21,8 @@ /obj/structure/closet/secure_closet/freezer/fridge name = "refrigerator" - icon_state = "fridge1" - icon_closed = "fridge" - icon_locked = "fridge1" - icon_opened = "fridgeopen" - icon_broken = "fridgebroken" - icon_off = "fridge1" + icon = 'icons/obj/closets/fridge.dmi' + closet_appearance = null starts_with = list( /obj/item/weapon/reagent_containers/food/drinks/milk = 6, @@ -55,12 +33,8 @@ /obj/structure/closet/secure_closet/freezer/money name = "freezer" - icon_state = "fridge1" - icon_closed = "fridge" - icon_locked = "fridge1" - icon_opened = "fridgeopen" - icon_broken = "fridgebroken" - icon_off = "fridge1" + icon = 'icons/obj/closets/fridge.dmi' + closet_appearance = null req_access = list(access_heads_vault) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm index 2be8e52db1..b69a3ff368 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm @@ -2,12 +2,8 @@ name = "gun cabinet" icon = 'icons/obj/guncabinet.dmi' icon_state = "base" - icon_off ="base" - icon_broken ="base" - icon_locked ="base" - icon_closed ="base" - icon_opened = "base" req_one_access = list(access_armory) + closet_appearance = null /obj/structure/closet/secure_closet/guncabinet/Initialize() . = ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index 71c76bb7e3..b97f0bf2f7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -1,12 +1,7 @@ /obj/structure/closet/secure_closet/hydroponics name = "botanist's locker" req_access = list(access_hydroponics) - icon_state = "hydrosecure1" - icon_closed = "hydrosecure" - icon_locked = "hydrosecure1" - icon_opened = "hydrosecureopen" - icon_broken = "hydrosecurebroken" - icon_off = "hydrosecureoff" + closet_appearance = /decl/closet_appearance/secure_closet/hydroponics starts_with = list( /obj/item/weapon/storage/bag/plants, @@ -32,12 +27,7 @@ /obj/structure/closet/secure_closet/hydroponics/sci name = "xenoflorist's locker" req_access = list(access_xenobiology) - icon_state = "scihydrosecure1" - icon_closed = "scihydrosecure" - icon_locked = "scihydrosecure1" - icon_opened = "scihydrosecureopen" - icon_broken = "scihydrosecurebroken" - icon_off = "scihydrosecureoff" + closet_appearance = /decl/closet_appearance/secure_closet/hydroponics /obj/structure/closet/secure_closet/hydroponics/sci/Initialize() starts_with += /obj/item/clothing/head/bio_hood/scientist diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 86cb24dc8c..62e061a374 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -1,13 +1,8 @@ /obj/structure/closet/secure_closet/medical1 name = "medicine closet" desc = "Filled with medical junk." - icon_state = "medical1" - icon_closed = "medical" - icon_locked = "medical1" - icon_opened = "medicalopen" - icon_broken = "medicalbroken" - icon_off = "medicaloff" req_access = list(access_medical) + closet_appearance = /decl/closet_appearance/secure_closet/medical starts_with = list( /obj/item/weapon/storage/box/autoinjectors, @@ -21,12 +16,6 @@ /obj/structure/closet/secure_closet/medical2 name = "anesthetics closet" desc = "Used to knock people out." - icon_state = "medical1" - icon_closed = "medical" - icon_locked = "medical1" - icon_opened = "medicalopen" - icon_broken = "medicalbroken" - icon_off = "medicaloff" req_access = list(access_surgery) starts_with = list( @@ -37,12 +26,7 @@ /obj/structure/closet/secure_closet/medical3 name = "medical doctor's locker" req_access = list(access_medical_equip) - icon_state = "securemed1" - icon_closed = "securemed" - icon_locked = "securemed1" - icon_opened = "securemedopen" - icon_broken = "securemedbroken" - icon_off = "securemedoff" + closet_appearance = /decl/closet_appearance/secure_closet/medical/alt starts_with = list( /obj/item/clothing/under/rank/medical, @@ -105,13 +89,8 @@ /obj/structure/closet/secure_closet/paramedic name = "paramedic locker" desc = "Supplies for a first responder." - icon_state = "medical1" - icon_closed = "medical" - icon_locked = "medical1" - icon_opened = "medicalopen" - icon_broken = "medicalbroken" - icon_off = "medicaloff" req_access = list(access_medical_equip) + closet_appearance = /decl/closet_appearance/secure_closet/medical starts_with = list( /obj/item/weapon/storage/backpack/dufflebag/emt, @@ -141,12 +120,7 @@ /obj/structure/closet/secure_closet/CMO name = "chief medical officer's locker" req_access = list(access_cmo) - icon_state = "cmosecure1" - icon_closed = "cmosecure" - icon_locked = "cmosecure1" - icon_opened = "cmosecureopen" - icon_broken = "cmosecurebroken" - icon_off = "cmosecureoff" + closet_appearance = /decl/closet_appearance/secure_closet/cmo starts_with = list( /obj/item/clothing/under/rank/chief_medical_officer, @@ -155,7 +129,7 @@ /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, /obj/item/weapon/cartridge/cmo, /obj/item/clothing/gloves/sterile/latex, - /obj/item/clothing/shoes/brown , + /obj/item/clothing/shoes/brown, /obj/item/device/radio/headset/heads/cmo, /obj/item/device/radio/headset/heads/cmo/alt, /obj/item/device/flash, @@ -208,13 +182,8 @@ /obj/structure/closet/secure_closet/chemical name = "chemical closet" desc = "Store dangerous chemicals in here." - icon_state = "medical1" - icon_closed = "medical" - icon_locked = "medical1" - icon_opened = "medicalopen" - icon_broken = "medicalbroken" - icon_off = "medicaloff" req_access = list(access_chemistry) + closet_appearance = /decl/closet_appearance/secure_closet/medical starts_with = list( /obj/item/weapon/storage/box/pillbottles = 2, @@ -230,13 +199,8 @@ /obj/structure/closet/secure_closet/psych name = "psychiatric closet" desc = "Store psychology tools and medicines in here." - icon_state = "medical1" - icon_closed = "medical" - icon_locked = "medical1" - icon_opened = "medicalopen" - icon_broken = "medicalbroken" - icon_off = "medicaloff" req_access = list(access_psychiatrist) + closet_appearance = /decl/closet_appearance/secure_closet/medical/alt starts_with = list( /obj/item/clothing/under/rank/psych, @@ -257,30 +221,14 @@ /obj/structure/closet/secure_closet/medical_wall name = "first aid closet" desc = "It's a secure wall-mounted storage unit for first aid supplies." - icon_state = "medical_wall_locked" - icon_closed = "medical_wall_unlocked" - icon_locked = "medical_wall_locked" - icon_opened = "medical_wall_open" - icon_broken = "medical_wall_spark" - icon_off = "medical_wall_off" plane = TURF_PLANE layer = ABOVE_TURF_LAYER anchored = 1 density = 0 wall_mounted = 1 + store_mobs = 0 req_access = list(access_medical_equip) - -/obj/structure/closet/secure_closet/medical_wall/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened + closet_appearance = /decl/closet_appearance/wall/medical /obj/structure/closet/secure_closet/medical_wall/pills name = "pill cabinet" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index d75cf18e5a..8028f06532 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -28,30 +28,13 @@ /obj/structure/closet/secure_closet/personal/cabinet - icon_state = "cabinetdetective_locked" - icon_closed = "cabinetdetective" - icon_locked = "cabinetdetective_locked" - icon_opened = "cabinetdetective_open" - icon_broken = "cabinetdetective_broken" - icon_off = "cabinetdetective_broken" + closet_appearance = /decl/closet_appearance/cabinet/secure starts_with = list( /obj/item/weapon/storage/backpack/satchel/withwallet, /obj/item/device/radio/headset ) -/obj/structure/closet/secure_closet/personal/cabinet/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened - /obj/structure/closet/secure_closet/personal/attackby(obj/item/weapon/W as obj, mob/user as mob) if (src.opened) if (istype(W, /obj/item/weapon/grab)) @@ -69,8 +52,6 @@ if(src.allowed(user) || !src.registered_name || (istype(I) && (src.registered_name == I.registered_name))) //they can open all lockers, or nobody owns this, or they own this locker src.locked = !( src.locked ) - if(src.locked) src.icon_state = src.icon_locked - else src.icon_state = src.icon_closed if(!src.registered_name) src.registered_name = I.registered_name @@ -86,14 +67,14 @@ playsound(src, "sparks", 50, 1) else to_chat(user, "Access Denied") - return + update_icon() /obj/structure/closet/secure_closet/personal/emag_act(var/remaining_charges, var/mob/user, var/visual_feedback, var/audible_feedback) if(!broken) broken = 1 locked = 0 desc = "It appears to be broken." - icon_state = src.icon_broken + update_icon() if(visual_feedback) visible_message("[visual_feedback]", "[audible_feedback]") return 1 @@ -115,7 +96,6 @@ if(!src.close()) return src.locked = 1 - src.icon_state = src.icon_locked + update_icon() src.registered_name = null src.desc = "It's a secure locker for personnel. The first card swiped gains control." - return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 4e78a613e4..af7f37bb6d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -1,12 +1,7 @@ /obj/structure/closet/secure_closet/scientist name = "scientist's locker" - icon_state = "secureres1" - icon_closed = "secureres" - icon_locked = "secureres1" - icon_opened = "secureresopen" - icon_broken = "secureresbroken" - icon_off = "secureresoff" req_access = list(access_tox_storage) + closet_appearance = /decl/closet_appearance/secure_closet/expedition/science starts_with = list( /obj/item/clothing/under/rank/scientist, @@ -28,13 +23,8 @@ /obj/structure/closet/secure_closet/RD name = "research director's locker" - icon_state = "rdsecure1" - icon_closed = "rdsecure" - icon_locked = "rdsecure1" - icon_opened = "rdsecureopen" - icon_broken = "rdsecurebroken" - icon_off = "rdsecureoff" req_access = list(access_rd) + closet_appearance = /decl/closet_appearance/secure_closet/rd starts_with = list( /obj/item/clothing/suit/bio_suit/scientist, @@ -55,3 +45,38 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/science, /obj/item/clothing/shoes/boots/winter/science, /obj/item/weapon/bluespace_harpoon) //VOREStation Add + +/obj/structure/closet/secure_closet/xenoarchaeologist + name = "Xenoarchaeologist Locker" + req_access = list(access_tox_storage) + closet_appearance = /decl/closet_appearance/secure_closet/expedition/science + + starts_with = list( + /obj/item/clothing/under/rank/scientist, + /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/shoes/white, + /obj/item/weapon/melee/umbrella, // vorestation addition, + /obj/item/clothing/glasses/science, + /obj/item/device/radio/headset/headset_sci, + /obj/item/weapon/storage/belt/archaeology, + /obj/item/weapon/storage/excavation) + +/obj/structure/closet/excavation + name = "Excavation tools" + + starts_with = list( + /obj/item/weapon/storage/belt/archaeology, + /obj/item/weapon/storage/excavation, + /obj/item/device/flashlight/lantern, + /obj/item/device/ano_scanner, + /obj/item/device/depth_scanner, + /obj/item/device/core_sampler, + /obj/item/device/gps, + /obj/item/device/beacon_locator, + /obj/item/device/radio/beacon, + /obj/item/clothing/glasses/meson, + /obj/item/weapon/pickaxe, + /obj/item/device/measuring_tape, + /obj/item/weapon/pickaxe/hand, + /obj/item/weapon/storage/bag/fossils, + /obj/item/weapon/hand_labeler) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index c5732a337e..e5fc47c64a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -8,54 +8,43 @@ var/locked = 1 var/broken = 0 var/large = 1 - icon_closed = "secure" - var/icon_locked = "secure1" - icon_opened = "secureopen" - var/icon_broken = "securebroken" - var/icon_off = "secureoff" wall_mounted = 0 //never solid (You can always pass over it) health = 200 + closet_appearance = /decl/closet_appearance/secure_closet + /obj/structure/closet/secure_closet/can_open() - if(src.locked) + if(locked) return 0 return ..() -/obj/structure/closet/secure_closet/close() - if(..()) - if(broken) - icon_state = src.icon_off - return 1 - else - return 0 - /obj/structure/closet/secure_closet/emp_act(severity) for(var/obj/O in src) O.emp_act(severity) if(!broken) if(prob(50/severity)) - src.locked = !src.locked - src.update_icon() + locked = !locked + update_icon() if(prob(20/severity) && !opened) if(!locked) open() else - src.req_access = list() - src.req_access += pick(get_all_station_access()) + req_access = list() + req_access += pick(get_all_station_access()) ..() /obj/structure/closet/secure_closet/proc/togglelock(mob/user as mob) - if(src.opened) + if(opened) to_chat(user, "Close the locker first.") return - if(src.broken) + if(broken) to_chat(user, "The locker appears to be broken.") return if(user.loc == src) to_chat(user, "You can't reach the lock from inside.") return - if(src.allowed(user)) - src.locked = !src.locked + if(allowed(user)) + locked = !locked playsound(src, 'sound/machines/click.ogg', 15, 1, -3) for(var/mob/O in viewers(user, 3)) if((O.client && !( O.blinded ))) @@ -65,13 +54,13 @@ to_chat(user, "Access Denied") /obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(src.opened) + if(opened) if(istype(W, /obj/item/weapon/storage/laundry_basket)) return ..(W,user) if(istype(W, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = W - if(src.large) - src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet + if(large) + MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet else to_chat(user, "The locker is too small to stuff [G.affecting] into!") if(isrobot(user)) @@ -80,11 +69,11 @@ return user.drop_item() if(W) - W.forceMove(src.loc) + W.forceMove(loc) else if(istype(W, /obj/item/weapon/melee/energy/blade)) if(emag_act(INFINITY, user, "The locker has been sliced open by [user] with \an [W]!", "You hear metal being sliced and sparks flying.")) var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) + spark_system.set_up(5, 0, loc) spark_system.start() playsound(src, 'sound/weapons/blade1.ogg', 50, 1) playsound(src, "sparks", 50, 1) @@ -109,8 +98,6 @@ broken = 1 locked = 0 desc = "It appears to be broken." - icon_state = icon_off - flick(icon_broken, src) if(visual_feedback) visible_message(visual_feedback, audible_feedback) @@ -118,14 +105,15 @@ visible_message("\The [src] has been broken by \the [user] with \an [emag_source]!", "You hear a faint electrical spark.") else visible_message("\The [src] sparks and breaks open!", "You hear a faint electrical spark.") + update_icon() return 1 /obj/structure/closet/secure_closet/attack_hand(mob/user as mob) - src.add_fingerprint(user) - if(src.locked) - src.togglelock(user) + add_fingerprint(user) + if(locked) + togglelock(user) else - src.toggle(user) + toggle(user) /obj/structure/closet/secure_closet/AltClick() ..() @@ -140,25 +128,22 @@ return if(ishuman(usr) || isrobot(usr)) - src.add_fingerprint(usr) - src.togglelock(usr) + add_fingerprint(usr) + togglelock(usr) else to_chat(usr, "This mob type can't use this verb.") -/obj/structure/closet/secure_closet/update_icon()//Putting the sealed stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot) - overlays.Cut() - - if(!opened) - if(broken) - icon_state = icon_off - else if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - if(sealed) - overlays += "sealed" +/obj/structure/closet/secure_closet/update_icon() + if(opened) + icon_state = "open" else - icon_state = icon_opened + if(broken) + icon_state = "closed_emagged[sealed ? "_welded" : ""]" + else + if(locked) + icon_state = "closed_locked[sealed ? "_welded" : ""]" + else + icon_state = "closed_unlocked[sealed ? "_welded" : ""]" /obj/structure/closet/secure_closet/req_breakout() if(!opened && locked) return 1 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 9a304932c1..a3cb10f8d0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -1,12 +1,7 @@ /obj/structure/closet/secure_closet/captains name = "colony director's locker" - icon_state = "capsecure1" - icon_closed = "capsecure" - icon_locked = "capsecure1" - icon_opened = "capsecureopen" - icon_broken = "capsecurebroken" - icon_off = "capsecureoff" req_access = list(access_captain) + closet_appearance = /decl/closet_appearance/secure_closet/command starts_with = list( /obj/item/weapon/storage/backpack/dufflebag/captain, @@ -24,13 +19,8 @@ /obj/structure/closet/secure_closet/hop name = "head of personnel's locker" - icon_state = "hopsecure1" - icon_closed = "hopsecure" - icon_locked = "hopsecure1" - icon_opened = "hopsecureopen" - icon_broken = "hopsecurebroken" - icon_off = "hopsecureoff" req_access = list(access_hop) + closet_appearance = /decl/closet_appearance/secure_closet/command/hop starts_with = list( /obj/item/clothing/suit/storage/vest, @@ -48,13 +38,8 @@ /obj/structure/closet/secure_closet/hop2 name = "head of personnel's attire" - icon_state = "hopsecure1" - icon_closed = "hopsecure" - icon_locked = "hopsecure1" - icon_opened = "hopsecureopen" - icon_broken = "hopsecurebroken" - icon_off = "hopsecureoff" req_access = list(access_hop) + closet_appearance = /decl/closet_appearance/secure_closet/command/hop starts_with = list( /obj/item/clothing/under/rank/head_of_personnel, @@ -80,14 +65,9 @@ /obj/structure/closet/secure_closet/hos name = "head of security's locker" req_access = list(access_hos) - icon_state = "hossecure1" - icon_closed = "hossecure" - icon_locked = "hossecure1" - icon_opened = "hossecureopen" - icon_broken = "hossecurebroken" - icon_off = "hossecureoff" req_access = list(access_hos) storage_capacity = 2.5 * MOB_MEDIUM + closet_appearance = /decl/closet_appearance/secure_closet/security/hos starts_with = list( /obj/item/clothing/head/helmet/HoS, @@ -136,13 +116,8 @@ /obj/structure/closet/secure_closet/warden name = "warden's locker" - icon_state = "wardensecure1" - icon_closed = "wardensecure" - icon_locked = "wardensecure1" - icon_opened = "wardensecureopen" - icon_broken = "wardensecurebroken" - icon_off = "wardensecureoff" req_access = list(access_armory) + closet_appearance = /decl/closet_appearance/secure_closet/security/warden starts_with = list( /obj/item/clothing/suit/storage/vest/warden, @@ -188,13 +163,8 @@ /obj/structure/closet/secure_closet/security name = "security officer's locker" - icon_state = "sec1" - icon_closed = "sec" - icon_locked = "sec1" - icon_opened = "secopen" - icon_broken = "secbroken" - icon_off = "secoff" req_access = list(access_brig) + closet_appearance = /decl/closet_appearance/secure_closet/security starts_with = list( /obj/item/clothing/suit/storage/vest/officer, @@ -255,13 +225,8 @@ /obj/structure/closet/secure_closet/detective name = "detective's cabinet" - icon_state = "cabinetdetective_locked" - icon_closed = "cabinetdetective" - icon_locked = "cabinetdetective_locked" - icon_opened = "cabinetdetective_open" - icon_broken = "cabinetdetective_broken" - icon_off = "cabinetdetective_broken" req_access = list(access_forensics_lockers) + closet_appearance = /decl/closet_appearance/cabinet/secure starts_with = list( /obj/item/clothing/accessory/badge/holo/detective, @@ -281,19 +246,6 @@ /obj/item/weapon/storage/bag/detective, /obj/item/device/tape/random = 3) -/obj/structure/closet/secure_closet/detective/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened - - /obj/structure/closet/secure_closet/injection name = "lethal injections locker" req_access = list(access_captain) @@ -340,26 +292,9 @@ GLOBAL_LIST_BOILERPLATE(all_brig_closets, /obj/structure/closet/secure_closet/br /obj/structure/closet/secure_closet/wall name = "wall locker" - icon_state = "wall-locker1" - icon_closed = "wall-locker" - icon_locked = "wall-locker1" - icon_opened = "wall-lockeropen" - icon_broken = "wall-lockerbroken" - icon_off = "wall-lockeroff" req_access = list(access_security) + closet_appearance = /decl/closet_appearance/wall density = 1 //too small to put a man in large = 0 - -/obj/structure/closet/secure_closet/wall/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm index 7631fa0d51..ced40da850 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm @@ -1,12 +1,7 @@ /obj/structure/closet/secure_closet/hos name = "head of security's attire" - icon_state = "hossecure1" - icon_closed = "hossecure" - icon_locked = "hossecure1" - icon_opened = "hossecureopen" - icon_broken = "hossecurebroken" - icon_off = "hossecureoff" req_access = list(access_hos) + closet_appearance = /decl/closet_appearance/secure_closet/security/hos storage_capacity = 2.5 * MOB_MEDIUM starts_with = list( @@ -30,13 +25,8 @@ /obj/structure/closet/secure_closet/hos2 name = "head of security's gear" - icon_state = "hossecure1" - icon_closed = "hossecure" - icon_locked = "hossecure1" - icon_opened = "hossecureopen" - icon_broken = "hossecurebroken" - icon_off = "hossecureoff" req_access = list(access_hos) + closet_appearance = /decl/closet_appearance/secure_closet/security/hos storage_capacity = 2.5 * MOB_MEDIUM starts_with = list( @@ -63,12 +53,6 @@ /obj/structure/closet/secure_closet/nanotrasen_security name = "NanoTrasen security officer's locker" icon = 'icons/obj/closet_vr.dmi' - icon_state = "secC1" - icon_closed = "secC" - icon_locked = "secC1" - icon_opened = "secCopen" - icon_broken = "secCbroken" - icon_off = "seCcoff" req_access = list(access_brig) storage_capacity = 3.5 * MOB_MEDIUM @@ -110,12 +94,6 @@ /obj/structure/closet/secure_closet/nanotrasen_commander name = "NanoTrasen commander's locker" icon = 'icons/obj/closet_vr.dmi' - icon_state = "secC1" - icon_closed = "secC" - icon_locked = "secC1" - icon_opened = "secCopen" - icon_broken = "secCbroken" - icon_off = "seCcoff" req_access = list(access_brig) storage_capacity = 3.5 * MOB_MEDIUM @@ -165,12 +143,6 @@ /obj/structure/closet/secure_closet/nanotrasen_warden name = "NanoTrasen warden's locker" icon = 'icons/obj/closet_vr.dmi' - icon_state = "secC1" - icon_closed = "secC" - icon_locked = "secC1" - icon_opened = "secCopen" - icon_broken = "secCbroken" - icon_off = "seCcoff" req_access = list(access_brig) storage_capacity = 3.5 * MOB_MEDIUM diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index f608c05b26..dee5e284a3 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -1,9 +1,7 @@ /obj/structure/closet/syndicate name = "armory closet" desc = "Why is this here?" - icon_state = "syndicate" - icon_closed = "syndicate" - icon_opened = "syndicateopen" + closet_appearance = /decl/closet_appearance/tactical/alt /obj/structure/closet/syndicate/personal desc = "It's a storage unit for operative gear." diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 903a058f9c..8ccf80bf18 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -15,9 +15,7 @@ /obj/structure/closet/emcloset name = "emergency closet" desc = "It's a storage unit for emergency breathmasks and O2 tanks." - icon_state = "emergency" - icon_closed = "emergency" - icon_opened = "emergencyopen" + closet_appearance = /decl/closet_appearance/oxygen /obj/structure/closet/emcloset/Initialize() switch (pickweight(list("small" = 55, "aid" = 25, "tank" = 10, "both" = 10))) @@ -64,9 +62,7 @@ /obj/structure/closet/firecloset name = "fire-safety closet" desc = "It's a storage unit for fire-fighting supplies." - icon_state = "firecloset" - icon_closed = "firecloset" - icon_opened = "fireclosetopen" + closet_appearance = /decl/closet_appearance/oxygen/fire starts_with = list( /obj/item/clothing/suit/fire/firefighter, @@ -93,21 +89,13 @@ /obj/item/weapon/extinguisher = 2, /obj/item/clothing/head/hardhat/red = 2) -/obj/structure/closet/firecloset/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened - /* * Tool Closet */ /obj/structure/closet/toolcloset name = "tool closet" desc = "It's a storage unit for tools." - icon_state = "toolcloset" - icon_closed = "toolcloset" - icon_opened = "toolclosetopen" + closet_appearance = /decl/closet_appearance/secure_closet/engineering/tools /obj/structure/closet/toolcloset/Initialize() starts_with = list() @@ -151,9 +139,7 @@ /obj/structure/closet/radiation name = "radiation suit closet" desc = "It's a storage unit for rad-protective suits." - icon_state = "radsuitcloset" - icon_opened = "toolclosetopen" - icon_closed = "radsuitcloset" + closet_appearance = /decl/closet_appearance/secure_closet/engineering/tools/radiation starts_with = list( /obj/item/clothing/suit/radiation = 2, @@ -166,9 +152,7 @@ /obj/structure/closet/bombcloset name = "\improper EOD closet" desc = "It's a storage unit for explosion-protective suits." - icon_state = "bombsuit" - icon_closed = "bombsuit" - icon_opened = "bombsuitopen" + closet_appearance = /decl/closet_appearance/bomb starts_with = list( /obj/item/clothing/suit/bomb_suit, @@ -186,9 +170,7 @@ /obj/structure/closet/bombclosetsecurity name = "\improper EOD closet" desc = "It's a storage unit for explosion-protective suits." - icon_state = "bombsuitsec" - icon_closed = "bombsuitsec" - icon_opened = "bombsuitsecopen" + closet_appearance = /decl/closet_appearance/bomb/security starts_with = list( /obj/item/clothing/suit/bomb_suit/security, @@ -202,14 +184,13 @@ /obj/structure/closet/hydrant //wall mounted fire closet name = "fire-safety closet" desc = "It's a storage unit for fire-fighting supplies." - icon_state = "hydrant" - icon_closed = "hydrant" - icon_opened = "hydrant_open" + closet_appearance = /decl/closet_appearance/wall/hydrant plane = TURF_PLANE layer = ABOVE_TURF_LAYER anchored = 1 density = 0 wall_mounted = 1 + store_mobs = 0 starts_with = list( /obj/item/clothing/suit/fire/firefighter, @@ -225,15 +206,8 @@ /obj/structure/closet/medical_wall //wall mounted medical closet name = "first-aid closet" desc = "It's wall-mounted storage unit for first aid supplies." - icon_state = "medical_wall" - icon_closed = "medical_wall" - icon_opened = "medical_wall_open" + closet_appearance = /decl/closet_appearance/wall/medical anchored = 1 density = 0 wall_mounted = 1 - -/obj/structure/closet/medical_wall/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened + store_mobs = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/walllocker.dm b/code/game/objects/structures/crates_lockers/closets/walllocker.dm index 3e351f1fb3..82afaa33ff 100644 --- a/code/game/objects/structures/crates_lockers/closets/walllocker.dm +++ b/code/game/objects/structures/crates_lockers/closets/walllocker.dm @@ -4,12 +4,11 @@ /obj/structure/closet/walllocker desc = "A wall mounted storage locker." name = "Wall Locker" - icon = 'icons/obj/walllocker.dmi' - icon_state = "wall-locker" + icon = 'icons/obj/closets/bases/wall.dmi' + closet_appearance = /decl/closet_appearance/wall density = 0 anchored = 1 - icon_closed = "wall-locker" - icon_opened = "wall-lockeropen" + store_mobs = 0 //spawns endless (3 sets) amounts of breathmask, emergency oxy tank and crowbar @@ -18,9 +17,7 @@ desc = "A wall mounted locker with emergency supplies." var/list/spawnitems = list(/obj/item/weapon/tank/emergency/oxygen,/obj/item/clothing/mask/breath,/obj/item/weapon/tool/crowbar/red,/obj/item/device/flashlight/flare,) var/amount = 2 // spawns each items X times. - icon_state = "emerg" - icon_closed = "emerg" - icon_opened = "emerg_open" + closet_appearance = /decl/closet_appearance/wall/emergency /obj/structure/closet/walllocker/emerglocker/toggle(mob/user as mob) src.attack_hand(user) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index d1501e3bd6..8b71600aff 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -1,13 +1,11 @@ /obj/structure/closet/wardrobe name = "wardrobe" desc = "It's a storage unit for standard-issue attire." - icon_state = "blue" - icon_closed = "blue" + closet_appearance = /decl/closet_appearance/wardrobe /obj/structure/closet/wardrobe/red name = "security wardrobe" - icon_state = "red" - icon_closed = "red" + closet_appearance = /decl/closet_appearance/wardrobe/red starts_with = list( /obj/item/clothing/under/rank/security = 3, @@ -41,9 +39,7 @@ /obj/structure/closet/wardrobe/detective name = "detective wardrobe" - icon_state = "cabinet_closed" - icon_closed = "cabinet_closed" - icon_opened = "cabinet_open" + closet_appearance = /decl/closet_appearance/cabinet starts_with = list( /obj/item/clothing/head/det = 2, @@ -64,17 +60,15 @@ /obj/structure/closet/wardrobe/pink name = "pink wardrobe" - icon_state = "pink" - icon_closed = "pink" - + closet_appearance = /decl/closet_appearance/wardrobe/pink + starts_with = list( /obj/item/clothing/under/color/pink = 3, /obj/item/clothing/shoes/brown = 3) /obj/structure/closet/wardrobe/black name = "black wardrobe" - icon_state = "black" - icon_closed = "black" + closet_appearance = /decl/closet_appearance/wardrobe/black starts_with = list( /obj/item/clothing/under/color/black = 3, @@ -88,8 +82,7 @@ /obj/structure/closet/wardrobe/chaplain_black name = "chapel wardrobe" desc = "It's a storage unit for approved religious attire." - icon_state = "black" - icon_closed = "black" + closet_appearance = /decl/closet_appearance/wardrobe/black starts_with = list( /obj/item/clothing/under/rank/chaplain, @@ -124,8 +117,7 @@ /obj/structure/closet/wardrobe/green name = "green wardrobe" - icon_state = "green" - icon_closed = "green" + closet_appearance = /decl/closet_appearance/wardrobe/green starts_with = list( /obj/item/clothing/under/color/green = 3, @@ -135,8 +127,7 @@ /obj/structure/closet/wardrobe/xenos name = "xenos wardrobe" - icon_state = "green" - icon_closed = "green" + closet_appearance = /decl/closet_appearance/wardrobe/green starts_with = list( /obj/item/clothing/suit/unathi/mantle, @@ -150,8 +141,7 @@ /obj/structure/closet/wardrobe/orange name = "prison wardrobe" desc = "It's a storage unit for regulation prisoner attire." - icon_state = "orange" - icon_closed = "orange" + closet_appearance = /decl/closet_appearance/wardrobe/orange starts_with = list( /obj/item/clothing/under/color/prison = 3, @@ -160,8 +150,7 @@ /obj/structure/closet/wardrobe/yellow name = "yellow wardrobe" - icon_state = "yellow" - icon_closed = "yellow" + closet_appearance = /decl/closet_appearance/wardrobe/yellow starts_with = list( /obj/item/clothing/under/color/yellow = 3, @@ -172,8 +161,7 @@ /obj/structure/closet/wardrobe/atmospherics_yellow name = "atmospherics wardrobe" - icon_state = "yellow" - icon_closed = "yellow" + closet_appearance = /decl/closet_appearance/wardrobe/yellow starts_with = list( /obj/item/clothing/under/rank/atmospheric_technician = 3, @@ -187,8 +175,7 @@ /obj/structure/closet/wardrobe/engineering_yellow name = "engineering wardrobe" - icon_state = "yellow" - icon_closed = "yellow" + closet_appearance = /decl/closet_appearance/wardrobe/yellow starts_with = list( /obj/item/clothing/under/rank/engineer = 3, @@ -205,8 +192,7 @@ /obj/structure/closet/wardrobe/white name = "white wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/color/white = 3, @@ -216,8 +202,7 @@ /obj/structure/closet/wardrobe/pjs name = "pajama wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/pj/red = 2, @@ -228,8 +213,7 @@ /obj/structure/closet/wardrobe/science_white name = "science wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/rank/scientist = 3, @@ -258,8 +242,7 @@ /obj/structure/closet/wardrobe/robotics_black name = "robotics wardrobe" - icon_state = "black" - icon_closed = "black" + closet_appearance = /decl/closet_appearance/wardrobe/black starts_with = list( /obj/item/clothing/under/rank/roboticist = 2, @@ -280,8 +263,7 @@ /obj/structure/closet/wardrobe/chemistry_white name = "chemistry wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/rank/chemist = 2, @@ -295,8 +277,7 @@ /obj/structure/closet/wardrobe/genetics_white name = "genetics wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/rank/geneticist = 2, @@ -309,8 +290,7 @@ /obj/structure/closet/wardrobe/virology_white name = "virology wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/rank/virologist = 2, @@ -324,8 +304,7 @@ /obj/structure/closet/wardrobe/medic_white name = "medical wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/rank/medical = 2, @@ -350,8 +329,7 @@ /obj/structure/closet/wardrobe/medic_gown name = "cloning wardrobe" - icon_state = "white" - icon_closed = "white" + closet_appearance = /decl/closet_appearance/wardrobe/white starts_with = list( /obj/item/clothing/under/medigown = 4) @@ -359,8 +337,7 @@ /obj/structure/closet/wardrobe/grey name = "grey wardrobe" - icon_state = "grey" - icon_closed = "grey" + closet_appearance = /decl/closet_appearance/wardrobe/grey starts_with = list( /obj/item/clothing/under/color/grey = 3, @@ -370,8 +347,7 @@ /obj/structure/closet/wardrobe/mixed name = "mixed wardrobe" - icon_state = "mixed" - icon_closed = "mixed" + closet_appearance = /decl/closet_appearance/wardrobe/mixed starts_with = list( /obj/item/clothing/under/color/blue, @@ -407,9 +383,7 @@ /obj/structure/closet/wardrobe/tactical name = "tactical equipment" - icon_state = "syndicate1" - icon_closed = "syndicate1" - icon_opened = "syndicate1open" + closet_appearance = /decl/closet_appearance/tactical starts_with = list( /obj/item/clothing/under/tactical, @@ -434,9 +408,7 @@ /obj/structure/closet/wardrobe/ert name = "emergency response team equipment" - icon_state = "syndicate1" - icon_closed = "syndicate1" - icon_opened = "syndicate1open" + closet_appearance = /decl/closet_appearance/tactical starts_with = list( /obj/item/clothing/under/rank/centcom, @@ -453,8 +425,7 @@ /obj/structure/closet/wardrobe/suit name = "suit locker" - icon_state = "mixed" - icon_closed = "mixed" + closet_appearance = /decl/closet_appearance/wardrobe/mixed starts_with = list( /obj/item/clothing/under/assistantformal, @@ -482,9 +453,7 @@ /obj/structure/closet/wardrobe/captain name = "colony director's wardrobe" - icon_state = "cabinet_closed" - icon_closed = "cabinet_closed" - icon_opened = "cabinet_open" + closet_appearance = /decl/closet_appearance/cabinet starts_with = list( /obj/item/weapon/storage/backpack/captain, diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 015afb8a9c..c66e663083 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -3,13 +3,10 @@ /obj/structure/closet/crate name = "crate" desc = "A rectangular steel crate." - icon = 'icons/obj/storage_vr.dmi' //VOREStation edit - icon_state = "crate" - icon_opened = "crateopen" - icon_closed = "crate" + icon = 'icons/obj/closets/bases/crate.dmi' + closet_appearance = /decl/closet_appearance/crate climbable = 1 var/points_per_crate = 5 -// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 /obj/structure/closet/crate/can_open() @@ -37,11 +34,11 @@ playsound(src, 'sound/machines/click.ogg', 15, 1, -3) for(var/obj/O in src) O.forceMove(get_turf(src)) - icon_state = icon_opened src.opened = 1 if(climbable) structure_shaken() + update_icon() return 1 /obj/structure/closet/crate/close() @@ -64,8 +61,8 @@ O.forceMove(src) itemcount++ - icon_state = icon_closed src.opened = 0 + update_icon() return 1 /obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -125,28 +122,25 @@ /obj/structure/closet/crate/secure desc = "A secure crate." name = "Secure crate" - icon_state = "securecrate" - icon_opened = "securecrateopen" - icon_closed = "securecrate" - var/redlight = "securecrater" - var/greenlight = "securecrateg" - var/sparks = "securecratesparks" - var/emag = "securecrateemag" + closet_appearance = /decl/closet_appearance/crate/secure var/broken = 0 var/locked = 1 -/obj/structure/closet/crate/secure/New() - ..() - if(locked) - overlays.Cut() - overlays += redlight - else - overlays.Cut() - overlays += greenlight - /obj/structure/closet/crate/secure/can_open() return !locked +/obj/structure/closet/crate/secure/update_icon() + if(opened) + icon_state = "open" + else + if(broken) + icon_state = "closed_emagged[sealed ? "_welded" : ""]" + else + if(locked) + icon_state = "closed_locked[sealed ? "_welded" : ""]" + else + icon_state = "closed_unlocked[sealed ? "_welded" : ""]" + /obj/structure/closet/crate/secure/proc/togglelock(mob/user as mob) if(src.opened) to_chat(user, "Close the crate first.") @@ -166,8 +160,7 @@ if(user) for(var/mob/O in viewers(user, 3)) O.show_message( "The crate has been [locked ? null : "un"]locked by [user].", 1) - overlays.Cut() - overlays += locked ? redlight : greenlight + update_icon() /obj/structure/closet/crate/secure/verb/verb_togglelock() set src in oview(1) // One square distance @@ -202,14 +195,11 @@ /obj/structure/closet/crate/secure/emag_act(var/remaining_charges, var/mob/user) if(!broken) - overlays.Cut() - overlays += emag - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* playsound(src, "sparks", 60, 1) - src.locked = 0 - src.broken = 1 + locked = 0 + broken = 1 to_chat(user, "You unlock \the [src].") + update_icon() return 1 /obj/structure/closet/crate/secure/emp_act(severity) @@ -217,75 +207,52 @@ O.emp_act(severity) if(!broken && !opened && prob(50/severity)) if(!locked) - src.locked = 1 - overlays.Cut() - overlays += redlight + locked = 1 else - overlays.Cut() - overlays += emag - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* playsound(src, 'sound/effects/sparks4.ogg', 75, 1) - src.locked = 0 + locked = 0 if(!opened && prob(20/severity)) if(!locked) open() else - src.req_access = list() - src.req_access += pick(get_all_station_access()) + req_access = list() + req_access += pick(get_all_station_access()) + update_icon() ..() /obj/structure/closet/crate/plastic name = "plastic crate" desc = "A rectangular plastic crate." - icon_state = "plasticcrate" - icon_opened = "plasticcrateopen" - icon_closed = "plasticcrate" + closet_appearance = /decl/closet_appearance/crate/plastic points_per_crate = 1 //5 crates per ordered crate, +5 for the crate it comes in. /obj/structure/closet/crate/internals name = "internals crate" desc = "A internals crate." - icon_state = "o2crate" - icon_opened = "o2crateopen" - icon_closed = "o2crate" /obj/structure/closet/crate/trashcart name = "trash cart" desc = "A heavy, metal trashcart with wheels." - icon_state = "trashcart" - icon_opened = "trashcartopen" - icon_closed = "trashcart" + closet_appearance = /decl/closet_appearance/cart/trash /*these aren't needed anymore /obj/structure/closet/crate/hat desc = "A crate filled with Valuable Collector's Hats!." name = "Hat Crate" - icon_state = "crate" - icon_opened = "crateopen" - icon_closed = "crate" /obj/structure/closet/crate/contraband name = "Poster crate" desc = "A random assortment of posters manufactured by providers NOT listed under NanoTrasen's whitelist." - icon_state = "crate" - icon_opened = "crateopen" - icon_closed = "crate" */ /obj/structure/closet/crate/medical name = "medical crate" desc = "A medical crate." - icon_state = "medicalcrate" - icon_opened = "medicalcrateopen" - icon_closed = "medicalcrate" + closet_appearance = /decl/closet_appearance/crate/medical /obj/structure/closet/crate/rcd name = "\improper RCD crate" desc = "A crate with rapid construction device." - icon_state = "engi_crate" - icon_opened = "engi_crateopen" - icon_closed = "engi_crate" starts_with = list( /obj/item/weapon/rcd_ammo = 3, @@ -293,9 +260,6 @@ /obj/structure/closet/crate/solar name = "solar pack crate" - icon_state = "engi_crate" //VOREStation Edit - icon_opened = "engi_crateopen" //VOREStation Edit - icon_closed = "engi_crate" //VOREStation Edit starts_with = list( /obj/item/solar_assembly = 21, @@ -312,9 +276,7 @@ /obj/structure/closet/crate/freezer name = "freezer" desc = "A freezer." - icon_state = "freezer" - icon_opened = "freezeropen" - icon_closed = "freezer" + closet_appearance = /decl/closet_appearance/crate/freezer var/target_temp = T0C - 40 var/cooling_power = 40 @@ -365,18 +327,12 @@ /obj/structure/closet/crate/bin name = "large bin" desc = "A large bin." - icon = 'icons/obj/storage.dmi' //VOREStation edit - icon_state = "largebin" - icon_opened = "largebinopen" - icon_closed = "largebin" /obj/structure/closet/crate/radiation name = "radioactive gear crate" desc = "A crate with a radiation sign on it." - icon_state = "radiation" - icon_opened = "radiationopen" - icon_closed = "radiation" + closet_appearance = /decl/closet_appearance/crate/radiation starts_with = list( /obj/item/clothing/suit/radiation = 4, @@ -386,72 +342,47 @@ /obj/structure/closet/crate/secure/weapon name = "weapons crate" desc = "A secure weapons crate." - icon_state = "weaponcrate" - icon_opened = "weaponcrateopen" - icon_closed = "weaponcrate" + closet_appearance = /decl/closet_appearance/crate/secure/weapon /obj/structure/closet/crate/secure/phoron name = "phoron crate" desc = "A secure phoron crate." - icon_state = "phoroncrate" - icon_opened = "phoroncrateopen" - icon_closed = "phoroncrate" + closet_appearance = /decl/closet_appearance/crate/secure/hazard /obj/structure/closet/crate/secure/gear name = "gear crate" desc = "A secure gear crate." - icon_state = "secgearcrate" - icon_opened = "secgearcrateopen" - icon_closed = "secgearcrate" + closet_appearance = /decl/closet_appearance/crate/secure/weapon /obj/structure/closet/crate/secure/hydrosec name = "secure hydroponics crate" desc = "A crate with a lock on it, painted in the scheme of the station's botanists." - icon_state = "hydrosecurecrate" - icon_opened = "hydrosecurecrateopen" - icon_closed = "hydrosecurecrate" + closet_appearance = /decl/closet_appearance/crate/secure/hydroponics /obj/structure/closet/crate/secure/engineering desc = "A crate with a lock on it, painted in the scheme of the station's engineers." name = "secure engineering crate" - icon_state = "engi_secure_crate" - icon_opened = "engi_secure_crateopen" - icon_closed = "engi_secure_crate" /obj/structure/closet/crate/secure/science name = "secure science crate" desc = "A crate with a lock on it, painted in the scheme of the station's scientists." - icon_state = "scisecurecrate" - icon_opened = "scisecurecrateopen" - icon_closed = "scisecurecrate" /obj/structure/closet/crate/secure/bin name = "secure bin" desc = "A secure bin." - icon = 'icons/obj/storage.dmi' //VOREStation edit - icon_state = "largebins" - icon_opened = "largebinsopen" - icon_closed = "largebins" - redlight = "largebinr" - greenlight = "largebing" - sparks = "largebinsparks" - emag = "largebinemag" /obj/structure/closet/crate/large name = "large crate" desc = "A hefty metal crate." - icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit - icon_state = "largemetal" - icon_opened = "largemetalopen" - icon_closed = "largemetal" - + icon = 'icons/obj/closets/bases/large_crate.dmi' + closet_appearance = /decl/closet_appearance/large_crate /obj/structure/closet/crate/large/close() . = ..() @@ -475,12 +406,8 @@ /obj/structure/closet/crate/secure/large name = "large crate" desc = "A hefty metal crate with an electronic locking system." - icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit - icon_state = "largemetalsecure" //VOREStation Edit - icon_opened = "largemetalsecureopen" //VOREStation Edit - icon_closed = "largemetalsecure" //VOREStation Edit - redlight = "largemetalr" - greenlight = "largemetalg" + icon = 'icons/obj/closets/bases/large_crate.dmi' + closet_appearance = /decl/closet_appearance/large_crate/secure /obj/structure/closet/crate/secure/large/close() @@ -505,33 +432,19 @@ //fluff variant /obj/structure/closet/crate/secure/large/reinforced desc = "A hefty, reinforced metal crate with an electronic locking system." - icon_state = "largermetal" - icon_opened = "largermetalopen" - icon_closed = "largermetal" /obj/structure/closet/crate/engineering name = "engineering crate" - icon_state = "engi_crate" - icon_opened = "engi_crateopen" - icon_closed = "engi_crate" /obj/structure/closet/crate/engineering/electrical - icon_state = "engi_e_crate" - icon_opened = "engi_crateopen" - icon_closed = "engi_e_crate" /obj/structure/closet/crate/science name = "science crate" - icon_state = "scicrate" - icon_opened = "scicrateopen" - icon_closed = "scicrate" /obj/structure/closet/crate/hydroponics name = "hydroponics crate" desc = "All you need to destroy those pesky weeds and pests." - icon_state = "hydrocrate" - icon_opened = "hydrocrateopen" - icon_closed = "hydrocrate" + closet_appearance = /decl/closet_appearance/crate/hydroponics /obj/structure/closet/crate/hydroponics/prespawned diff --git a/code/game/objects/structures/crates_lockers/crates_vr.dm b/code/game/objects/structures/crates_lockers/crates_vr.dm index 85eccb3d77..4e09b1af1d 100644 --- a/code/game/objects/structures/crates_lockers/crates_vr.dm +++ b/code/game/objects/structures/crates_lockers/crates_vr.dm @@ -34,6 +34,4 @@ return /obj/structure/closet/crate/medical/blood - icon_state = "blood" - icon_opened = "bloodopen" - icon_closed = "blood" \ No newline at end of file + closet_appearance = /decl/closet_appearance/cart/biohazard/alt \ No newline at end of file diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index f26e4a3a2b..e12a49c5b5 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -117,7 +117,7 @@ var/list/flooring_types /decl/flooring/proc/get_plating_type(var/turf/T) return plating_type -/decl/flooring/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0, var/layer = ABOVE_TURF_LAYER) +/decl/flooring/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0, var/layer = BUILTIN_DECAL_LAYER) if(!flooring_cache[cache_key]) var/image/I = image(icon = icon, icon_state = icon_base, dir = icon_dir) I.layer = layer @@ -498,6 +498,8 @@ var/list/flooring_types desc = "Lava. Y'know. Sets you on fire. AAAAAAAAAAA" icon = 'icons/turf/outdoors.dmi' icon_base = "lava" + is_plating = TRUE + flags = 0 footstep_sounds = list("human" = list( 'sound/effects/footstep/lava1.ogg', 'sound/effects/footstep/lava2.ogg', diff --git a/code/game/turfs/flooring/flooring_decals.dm b/code/game/turfs/flooring/flooring_decals.dm index 1cf193bb47..b9ee2bc93c 100644 --- a/code/game/turfs/flooring/flooring_decals.dm +++ b/code/game/turfs/flooring/flooring_decals.dm @@ -7,6 +7,7 @@ var/list/floor_decals = list() name = "floor decal" icon = 'icons/turf/flooring/decals_vr.dmi' // VOREStation Edit plane = DECAL_PLANE + layer = MAPPER_DECAL_LAYER var/supplied_dir /obj/effect/floor_decal/New(var/newloc, var/newdir, var/newcolour) @@ -29,7 +30,7 @@ var/list/floor_decals = list() var/image/I = floor_decals[cache_key] if(!I) I = image(icon = icon, icon_state = icon_state, dir = dir) - I.layer = TURF_DECAL_LAYER + I.layer = MAPPER_DECAL_LAYER I.color = color I.alpha = alpha floor_decals[cache_key] = I diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index b5d9cf751b..ff2923005f 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -33,9 +33,7 @@ var/lava = 0 /turf/simulated/floor/is_plating() - if(!flooring || flooring.is_plating) - return TRUE - return FALSE + return (!flooring || flooring.is_plating) /turf/simulated/floor/Initialize(mapload, floortype) . = ..() diff --git a/code/game/turfs/simulated/floor_types_eris.dm b/code/game/turfs/simulated/floor_types_eris.dm index 3a4fdfaf76..3893883070 100644 --- a/code/game/turfs/simulated/floor_types_eris.dm +++ b/code/game/turfs/simulated/floor_types_eris.dm @@ -957,6 +957,7 @@ name = "underplating" icon_state = "under" initial_flooring = /decl/flooring/reinforced/plating/under + /turf/simulated/floor/plating/eris/under/airless oxygen = 0 nitrogen = 0 diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index 237a28635c..22b79272b8 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -33,6 +33,17 @@ ..() name = "magma" +/turf/simulated/floor/lava/make_plating(place_product, defer_icon_update) + return + +/turf/simulated/floor/lava/set_flooring(decl/flooring/newflooring, initializing) + if(newflooring?.type == initial_flooring) + return ..() + return + +/turf/simulated/floor/lava/ex_act(severity) + return + /turf/simulated/floor/lava/Entered(atom/movable/AM) if(burn_stuff(AM)) START_PROCESSING(SSturfs, src) diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm index d873a77a9c..dcfcb1a33e 100644 --- a/code/modules/awaymissions/loot_vr.dm +++ b/code/modules/awaymissions/loot_vr.dm @@ -78,8 +78,6 @@ new /obj/effect/decal/remains/xeno(src.loc) if("clothes") var/obj/structure/closet/C = new(src.loc) - C.icon_state = "blue" - C.icon_closed = "blue" if(prob(33)) new /obj/item/clothing/under/color/rainbow(C) new /obj/item/clothing/shoes/rainbow(C) diff --git a/code/modules/blob2/core_chunk.dm b/code/modules/blob2/core_chunk.dm index 8a5795aae9..7d8f588568 100644 --- a/code/modules/blob2/core_chunk.dm +++ b/code/modules/blob2/core_chunk.dm @@ -61,12 +61,13 @@ /obj/item/weapon/blobcore_chunk/proc/get_carrier(var/atom/target) var/atom/A = target ? target.loc : src - if(!istype(A, /mob/living)) - A = get_carrier(A) if(isturf(A) || isarea(A)) // Something has gone horribly wrong if the second is true. return FALSE // No mob is carrying us. + if(!istype(A, /mob/living)) + A = get_carrier(A) + return A /obj/item/weapon/blobcore_chunk/blob_act(obj/structure/blob/B) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 23fc7d4d67..40171f8c92 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -341,33 +341,33 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "Hair
" if(has_flag(mob_species, HAS_HAIR_COLOR)) - . += "Change Color
__
" - . += " Style: [pref.h_style]
" + . += "Change Color [color_square(pref.r_hair, pref.g_hair, pref.b_hair)] " + . += " Style: < > [pref.h_style]
" //The < & > in this line is correct-- those extra characters are the arrows you click to switch between styles. . += "
Facial
" if(has_flag(mob_species, HAS_HAIR_COLOR)) - . += "Change Color
__
" - . += " Style: [pref.f_style]
" + . += "Change Color [color_square(pref.r_facial, pref.g_facial, pref.b_facial)] " + . += " Style: < > [pref.f_style]
" //Same as above with the extra > & < characters if(has_flag(mob_species, HAS_EYE_COLOR)) . += "
Eyes
" - . += "Change Color
__

" + . += "Change Color [color_square(pref.r_eyes, pref.g_eyes, pref.b_eyes)]
" if(has_flag(mob_species, HAS_SKIN_COLOR)) . += "
Body Color
" - . += "Change Color
__

" + . += "Change Color [color_square(pref.r_skin, pref.g_skin, pref.b_skin)]
" . += "
Body Markings +
" + . += "" for(var/M in pref.body_markings) - . += "[M] [pref.body_markings.len > 1 ? "˄˅ " : ""]-Color" - . += "
__
" - . += "
" + . += "[M][pref.body_markings.len > 1 ? "˄ ˅ mv " : ""]- Color[color_square(hex = pref.body_markings[M])]" + . += "" . += "
" . += "Allow Synth markings: [pref.synth_markings ? "Yes" : "No"]
" . += "Allow Synth color: [pref.synth_color ? "Yes" : "No"]
" if(pref.synth_color) - . += "Change Color
__
" + . += "Change Color [color_square(pref.r_synth, pref.g_synth, pref.b_synth)]" . = jointext(.,null) @@ -431,16 +431,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.set_biological_gender(mob_species.genders[1]) pref.custom_species = null //VOREStation Edit - This is cleared on species changes //grab one of the valid hair styles for the newly chosen species - var/list/valid_hairstyles = list() - for(var/hairstyle in hair_styles_list) - var/datum/sprite_accessory/S = hair_styles_list[hairstyle] - if(pref.biological_gender == MALE && S.gender == FEMALE) - continue - if(pref.biological_gender == FEMALE && S.gender == MALE) - continue - if(!(pref.species in S.species_allowed)) - continue - valid_hairstyles[hairstyle] = hair_styles_list[hairstyle] + var/list/valid_hairstyles = pref.get_valid_hairstyles() if(valid_hairstyles.len) pref.h_style = pick(valid_hairstyles) @@ -449,17 +440,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.h_style = hair_styles_list["Bald"] //grab one of the valid facial hair styles for the newly chosen species - var/list/valid_facialhairstyles = list() - for(var/facialhairstyle in facial_hair_styles_list) - var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] - if(pref.biological_gender == MALE && S.gender == FEMALE) - continue - if(pref.biological_gender == FEMALE && S.gender == MALE) - continue - if(!(pref.species in S.species_allowed)) - continue - - valid_facialhairstyles[facialhairstyle] = facial_hair_styles_list[facialhairstyle] + var/list/valid_facialhairstyles = pref.get_valid_facialhairstyles() if(valid_facialhairstyles.len) pref.f_style = pick(valid_facialhairstyles) @@ -493,21 +474,35 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_REFRESH_UPDATE_PREVIEW else if(href_list["hair_style"]) - var/list/valid_hairstyles = list() - for(var/hairstyle in hair_styles_list) - var/datum/sprite_accessory/S = hair_styles_list[hairstyle] - if(!(pref.species in S.species_allowed) && (!pref.custom_base || !(pref.custom_base in S.species_allowed))) //VOREStation Edit - Custom species base species allowance - continue - if((!S.ckeys_allowed) || (usr.ckey in S.ckeys_allowed)) //VOREStation Edit, allows ckey locked hairstyles. - valid_hairstyles[S.name] = hairstyle //VOREStation Edit, allows ckey locked hairstyles. - - //valid_hairstyles[hairstyle] = hair_styles_list[hairstyle] //VOREStation Edit. Replaced by above. + var/list/valid_hairstyles = pref.get_valid_hairstyles() var/new_h_style = input(user, "Choose your character's hair style:", "Character Preference", pref.h_style) as null|anything in valid_hairstyles if(new_h_style && CanUseTopic(user)) pref.h_style = new_h_style return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["hair_style_left"]) + var/H = href_list["hair_style_left"] + var/list/valid_hairstyles = pref.get_valid_hairstyles() + var/start = valid_hairstyles.Find(H) + + if(start != 1) //If we're not the beginning of the list, become the previous element. + pref.h_style = valid_hairstyles[start-1] + else //But if we ARE, become the final element. + pref.h_style = valid_hairstyles[valid_hairstyles.len] + return TOPIC_REFRESH_UPDATE_PREVIEW + + else if(href_list["hair_style_right"]) + var/H = href_list["hair_style_right"] + var/list/valid_hairstyles = pref.get_valid_hairstyles() + var/start = valid_hairstyles.Find(H) + + if(start != valid_hairstyles.len) //If we're not the end of the list, become the next element. + pref.h_style = valid_hairstyles[start+1] + else //But if we ARE, become the first element. + pref.h_style = valid_hairstyles[1] + return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["facial_color"]) if(!has_flag(mob_species, HAS_HAIR_COLOR)) return TOPIC_NOACTION @@ -547,23 +542,35 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_REFRESH_UPDATE_PREVIEW else if(href_list["facial_style"]) - var/list/valid_facialhairstyles = list() - for(var/facialhairstyle in facial_hair_styles_list) - var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] - if(pref.biological_gender == MALE && S.gender == FEMALE) - continue - if(pref.biological_gender == FEMALE && S.gender == MALE) - continue - if(!(pref.species in S.species_allowed) && (!pref.custom_base || !(pref.custom_base in S.species_allowed))) //VOREStation Edit - Custom species base species allowance - continue - - valid_facialhairstyles[facialhairstyle] = facial_hair_styles_list[facialhairstyle] + var/list/valid_facialhairstyles = pref.get_valid_facialhairstyles() var/new_f_style = input(user, "Choose your character's facial-hair style:", "Character Preference", pref.f_style) as null|anything in valid_facialhairstyles if(new_f_style && has_flag(mob_species, HAS_HAIR_COLOR) && CanUseTopic(user)) pref.f_style = new_f_style return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["facial_style_left"]) + var/F = href_list["facial_style_left"] + var/list/valid_facialhairstyles = pref.get_valid_facialhairstyles() + var/start = valid_facialhairstyles.Find(F) + + if(start != 1) //If we're not the beginning of the list, become the previous element. + pref.f_style = valid_facialhairstyles[start-1] + else //But if we ARE, become the final element. + pref.f_style = valid_facialhairstyles[valid_facialhairstyles.len] + return TOPIC_REFRESH_UPDATE_PREVIEW + + else if(href_list["facial_style_right"]) + var/F = href_list["facial_style_right"] + var/list/valid_facialhairstyles = pref.get_valid_facialhairstyles() + var/start = valid_facialhairstyles.Find(F) + + if(start != valid_facialhairstyles.len) //If we're not the end of the list, become the next element. + pref.f_style = valid_facialhairstyles[start+1] + else //But if we ARE, become the first element. + pref.f_style = valid_facialhairstyles[1] + return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["marking_style"]) var/list/usable_markings = pref.body_markings.Copy() ^ body_marking_styles_list.Copy() /* VOREStation Removal - No markings whitelist, let people mix/match @@ -597,6 +604,19 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O moveElement(pref.body_markings, start, 1) return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["marking_move"]) + var/M = href_list["marking_move"] + var/start = pref.body_markings.Find(M) + var/list/move_locs = pref.body_markings - M + if(start != 1) + move_locs -= pref.body_markings[start-1] + + var/inject_after = input(user, "Move [M] ahead of...", "Character Preference") as null|anything in move_locs //Move ahead of any marking that isn't the current or previous one. + var/newpos = pref.body_markings.Find(inject_after) + if(newpos) + moveElement(pref.body_markings, start, newpos+1) + return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["marking_remove"]) var/M = href_list["marking_remove"] pref.body_markings -= M diff --git a/code/modules/client/preference_setup/global/01_ui.dm b/code/modules/client/preference_setup/global/01_ui.dm index ed66138da5..a40155d2d5 100644 --- a/code/modules/client/preference_setup/global/01_ui.dm +++ b/code/modules/client/preference_setup/global/01_ui.dm @@ -29,7 +29,7 @@ /datum/category_item/player_setup_item/player_global/ui/content(var/mob/user) . = "UI Style: [pref.UI_style]
" . += "Custom UI (recommended for White UI):
" - . += "-Color: [pref.UI_style_color] 
__
 reset
" + . += "-Color: [pref.UI_style_color] [color_square(hex = pref.UI_style_color)] reset
" . += "-Alpha(transparency): [pref.UI_style_alpha] reset
" . += "Tooltip Style: [pref.tooltipstyle]
" . += "Client FPS: [pref.client_fps]
" @@ -38,7 +38,7 @@ if(pref.ooccolor == initial(pref.ooccolor)) . += "Using Default
" else - . += "[pref.ooccolor]
__
 reset
" + . += "[pref.ooccolor] [color_square(hex = pref.ooccolor)] reset
" /datum/category_item/player_setup_item/player_global/ui/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["select_style"]) diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index c99af02ea0..638768ae9e 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -298,4 +298,8 @@ return 220 if(PREF_FBP_SOFTWARE) return 150 - return S.max_age // welp \ No newline at end of file + return S.max_age // welp + +/datum/category_item/player_setup_item/proc/color_square(red, green, blue, hex) + var/color = hex ? hex : "#[num2hex(red, 2)][num2hex(green, 2)][num2hex(blue, 2)]" + return "___" \ No newline at end of file diff --git a/code/modules/client/preference_setup/vore/01_ears.dm b/code/modules/client/preference_setup/vore/01_ears.dm index dbd4653fbc..8a26513a01 100644 --- a/code/modules/client/preference_setup/vore/01_ears.dm +++ b/code/modules/client/preference_setup/vore/01_ears.dm @@ -154,9 +154,9 @@ if(ear_styles_list[pref.ear_style]) var/datum/sprite_accessory/ears/ear = ear_styles_list[pref.ear_style] if (ear.do_colouration) - . += "Change Color
__

" + . += "Change Color [color_square(pref.r_ears, pref.g_ears, pref.b_ears)]
" if (ear.extra_overlay) - . += "Change Secondary Color
__

" + . += "Change Secondary Color [color_square(pref.r_ears2, pref.g_ears2, pref.b_ears2)]
" var/tail_display = "Normal" if(pref.tail_style && (pref.tail_style in tail_styles_list)) @@ -170,9 +170,9 @@ if(tail_styles_list[pref.tail_style]) var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style] if (T.do_colouration) - . += "Change Color
__

" + . += "Change Color [color_square(pref.r_tail, pref.g_tail, pref.b_tail)]
" if (T.extra_overlay) - . += "Change Secondary Color
__

" + . += "Change Secondary Color [color_square(pref.r_tail2, pref.g_tail2, pref.b_tail2)]
" var/wing_display = "Normal" if(pref.wing_style && (pref.wing_style in wing_styles_list)) @@ -186,9 +186,9 @@ if(wing_styles_list[pref.wing_style]) var/datum/sprite_accessory/wing/W = wing_styles_list[pref.wing_style] if (W.do_colouration) - . += "Change Color
__

" + . += "Change Color [color_square(pref.r_wing, pref.g_wing, pref.b_wing)]
" if (W.extra_overlay) - . += "Change Secondary Color
__

" + . += "Change Secondary Color [color_square(pref.r_wing2, pref.g_wing2, pref.b_wing2)]
" /datum/category_item/player_setup_item/vore/ears/OnTopic(var/href,var/list/href_list, var/mob/user) if(!CanUseTopic(user)) diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm index 04dc49e18e..4cd03f36e5 100644 --- a/code/modules/clothing/spacesuits/void/void_vr.dm +++ b/code/modules/clothing/spacesuits/void/void_vr.dm @@ -133,4 +133,124 @@ icon_state = "chronosuit" item_state = "chronosuit" icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' \ No newline at end of file + icon_override = 'icons/mob/suit_vr.dmi' + +/obj/item/clothing/suit/space/void/autolok + name = "AutoLok pressure suit" + desc = "A high-tech snug-fitting pressure suit. Fits any species. It offers very little physical protection, but is equipped with sensors that will automatically deploy the integral helmet to protect the wearer." + icon_state = "autoloksuit" + item_state = "autoloksuit" + armor = list(melee = 15, bullet = 5, laser = 5,energy = 5, bomb = 5, bio = 100, rad = 80) + slowdown = 0 + siemens_coefficient = 1 + species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX) //this thing can autoadapt + icon = 'icons/obj/clothing/suits_vr.dmi' + breach_threshold = 6 //this thing is basically tissue paper + w_class = ITEMSIZE_NORMAL //if it's snug, high-tech, and made of relatively soft materials, it should be much easier to store! + +/obj/item/clothing/suit/space/void/autolok + sprite_sheets = list( + SPECIES_HUMAN = 'icons/mob/spacesuit_vr.dmi', + SPECIES_TAJ = 'icons/mob/species/tajaran/suit_vr.dmi', + SPECIES_SKRELL = 'icons/mob/species/skrell/suit_vr.dmi', + SPECIES_UNATHI = 'icons/mob/species/unathi/suit_vr.dmi', + SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit_vr.dmi', + SPECIES_AKULA = 'icons/mob/species/unathi/suit_vr.dmi', + SPECIES_SERGAL = 'icons/mob/species/unathi/suit_vr.dmi', + SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit_vr.dmi', + SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/suit_vr.dmi', + SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit_vr.dmi', + SPECIES_TESHARI = 'icons/mob/species/seromi/suit_vr.dmi' + ) + sprite_sheets_obj = list( + SPECIES_TAJ = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_SKRELL = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_UNATHI = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_XENOHYBRID = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_AKULA = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_SERGAL = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_VULPKANIN = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_ZORREN_HIGH = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_FENNEC = 'icons/obj/clothing/suits_vr.dmi', + SPECIES_TESHARI = 'icons/obj/clothing/suits_vr.dmi' + ) + +/obj/item/clothing/suit/space/void/autolok/Initialize() + ..() + helmet = new /obj/item/clothing/head/helmet/space/void/autolok //autoinstall the helmet + +//override the attackby screwdriver proc so that people can't remove the helmet +/obj/item/clothing/suit/space/void/autolok/attackby(obj/item/W as obj, mob/user as mob) + + if(!isliving(user)) + return + + if(istype(W, /obj/item/clothing/accessory) || istype(W, /obj/item/weapon/hand_labeler)) + return ..() + + if(user.get_inventory_slot(src) == slot_wear_suit) + to_chat(user, "You cannot modify \the [src] while it is being worn.") + return + + if(W.is_screwdriver()) + if(boots || tank || cooler) + var/choice = input("What component would you like to remove?") as null|anything in list(boots,tank,cooler) + if(!choice) return + + if(choice == tank) //No, a switch doesn't work here. Sorry. ~Techhead + to_chat(user, "You pop \the [tank] out of \the [src]'s storage compartment.") + tank.forceMove(get_turf(src)) + playsound(src, W.usesound, 50, 1) + src.tank = null + else if(choice == cooler) + to_chat(user, "You pop \the [cooler] out of \the [src]'s storage compartment.") + cooler.forceMove(get_turf(src)) + playsound(src, W.usesound, 50, 1) + src.cooler = null + else if(choice == boots) + to_chat(user, "You detach \the [boots] from \the [src]'s boot mounts.") + boots.forceMove(get_turf(src)) + playsound(src, W.usesound, 50, 1) + src.boots = null + else + to_chat(user, "\The [src] does not have anything installed.") + return + + ..() + +/obj/item/clothing/head/helmet/space/void/autolok + name = "AutoLok pressure helmet" + desc = "A rather close-fitting helmet designed to protect the wearer from hazardous conditions. Automatically deploys when the suit's sensors detect an environment that is hazardous to the wearer." + icon_state = "autolokhelmet" + item_state = "autolokhelmet" + species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX) //this thing can autoadapt too + icon = 'icons/obj/clothing/hats_vr.dmi' + flags_inv = HIDEEARS|BLOCKHAIR //removed HIDEFACE/MASK/EYES flags so sunglasses or facemasks don't disappear. still gotta have BLOCKHAIR or it'll clip out tho. + +/obj/item/clothing/head/helmet/space/void/autolok + sprite_sheets = list( + SPECIES_HUMAN = 'icons/mob/head_vr.dmi', + SPECIES_TAJ = 'icons/mob/species/tajaran/helmet_vr.dmi', + SPECIES_SKRELL = 'icons/mob/species/skrell/helmet_vr.dmi', + SPECIES_UNATHI = 'icons/mob/species/unathi/helmet_vr.dmi', + SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet_vr.dmi', + SPECIES_AKULA = 'icons/mob/species/unathi/helmet_vr.dmi', + SPECIES_SERGAL = 'icons/mob/species/unathi/helmet_vr.dmi', + SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/helmet_vr.dmi', + SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/helmet_vr.dmi', + SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet_vr.dmi', + SPECIES_TESHARI = 'icons/mob/species/seromi/helmet_vr.dmi' + ) + sprite_sheets_obj = list( + SPECIES_TAJ = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_SKRELL = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_UNATHI = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_XENOHYBRID = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_AKULA = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_SERGAL = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_VULPKANIN = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_ZORREN_HIGH = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_FENNEC = 'icons/obj/clothing/hats_vr.dmi', + SPECIES_TESHARI = 'icons/obj/clothing/hats_vr.dmi' + ) + sprite_sheets_refit = list() //have to nullify this as well just to be thorough \ No newline at end of file diff --git a/code/modules/food/drinkingglass/metaglass.dm b/code/modules/food/drinkingglass/metaglass.dm index 31ad0b7330..c67f816419 100644 --- a/code/modules/food/drinkingglass/metaglass.dm +++ b/code/modules/food/drinkingglass/metaglass.dm @@ -19,6 +19,11 @@ if (reagents.reagent_list.len > 0) var/datum/reagent/R = reagents.get_master_reagent() + if(R.glass_icon_file) + icon = R.glass_icon_file + else + icon = initial(icon) + if(R.glass_icon_state) icon_state = R.glass_icon_state else @@ -62,6 +67,7 @@ Drinks Data */ /datum/reagent + var/glass_icon_file = null var/glass_icon_state = null var/glass_center_of_mass = null diff --git a/code/modules/food/drinkingglass/metaglass_vr.dm b/code/modules/food/drinkingglass/metaglass_vr.dm new file mode 100644 index 0000000000..305077f387 --- /dev/null +++ b/code/modules/food/drinkingglass/metaglass_vr.dm @@ -0,0 +1,206 @@ +/datum/reagent/ethanol/ginzamary + glass_icon_state = "ginzamaryglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/deathbell + glass_icon_state = "deathbellglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/drink/brownstar + glass_icon_state = "brownstarglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/spacersbrew + glass_icon_state = "spacersbrewglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/galacticpanic + glass_icon_state = "galacticpanicglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/bulldog + glass_icon_state = "bulldogglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/sbagliato + glass_icon_state = "sbagliatoglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/italiancrisis + glass_icon_state = "italiancrisisglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/bigbeer + glass_icon_state = "bigbeerglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/sugarrush + glass_icon_state = "sugarrushglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/lotus + glass_icon_state = "lotusglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/shroomjuice + glass_icon_state = "shroomjuiceglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/russianroulette + glass_icon_state = "russianrouletteglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/lovepotion + glass_icon_state = "lovepotionglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/honeyshot + glass_icon_state = "honeyshotglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/appletini + glass_icon_state = "appletiniglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/glowingappletini + glass_icon_state = "glowingappletiniglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/scsatw + glass_icon_state = "slowcomfortablescrewagainstthewallglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/drink/choccymilk + glass_icon_state = "choccymilkglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/drink/sweettea + glass_icon_state = "sweetteaglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/redspaceflush + glass_icon_state = "redspaceflushglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/drink/graveyard + glass_icon_state = "graveyardglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/unsweettea + glass_icon_state = "unsweetteaglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/hairoftherat + glass_icon_state = "hairoftheratglass" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/drink/soda/kiraspecial + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/drink/soda/brownstar + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/drink/doctor_delight + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/acid_spit + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/antifreeze + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/coffee/b52 + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/bananahonk + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/bloody_mary + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/booger + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/devilskiss + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/driestmartini + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/ginfizz + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/gargle_blaster + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/goldschlager + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/hippies_delight + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/irishcarbomb + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/irish_cream + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/longislandicedtea + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/manhattan_proj + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/neurotoxin + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/screwdrivercocktail + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/silencer + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/snowwhite + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/tequilla_sunrise + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/white_russian + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/whiskey_cola + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/holywine + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/holy_mary + glass_icon_file = 'icons/obj/drinks_vr.dmi' + +/datum/reagent/ethanol/angelskiss + glass_icon_file = 'icons/obj/drinks_vr.dmi' diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 11917f4c40..47e52f3b61 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -1,9 +1,7 @@ /obj/structure/closet/crate/secure/loot name = "abandoned crate" desc = "What could be inside?" - icon_state = "securecrate" - icon_opened = "securecrateopen" - icon_closed = "securecrate" + closet_appearance = /decl/closet_appearance/crate/secure var/list/code = list() var/list/lastattempt = list() var/attempts = 10 diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index 878af570e8..415a4b2041 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -61,6 +61,9 @@ /obj/machinery/mining/drill/loaded cell = /obj/item/weapon/cell/high +/obj/machinery/mining/drill/get_cell() + return cell + /obj/machinery/mining/drill/process() if(need_player_check) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 12bcdb76be..da01ebbc35 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -138,11 +138,8 @@ /obj/structure/closet/crate/miningcar desc = "A mining car. This one doesn't work on rails, but has to be dragged." name = "Mining car (not for rails)" - icon = 'icons/obj/storage.dmi' - icon_state = "miningcar" + icon = 'icons/obj/closets/miningcar.dmi' density = 1 - icon_opened = "miningcaropen" - icon_closed = "miningcar" // Flags. diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 61553b3ce4..89ea5a0c29 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1,413 +1,413 @@ -/mob/living/carbon/Initialize() - . = ..() - //setup reagent holders - bloodstr = new/datum/reagents/metabolism/bloodstream(500, src) - ingested = new/datum/reagents/metabolism/ingested(500, src) - touching = new/datum/reagents/metabolism/touch(500, src) - reagents = bloodstr - if (!default_language && species_language) - default_language = GLOB.all_languages[species_language] - -/mob/living/carbon/Life() - ..() - - handle_viruses() - - // Increase germ_level regularly - if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level - germ_level++ - -/mob/living/carbon/Destroy() - qdel(ingested) - qdel(touching) - // We don't qdel(bloodstr) because it's the same as qdel(reagents) - for(var/guts in internal_organs) - qdel(guts) - for(var/food in stomach_contents) - qdel(food) - return ..() - -/mob/living/carbon/rejuvenate() - bloodstr.clear_reagents() - ingested.clear_reagents() - touching.clear_reagents() - ..() -/* VOREStation Edit - Duplicated in our code -/mob/living/carbon/Moved(atom/old_loc, direction, forced = FALSE) - . = ..() - if(src.nutrition && src.stat != 2) - adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) - if(src.m_intent == "run") - adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) - - if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360) - src.bodytemperature += 2 - - // Moving around increases germ_level faster - if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) - germ_level++ - -/mob/living/carbon/relaymove(var/mob/living/user, direction) - if((user in src.stomach_contents) && istype(user)) - if(user.last_special <= world.time) - user.last_special = world.time + 50 - src.visible_message("You hear something rumbling inside [src]'s stomach...") - var/obj/item/I = user.get_active_hand() - if(I && I.force) - var/d = rand(round(I.force / 4), I.force) - if(istype(src, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - var/obj/item/organ/external/organ = H.get_organ(BP_TORSO) - if (istype(organ)) - if(organ.take_damage(d, 0)) - H.UpdateDamageIcon() - H.updatehealth() - else - src.take_organ_damage(d) - user.visible_message("[user] attacks [src]'s stomach wall with the [I.name]!") - playsound(user, 'sound/effects/attackblob.ogg', 50, 1) - - if(prob(src.getBruteLoss() - 50)) - for(var/atom/movable/A in stomach_contents) - A.loc = loc - stomach_contents.Remove(A) - src.gib() -*/ -/mob/living/carbon/gib() - for(var/mob/M in src) - if(M in src.stomach_contents) - src.stomach_contents.Remove(M) - M.loc = src.loc - for(var/mob/N in viewers(src, null)) - if(N.client) - N.show_message(text("[M] bursts out of [src]!"), 2) - ..() - -/mob/living/carbon/attack_hand(mob/M as mob) - if(!istype(M, /mob/living/carbon)) return - if (ishuman(M)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] - if (H.hand) - temp = H.organs_by_name["l_hand"] - if(temp && !temp.is_usable()) - to_chat(H, "You can't use your [temp.name]") - return - - return - -/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1) - if(status_flags & GODMODE) return 0 //godmode - if(def_zone == "l_hand" || def_zone == "r_hand") //Diona (And any other potential plant people) hands don't get shocked. - if(species.flags & IS_PLANT) - return 0 - shock_damage *= siemens_coeff - if (shock_damage<1) - return 0 - - src.apply_damage(0.2 * shock_damage, BURN, def_zone, used_weapon="Electrocution") //shock the target organ - src.apply_damage(0.4 * shock_damage, BURN, BP_TORSO, used_weapon="Electrocution") //shock the torso more - src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! - src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! - - playsound(src, "sparks", 50, 1, -1) - if (shock_damage > 15) - src.visible_message( - "[src] was electrocuted[source ? " by the [source]" : ""]!", \ - "You feel a powerful shock course through your body!", \ - "You hear a heavy electrical crack." \ - ) - else - src.visible_message( - "[src] was shocked[source ? " by the [source]" : ""].", \ - "You feel a shock course through your body.", \ - "You hear a zapping sound." \ - ) - - if(stun) - switch(shock_damage) - if(16 to 20) - Stun(2) - if(21 to 25) - Weaken(2) - if(26 to 30) - Weaken(5) - if(31 to INFINITY) - Weaken(10) //This should work for now, more is really silly and makes you lay there forever - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, loc) - s.start() - - return shock_damage - -/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) - if (src.health >= config.health_threshold_crit) - if(src == M && istype(src, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - var/datum/gender/T = gender_datums[H.get_visible_gender()] - src.visible_message( \ - "[src] examines [T.himself].", \ - "You check yourself for injuries." \ - ) - - for(var/obj/item/organ/external/org in H.organs) - var/list/status = list() - var/brutedamage = org.brute_dam - var/burndamage = org.burn_dam - /* - if(halloss > 0) //Makes halloss show up as actual wounds on self examine. - if(prob(30)) - brutedamage += halloss - if(prob(30)) - burndamage += halloss - */ - switch(brutedamage) - if(1 to 20) - status += "bruised" - if(20 to 40) - status += "wounded" - if(40 to INFINITY) - status += "mangled" - - switch(burndamage) - if(1 to 10) - status += "numb" - if(10 to 40) - status += "blistered" - if(40 to INFINITY) - status += "peeling away" - - if(org.is_stump()) - status += "MISSING" - if(org.status & ORGAN_MUTATED) - status += "weirdly shapen" - if(org.dislocated == 2) - status += "dislocated" - if(org.status & ORGAN_BROKEN) - status += "hurts when touched" - if(org.status & ORGAN_DEAD) - status += "is bruised and necrotic" - if(!org.is_usable() || org.is_dislocated()) - status += "dangling uselessly" - if(status.len) - src.show_message("My [org.name] is [english_list(status)].",1) - else - src.show_message("My [org.name] is OK.",1) - - if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit)) - H.play_xylophone() - else if (on_fire) - playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - if (M.on_fire) - M.visible_message("[M] tries to pat out [src]'s flames, but to no avail!", - "You try to pat out [src]'s flames, but to no avail! Put yourself out first!") - else - M.visible_message("[M] tries to pat out [src]'s flames!", - "You try to pat out [src]'s flames! Hot!") - if(do_mob(M, src, 15)) - src.adjust_fire_stacks(-0.5) - if (prob(10) && (M.fire_stacks <= 0)) - M.adjust_fire_stacks(1) - M.IgniteMob() - if (M.on_fire) - M.visible_message("The fire spreads from [src] to [M]!", - "The fire spreads to you as well!") - else - src.adjust_fire_stacks(-0.5) //Less effective than stop, drop, and roll - also accounting for the fact that it takes half as long. - if (src.fire_stacks <= 0) - M.visible_message("[M] successfully pats out [src]'s flames.", - "You successfully pat out [src]'s flames.") - src.ExtinguishMob() - src.fire_stacks = 0 - else - if (istype(src,/mob/living/carbon/human) && src:w_uniform) - var/mob/living/carbon/human/H = src - H.w_uniform.add_fingerprint(M) - - var/show_ssd - var/mob/living/carbon/human/H = src - var/datum/gender/T = gender_datums[H.get_visible_gender()] // make sure to cast to human before using get_gender() or get_visible_gender()! - if(istype(H)) show_ssd = H.species.show_ssd - if(show_ssd && !client && !teleop) - M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ - "You shake [src], but [T.he] [T.does] not respond... Maybe [T.he] [T.has] S.S.D?") - else if(lying || src.sleeping) - src.sleeping = max(0,src.sleeping-5) - if(src.sleeping == 0) - src.resting = 0 - if(H) H.in_stasis = 0 //VOREStation Add - Just In Case - M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ - "You shake [src] trying to wake [T.him] up!") - else - var/mob/living/carbon/human/hugger = M - var/datum/gender/TM = gender_datums[M.get_visible_gender()] - if(M.resting == 1) //Are they resting on the ground? - M.visible_message("[M] grabs onto [src] and pulls [TM.himself] up", \ - "You grip onto [src] and pull yourself up off the ground!") - if(M.fire_stacks >= (src.fire_stacks + 3)) //Fire checks. - src.adjust_fire_stacks(1) - M.adjust_fire_stacks(-1) - if(M.on_fire) - src.IgniteMob() - if(do_after(M, 0.5 SECONDS)) //.5 second delay. Makes it a bit stronger than just typing rest. - M.resting = 0 //Hoist yourself up up off the ground. No para/stunned/weakened removal. - else if(istype(hugger)) - hugger.species.hug(hugger,src) - else - M.visible_message("[M] hugs [src] to make [T.him] feel better!", \ - "You hug [src] to make [T.him] feel better!") - if(M.fire_stacks >= (src.fire_stacks + 3)) - src.adjust_fire_stacks(1) - M.adjust_fire_stacks(-1) - if(M.on_fire) - src.IgniteMob() - AdjustParalysis(-3) - AdjustStunned(-3) - AdjustWeakened(-3) - - playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - -/mob/living/carbon/proc/eyecheck() - return 0 - -/mob/living/carbon/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash) - if(eyecheck() < intensity || override_blindness_check) - return ..() - -// ++++ROCKDTBEN++++ MOB PROCS -- Ask me before touching. -// Stop! ... Hammertime! ~Carn - -/mob/living/carbon/proc/getDNA() - return dna - -/mob/living/carbon/proc/setDNA(var/datum/dna/newDNA) - dna = newDNA - -// ++++ROCKDTBEN++++ MOB PROCS //END - -/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - ..() - var/temp_inc = max(min(BODYTEMP_HEATING_MAX*(1-get_heat_protection()), exposed_temperature - bodytemperature), 0) - bodytemperature += temp_inc - -/mob/living/carbon/can_use_hands() - if(handcuffed) - return 0 - if(buckled && istype(buckled, /obj/structure/bed/nest)) // buckling does not restrict hands - return 0 - return 1 - -/mob/living/carbon/restrained() - if (handcuffed) - return 1 - return - -/mob/living/carbon/u_equip(obj/item/W as obj) - if(!W) return 0 - - else if (W == handcuffed) - handcuffed = null - update_handcuffed() - if(buckled && buckled.buckle_require_restraints) - buckled.unbuckle_mob() - - else if (W == legcuffed) - legcuffed = null - update_inv_legcuffed() - else - ..() - - -//generates realistic-ish pulse output based on preset levels -/mob/living/carbon/proc/get_pulse(var/method) //method 0 is for hands, 1 is for machines, more accurate - var/temp = 0 //see setup.dm:694 - switch(src.pulse) - if(PULSE_NONE) - return "0" - if(PULSE_SLOW) - temp = rand(40, 60) - return num2text(method ? temp : temp + rand(-10, 10)) - if(PULSE_NORM) - temp = rand(60, 90) - return num2text(method ? temp : temp + rand(-10, 10)) - if(PULSE_FAST) - temp = rand(90, 120) - return num2text(method ? temp : temp + rand(-10, 10)) - if(PULSE_2FAST) - temp = rand(120, 160) - return num2text(method ? temp : temp + rand(-10, 10)) - if(PULSE_THREADY) - return method ? ">250" : "extremely weak and fast, patient's artery feels like a thread" -// output for machines^ ^^^^^^^output for people^^^^^^^^^ - -/mob/living/carbon/verb/mob_sleep() - set name = "Sleep" - set category = "IC" - - if(usr.sleeping) - to_chat(usr, "You are already sleeping") - return - if(alert(src,"You sure you want to sleep for a while?","Sleep","Yes","No") == "Yes") - usr.sleeping = 20 //Short nap - -/mob/living/carbon/Bump(atom/A) - if(now_pushing) - return - ..() - if(istype(A, /mob/living/carbon) && prob(10)) - spread_disease_to(A, "Contact") - -/mob/living/carbon/cannot_use_vents() - return - -/mob/living/carbon/slip(var/slipped_on,stun_duration=8) - if(buckled) - return 0 - stop_pulling() - to_chat(src, "You slipped on [slipped_on]!") - playsound(src, 'sound/misc/slip.ogg', 50, 1, -3) - Weaken(FLOOR(stun_duration/2, 1)) - return 1 - -/mob/living/carbon/proc/add_chemical_effect(var/effect, var/magnitude = 1) - if(effect in chem_effects) - chem_effects[effect] += magnitude - else - chem_effects[effect] = magnitude - -/mob/living/carbon/get_default_language() - if(default_language) - if(can_speak(default_language)) - return default_language - else - return GLOB.all_languages[LANGUAGE_GIBBERISH] - - if(!species) - return GLOB.all_languages[LANGUAGE_GIBBERISH] - - return species.default_language ? GLOB.all_languages[species.default_language] : GLOB.all_languages[LANGUAGE_GIBBERISH] - -/mob/living/carbon/proc/should_have_organ(var/organ_check) - return 0 - -/mob/living/carbon/can_feel_pain(var/check_organ) - if(isSynthetic()) - return 0 - return !(species.flags & NO_PAIN) - -/mob/living/carbon/needs_to_breathe() - if(does_not_breathe) - return FALSE - return ..() - -/mob/living/carbon/proc/update_handcuffed() - if(handcuffed) - drop_l_hand() - drop_r_hand() - stop_pulling() - throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = handcuffed) - else - clear_alert("handcuffed") - update_action_buttons() //some of our action buttons might be unusable when we're handcuffed. - update_inv_handcuffed() +/mob/living/carbon/Initialize() + . = ..() + //setup reagent holders + bloodstr = new/datum/reagents/metabolism/bloodstream(500, src) + ingested = new/datum/reagents/metabolism/ingested(500, src) + touching = new/datum/reagents/metabolism/touch(500, src) + reagents = bloodstr + if (!default_language && species_language) + default_language = GLOB.all_languages[species_language] + +/mob/living/carbon/Life() + ..() + + handle_viruses() + + // Increase germ_level regularly + if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level + germ_level++ + +/mob/living/carbon/Destroy() + qdel(ingested) + qdel(touching) + // We don't qdel(bloodstr) because it's the same as qdel(reagents) + for(var/guts in internal_organs) + qdel(guts) + for(var/food in stomach_contents) + qdel(food) + return ..() + +/mob/living/carbon/rejuvenate() + bloodstr.clear_reagents() + ingested.clear_reagents() + touching.clear_reagents() + ..() +/* VOREStation Edit - Duplicated in our code +/mob/living/carbon/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + if(src.nutrition && src.stat != 2) + adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) + if(src.m_intent == "run") + adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) + + if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360) + src.bodytemperature += 2 + + // Moving around increases germ_level faster + if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) + germ_level++ + +/mob/living/carbon/relaymove(var/mob/living/user, direction) + if((user in src.stomach_contents) && istype(user)) + if(user.last_special <= world.time) + user.last_special = world.time + 50 + src.visible_message("You hear something rumbling inside [src]'s stomach...") + var/obj/item/I = user.get_active_hand() + if(I && I.force) + var/d = rand(round(I.force / 4), I.force) + if(istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + var/obj/item/organ/external/organ = H.get_organ(BP_TORSO) + if (istype(organ)) + if(organ.take_damage(d, 0)) + H.UpdateDamageIcon() + H.updatehealth() + else + src.take_organ_damage(d) + user.visible_message("[user] attacks [src]'s stomach wall with the [I.name]!") + playsound(user, 'sound/effects/attackblob.ogg', 50, 1) + + if(prob(src.getBruteLoss() - 50)) + for(var/atom/movable/A in stomach_contents) + A.loc = loc + stomach_contents.Remove(A) + src.gib() +*/ +/mob/living/carbon/gib() + for(var/mob/M in src) + if(M in src.stomach_contents) + src.stomach_contents.Remove(M) + M.loc = src.loc + for(var/mob/N in viewers(src, null)) + if(N.client) + N.show_message(text("[M] bursts out of [src]!"), 2) + ..() + +/mob/living/carbon/attack_hand(mob/M as mob) + if(!istype(M, /mob/living/carbon)) return + if (ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] + if (H.hand) + temp = H.organs_by_name["l_hand"] + if(temp && !temp.is_usable()) + to_chat(H, "You can't use your [temp.name]") + return + + return + +/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1) + if(status_flags & GODMODE) return 0 //godmode + if(def_zone == "l_hand" || def_zone == "r_hand") //Diona (And any other potential plant people) hands don't get shocked. + if(species.flags & IS_PLANT) + return 0 + shock_damage *= siemens_coeff + if (shock_damage<1) + return 0 + + src.apply_damage(0.2 * shock_damage, BURN, def_zone, used_weapon="Electrocution") //shock the target organ + src.apply_damage(0.4 * shock_damage, BURN, BP_TORSO, used_weapon="Electrocution") //shock the torso more + src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! + src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! + + playsound(src, "sparks", 50, 1, -1) + if (shock_damage > 15) + src.visible_message( + "[src] was electrocuted[source ? " by the [source]" : ""]!", \ + "You feel a powerful shock course through your body!", \ + "You hear a heavy electrical crack." \ + ) + else + src.visible_message( + "[src] was shocked[source ? " by the [source]" : ""].", \ + "You feel a shock course through your body.", \ + "You hear a zapping sound." \ + ) + + if(stun) + switch(shock_damage) + if(16 to 20) + Stun(2) + if(21 to 25) + Weaken(2) + if(26 to 30) + Weaken(5) + if(31 to INFINITY) + Weaken(10) //This should work for now, more is really silly and makes you lay there forever + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, loc) + s.start() + + return shock_damage + +/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) + if (src.health >= config.health_threshold_crit) + if(src == M && istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + var/datum/gender/T = gender_datums[H.get_visible_gender()] + src.visible_message( \ + "[src] examines [T.himself].", \ + "You check yourself for injuries." \ + ) + + for(var/obj/item/organ/external/org in H.organs) + var/list/status = list() + var/brutedamage = org.brute_dam + var/burndamage = org.burn_dam + /* + if(halloss > 0) //Makes halloss show up as actual wounds on self examine. + if(prob(30)) + brutedamage += halloss + if(prob(30)) + burndamage += halloss + */ + switch(brutedamage) + if(1 to 20) + status += "bruised" + if(20 to 40) + status += "wounded" + if(40 to INFINITY) + status += "mangled" + + switch(burndamage) + if(1 to 10) + status += "numb" + if(10 to 40) + status += "blistered" + if(40 to INFINITY) + status += "peeling away" + + if(org.is_stump()) + status += "MISSING" + if(org.status & ORGAN_MUTATED) + status += "weirdly shapen" + if(org.dislocated == 2) + status += "dislocated" + if(org.status & ORGAN_BROKEN) + status += "hurts when touched" + if(org.status & ORGAN_DEAD) + status += "is bruised and necrotic" + if(!org.is_usable() || org.is_dislocated()) + status += "dangling uselessly" + if(status.len) + src.show_message("My [org.name] is [english_list(status)].",1) + else + src.show_message("My [org.name] is OK.",1) + + if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit)) + H.play_xylophone() + else if (on_fire) + playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + if (M.on_fire) + M.visible_message("[M] tries to pat out [src]'s flames, but to no avail!", + "You try to pat out [src]'s flames, but to no avail! Put yourself out first!") + else + M.visible_message("[M] tries to pat out [src]'s flames!", + "You try to pat out [src]'s flames! Hot!") + if(do_mob(M, src, 15)) + src.adjust_fire_stacks(-0.5) + if (prob(10) && (M.fire_stacks <= 0)) + M.adjust_fire_stacks(1) + M.IgniteMob() + if (M.on_fire) + M.visible_message("The fire spreads from [src] to [M]!", + "The fire spreads to you as well!") + else + src.adjust_fire_stacks(-0.5) //Less effective than stop, drop, and roll - also accounting for the fact that it takes half as long. + if (src.fire_stacks <= 0) + M.visible_message("[M] successfully pats out [src]'s flames.", + "You successfully pat out [src]'s flames.") + src.ExtinguishMob() + src.fire_stacks = 0 + else + if (istype(src,/mob/living/carbon/human) && src:w_uniform) + var/mob/living/carbon/human/H = src + H.w_uniform.add_fingerprint(M) + + var/show_ssd + var/mob/living/carbon/human/H = src + var/datum/gender/T = gender_datums[H.get_visible_gender()] // make sure to cast to human before using get_gender() or get_visible_gender()! + if(istype(H)) show_ssd = H.species.show_ssd + if(show_ssd && !client && !teleop) + M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ + "You shake [src], but [T.he] [T.does] not respond... Maybe [T.he] [T.has] S.S.D?") + else if(lying || src.sleeping) + src.sleeping = max(0,src.sleeping-5) + if(src.sleeping == 0) + src.resting = 0 + if(H) H.in_stasis = 0 //VOREStation Add - Just In Case + M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \ + "You shake [src] trying to wake [T.him] up!") + else + var/mob/living/carbon/human/hugger = M + var/datum/gender/TM = gender_datums[M.get_visible_gender()] + if(M.resting == 1) //Are they resting on the ground? + M.visible_message("[M] grabs onto [src] and pulls [TM.himself] up", \ + "You grip onto [src] and pull yourself up off the ground!") + if(M.fire_stacks >= (src.fire_stacks + 3)) //Fire checks. + src.adjust_fire_stacks(1) + M.adjust_fire_stacks(-1) + if(M.on_fire) + src.IgniteMob() + if(do_after(M, 0.5 SECONDS)) //.5 second delay. Makes it a bit stronger than just typing rest. + M.resting = 0 //Hoist yourself up up off the ground. No para/stunned/weakened removal. + else if(istype(hugger)) + hugger.species.hug(hugger,src) + else + M.visible_message("[M] hugs [src] to make [T.him] feel better!", \ + "You hug [src] to make [T.him] feel better!") + if(M.fire_stacks >= (src.fire_stacks + 3)) + src.adjust_fire_stacks(1) + M.adjust_fire_stacks(-1) + if(M.on_fire) + src.IgniteMob() + AdjustParalysis(-3) + AdjustStunned(-3) + AdjustWeakened(-3) + + playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + +/mob/living/carbon/proc/eyecheck() + return 0 + +/mob/living/carbon/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash) + if(eyecheck() < intensity || override_blindness_check) + return ..() + +// ++++ROCKDTBEN++++ MOB PROCS -- Ask me before touching. +// Stop! ... Hammertime! ~Carn + +/mob/living/carbon/proc/getDNA() + return dna + +/mob/living/carbon/proc/setDNA(var/datum/dna/newDNA) + dna = newDNA + +// ++++ROCKDTBEN++++ MOB PROCS //END + +/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + var/temp_inc = max(min(BODYTEMP_HEATING_MAX*(1-get_heat_protection()), exposed_temperature - bodytemperature), 0) + bodytemperature += temp_inc + +/mob/living/carbon/can_use_hands() + if(handcuffed) + return 0 + if(buckled && istype(buckled, /obj/structure/bed/nest)) // buckling does not restrict hands + return 0 + return 1 + +/mob/living/carbon/restrained() + if (handcuffed) + return 1 + return + +/mob/living/carbon/u_equip(obj/item/W as obj) + if(!W) return 0 + + else if (W == handcuffed) + handcuffed = null + update_handcuffed() + if(buckled && buckled.buckle_require_restraints) + buckled.unbuckle_mob() + + else if (W == legcuffed) + legcuffed = null + update_inv_legcuffed() + else + ..() + + +//generates realistic-ish pulse output based on preset levels +/mob/living/carbon/proc/get_pulse(var/method) //method 0 is for hands, 1 is for machines, more accurate + var/temp = 0 //see setup.dm:694 + switch(src.pulse) + if(PULSE_NONE) + return "0" + if(PULSE_SLOW) + temp = rand(40, 60) + return num2text(method ? temp : temp + rand(-10, 10)) + if(PULSE_NORM) + temp = rand(60, 90) + return num2text(method ? temp : temp + rand(-10, 10)) + if(PULSE_FAST) + temp = rand(90, 120) + return num2text(method ? temp : temp + rand(-10, 10)) + if(PULSE_2FAST) + temp = rand(120, 160) + return num2text(method ? temp : temp + rand(-10, 10)) + if(PULSE_THREADY) + return method ? ">250" : "extremely weak and fast, patient's artery feels like a thread" +// output for machines^ ^^^^^^^output for people^^^^^^^^^ + +/mob/living/carbon/verb/mob_sleep() + set name = "Sleep" + set category = "IC" + + if(usr.sleeping) + to_chat(usr, "You are already sleeping") + return + if(alert(src,"You sure you want to sleep for a while?","Sleep","Yes","No") == "Yes") + usr.sleeping = 20 //Short nap + +/mob/living/carbon/Bump(atom/A) + if(now_pushing) + return + ..() + if(istype(A, /mob/living/carbon) && prob(10)) + spread_disease_to(A, "Contact") + +/mob/living/carbon/cannot_use_vents() + return + +/mob/living/carbon/slip(var/slipped_on,stun_duration=8) + if(buckled) + return 0 + stop_pulling() + to_chat(src, "You slipped on [slipped_on]!") + playsound(src, 'sound/misc/slip.ogg', 50, 1, -3) + Weaken(FLOOR(stun_duration/2, 1)) + return 1 + +/mob/living/carbon/proc/add_chemical_effect(var/effect, var/magnitude = 1) + if(effect in chem_effects) + chem_effects[effect] += magnitude + else + chem_effects[effect] = magnitude + +/mob/living/carbon/get_default_language() + if(default_language) + if(can_speak(default_language)) + return default_language + else + return GLOB.all_languages[LANGUAGE_GIBBERISH] + + if(!species) + return GLOB.all_languages[LANGUAGE_GIBBERISH] + + return species.default_language ? GLOB.all_languages[species.default_language] : GLOB.all_languages[LANGUAGE_GIBBERISH] + +/mob/living/carbon/proc/should_have_organ(var/organ_check) + return 0 + +/mob/living/carbon/can_feel_pain(var/check_organ) + if(isSynthetic()) + return 0 + return !(species.flags & NO_PAIN) + +/mob/living/carbon/needs_to_breathe() + if(does_not_breathe) + return FALSE + return ..() + +/mob/living/carbon/proc/update_handcuffed() + if(handcuffed) + drop_l_hand() + drop_r_hand() + stop_pulling() + throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = handcuffed) + else + clear_alert("handcuffed") + update_action_buttons() //some of our action buttons might be unusable when we're handcuffed. + update_inv_handcuffed() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2f091e3806..eb95bdebbc 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1652,6 +1652,11 @@ msg += get_display_species() return msg +/mob/living/carbon/human/reduce_cuff_time() + if(istype(gloves, /obj/item/clothing/gloves/gauntlets/rig)) + return 2 + return ..() + /mob/living/carbon/human/pull_damage() if(((health - halloss) <= config.health_threshold_softcrit)) for(var/name in organs_by_name) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 444607b470..b8ab794303 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1229,12 +1229,14 @@ fat_alert = /obj/screen/alert/fat/synth hungry_alert = /obj/screen/alert/hungry/synth starving_alert = /obj/screen/alert/starving/synth + //VOREStation Add - Vampire hunger alert else if(get_species() == SPECIES_CUSTOM) var/datum/species/custom/C = species if(/datum/trait/bloodsucker in C.traits) fat_alert = /obj/screen/alert/fat/vampire hungry_alert = /obj/screen/alert/hungry/vampire starving_alert = /obj/screen/alert/starving/vampire + //VOREStation Add End switch(nutrition) if(450 to INFINITY) diff --git a/code/modules/mob/living/simple_mob/simple_hud.dm b/code/modules/mob/living/simple_mob/simple_hud.dm index d9641b4068..5f0c2b3746 100644 --- a/code/modules/mob/living/simple_mob/simple_hud.dm +++ b/code/modules/mob/living/simple_mob/simple_hud.dm @@ -158,6 +158,8 @@ healths.screen_loc = ui_health hud_elements |= healths + + pain = new /obj/screen( null ) zone_sel = new /obj/screen/zone_sel( null ) diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm index 55a9172c07..6215cf9b2a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm @@ -22,4 +22,7 @@ max_co2 = 0 min_n2 = 0 max_n2 = 0 - minbodytemp = 0 \ No newline at end of file + minbodytemp = 0 + +/datum/ai_holder/simple_mob/merc + intelligence_level = AI_SMART // Also knows not to walk while confused if it risks death. diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm index 4d418b0001..f45c1b185d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm @@ -81,7 +81,7 @@ icon_scale_y = 1.5 movement_shake_radius = 14 - maxHealth = 350 //VOREStation Edit + maxHealth = 450 deflect_chance = 25 has_repair_droid = TRUE armor = list( diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax_vr.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax_vr.dm new file mode 100644 index 0000000000..5d0aad8ef4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax_vr.dm @@ -0,0 +1,2 @@ +/datum/ai_holder/simple_mob/intentional/adv_dark_gygax + intelligence_level = AI_SMART // Also knows not to walk while confused if it risks death. diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm index 1a776b4e15..5307a05cd0 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm @@ -27,8 +27,8 @@ new_mimic.name = name new_mimic.desc = desc new_mimic.icon = icon - new_mimic.icon_state = icon_opened - new_mimic.icon_living = icon_opened + new_mimic.icon_state = "open" + new_mimic.icon_living = "open" else return ..() else diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 6464642a3b..ff68a02eac 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -277,3 +277,31 @@ break return highJob + +/datum/preferences/proc/get_valid_hairstyles() + var/list/valid_hairstyles = list() + for(var/hairstyle in hair_styles_list) + var/datum/sprite_accessory/S = hair_styles_list[hairstyle] + if(!(species in S.species_allowed) && (!custom_base || !(custom_base in S.species_allowed))) //VOREStation Edit - Custom species base species allowance + continue + if((!S.ckeys_allowed) || (usr.ckey in S.ckeys_allowed)) //VOREStation Edit, allows ckey locked hairstyles. + valid_hairstyles[S.name] = hairstyle //VOREStation Edit, allows ckey locked hairstyles. + + //valid_hairstyles[hairstyle] = hair_styles_list[hairstyle] //VOREStation Edit. Replaced by above. + + return valid_hairstyles + +/datum/preferences/proc/get_valid_facialhairstyles() + var/list/valid_facialhairstyles = list() + for(var/facialhairstyle in facial_hair_styles_list) + var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] + if(biological_gender == MALE && S.gender == FEMALE) + continue + if(biological_gender == FEMALE && S.gender == MALE) + continue + if(!(species in S.species_allowed) && (!custom_base || !(custom_base in S.species_allowed))) //VOREStation Edit - Custom species base species allowance + continue + + valid_facialhairstyles[facialhairstyle] = facial_hair_styles_list[facialhairstyle] + + return valid_facialhairstyles diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index cf951eb3ae..080b19b32d 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1383,5 +1383,5 @@ Note that amputating the affected organ does in fact remove the infection from t . = 0 for(var/obj/item/organ/external/L in organs) for(var/obj/item/I in L.implants) - if(!istype(I,/obj/item/weapon/implant) && !istype(I,/obj/item/device/nif)) + if(!istype(I,/obj/item/weapon/implant) && !istype(I,/obj/item/device/nif)) //VOREStation Add - NIFs return 1 \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm index fcabd92e39..45e05ef86c 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm @@ -106,3 +106,300 @@ playsound(M, 'sound/items/hooh.ogg', 50, 1, -1) if(prob(5)) to_chat(M, "You feel like you've been gnomed...") + + + +/datum/reagent/ethanol/galacticpanic + name = "Galactic Panic Attack" + id = "galacticpanic" + description = "The absolute worst thing you could ever put in your body." + taste_description = "an entire galaxy collasping in on itself." + strength = 10 + druggy = 50 + halluci = 30 + var/adj_dizzy = 10 + color = "#d3785d" + + glass_name = "Galactic Panic Attack" + glass_desc = "Looking into this is like staring at the stars." + +/datum/reagent/ethanol/galacticpanic/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + M.Stun(2) + +/datum/reagent/ethanol/galacticpanic/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + + if(dose * strength >= strength) // Early warning + M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects. + if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional. + M.slurring = max(M.slurring, 30) + +/datum/reagent/ethanol/bulldog + name = "Space Bulldog" + id = "bulldog" + description = "An inventive kahlua recipe." + taste_description = "fizzy, creamy, soda and coffee hell." + strength = 30 + color = "#d3785d" + + glass_name = "Space Bulldog" + glass_desc = "It looks like someone poured cola in a cup of coffee." + + +/datum/reagent/ethanol/sbagliato + name = "Negroni Sbagliato" + id = "sbagliato" + description = "A drink invented because a bartender was too drunk." + taste_description = "sweet bubbly wine and vermouth." + strength = 30 + color = "#d3785d" + + glass_name = "Negroni Sbagliato" + glass_desc = "Bubbles constantly pop up to the surface with a quiet fizz." + + +/datum/reagent/ethanol/italiancrisis + name = "Italian Crisis" + id = "italiancrisis" + description = "This drink was concocted by a madwoman, causing the Italian Crisis of 2123." + taste_description = "cola, fruit, fizz, coffee, and cream swirled together in an old boot." + strength = 20 + druggy = 0 + halluci = 0 + var/adj_dizzy = 0 + color = "#d3785d" + + glass_name = "Italian Crisis" + glass_desc = "This drink looks like it was a mistake." + +/datum/reagent/ethanol/sugarrush + name = "Sweet Rush" + id = "sugarrush" + description = "A favorite drink amongst poor bartenders living in Neo Detroit." + taste_description = "sweet bubblegum vodka." + strength = 30 + color = "#d3785d" + + glass_name = "Sweet Rush" + glass_desc = "This looks like it might rot your teeth out." + +/datum/reagent/ethanol/lotus + name = "Lotus" + id = "lotus" + description = "The result of making one mistake after another and trying to cover it up with sugar." + taste_description = "rich, sweet fruit and even more sugar." + strength = 25 + color = "#d3785d" + + glass_name = "Lotus" + glass_desc = "A promotional drink for a movie that only ever played in Neo Detroit theatres." + +/datum/reagent/ethanol/shroomjuice + name = "Dumb Shroom Juice" + id = "shroomjuice" + description = "The mushroom farmer didn't sort through their stock very well." + taste_description = "sweet and sour citrus with a savory kick." + strength = 100 + druggy = 30 + halluci = 30 + var/adj_dizzy = 30 + color = "#d3785d" + + glass_name = "Dumb Shroom Juice" + glass_desc = "Touch fuzzy, get dizzy." + +/datum/reagent/ethanol/russianroulette + name = "Russian Roulette" + id = "russianroulette" + description = "The perfect drink for wagering your liver on a game of cards." + taste_description = "coffee, vodka, cream, and a hot metal slug." + strength = 30 + var/adj_dizzy = 30 + color = "#d3785d" + + glass_name = "Russian Roulette" + glass_desc = "A favorite drink amongst the Pan-Slavic speaking community." + +/datum/reagent/ethanol/russianroulette/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + M.Stun(2) + +/datum/reagent/ethanol/lovepotion + name = "Love Potion" + id = "lovepotion" + description = "A drink said to help one find true love." + taste_description = "sweet fruit and honey." + strength = 30 + druggy = 0 + halluci = 0 + var/adj_dizzy = 30 + adj_temp = 10 + targ_temp = 360 + color = "#d3785d" + + glass_name = "Love Potion" + glass_desc = "A drink said to help one find the perfect fuck." + +/datum/reagent/ethanol/honeyshot + name = "Honey Shot" + id = "honeyshot" + description = "The perfect drink for bees." + taste_description = "sweet tart grenadine flavored with honey." + strength = 40 + var/adj_dizzy = 10 + color = "#d3785d" + + glass_name = "Honey shot" + glass_desc = "A glass of golden liquid." + +/datum/reagent/ethanol/appletini + name = "Appletini" + id = "appletini" + description = "A classic cocktail using every grandma's favorite fruit." + taste_description = "green sour apple with a hint of alcohol." + strength = 45 + color = "#d3785d" + + glass_name = "Appletini" + glass_desc = "The perfect fruit cocktail for a fancy night at the bar." + +/datum/reagent/ethanol/glowingappletini + name = "Glowing Appletini" + id = "glowingappletini" + description = "A new nuclear take on a pre-modern classic!" + taste_description = "overwhelmingly sour apples powered by a nuclear fission reactor." + strength = 30 + druggy = 20 + var/adj_dizzy = 20 + color = "#d3785d" + + glass_name = "Glowing Appletini" + glass_desc = "The atomic option to fruity cocktails." + +/datum/reagent/ethanol/scsatw + name = "Slow Comfortable Screw Against the Wall" + id = "scsatw" + description = "The screwdriver's bigger cousin." + taste_description = "smooth, savory booze and tangy orange juice." + strength = 0 + druggy = 0 + halluci = 0 + var/adj_dizzy = 0 + color = "#d3785d" + + glass_name = "Slow Comfortable Screw Against the Wall" + glass_desc = "The best accessory to daydrinking." + +/datum/reagent/drink/choccymilk + name = "Choccy Milk" + id = "choccymilk" + description = "Coco and milk, a timeless classic." + taste_description = "sophisticated bittersweet chocolate mixed with silky, creamy, whole milk." + color = "#d3785d" + + glass_name = "Choccy Milk" + glass_desc = "The most iconic duo in the galaxy, chocolate, and milk." + +/datum/reagent/ethanol/redspaceflush + name = "Red Space Flush" + id = "redspaceflush" + description = "A drink made by imbueing the essence of redspace into the spirits." + taste_description = "whiskey and rum strung out through a hellish dimensional rift." + strength = 30 + druggy = 10 + var/adj_dizzy = 10 + color = "#d3785d" + + glass_name = "Redspace Flush" + glass_desc = "A drink imbued with the very essence of Redspace." + +/datum/reagent/drink/graveyard + name = "Graveyard" + id = "graveyard" + description = "The result of taking a cup and filling it with all the drinks at the fountain." + taste_description = "sugar and fizz." + color = "#d3785d" + + glass_name = "Graveyard" + glass_desc = "Hahaha softdrink machine go pshshhhhh..." + +/datum/reagent/ethanol/bigbeer + name = "Giant Beer" + id = "bigbeer" + description = "Bars in Neo Detroit started to sell this drink when the city put mandatory drink limits in 2289." + taste_description = "beer, but bigger." + strength = 40 + color = "#d3785d" + + glass_name = "Giant Beer" + glass_desc = "The Neo Detroit beer and ale cocktail, perfect for your average drunk." + +/datum/reagent/drink/sweettea + name = "Sweet Tea" + id = "sweettea" + description = "Tea that is sweetened with some form of sweetener." + taste_description = "tea that is sweet." + color = "#d3785d" + + glass_name = "Sweet Tea" + glass_desc = "A southern classic. Southern what? You know, southern." + +/datum/reagent/ethanol/unsweettea + name = "Unsweetened Tea" + id = "unsweettea" + description = "A sick experiment to take the sweetness out of tea after sugar has been added resulted in this." + taste_description = "bland, slightly bitter, discount black tea." + strength = 80 + druggy = 10 + color = "#d3785d" + + glass_name = "Unsweetened Tea" + glass_desc = "A drink with all the calories of sweet tea, but with none of the satisfaction. Slightly psychoactive." + +/datum/reagent/ethanol/hairoftherat + name = "Hair of the Rat" + id = "hairoftherat" + description = "A meatier version of the monster tamer, complete with extra meat." + taste_description = "meat, whiskey, ground meat, and more meat." + strength = 45 + color = "#d3785d" + metabolism = REM * 3.5 // about right for mixing nutriment and ethanol. + var/alt_nutriment_factor = 5 //half as much as protein since it's half protein. + //using a new variable instead of nutriment_factor so we can call ..() without that adding nutrition for us without taking factors for protein into account + + glass_name = "Hair of the Rat" + glass_desc = "The alcohol equivelant of saying your burger isn't cooked rare enough." + +/datum/reagent/ethanol/hairoftherat/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + + if(M.species.gets_food_nutrition) //it's still food! + switch(alien) + if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein. + if(IS_SKRELL) + M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein. + if(IS_TESHARI) + M.nutrition += (alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein. + if(IS_UNATHI) + M.nutrition += (alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein. + //Takes into account the 0.5 factor for all nutriment which is applied on top of the 2.25 factor for protein. + //Chimera don't need their own case here since their factors for nutriment and protein cancel out. + else + M.nutrition += (alt_nutriment_factor * removed) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.feral > 0 && H.nutrition > 100 && H.traumatic_shock < min(60, H.nutrition/10) && H.jitteriness < 100) // same check as feral triggers to stop them immediately re-feralling + H.feral -= removed * 3 // should calm them down quick, provided they're actually in a state to STAY calm. + if (H.feral <=0) //check if they're unferalled + H.feral = 0 + to_chat(H, "Your mind starts to clear, soothed into a state of clarity as your senses return.") + log_and_message_admins("is no longer feral.", H) + +/datum/reagent/ethanol/hairoftherat/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + ..() + if(alien == IS_SKRELL) + M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein. + if(M.species.gets_food_nutrition) + if(alien == IS_SLIME || alien == IS_CHIMERA) //slimes and chimera can get nutrition from injected nutriment and protein + M.nutrition += (alt_nutriment_factor * removed) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index d76b731ee7..b2591d992f 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1861,7 +1861,7 @@ name = "Snow White" id = "snowwhite" result = "snowwhite" - required_reagents = list("beer" = 1, "lemon_lime" = 1) + required_reagents = list("pineapplejuice" = 1, "rum" = 1, "lemon_lime" = 1, "egg" = 1, "kahlua" = 1, "sugar" = 1) //VoreStation Edit result_amount = 2 /datum/chemical_reaction/drinks/irishcarbomb diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/Chemistry-Recipes_vr.dm index 4450b59342..195f926c25 100644 --- a/code/modules/reagents/Chemistry-Recipes_vr.dm +++ b/code/modules/reagents/Chemistry-Recipes_vr.dm @@ -129,6 +129,146 @@ required_reagents = list("whiskey" = 1, "protein" = 1) result_amount = 2 +/datum/chemical_reaction/drinks/bigbeer + name = "Giant Beer" + id = "bigbeer" + result = "bigbeer" + required_reagents = list("syndicatebomb" = 1, "manlydorf" = 1, "grog" =1) + result_amount = 3 + +/datum/chemical_reaction/drinks/sweettea + name = "Sweetened Tea" + id = "sweettea" + result = "sweettea" + required_reagents = list("icetea" = 2, "sugar" = 1,) + result_amount = 3 + +/datum/chemical_reaction/drinks/unsweettea + name = "Unsweetened Tea" + id = "unsweettea" + result = "unsweettea" + required_reagents = list("sweettea" = 3, "phoron" = 1) + result_amount = 2 + +/datum/chemical_reaction/drinks/galacticpanic + name = "Galactic Panic Attack" + id = "galacticpanic" + result = "galacticpanic" + required_reagents = list("gargleblaster" = 1, "singulo" = 1, "phoronspecial" =1, "neurotoxin" = 1, "atomicbomb" = 1, "hippiesdelight" = 1) + result_amount = 6 + +/datum/chemical_reaction/drinks/bulldog + name = "Space Bulldog" + id = "bulldog" + result = "bulldog" + required_reagents = list("blackrussian" = 3, "cola" =1, "cream" =1) + result_amount = 5 + +/datum/chemical_reaction/drinks/sbagliato + name = "Negroni Sbagliato" + id = "sbagliato" + result = "sbagliato" + required_reagents = list("wine" = 1, "vermouth" = 1, "sodawater" =1) + result_amount = 3 + +/datum/chemical_reaction/drinks/italiancrisis + name = "Italian Crisis" + id = "italiancrisis" + result = "italiancrisis" + required_reagents = list("bulldog" = 1, "sbagliato" = 1) + result_amount = 2 + +/datum/chemical_reaction/drinks/sugarrush + name = "Sweet Rush" + id = "sugarrush" + result = "sugarrush" + required_reagents = list("sugar" = 1, "sodawater" = 1, "vodka" =1) + result_amount = 3 + +/datum/chemical_reaction/drinks/lotus + name = "Lotus" + id = "lotus" + result = "lotus" + required_reagents = list("sbagliato" = 1, "sugarrush" = 1) + result_amount = 2 + +/datum/chemical_reaction/drinks/shroomjuice + name = "Dumb Shroom Juice" + id = "shroomjuice" + result = "shroomjuice" + required_reagents = list("psilocybin" = 1, "applejuice" = 1, "limejuice" =1) + result_amount = 3 + +/datum/chemical_reaction/drinks/russianroulette + name = "Russian Roulette" + id = "russianroulette" + result = "russianroulette" + required_reagents = list("whiterussian" = 5, "iron" = 1) + result_amount = 6 + +/datum/chemical_reaction/drinks/lovepotion + name = "Love Potion" + id = "lovepotion" + result = "lovepotion" + required_reagents = list("honey" = 1, "sexonthebeach" = 5) + result_amount = 6 + +/datum/chemical_reaction/drinks/honeyshot + name = "Honey Shot" + id = "honeyshot" + result = "honeyshot" + required_reagents = list("honey" = 1, "vodka" = 1, "grenadine" =1) + result_amount = 3 + +/datum/chemical_reaction/drinks/appletini + name = "Appletini" + id = "appletini" + result = "appletini" + required_reagents = list("applejuice" = 2, "vodka" = 1) + result_amount = 3 + +/datum/chemical_reaction/drinks/glowingappletini + name = "Glowing Appletini" + id = "glowingappletini" + result = "glowingappletini" + required_reagents = list("appletini" = 5, "uranium" = 1) + result_amount = 6 + +/datum/chemical_reaction/drinks/scsatw + name = "Slow Comfortable Screw Against the Wall" + id = "scsatw" + result = "scsatw" + required_reagents = list("screwdrivercocktail" = 3, "rum" =1, "whiskey" =1, "gin" =1) + result_amount = 6 + +/datum/chemical_reaction/drinks/choccymilk + name = "Choccy Milk" + id = "choccymilk" + result = "choccymilk" + required_reagents = list("milk" = 3, "coco" = 1) + result_amount = 4 + +/datum/chemical_reaction/drinks/redspaceflush + name = "Redspace Flush" + id = "redspaceflush" + result = "redspaceflush" + required_reagents = list("rum" = 2, "whiskey" = 2, "blood" =1, "phoron" =1) + result_amount = 6 + +/datum/chemical_reaction/drinks/graveyard + name = "Graveyard" + id = "graveyard" + result = "graveyard" + required_reagents = list("cola" = 1, "spacemountainwind" = 1, "dr_gibb" =1, "space_up" = 1) + result_amount = 4 + +/datum/chemical_reaction/drinks/hairoftherat + name = "Hair of the Rat" + id = "hairoftherat" + result = "hairoftherat" + required_reagents = list("monstertamer" = 2, "nutriment" = 1) + result_amount = 3 + /////////////////////////////////////////////////////////////////////////////////// /// Reagent colonies. /datum/chemical_reaction/meatcolony diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 159ce9ed4a..315b492e6b 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -209,6 +209,7 @@ overlays += I examine(mob/user) + . = ..() if(get_dist(user, src) <= 4) if(sortTag) . += "It is labeled \"[sortTag]\"" diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm index 4e39dfcfcf..8809e678a1 100644 --- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm @@ -421,6 +421,10 @@ name = "Frog (Taur)" icon_state = "frog_s" +/datum/sprite_accessory/tail/taur/thicktentacles + name = "Tentacles(Thick)" + icon_state = "tentacles_s" + /datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above. name = "Drake (Taur)" icon_state = "drake_s" @@ -558,4 +562,4 @@ msg_prey_grab_success = "%owner slides over you with their vines, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their vines!" msg_owner_grab_fail = "You step down onto %prey with one of your vines, forcing them onto the ground!" - msg_prey_grab_fail = "%owner steps down onto you with one of their vines, squishing you and forcing you onto the ground!" \ No newline at end of file + msg_prey_grab_fail = "%owner steps down onto you with one of their vines, squishing you and forcing you onto the ground!" diff --git a/code/modules/xenoarcheaology/misc.dm b/code/modules/xenoarcheaology/misc.dm index 7567d63abd..38de366259 100644 --- a/code/modules/xenoarcheaology/misc.dm +++ b/code/modules/xenoarcheaology/misc.dm @@ -128,49 +128,6 @@ new /obj/item/weapon/book/manual/stasis(src) update_icon() -/obj/structure/closet/secure_closet/xenoarchaeologist - name = "Xenoarchaeologist Locker" - icon_state = "secureres1" - icon_closed = "secureres" - icon_locked = "secureres1" - icon_opened = "secureresopen" - icon_broken = "secureresbroken" - icon_off = "secureresoff" - req_access = list(access_tox_storage) - - starts_with = list( - /obj/item/clothing/under/rank/scientist, - /obj/item/clothing/suit/storage/toggle/labcoat, - /obj/item/clothing/shoes/white, - /obj/item/weapon/melee/umbrella, // vorestation addition, - /obj/item/clothing/glasses/science, - /obj/item/device/radio/headset/headset_sci, - /obj/item/weapon/storage/belt/archaeology, - /obj/item/weapon/storage/excavation) - -/obj/structure/closet/excavation - name = "Excavation tools" - icon_state = "toolcloset" - icon_closed = "toolcloset" - icon_opened = "toolclosetopen" - - starts_with = list( - /obj/item/weapon/storage/belt/archaeology, - /obj/item/weapon/storage/excavation, - /obj/item/device/flashlight/lantern, - /obj/item/device/ano_scanner, - /obj/item/device/depth_scanner, - /obj/item/device/core_sampler, - /obj/item/device/gps, - /obj/item/device/beacon_locator, - /obj/item/device/radio/beacon, - /obj/item/clothing/glasses/meson, - /obj/item/weapon/pickaxe, - /obj/item/device/measuring_tape, - /obj/item/weapon/pickaxe/hand, - /obj/item/weapon/storage/bag/fossils, - /obj/item/weapon/hand_labeler) - /obj/machinery/alarm/isolation req_one_access = list(access_research, access_atmospherics, access_engine_equip) diff --git a/html/changelogs/KasparoVv - PR - 7215.yml b/html/changelogs/KasparoVv - PR - 7215.yml new file mode 100644 index 0000000000..efd745d1a9 --- /dev/null +++ b/html/changelogs/KasparoVv - PR - 7215.yml @@ -0,0 +1,7 @@ +author: KasparoVv +delete-after: True +changes: + - rscadd: "You can now quickly cycle hrough previous or next hair/facial styles at character creation." + - rscadd: "Use the -mv- button to pick a marking and place it above of another on your character. Saves you from pressing up or down a bunch." + - tweak: "Ports color_square() from Paradise for colour previews, cleaning up pref. code & correct alignment issue w/ nested tables." + - tweak: "Markings are now properly aligned within a table." \ No newline at end of file diff --git a/icons/mob/head_vr.dmi b/icons/mob/head_vr.dmi index 57bd8f01cb..78db695e45 100644 Binary files a/icons/mob/head_vr.dmi and b/icons/mob/head_vr.dmi differ diff --git a/icons/mob/spacesuit_vr.dmi b/icons/mob/spacesuit_vr.dmi index 2f2ead49f5..e92e4b25f9 100644 Binary files a/icons/mob/spacesuit_vr.dmi and b/icons/mob/spacesuit_vr.dmi differ diff --git a/icons/mob/species/akula/helmet_vr.dmi b/icons/mob/species/akula/helmet_vr.dmi index 69aef545f6..10006401a9 100644 Binary files a/icons/mob/species/akula/helmet_vr.dmi and b/icons/mob/species/akula/helmet_vr.dmi differ diff --git a/icons/mob/species/akula/suit_vr.dmi b/icons/mob/species/akula/suit_vr.dmi index 859d79a1fe..a115004c1b 100644 Binary files a/icons/mob/species/akula/suit_vr.dmi and b/icons/mob/species/akula/suit_vr.dmi differ diff --git a/icons/mob/species/sergal/helmet_vr.dmi b/icons/mob/species/sergal/helmet_vr.dmi index c77450aaeb..36f2d74074 100644 Binary files a/icons/mob/species/sergal/helmet_vr.dmi and b/icons/mob/species/sergal/helmet_vr.dmi differ diff --git a/icons/mob/species/sergal/suit_vr.dmi b/icons/mob/species/sergal/suit_vr.dmi index 1f62670b49..005914f9f6 100644 Binary files a/icons/mob/species/sergal/suit_vr.dmi and b/icons/mob/species/sergal/suit_vr.dmi differ diff --git a/icons/mob/species/seromi/helmet_vr.dmi b/icons/mob/species/seromi/helmet_vr.dmi new file mode 100644 index 0000000000..bbc12adc65 Binary files /dev/null and b/icons/mob/species/seromi/helmet_vr.dmi differ diff --git a/icons/mob/species/seromi/suit_vr.dmi b/icons/mob/species/seromi/suit_vr.dmi new file mode 100644 index 0000000000..21b6ff521e Binary files /dev/null and b/icons/mob/species/seromi/suit_vr.dmi differ diff --git a/icons/mob/species/skrell/helmet_vr.dmi b/icons/mob/species/skrell/helmet_vr.dmi new file mode 100644 index 0000000000..b9a619f31a Binary files /dev/null and b/icons/mob/species/skrell/helmet_vr.dmi differ diff --git a/icons/mob/species/skrell/suit_vr.dmi b/icons/mob/species/skrell/suit_vr.dmi new file mode 100644 index 0000000000..7ab10e717d Binary files /dev/null and b/icons/mob/species/skrell/suit_vr.dmi differ diff --git a/icons/mob/species/tajaran/helmet_vr.dmi b/icons/mob/species/tajaran/helmet_vr.dmi new file mode 100644 index 0000000000..fc18570e04 Binary files /dev/null and b/icons/mob/species/tajaran/helmet_vr.dmi differ diff --git a/icons/mob/species/tajaran/suit_vr.dmi b/icons/mob/species/tajaran/suit_vr.dmi new file mode 100644 index 0000000000..41a8e5cd26 Binary files /dev/null and b/icons/mob/species/tajaran/suit_vr.dmi differ diff --git a/icons/mob/species/unathi/helmet_vr.dmi b/icons/mob/species/unathi/helmet_vr.dmi new file mode 100644 index 0000000000..9891ee7432 Binary files /dev/null and b/icons/mob/species/unathi/helmet_vr.dmi differ diff --git a/icons/mob/species/unathi/suit_vr.dmi b/icons/mob/species/unathi/suit_vr.dmi new file mode 100644 index 0000000000..b1ebcbbc08 Binary files /dev/null and b/icons/mob/species/unathi/suit_vr.dmi differ diff --git a/icons/mob/species/vulpkanin/helmet_vr.dmi b/icons/mob/species/vulpkanin/helmet_vr.dmi index 5b422f8ccf..2a7ce4375d 100644 Binary files a/icons/mob/species/vulpkanin/helmet_vr.dmi and b/icons/mob/species/vulpkanin/helmet_vr.dmi differ diff --git a/icons/mob/species/vulpkanin/suit_vr.dmi b/icons/mob/species/vulpkanin/suit_vr.dmi index a8836a5a6e..670ce464d3 100644 Binary files a/icons/mob/species/vulpkanin/suit_vr.dmi and b/icons/mob/species/vulpkanin/suit_vr.dmi differ diff --git a/icons/mob/taursuits_naga_vr.dmi b/icons/mob/taursuits_naga_vr.dmi index 375081158f..7df326318c 100644 Binary files a/icons/mob/taursuits_naga_vr.dmi and b/icons/mob/taursuits_naga_vr.dmi differ diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi index 32f3bfa603..70051a7d20 100644 Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ diff --git a/icons/obj/bodybag.dmi b/icons/obj/bodybag.dmi deleted file mode 100644 index db2ab61815..0000000000 Binary files a/icons/obj/bodybag.dmi and /dev/null differ diff --git a/icons/obj/closets/abductor.dmi b/icons/obj/closets/abductor.dmi new file mode 100644 index 0000000000..8f3b2d2706 Binary files /dev/null and b/icons/obj/closets/abductor.dmi differ diff --git a/icons/obj/closets/bases/cabinet.dmi b/icons/obj/closets/bases/cabinet.dmi new file mode 100644 index 0000000000..236b164ca6 Binary files /dev/null and b/icons/obj/closets/bases/cabinet.dmi differ diff --git a/icons/obj/closets/bases/cart.dmi b/icons/obj/closets/bases/cart.dmi new file mode 100644 index 0000000000..852e539b4d Binary files /dev/null and b/icons/obj/closets/bases/cart.dmi differ diff --git a/icons/obj/closets/bases/closet.dmi b/icons/obj/closets/bases/closet.dmi new file mode 100644 index 0000000000..551435629e Binary files /dev/null and b/icons/obj/closets/bases/closet.dmi differ diff --git a/icons/obj/closets/bases/crate.dmi b/icons/obj/closets/bases/crate.dmi new file mode 100644 index 0000000000..e8e26686fc Binary files /dev/null and b/icons/obj/closets/bases/crate.dmi differ diff --git a/icons/obj/closets/bases/large_crate.dmi b/icons/obj/closets/bases/large_crate.dmi new file mode 100644 index 0000000000..1cdac27783 Binary files /dev/null and b/icons/obj/closets/bases/large_crate.dmi differ diff --git a/icons/obj/closets/bases/wall.dmi b/icons/obj/closets/bases/wall.dmi new file mode 100644 index 0000000000..6689e59cfc Binary files /dev/null and b/icons/obj/closets/bases/wall.dmi differ diff --git a/icons/obj/closets/bodybag.dmi b/icons/obj/closets/bodybag.dmi new file mode 100644 index 0000000000..d6922f8bbe Binary files /dev/null and b/icons/obj/closets/bodybag.dmi differ diff --git a/icons/obj/closets/coffin.dmi b/icons/obj/closets/coffin.dmi new file mode 100644 index 0000000000..f639469aa2 Binary files /dev/null and b/icons/obj/closets/coffin.dmi differ diff --git a/icons/obj/closets/coffin_wood.dmi b/icons/obj/closets/coffin_wood.dmi new file mode 100644 index 0000000000..dfddc743f9 Binary files /dev/null and b/icons/obj/closets/coffin_wood.dmi differ diff --git a/icons/obj/closets/cryobag.dmi b/icons/obj/closets/cryobag.dmi new file mode 100644 index 0000000000..1681a884d8 Binary files /dev/null and b/icons/obj/closets/cryobag.dmi differ diff --git a/icons/obj/closets/decals/cart.dmi b/icons/obj/closets/decals/cart.dmi new file mode 100644 index 0000000000..c4d71bcde8 Binary files /dev/null and b/icons/obj/closets/decals/cart.dmi differ diff --git a/icons/obj/closets/decals/closet.dmi b/icons/obj/closets/decals/closet.dmi new file mode 100644 index 0000000000..ea42c1f535 Binary files /dev/null and b/icons/obj/closets/decals/closet.dmi differ diff --git a/icons/obj/closets/decals/crate.dmi b/icons/obj/closets/decals/crate.dmi new file mode 100644 index 0000000000..b0e600aeff Binary files /dev/null and b/icons/obj/closets/decals/crate.dmi differ diff --git a/icons/obj/closets/decals/large_crate.dmi b/icons/obj/closets/decals/large_crate.dmi new file mode 100644 index 0000000000..4876570265 Binary files /dev/null and b/icons/obj/closets/decals/large_crate.dmi differ diff --git a/icons/obj/closets/decals/wall.dmi b/icons/obj/closets/decals/wall.dmi new file mode 100644 index 0000000000..b9b207407e Binary files /dev/null and b/icons/obj/closets/decals/wall.dmi differ diff --git a/icons/obj/closets/fridge.dmi b/icons/obj/closets/fridge.dmi new file mode 100644 index 0000000000..1d6955ceea Binary files /dev/null and b/icons/obj/closets/fridge.dmi differ diff --git a/icons/obj/closets/grave.dmi b/icons/obj/closets/grave.dmi new file mode 100644 index 0000000000..58c5f7dcef Binary files /dev/null and b/icons/obj/closets/grave.dmi differ diff --git a/icons/obj/closets/miningcar.dmi b/icons/obj/closets/miningcar.dmi new file mode 100644 index 0000000000..02452b7c63 Binary files /dev/null and b/icons/obj/closets/miningcar.dmi differ diff --git a/icons/obj/closets/poireactor.dmi b/icons/obj/closets/poireactor.dmi new file mode 100644 index 0000000000..dfd48bf27b Binary files /dev/null and b/icons/obj/closets/poireactor.dmi differ diff --git a/icons/obj/closets/rescuebag.dmi b/icons/obj/closets/rescuebag.dmi new file mode 100644 index 0000000000..7ed654f5f7 Binary files /dev/null and b/icons/obj/closets/rescuebag.dmi differ diff --git a/icons/obj/clothing/hats_vr.dmi b/icons/obj/clothing/hats_vr.dmi index a2cec1a3ba..0c235adc55 100644 Binary files a/icons/obj/clothing/hats_vr.dmi and b/icons/obj/clothing/hats_vr.dmi differ diff --git a/icons/obj/clothing/spacesuits_vr.dmi b/icons/obj/clothing/spacesuits_vr.dmi new file mode 100644 index 0000000000..cf74d73796 Binary files /dev/null and b/icons/obj/clothing/spacesuits_vr.dmi differ diff --git a/icons/obj/clothing/species/vulpkanin/helmets_vr.dmi b/icons/obj/clothing/species/vulpkanin/helmets_vr.dmi index cf561b831c..9105570c1e 100644 Binary files a/icons/obj/clothing/species/vulpkanin/helmets_vr.dmi and b/icons/obj/clothing/species/vulpkanin/helmets_vr.dmi differ diff --git a/icons/obj/clothing/species/vulpkanin/spacesuits_vr.dmi b/icons/obj/clothing/species/vulpkanin/spacesuits_vr.dmi index e2b68e0961..5f83544da6 100644 Binary files a/icons/obj/clothing/species/vulpkanin/spacesuits_vr.dmi and b/icons/obj/clothing/species/vulpkanin/spacesuits_vr.dmi differ diff --git a/icons/obj/clothing/suits_vr.dmi b/icons/obj/clothing/suits_vr.dmi index af6e271aea..2d90e3db04 100644 Binary files a/icons/obj/clothing/suits_vr.dmi and b/icons/obj/clothing/suits_vr.dmi differ diff --git a/icons/obj/cryobag.dmi b/icons/obj/cryobag.dmi deleted file mode 100644 index 68255b8b2c..0000000000 Binary files a/icons/obj/cryobag.dmi and /dev/null differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 606e8dbfe8..3b41c35fcd 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/drinks_vr.dmi b/icons/obj/drinks_vr.dmi index a8d69aa327..cc5526147f 100644 Binary files a/icons/obj/drinks_vr.dmi and b/icons/obj/drinks_vr.dmi differ diff --git a/maps/RandomZLevels/beach.dmm b/maps/RandomZLevels/beach.dmm index cd824491ce..2f6543ece8 100644 --- a/maps/RandomZLevels/beach.dmm +++ b/maps/RandomZLevels/beach.dmm @@ -100,8 +100,6 @@ /area/awaymission/beach) "t" = ( /obj/structure/closet/gmcloset{ - icon_closed = "black"; - icon_state = "black"; name = "formal wardrobe" }, /turf/unsimulated/floor{ diff --git a/maps/RandomZLevels/wildwest.dmm b/maps/RandomZLevels/wildwest.dmm index 716f54672e..2322a4d410 100644 --- a/maps/RandomZLevels/wildwest.dmm +++ b/maps/RandomZLevels/wildwest.dmm @@ -426,11 +426,7 @@ }, /area/awaymission/wwmines) "bA" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /turf/simulated/floor/wood, /area/awaymission/wwmines) "bB" = ( diff --git a/maps/RandomZLevels/zoo.dmm b/maps/RandomZLevels/zoo.dmm index ffda103d1a..057c502f5d 100644 --- a/maps/RandomZLevels/zoo.dmm +++ b/maps/RandomZLevels/zoo.dmm @@ -101,7 +101,7 @@ "bW" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/zoo/pirateship) "bX" = (/obj/machinery/gibber,/turf/simulated/floor/tiled/white,/area/awaymission/zoo/pirateship) "bY" = (/obj/machinery/button/remote/airlock{id = "packerCargo"; pixel_y = 24},/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) -"bZ" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) +"bZ" = (/obj/structure/closet/cabinet,/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) "ca" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) "cb" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) "cc" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) diff --git a/maps/RandomZLevels/zresearchlabs.dmm b/maps/RandomZLevels/zresearchlabs.dmm index 5139dcda39..8c3606b6b4 100644 --- a/maps/RandomZLevels/zresearchlabs.dmm +++ b/maps/RandomZLevels/zresearchlabs.dmm @@ -475,7 +475,7 @@ "jg" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plating,/area/awaymission/labs/solars) "jh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/labs/solars) "ji" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plating,/area/awaymission/labs/solars) -"jj" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/rank/navysecurity,/obj/item/clothing/suit/armor/navysecvest,/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/militarydivision) +"jj" = (/obj/structure/closet/cabinet,/obj/item/clothing/under/rank/navysecurity,/obj/item/clothing/suit/armor/navysecvest,/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/militarydivision) "jk" = (/obj/machinery/camera{dir = 1; pixel_x = 10; c_tag = "Fore Port Solar Control Entrance"},/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/militarydivision) "jl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/militarydivision) "jm" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision) diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index a4308e1b2d..63b9b7e3ef 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -1955,7 +1955,7 @@ "aLE" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom) "aLF" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) "aLG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) -"aLH" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) +"aLH" = (/obj/structure/closet/cabinet{name = "Clothing Storage"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) "aLI" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aLJ" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/turf/simulated/floor/tiled,/area/security/range) "aLK" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/security/range) @@ -4913,7 +4913,7 @@ "bQy" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/southleft,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/bar) "bQz" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/obj/item/weapon/storage/secure/safe{pixel_z = 30},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bQA" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Storage"; dir = 2},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bQB" = (/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bQB" = (/obj/structure/closet/gmcloset{name = "formal wardrobe"},/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bQC" = (/turf/simulated/wall,/area/crew_quarters/bar) "bQD" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bQE" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -9872,7 +9872,7 @@ "dHR" = (/obj/item/weapon/rig/breacher,/obj/item/clothing/mask/breath,/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) "dHS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/light,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "dHT" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/item/clothing/mask/breath,/obj/item/weapon/rig/breacher,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm index 9de9c2ce52..3188454641 100644 --- a/maps/northern_star/polaris-2.dmm +++ b/maps/northern_star/polaris-2.dmm @@ -338,7 +338,7 @@ "gz" = (/obj/structure/table/standard,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "gA" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) "gB" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) -"gC" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) +"gC" = (/obj/structure/closet/cabinet,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "gD" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "gE" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "gF" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -1073,9 +1073,9 @@ "uG" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "uH" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "uI" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/administration/centcom) -"uJ" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"uJ" = (/obj/structure/closet/cabinet{name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "uK" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"uL" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"uL" = (/obj/structure/closet/cabinet,/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "uM" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uN" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/button/flasher{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uO" = (/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) @@ -2236,7 +2236,7 @@ "QZ" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "Ra" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) "Rb" = (/obj/machinery/vending/hydroseeds,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"Rc" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Rc" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Rd" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Re" = (/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Rf" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; pixel_x = -22; req_one_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2253,7 +2253,7 @@ "Rq" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 6},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "Rr" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "Rs" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"Rt" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Rt" = (/obj/structure/closet/cabinet,/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Ru" = (/mob/living/simple_mob/animal/passive/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Rv" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Rw" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2265,10 +2265,10 @@ "RC" = (/obj/machinery/photocopier,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "RD" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "RE" = (/obj/structure/flora/pottedplant{icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RF" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"RG" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"RH" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"RI" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"RF" = (/obj/structure/closet/cabinet,/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"RG" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"RH" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"RI" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "RJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) "RK" = (/obj/item/robot_parts/l_leg,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "RL" = (/obj/machinery/the_singularitygen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) @@ -2398,7 +2398,7 @@ "Ug" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Uh" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Ui" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacadadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagagagagagagagagagagagagagafafafafafafafafafafafafafafafafafafafafahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiah aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaacacacacacacacadacacacacacacacacacacacacacacacacacacacacacacacadacaeacacacacacacacacacacacacacacacacacacacacacacacaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagakalagakalagakalagakalagafafafafafafafafafafafafafafafafafafafafamanananaoananananananapaqaraqaraqaqaraqaraqapasatatatatatatatatatapauavawawawawawawawawapaxaxaxaxaxaxaxaxaxaxapayayayayayayayayayayapazaAaBaCaDaDaDaDaDaEaF diff --git a/maps/northern_star/polaris-5.dmm b/maps/northern_star/polaris-5.dmm index 40c415c0a5..e82132b825 100644 --- a/maps/northern_star/polaris-5.dmm +++ b/maps/northern_star/polaris-5.dmm @@ -1479,7 +1479,7 @@ "Cw" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "Cx" = (/obj/machinery/button/remote/airlock{id = "miningdorm3"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "Cy" = (/obj/machinery/button/remote/airlock{id = "miningdorm1"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) -"Cz" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/under/overalls,/obj/item/clothing/under/rank/miner,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/outpost/mining_main/dorms) +"Cz" = (/obj/structure/closet/cabinet{name = "Clothing Storage"},/obj/item/clothing/under/overalls,/obj/item/clothing/under/rank/miner,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/outpost/mining_main/dorms) "CA" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/outpost/mining_main/dorms) "CB" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/refinery) "CC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/mining_main/refinery) @@ -1912,7 +1912,7 @@ "KN" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "KO" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) "KP" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index 0077da2ef7..4687278007 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -7643,7 +7643,7 @@ "cQY" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/bar) "cQZ" = (/obj/structure/catwalk,/obj/random/plushielarge,/turf/simulated/floor/plating,/area/maintenance/bar) "cRa" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"cRb" = (/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Storage"; dir = 2},/obj/machinery/firealarm{pixel_y = 24},/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/wood,/area/crew_quarters/bar) +"cRb" = (/obj/structure/closet/gmcloset{name = "formal wardrobe"},/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Storage"; dir = 2},/obj/machinery/firealarm{pixel_y = 24},/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/wood,/area/crew_quarters/bar) "cRc" = (/obj/machinery/smartfridge/drinks,/obj/machinery/light{dir = 1},/turf/simulated/floor/lino,/area/crew_quarters/bar) "cRd" = (/obj/machinery/light/small,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) "cRe" = (/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance/clean,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index 1c36191fbf..07cc8f53de 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -863,7 +863,7 @@ "qE" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main) "qF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/main) "qG" = (/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled,/area/surface/outpost/main) -"qH" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) +"qH" = (/obj/structure/closet/cabinet{name = "Clothing Storage"},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "qI" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "qJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "qK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index 093a311a88..b2dcb8663d 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -1120,7 +1120,7 @@ "vB" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "vC" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/obj/effect/floor_decal/corner/paleblue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "vD" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/centcom/evac) -"vE" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) +"vE" = (/obj/structure/closet/cabinet,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "vF" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "vG" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "vH" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) @@ -1495,13 +1495,13 @@ "CM" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "CN" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) "CO" = (/obj/machinery/vending/hydroseeds,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"CP" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"CP" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "CQ" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "CR" = (/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "CS" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 6},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "CT" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "CU" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"CV" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"CV" = (/obj/structure/closet/cabinet,/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "CW" = (/mob/living/simple_mob/animal/passive/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "CX" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "CY" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) @@ -1511,10 +1511,10 @@ "Dc" = (/obj/machinery/photocopier,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "Dd" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "De" = (/obj/structure/flora/pottedplant{icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"Df" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"Dg" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"Dh" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"Di" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Df" = (/obj/structure/closet/cabinet,/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Dg" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Dh" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Di" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Dj" = (/obj/structure/bed/chair/shuttle{dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "Dk" = (/obj/structure/bed/chair/shuttle{dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "Dl" = (/obj/machinery/the_singularitygen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) diff --git a/maps/southern_cross/structures/closets/engineering.dm b/maps/southern_cross/structures/closets/engineering.dm index 0c757ad011..278ace3e93 100644 --- a/maps/southern_cross/structures/closets/engineering.dm +++ b/maps/southern_cross/structures/closets/engineering.dm @@ -5,13 +5,8 @@ /obj/structure/closet/secure_closet/engineering_chief_wardrobe name = "chief engineer's wardrobe" - icon_state = "securece1" - icon_closed = "securece" - icon_locked = "securece1" - icon_opened = "secureceopen" - icon_broken = "securecebroken" - icon_off = "secureceoff" req_access = list(access_ce) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/ce starts_with = list( /obj/item/clothing/under/rank/chief_engineer, diff --git a/maps/southern_cross/structures/closets/medical.dm b/maps/southern_cross/structures/closets/medical.dm index 0ea515d974..f528c2a0f1 100644 --- a/maps/southern_cross/structures/closets/medical.dm +++ b/maps/southern_cross/structures/closets/medical.dm @@ -5,13 +5,8 @@ /obj/structure/closet/secure_closet/CMO_wardrobe name = "chief medical officer's locker" - icon_state = "cmosecure1" - icon_closed = "cmosecure" - icon_locked = "cmosecure1" - icon_opened = "cmosecureopen" - icon_broken = "cmosecurebroken" - icon_off = "cmosecureoff" req_access = list(access_cmo) + closet_appearance = /decl/closet_appearance/secure_closet/cmo starts_with = list( /obj/item/clothing/under/rank/chief_medical_officer, diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm index 18e02806d5..fa8f23873a 100644 --- a/maps/southern_cross/structures/closets/misc.dm +++ b/maps/southern_cross/structures/closets/misc.dm @@ -74,13 +74,8 @@ /obj/structure/closet/secure_closet/sar name = "search and rescue locker" desc = "Supplies for a wilderness first responder." - icon_state = "medical1" - icon_closed = "medical" - icon_locked = "medical1" - icon_opened = "medicalopen" - icon_broken = "medicalbroken" - icon_off = "medicaloff" req_access = list(access_medical_equip) + closet_appearance = /decl/closet_appearance/secure_closet/medical starts_with = list( /obj/item/weapon/storage/backpack/dufflebag/emt, diff --git a/maps/southern_cross/structures/closets/research.dm b/maps/southern_cross/structures/closets/research.dm index 6630706df9..00331364ef 100644 --- a/maps/southern_cross/structures/closets/research.dm +++ b/maps/southern_cross/structures/closets/research.dm @@ -5,13 +5,8 @@ /obj/structure/closet/secure_closet/RD_wardrobe name = "research director's locker" - icon_state = "rdsecure1" - icon_closed = "rdsecure" - icon_locked = "rdsecure1" - icon_opened = "rdsecureopen" - icon_broken = "rdsecurebroken" - icon_off = "rdsecureoff" req_access = list(access_rd) + closet_appearance = /decl/closet_appearance/secure_closet/rd starts_with = list( /obj/item/clothing/under/rank/research_director, diff --git a/maps/southern_cross/structures/closets/security.dm b/maps/southern_cross/structures/closets/security.dm index 1bde2d7a34..2ab3f7198e 100644 --- a/maps/southern_cross/structures/closets/security.dm +++ b/maps/southern_cross/structures/closets/security.dm @@ -5,13 +5,8 @@ /obj/structure/closet/secure_closet/hos_wardrobe name = "head of security's locker" - icon_state = "hossecure1" - icon_closed = "hossecure" - icon_locked = "hossecure1" - icon_opened = "hossecureopen" - icon_broken = "hossecurebroken" - icon_off = "hossecureoff" req_access = list(access_hos) + closet_appearance = /decl/closet_appearance/secure_closet/security/hos starts_with = list( /obj/item/clothing/under/rank/head_of_security/jensen, diff --git a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm index 95c00a1356..4ff3001c29 100644 --- a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm +++ b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm @@ -26,7 +26,7 @@ "z" = (/obj/structure/table/bench/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) "A" = (/obj/effect/decal/remains,/obj/item/clothing/under/rank/miner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench) "B" = (/turf/simulated/shuttle/plating,/area/submap/CaveTrench) -"C" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) +"C" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) "D" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) "E" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) "F" = (/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench) diff --git a/maps/submaps/surface_submaps/mountains/Rockb1.dmm b/maps/submaps/surface_submaps/mountains/Rockb1.dmm index b723a3047e..3029679547 100644 --- a/maps/submaps/surface_submaps/mountains/Rockb1.dmm +++ b/maps/submaps/surface_submaps/mountains/Rockb1.dmm @@ -20,11 +20,7 @@ /turf/simulated/floor/lino, /area/submap/Rockb1) "g" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/weapon/gun/projectile/pistol, /obj/item/ammo_magazine/m9mm/compact, /turf/simulated/floor/lino, diff --git a/maps/submaps/surface_submaps/plains/Boathouse.dmm b/maps/submaps/surface_submaps/plains/Boathouse.dmm index 678a2bb8d2..0f20993d39 100644 --- a/maps/submaps/surface_submaps/plains/Boathouse.dmm +++ b/maps/submaps/surface_submaps/plains/Boathouse.dmm @@ -7,9 +7,9 @@ "ag" = (/obj/structure/table/bench/wooden,/turf/template_noop,/area/submap/Boathouse) "ah" = (/obj/structure/table/woodentable,/turf/template_noop,/area/submap/Boathouse) "ai" = (/turf/simulated/wall/wood,/area/submap/Boathouse) -"aj" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/accessory/jacket,/obj/item/clothing/accessory/jacket,/obj/item/clothing/head/beanie,/turf/simulated/floor/wood,/area/submap/Boathouse) +"aj" = (/obj/structure/closet/cabinet,/obj/item/clothing/accessory/jacket,/obj/item/clothing/accessory/jacket,/obj/item/clothing/head/beanie,/turf/simulated/floor/wood,/area/submap/Boathouse) "ak" = (/turf/simulated/floor/wood,/area/submap/Boathouse) -"al" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/item/weapon/storage/box/beanbags,/turf/simulated/floor/wood,/area/submap/Boathouse) +"al" = (/obj/structure/closet/cabinet,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/item/weapon/storage/box/beanbags,/turf/simulated/floor/wood,/area/submap/Boathouse) "am" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/Boathouse) "an" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/wood,/area/submap/Boathouse) "ao" = (/obj/structure/railing{dir = 8},/obj/structure/railing,/turf/simulated/floor/water,/area/submap/Boathouse) diff --git a/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm b/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm index 45cbfef083..18b91f368a 100644 --- a/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm +++ b/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm @@ -30,11 +30,7 @@ /turf/simulated/wall/wood, /area/submap/Boathouse) "aj" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/accessory/jacket, /obj/item/clothing/accessory/jacket, /obj/item/clothing/head/beanie, @@ -44,11 +40,7 @@ /turf/simulated/floor/wood, /area/submap/Boathouse) "al" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/weapon/gun/projectile/shotgun/doublebarrel, /obj/item/weapon/storage/box/beanbags, /turf/simulated/floor/wood, diff --git a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm index 96abdb75b2..974807d38c 100644 --- a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm +++ b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm @@ -27,7 +27,7 @@ "aA" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) "aB" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) "aC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) -"aD" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/pickaxe/plasmacutter,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aD" = (/obj/structure/closet/cabinet,/obj/item/weapon/pickaxe/plasmacutter,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) "aE" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) "aF" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) "aG" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) diff --git a/maps/tether/submaps/admin_use/dhael_centcom.dmm b/maps/tether/submaps/admin_use/dhael_centcom.dmm index 0749c2645d..195605f7c4 100644 --- a/maps/tether/submaps/admin_use/dhael_centcom.dmm +++ b/maps/tether/submaps/admin_use/dhael_centcom.dmm @@ -4499,9 +4499,6 @@ /obj/item/weapon/storage/belt/security/tactical, /obj/structure/closet{ desc = "It's a storage unit for standard-issue attire."; - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1"; name = "tactical equipment" }, /obj/effect/floor_decal/industrial/outline/grey, @@ -4523,9 +4520,6 @@ /obj/item/weapon/storage/belt/security/tactical, /obj/structure/closet{ desc = "It's a storage unit for standard-issue attire."; - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1"; name = "tactical equipment" }, /obj/effect/floor_decal/industrial/outline/grey, diff --git a/maps/tether/submaps/admin_use/ert.dmm b/maps/tether/submaps/admin_use/ert.dmm index 1d59c6754c..5caad90a8b 100644 --- a/maps/tether/submaps/admin_use/ert.dmm +++ b/maps/tether/submaps/admin_use/ert.dmm @@ -215,11 +215,7 @@ /turf/simulated/shuttle/plating/airless/carry, /area/shuttle/specops/centcom) "ax" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /turf/simulated/shuttle/floor/black, /area/shuttle/specops/centcom) "ay" = ( diff --git a/maps/tether/submaps/admin_use/mercbase.dmm b/maps/tether/submaps/admin_use/mercbase.dmm index a03f014478..5c590364fd 100644 --- a/maps/tether/submaps/admin_use/mercbase.dmm +++ b/maps/tether/submaps/admin_use/mercbase.dmm @@ -391,10 +391,7 @@ }, /area/antag/antag_base) "aF" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed"; +/obj/structure/closet/cabinet{ name = "Clothing Storage" }, /obj/item/clothing/shoes/boots/combat, @@ -680,10 +677,7 @@ }, /area/antag/antag_base) "bc" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed"; +/obj/structure/closet/cabinet{ name = "Clothing Storage" }, /obj/item/clothing/suit/storage/hooded/wintercoat, diff --git a/maps/tether/submaps/admin_use/tradeship.dmm b/maps/tether/submaps/admin_use/tradeship.dmm index 96167f720f..1b3e5f2971 100644 --- a/maps/tether/submaps/admin_use/tradeship.dmm +++ b/maps/tether/submaps/admin_use/tradeship.dmm @@ -359,11 +359,7 @@ /turf/simulated/shuttle/plating/airless/carry, /area/shuttle/trade) "aP" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /turf/simulated/shuttle/floor/black, /area/shuttle/trade) "aQ" = ( diff --git a/maps/tether/submaps/admin_use/wizard.dmm b/maps/tether/submaps/admin_use/wizard.dmm index ca115c7861..b85af43205 100644 --- a/maps/tether/submaps/admin_use/wizard.dmm +++ b/maps/tether/submaps/admin_use/wizard.dmm @@ -312,11 +312,7 @@ }, /area/wizard_station) "aL" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/suit/wizrobe/magusblue, /obj/item/clothing/head/wizard/magus, /obj/item/weapon/staff, @@ -366,11 +362,7 @@ }, /area/wizard_station) "aS" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/under/psysuit, /obj/item/clothing/suit/wizrobe/psypurple, /obj/item/clothing/head/wizard/amp, @@ -420,11 +412,7 @@ }, /area/wizard_station) "aY" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/shoes/sandal/marisa{ desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes" @@ -439,11 +427,7 @@ }, /area/wizard_station) "aZ" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/suit/wizrobe/magusred, /obj/item/clothing/head/wizard/magus, /obj/item/weapon/staff, @@ -453,11 +437,7 @@ }, /area/wizard_station) "ba" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/suit/wizrobe/marisa, /obj/item/clothing/shoes/sandal/marisa, /obj/item/clothing/head/wizard/marisa, @@ -468,11 +448,7 @@ }, /area/wizard_station) "bb" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/suit/wizrobe/red, /obj/item/clothing/shoes/sandal, /obj/item/clothing/head/wizard/red, diff --git a/maps/tether/submaps/aerostat/submaps/Rockybase.dmm b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm index f8194b673e..7517503070 100644 --- a/maps/tether/submaps/aerostat/submaps/Rockybase.dmm +++ b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm @@ -91,11 +91,7 @@ /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/Rockybase) "as" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/Rockybase) "at" = ( diff --git a/maps/tether/submaps/beach/beach.dmm b/maps/tether/submaps/beach/beach.dmm index 2416bafdc8..860e584e62 100644 --- a/maps/tether/submaps/beach/beach.dmm +++ b/maps/tether/submaps/beach/beach.dmm @@ -76,11 +76,8 @@ /turf/simulated/floor/wood, /area/tether_away/beach) "at" = ( -/obj/structure/closet{ +/obj/structure/closet/cabinet{ density = 0; - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed"; pixel_y = 20; wall_mounted = 1 }, @@ -193,8 +190,6 @@ /area/tether_away/beach) "aK" = ( /obj/structure/closet/gmcloset{ - icon_closed = "black"; - icon_state = "black"; name = "formal wardrobe" }, /turf/simulated/floor/wood, diff --git a/maps/tether/submaps/gateway/zoo.dmm b/maps/tether/submaps/gateway/zoo.dmm index 33ce2d311b..76fff34ad9 100644 --- a/maps/tether/submaps/gateway/zoo.dmm +++ b/maps/tether/submaps/gateway/zoo.dmm @@ -647,11 +647,7 @@ /turf/simulated/floor/tiled, /area/awaymission/zoo/pirateship) "bZ" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /turf/simulated/shuttle/floor/black, /area/awaymission/zoo/tradeship) "ca" = ( diff --git a/maps/tether/submaps/offmap/talon.dm b/maps/tether/submaps/offmap/talon.dm index 439dae1035..4a9f97ea78 100644 --- a/maps/tether/submaps/offmap/talon.dm +++ b/maps/tether/submaps/offmap/talon.dm @@ -249,13 +249,8 @@ Once in open space, consider disabling nonessential power-consuming electronics /obj/structure/closet/secure_closet/talon_captain name = "talon captain's locker" - icon_state = "capsecure1" - icon_closed = "capsecure" - icon_locked = "capsecure1" - icon_opened = "capsecureopen" - icon_broken = "capsecurebroken" - icon_off = "capsecureoff" req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/captain starts_with = list( /obj/item/weapon/storage/backpack/dufflebag/captain, @@ -272,14 +267,8 @@ Once in open space, consider disabling nonessential power-consuming electronics /obj/structure/closet/secure_closet/talon_guard name = "talon guard's locker" - req_access = list(access_hos) - icon_state = "hossecure1" - icon_closed = "hossecure" - icon_locked = "hossecure1" - icon_opened = "hossecureopen" - icon_broken = "hossecurebroken" - icon_off = "hossecureoff" req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/guard starts_with = list( /obj/item/clothing/suit/armor/pcarrier/light, @@ -304,13 +293,8 @@ Once in open space, consider disabling nonessential power-consuming electronics /obj/structure/closet/secure_closet/talon_doctor name = "talon doctor's locker" - icon_state = "cmosecure1" - icon_closed = "cmosecure" - icon_locked = "cmosecure1" - icon_opened = "cmosecureopen" - icon_broken = "cmosecurebroken" - icon_off = "cmosecureoff" req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/doctor starts_with = list( /obj/item/clothing/under/rank/medical, @@ -329,13 +313,8 @@ Once in open space, consider disabling nonessential power-consuming electronics /obj/structure/closet/secure_closet/talon_engineer name = "talon engineer's locker" - icon_state = "securece1" - icon_closed = "securece" - icon_locked = "securece1" - icon_opened = "secureceopen" - icon_broken = "securecebroken" - icon_off = "secureceoff" req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/engineer starts_with = list( /obj/item/clothing/accessory/storage/brown_vest, @@ -357,6 +336,7 @@ Once in open space, consider disabling nonessential power-consuming electronics /obj/structure/closet/secure_closet/talon_pilot name = "talon pilot's locker" req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/pilot starts_with = list( /obj/item/weapon/material/knife/tacknife/survival, diff --git a/maps/tether/submaps/offmap/talon1.dmm b/maps/tether/submaps/offmap/talon1.dmm index 6d3d9c431c..6b9ede55d1 100644 --- a/maps/tether/submaps/offmap/talon1.dmm +++ b/maps/tether/submaps/offmap/talon1.dmm @@ -8,6 +8,15 @@ "ac" = ( /turf/simulated/wall, /area/talon/deckone/bridge) +"ah" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/portables_connector/aux{ + dir = 4; + icon_state = "map_connector-aux" + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/port_eng) "aj" = ( /obj/machinery/light{ dir = 8; @@ -1085,7 +1094,9 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/closet/emcloset, +/obj/structure/closet/autolok_wall{ + pixel_x = -27 + }, /turf/simulated/floor/tiled/eris/steel, /area/talon/deckone/central_hallway) "iX" = ( @@ -1402,19 +1413,6 @@ }, /turf/simulated/floor/tiled/eris/white/danger, /area/talon/deckone/armory) -"lk" = ( -/obj/machinery/atmospherics/portables_connector/fuel{ - dir = 1; - icon_state = "map_connector-fuel" - }, -/obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/portable_atmospherics/canister/phoron, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) "lo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1880,7 +1878,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/obj/structure/closet/emcloset, +/obj/structure/closet/autolok_wall{ + pixel_y = -24 + }, /turf/simulated/floor/tiled/eris/dark/cyancorner, /area/talon/deckone/bridge) "pJ" = ( @@ -2002,6 +2002,15 @@ }, /turf/simulated/floor/tiled/eris/dark/cyancorner, /area/talon/deckone/port_solar) +"qR" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 1; + icon_state = "map_connector-fuel" + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/starboard_eng) "rm" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 1; @@ -2302,7 +2311,9 @@ icon_state = "extinguisher_closed"; pixel_x = -30 }, -/obj/structure/closet/emcloset, +/obj/structure/closet/autolok_wall{ + pixel_y = -24 + }, /turf/simulated/floor/tiled/eris/dark/cyancorner, /area/talon/deckone/bridge) "uj" = ( @@ -2328,6 +2339,15 @@ }, /turf/simulated/floor/hull/airless, /area/talon/maintenance/deckone_starboard_aft_wing) +"up" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/portables_connector/aux{ + dir = 8; + icon_state = "map_connector-aux" + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/starboard_eng) "ur" = ( /obj/structure/cable/green{ d1 = 4; @@ -2682,14 +2702,6 @@ }, /turf/simulated/floor/plating/eris/under, /area/talon/maintenance/deckone_starboard) -"xU" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/portable_atmospherics/canister/empty, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) "xV" = ( /turf/simulated/floor/tiled/eris/dark/orangecorner, /area/talon/deckone/secure_storage) @@ -3013,6 +3025,15 @@ }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/talon/deckone/workroom) +"AU" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/closet/autolok_wall{ + pixel_x = 27 + }, +/turf/simulated/floor/tiled/eris/steel, +/area/talon/deckone/central_hallway) "AV" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/eris/steel, @@ -3147,15 +3168,6 @@ }, /turf/simulated/floor/tiled/eris/steel, /area/talon/deckone/central_hallway) -"CN" = ( -/obj/machinery/atmospherics/portables_connector/fuel{ - dir = 1; - icon_state = "map_connector-fuel" - }, -/obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/portable_atmospherics/canister/phoron, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) "CP" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4; @@ -3441,6 +3453,14 @@ }, /turf/simulated/floor/plating/eris/under, /area/talon/deckone/brig) +"Fd" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/starboard_eng) "Fg" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -3486,6 +3506,15 @@ }, /turf/simulated/floor/tiled/eris/techmaint_panels, /area/talon/deckone/medical) +"Fw" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 1; + icon_state = "map_connector-fuel" + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/port_eng) "FA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3568,19 +3597,6 @@ }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/talon/deckone/workroom) -"Gv" = ( -/obj/machinery/atmospherics/portables_connector/fuel{ - dir = 1; - icon_state = "map_connector-fuel" - }, -/obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/portable_atmospherics/canister/phoron, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 - }, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) "Gw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4; @@ -3597,6 +3613,19 @@ }, /turf/simulated/floor/tiled/eris/steel/cargo, /area/talon/deckone/workroom) +"GC" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 1; + icon_state = "map_connector-fuel" + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/starboard_eng) "GG" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -3612,15 +3641,6 @@ }, /turf/simulated/floor/plating/eris/under, /area/talon/maintenance/deckone_port) -"GI" = ( -/obj/effect/floor_decal/industrial/outline/grey, -/obj/machinery/atmospherics/portables_connector/aux{ - dir = 8; - icon_state = "map_connector-aux" - }, -/obj/machinery/portable_atmospherics/canister/air/airlock, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) "GJ" = ( /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/eris/techmaint_panels, @@ -4243,15 +4263,6 @@ "LH" = ( /turf/simulated/floor/tiled/eris/white/golden, /area/talon/deckone/bridge) -"LI" = ( -/obj/effect/floor_decal/industrial/outline/grey, -/obj/machinery/atmospherics/portables_connector/aux{ - dir = 4; - icon_state = "map_connector-aux" - }, -/obj/machinery/portable_atmospherics/canister/air/airlock, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) "LK" = ( /obj/structure/cable/green, /obj/machinery/power/apc/talon{ @@ -4609,14 +4620,6 @@ }, /turf/simulated/floor/tiled/eris/steel, /area/talon/deckone/central_hallway) -"OP" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) "OQ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -4674,6 +4677,19 @@ /obj/machinery/suit_storage_unit, /turf/simulated/floor/plating/eris/under, /area/talon/maintenance/deckone_starboard) +"Py" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 1; + icon_state = "map_connector-fuel" + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/port_eng) "PD" = ( /obj/machinery/door/firedoor/glass{ dir = 2 @@ -4733,15 +4749,6 @@ }, /turf/space, /area/talon/deckone/bridge) -"Ql" = ( -/obj/machinery/atmospherics/portables_connector/fuel{ - dir = 1; - icon_state = "map_connector-fuel" - }, -/obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/portable_atmospherics/canister/phoron, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) "Qx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4; @@ -5611,6 +5618,14 @@ /obj/structure/disposalpipe/junction, /turf/simulated/floor/tiled/eris/steel, /area/talon/deckone/central_hallway) +"Yc" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/talon/deckone/port_eng) "Yd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -14171,7 +14186,7 @@ gU NP ho iA -LI +ah IT Ik aj @@ -14319,7 +14334,7 @@ hs Uy CW YI -CN +Fw kb JI SX @@ -14461,7 +14476,7 @@ vV lM ir YI -CN +Fw kb ji aa @@ -14603,7 +14618,7 @@ lM OZ bw YI -CN +Fw kc kh OS @@ -14739,13 +14754,13 @@ gU CH Bj iA -OP -OP -OP -OP +Yc +Yc +Yc +Yc Xk iR -Gv +Py ji JI SX @@ -16438,7 +16453,7 @@ fJ Bj Jw oe -iT +AU IW Zq Lf @@ -16727,13 +16742,13 @@ gY MG Bj iF -xU -xU -xU -xU +Fd +Fd +Fd +Fd IO Ie -lk +GC kd kj QJ @@ -16875,7 +16890,7 @@ yf bP fi WA -Ql +qR kf GP yg @@ -17017,7 +17032,7 @@ jE yf jb WA -Ql +qR kf jY aa @@ -17159,7 +17174,7 @@ EL YG dm WA -Ql +qR ke kj QJ @@ -17295,7 +17310,7 @@ gY NP ho iF -GI +up yB Mi Bm diff --git a/maps/tether/submaps/offmap/talon2.dmm b/maps/tether/submaps/offmap/talon2.dmm index 76bddbccbb..3341188969 100644 --- a/maps/tether/submaps/offmap/talon2.dmm +++ b/maps/tether/submaps/offmap/talon2.dmm @@ -2485,15 +2485,12 @@ icon_state = "0-4" }, /obj/structure/closet/crate/plastic, -/obj/item/clothing/suit/space/emergency, /obj/item/device/flashlight, /obj/item/weapon/storage/briefcase/inflatable, -/obj/item/clothing/head/helmet/space/emergency, /obj/item/device/flashlight/glowstick, /obj/item/device/flashlight/glowstick, /obj/item/device/flashlight/glowstick, /obj/item/weapon/storage/box/metalfoam, -/obj/item/weapon/tank/oxygen, /obj/item/device/survivalcapsule/luxury, /turf/simulated/floor/tiled/techfloor/grid, /area/talon/decktwo/lifeboat) @@ -2986,6 +2983,9 @@ /turf/simulated/floor/plating/eris/under, /area/talon/maintenance/decktwo_aft) "Bd" = ( +/obj/structure/closet/autolok_wall{ + pixel_y = -24 + }, /turf/simulated/floor/tiled/eris/dark/cyancorner, /area/talon/decktwo/bridge_upper) "Bv" = ( @@ -3100,6 +3100,9 @@ "CN" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet, +/obj/structure/closet/autolok_wall{ + pixel_x = 27 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/talon/decktwo/lifeboat) "CW" = ( @@ -3638,6 +3641,9 @@ }, /obj/item/weapon/bedsheet, /obj/structure/bed/padded, +/obj/structure/closet/autolok_wall{ + pixel_x = 27 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/talon/decktwo/lifeboat) "Lj" = ( diff --git a/maps/tether/submaps/om_ships/aro2.dm b/maps/tether/submaps/om_ships/aro2.dm index f484e9811b..5d7f834663 100644 --- a/maps/tether/submaps/om_ships/aro2.dm +++ b/maps/tether/submaps/om_ships/aro2.dm @@ -66,7 +66,7 @@ vessel_size = SHIP_SIZE_SMALL initial_generic_waypoints = list("aronai2_fore", "aronai2_aft", "aronai2_port", "aronai2_starboard") initial_restricted_waypoints = list("Aro's Boat" = list("omship_spawn_aroboat2")) - fore_dir = EAST + fore_dir = NORTH skybox_icon = 'aro2.dmi' //Art by Nia Tahl, see ATTRIBUTIONS.md skybox_icon_state = "skybox" diff --git a/maps/tether/submaps/om_ships/aro2.dmm b/maps/tether/submaps/om_ships/aro2.dmm index 4c79d606c8..b6a955a65c 100644 --- a/maps/tether/submaps/om_ships/aro2.dmm +++ b/maps/tether/submaps/om_ships/aro2.dmm @@ -107,6 +107,9 @@ name = "west bump"; pixel_x = -24 }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, /turf/simulated/floor/carpet/blue, /area/aro2/room1) "aD" = ( @@ -418,6 +421,9 @@ name = "west bump"; pixel_x = -24 }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, /turf/simulated/floor/carpet/gaycarpet, /area/aro2/room2) "cE" = ( @@ -561,9 +567,6 @@ /obj/structure/flora/tree/jungle_small, /turf/simulated/floor/grass, /area/aro2/boatdeck) -"dF" = ( -/turf/simulated/floor/tiled/eris/techmaint_perforated, -/area/aro2/dining) "dG" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -605,10 +608,6 @@ }, /turf/simulated/floor/wood, /area/aro2/dining) -"dQ" = ( -/obj/structure/table/steel, -/turf/simulated/floor/tiled/eris/techmaint_perforated, -/area/aro2/surfluid) "dU" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -813,6 +812,9 @@ d2 = 4; icon_state = "2-4" }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/eris/dark, /area/aro2/starboardbay) "fn" = ( @@ -925,6 +927,9 @@ d2 = 8; icon_state = "2-8" }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/eris/dark, /area/aro2/portbay) "fQ" = ( @@ -1467,6 +1472,9 @@ name = "west bump"; pixel_x = -24 }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, /turf/simulated/floor/carpet/purcarpet, /area/aro2/room3) "lR" = ( @@ -1512,10 +1520,6 @@ }, /turf/simulated/floor/water/indoors/surfluid, /area/aro2/boatdeck) -"mp" = ( -/obj/structure/table/bench/wooden, -/turf/simulated/floor/tiled/techfloor, -/area/aro2/dining) "ms" = ( /obj/structure/railing/grey, /turf/simulated/floor/water/indoors/surfluid, @@ -1949,6 +1953,12 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/plating/eris/under, /area/aro2/airarea) +"rd" = ( +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro2/powerarea) "rl" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -2088,6 +2098,18 @@ }, /turf/simulated/floor/tiled/eris/techmaint_panels, /area/aro2/airarea) +"sB" = ( +/obj/structure/table/steel, +/obj/item/weapon/magnetic_ammo/pistol/khi{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/weapon/magnetic_ammo/pistol/khi{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/simulated/floor/tiled/eris/techmaint_perforated, +/area/aro2/surfluid) "sF" = ( /turf/simulated/floor/tiled/eris/dark, /area/aro2/portbay) @@ -2328,7 +2350,6 @@ name = "exterior shutters"; pixel_x = 28 }, -/obj/structure/closet/crate/bin, /turf/simulated/floor/wood, /area/aro2/dining) "va" = ( @@ -2395,12 +2416,6 @@ }, /turf/simulated/floor/tiled/eris/dark/cyancorner, /area/aro2/dining) -"vJ" = ( -/obj/machinery/vending/cola{ - dir = 8 - }, -/turf/simulated/floor/tiled/eris/techmaint_perforated, -/area/aro2/dining) "vN" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -2505,6 +2520,8 @@ /obj/machinery/light{ dir = 1 }, +/obj/structure/table/steel, +/obj/machinery/chemical_dispenser/bar_soft/full, /turf/simulated/floor/tiled/eris/techmaint_perforated, /area/aro2/dining) "xk" = ( @@ -2637,9 +2654,16 @@ /turf/simulated/floor/tiled/eris/dark, /area/aro2/boatdeck) "yK" = ( -/obj/machinery/vending/food/arojoan{ - dir = 8 +/obj/structure/closet/secure_closet/freezer/fridge{ + starts_with = null }, +/obj/item/weapon/reagent_containers/food/snacks/generalschicken, +/obj/item/weapon/storage/box/wings, +/obj/item/weapon/reagent_containers/food/snacks/kitsuneudon, +/obj/item/weapon/reagent_containers/food/snacks/fries, +/obj/item/weapon/reagent_containers/food/snacks/grilledcheese, +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich, +/obj/item/weapon/reagent_containers/food/snacks/enchiladas, /turf/simulated/floor/tiled/eris/techmaint_perforated, /area/aro2/dining) "yY" = ( @@ -3489,6 +3513,10 @@ /obj/machinery/door/airlock/multi_tile/glass, /turf/simulated/floor/tiled/eris/techmaint_panels, /area/aro2/surfluid) +"II" = ( +/obj/structure/table/bench/steel, +/turf/simulated/floor/tiled/techfloor, +/area/aro2/dining) "IK" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -3548,6 +3576,10 @@ }, /turf/simulated/floor/tiled/eris/techmaint_panels, /area/aro2/portbay) +"Jn" = ( +/obj/structure/table/bench/steel, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro2/frontroom) "Js" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -4184,6 +4216,12 @@ }, /turf/simulated/floor/tiled/eris/dark, /area/aro2/portbay) +"PR" = ( +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet/oracarpet, +/area/aro2/cockpit) "PV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4370,10 +4408,10 @@ /turf/simulated/floor/plating/eris/under, /area/aro2/airarea) "Sp" = ( -/obj/machinery/vending/snack{ +/obj/machinery/vending/dinnerware{ dir = 8 }, -/turf/simulated/floor/tiled/eris/techmaint_perforated, +/turf/simulated/floor/wood, /area/aro2/dining) "Sq" = ( /obj/structure/railing/grey{ @@ -4382,11 +4420,8 @@ /turf/simulated/floor/water/indoors/surfluid, /area/aro2/surfluid) "Sr" = ( -/obj/machinery/chemical_dispenser/bar_soft/full{ - dir = 8 - }, -/obj/structure/table/steel, -/turf/simulated/floor/tiled/eris/techmaint_perforated, +/obj/structure/closet/crate/bin, +/turf/simulated/floor/wood, /area/aro2/dining) "St" = ( /obj/machinery/computer/ship/navigation/telescreen{ @@ -4738,6 +4773,12 @@ /obj/structure/table/fancyblack, /turf/simulated/floor/carpet/bcarpet, /area/shuttle/aroboat2) +"VW" = ( +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro2/airarea) "VZ" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -4752,10 +4793,6 @@ }, /turf/simulated/floor/tiled/eris/dark, /area/aro2/boatdeck) -"We" = ( -/obj/structure/table/bench/wooden, -/turf/simulated/floor/tiled/eris/steel/bar_flat, -/area/aro2/frontroom) "Wg" = ( /obj/effect/floor_decal/industrial/warning/full, /obj/machinery/power/pointdefense{ @@ -13276,16 +13313,16 @@ Qz af ao ao -We -We -We +Jn +Jn +Jn ao ao bT bT -mp -mp -mp +II +II +II bT bT dv @@ -13558,7 +13595,7 @@ Qz Qz Qz bV -We +Jn zV zV Kx @@ -13606,7 +13643,7 @@ Jm lE gc jm -sP +rd oj oj oj @@ -13700,7 +13737,7 @@ Qz Qz Qz bV -We +Jn zV us ED @@ -13842,7 +13879,7 @@ Qz Qz Qz bV -We +Jn zV us AT @@ -14277,9 +14314,9 @@ zV oU bU xb -dF -dF -dF +dk +dk +dk QW QW dk @@ -14419,7 +14456,7 @@ pe pe bU yK -vJ +dk Sr Sp QW @@ -15012,7 +15049,7 @@ RY FZ ds gd -dQ +sB kK nO TL @@ -15267,7 +15304,7 @@ az az aL aL -XN +PR XN Me yx @@ -16304,7 +16341,7 @@ Ln lK gi jt -nq +VW qT Pd ih diff --git a/maps/tether/submaps/wild/tether_wild-crash.dmm b/maps/tether/submaps/wild/tether_wild-crash.dmm index 46cb6a83d7..6648996a7c 100644 --- a/maps/tether/submaps/wild/tether_wild-crash.dmm +++ b/maps/tether/submaps/wild/tether_wild-crash.dmm @@ -9,7 +9,7 @@ "ai" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/floor/black/virgo3b,/area/tether/surfacebase/outside/wilderness) "aj" = (/turf/simulated/floor/virgo3b_indoors{desc = "Quite dirty!"; icon = 'icons/turf/outdoors.dmi'; icon_state = "dirt-dark"; name = "dirt"},/area/tether/surfacebase/outside/wilderness) "ak" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/grass/sif/virgo3b{icon_state = "grass_sif_dark"; name = "dense growth"; tree_chance = 0},/area/tether/surfacebase/outside/wilderness) -"al" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor/black/virgo3b,/area/tether/surfacebase/outside/wilderness) +"al" = (/obj/structure/closet/cabinet,/turf/simulated/shuttle/floor/black/virgo3b,/area/tether/surfacebase/outside/wilderness) "am" = (/obj/structure/bed/padded,/turf/simulated/shuttle/floor/black/virgo3b,/area/tether/surfacebase/outside/wilderness) "an" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/shuttle/floor/black/virgo3b,/area/tether/surfacebase/outside/wilderness) "ao" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/black/virgo3b,/area/tether/surfacebase/outside/wilderness) diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index 8bfc856d9b..eca20154d8 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -23491,19 +23491,6 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) -"aSH" = ( -/obj/structure/table/bench/standard, -/obj/effect/landmark/start{ - name = "Medical Doctor" - }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/breakroom) "aSI" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 @@ -29149,6 +29136,25 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_two_hall) +"qaW" = ( +/obj/structure/table/bench/standard, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + desc = "Looks like it's set to ree-Anur-ntertanment, I wonder what else is on?"; + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/white, +/area/tether/surfacebase/medical/breakroom) "qfL" = ( /obj/structure/catwalk, /obj/structure/cable{ @@ -42215,7 +42221,7 @@ aRO aap acD aSr -aSH +qaW aSO aSW aSr diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index bc11aa0fbe..05d3f4927a 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -6436,9 +6436,6 @@ dir = 1 }, /obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed"; name = "Clothing Storage" }, /obj/machinery/camera/network/civilian, @@ -20424,8 +20421,6 @@ /area/tether/surfacebase/bar_backroom) "aLH" = ( /obj/structure/closet/gmcloset{ - icon_closed = "black"; - icon_state = "black"; name = "formal wardrobe" }, /obj/item/glass_jar, diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 93ba1a3ff2..adc501ee90 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -9565,7 +9565,6 @@ pixel_x = 5 }, /obj/item/weapon/reagent_containers/spray/cleaner, -/obj/item/device/closet_painter, /obj/machinery/camera/network/engineering{ dir = 4 }, diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index 899a81bdf7..d0cd323292 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -28988,6 +28988,20 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled/eris/steel/cyancorner, /area/shuttle/medivac/cockpit) +"dhq" = ( +/obj/machinery/airlock_sensor{ + pixel_y = 28 + }, +/obj/structure/handrail, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/effect/map_helper/airlock/atmos/pump_out_internal, +/obj/machinery/atmospherics/unary/vent_pump/high_volume, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/shuttle/excursion/cargo) "dhW" = ( /obj/effect/floor_decal/industrial/outline/blue, /obj/machinery/atmospherics/portables_connector, @@ -29035,21 +29049,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"dzV" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1380; - id_tag = "expshuttle_vent" - }, -/obj/machinery/oxygen_pump{ - pixel_y = -32 - }, -/obj/structure/handrail{ - dir = 1 - }, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) "dAo" = ( /obj/machinery/power/terminal{ dir = 1; @@ -29153,30 +29152,6 @@ }, /turf/simulated/floor/tiled/eris/steel/cyancorner, /area/shuttle/medivac/cockpit) -"eaH" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume, -/obj/machinery/embedded_controller/radio/airlock/docking_port{ - dir = 4; - frequency = 1380; - id_tag = "medivac_docker"; - pixel_x = -28 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/shuttle_landmark{ - base_area = /area/mine/explored/upper_level; - base_turf = /turf/simulated/floor/airless; - docking_controller = "medivac_bay"; - landmark_tag = "tether_medivac_dock"; - name = "Medivac Bay" - }, -/obj/effect/overmap/visitable/ship/landable/medivac, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/shuttle/medivac/general) "ebj" = ( /obj/machinery/door/airlock/glass_external, /obj/structure/cable/green{ @@ -29187,6 +29162,17 @@ /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/tiled, /area/security/hallway) +"efQ" = ( +/obj/structure/cable/cyan, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/shuttle/excursion/cargo) "egf" = ( /obj/machinery/atmospherics/binary/pump, /obj/machinery/firealarm{ @@ -29662,6 +29648,18 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled, /area/security/security_processing) +"gsT" = ( +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + cycle_to_external_air = 1; + frequency = 1380; + id_tag = "expshuttle_docker"; + pixel_y = 28 + }, +/obj/structure/handrail, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/shuttle/excursion/cargo) "gvu" = ( /obj/structure/bed/chair/shuttle{ dir = 4 @@ -29746,6 +29744,31 @@ }, /turf/simulated/floor/tiled/eris/white, /area/shuttle/medivac/general) +"gGP" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + cycle_to_external_air = 1; + dir = 4; + frequency = 1380; + id_tag = "medivac_docker"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/shuttle_landmark{ + base_area = /area/mine/explored/upper_level; + base_turf = /turf/simulated/floor/airless; + docking_controller = "medivac_bay"; + landmark_tag = "tether_medivac_dock"; + name = "Medivac Bay" + }, +/obj/effect/overmap/visitable/ship/landable/medivac, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/eris/steel/gray_perforated, +/area/shuttle/medivac/general) "gNy" = ( /obj/machinery/door/airlock/glass_external, /obj/machinery/airlock_sensor/airlock_exterior/shuttle{ @@ -29814,6 +29837,9 @@ /obj/structure/bed/chair/shuttle{ dir = 4 }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/eris/white, /area/shuttle/medivac/general) "gYC" = ( @@ -30202,13 +30228,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating/eris/under, /area/shuttle/excursion/general) -"iWZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/turf/simulated/floor/tiled/eris/dark/gray_perforated, -/area/shuttle/excursion/cargo) "iXe" = ( /obj/machinery/light{ dir = 8 @@ -30408,6 +30427,9 @@ health = 1e+006 }, /obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/structure/closet/autolok_wall{ + pixel_x = 27 + }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) "knm" = ( @@ -31709,25 +31731,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"rbb" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1380; - id_tag = "expshuttle_docker_pump_out_internal" - }, -/obj/machinery/oxygen_pump{ - pixel_y = -32 - }, -/obj/structure/handrail{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/obj/effect/map_helper/airlock/atmos/pump_out_internal, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) "reu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -31904,6 +31907,17 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) +"rLd" = ( +/obj/machinery/door/airlock/glass_external, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/eris/techmaint_panels, +/area/shuttle/excursion/cargo) "rUl" = ( /obj/structure/shuttle/engine/heater, /obj/structure/window/reinforced{ @@ -32002,21 +32016,6 @@ }, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/securiship/engines) -"ssc" = ( -/obj/machinery/embedded_controller/radio/airlock/docking_port{ - frequency = 1380; - id_tag = "expshuttle_docker"; - pixel_y = 28 - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 2; - frequency = 1380; - id_tag = "expshuttle_vent" - }, -/obj/structure/handrail, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) "sso" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -32148,24 +32147,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) -"tnX" = ( -/obj/machinery/airlock_sensor{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 2; - frequency = 1380; - id_tag = "expshuttle_docker_pump_out_internal" - }, -/obj/structure/handrail, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/obj/effect/map_helper/airlock/sensor/chamber_sensor, -/obj/effect/map_helper/airlock/atmos/pump_out_internal, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) "tqy" = ( /obj/structure/grille, /obj/structure/cable/green{ @@ -32217,6 +32198,23 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/upper) +"tEV" = ( +/obj/machinery/oxygen_pump{ + pixel_y = -32 + }, +/obj/structure/handrail{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/map_helper/airlock/atmos/pump_out_internal, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/shuttle/excursion/cargo) "tTA" = ( /obj/effect/floor_decal/corner/blue{ dir = 10; @@ -32351,6 +32349,17 @@ /obj/effect/catwalk_plated/dark, /turf/simulated/floor, /area/security/armory/blue) +"uGF" = ( +/obj/item/device/radio/intercom{ + dir = 1; + pixel_y = 24; + req_access = list() + }, +/obj/structure/handrail, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/shuttle/excursion/cargo) "uIH" = ( /obj/structure/cable/green{ dir = 1; @@ -32364,21 +32373,6 @@ }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) -"uLO" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 2; - frequency = 1380; - id_tag = "expshuttle_vent" - }, -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24; - req_access = list() - }, -/obj/structure/handrail, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) "uRY" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 @@ -32427,19 +32421,6 @@ }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/shuttle/securiship/general) -"vbD" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1380; - id_tag = "expshuttle_vent" - }, -/obj/structure/cable/cyan, -/obj/structure/handrail{ - dir = 1 - }, -/obj/effect/map_helper/airlock/atmos/chamber_pump, -/turf/simulated/floor/tiled/eris/dark/danger, -/area/shuttle/excursion/cargo) "vbE" = ( /obj/structure/cable/green{ d1 = 1; @@ -32856,23 +32837,6 @@ /obj/machinery/power/smes/buildable/point_of_interest, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/shuttle/excursion/general) -"xla" = ( -/obj/machinery/door/airlock/glass_external, -/obj/machinery/access_button{ - command = "cycle_interior"; - frequency = 1380; - master_tag = "expshuttle_docker"; - pixel_y = -24 - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/map_helper/airlock/door/int_door, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/shuttle/excursion/cargo) "xlU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -32921,6 +32885,19 @@ "xqB" = ( /turf/simulated/wall/rshull, /area/shuttle/securiship/engines) +"xvO" = ( +/obj/machinery/oxygen_pump{ + pixel_y = -32 + }, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/shuttle/excursion/cargo) "xwM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33024,6 +33001,19 @@ /obj/effect/floor_decal/industrial/warning/full, /turf/simulated/floor/plating/eris/under, /area/shuttle/excursion/cargo) +"ydG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 26; + pixel_y = -27 + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/excursion/cargo) "yeP" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 @@ -43424,7 +43414,7 @@ aNj aNu aNF fkB -eaH +gGP ykh pfr crE @@ -44931,7 +44921,7 @@ adj aWp aiX kUK -iWZ +ydG xCq aXr aWp @@ -45073,7 +45063,7 @@ nlw wOI aiY aXS -xla +rLd aWp aiY aWp @@ -45214,9 +45204,9 @@ elB ejd egf aZD -uLO +uGF wPw -dzV +xvO aRv aXC acK @@ -45356,9 +45346,9 @@ xeA sFS gAZ aWp -ssc +gsT pPy -vbD +efQ aWp cQa afs @@ -45498,9 +45488,9 @@ jcr nzo gAZ aWp -tnX +dhq iEV -rbb +tEV aWp rUl afs diff --git a/maps/virgo/virgo-1.dmm b/maps/virgo/virgo-1.dmm index e3b4c945a8..4450499fde 100644 --- a/maps/virgo/virgo-1.dmm +++ b/maps/virgo/virgo-1.dmm @@ -1957,7 +1957,7 @@ "aLG" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom) "aLH" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) "aLI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) -"aLJ" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) +"aLJ" = (/obj/structure/closet/cabinet{name = "Clothing Storage"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) "aLK" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aLL" = (/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/machinery/door/window/brigdoor/westleft{name = "Energy"; req_access = list(3)},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/gun/energy/laser,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical) "aLM" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/security/range) @@ -2040,7 +2040,7 @@ "aNl" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/navbeacon/patrol{next_patrol = "CH2"; location = "CH1"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one) "aNm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/maintenance/security_port) "aNn" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/maintenance/security_port) -"aNo" = (/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/gloves/tactical,/obj/item/clothing/head/helmet/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/shoes/boots/tactical,/obj/item/clothing/suit/armor/tactical,/obj/item/clothing/suit/storage/vest/tactical,/obj/effect/floor_decal/corner/green{dir = 10},/obj/item/clothing/under/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/structure/closet{desc = "It's a storage unit for standard-issue attire."; icon_closed = "syndicate1"; icon_opened = "syndicate1open"; icon_state = "syndicate1"; name = "tactical equipment"},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical) +"aNo" = (/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/gloves/tactical,/obj/item/clothing/head/helmet/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/shoes/boots/tactical,/obj/item/clothing/suit/armor/tactical,/obj/item/clothing/suit/storage/vest/tactical,/obj/effect/floor_decal/corner/green{dir = 10},/obj/item/clothing/under/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/structure/closet{desc = "It's a storage unit for standard-issue attire."; name = "tactical equipment"},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical) "aNp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aNq" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_one) "aNr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "brigobs"; name = "Communal Brig Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison) @@ -4958,7 +4958,7 @@ "bRr" = (/obj/structure/displaycase,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bRs" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain) "bRt" = (/obj/structure/table/standard,/obj/machinery/light,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain) -"bRu" = (/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bRu" = (/obj/structure/closet/gmcloset{name = "formal wardrobe"},/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bRv" = (/obj/machinery/door/blast/shutters{dir = 2; id = "kitchen"; layer = 3.3; name = "Kitchen Shutters"},/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bRw" = (/obj/machinery/door/blast/shutters{dir = 2; id = "kitchen"; layer = 3.3; name = "Kitchen Shutters"},/obj/structure/table/reinforced,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bRx" = (/obj/machinery/computer/guestpass{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar) diff --git a/maps/virgo/virgo-2.dmm b/maps/virgo/virgo-2.dmm index 3d2ce85a8c..e08cb54ce3 100644 --- a/maps/virgo/virgo-2.dmm +++ b/maps/virgo/virgo-2.dmm @@ -536,7 +536,7 @@ "akp" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) "akq" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) "akr" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) -"aks" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) +"aks" = (/obj/structure/closet/cabinet,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "akt" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod2/transit) "aku" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod2/transit) "akv" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod2/transit) @@ -1393,9 +1393,9 @@ "aAO" = (/obj/machinery/cryopod{dir = 4},/turf/simulated/floor/wood,/area/shuttle/administration/centcom) "aAP" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "aAQ" = (/obj/structure/table/standard,/obj/item/weapon/screwdriver,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"aAR" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aAR" = (/obj/structure/closet/cabinet{name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "aAS" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"aAT" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aAT" = (/obj/structure/closet/cabinet,/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "aAU" = (/obj/machinery/optable,/turf/simulated/shuttle/floor/white,/area/shuttle/administration/centcom) "aAV" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor/white,/area/shuttle/administration/centcom) "aAW" = (/obj/item/weapon/storage/firstaid/surgery,/obj/structure/table/reinforced,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/turf/simulated/shuttle/floor/white,/area/shuttle/administration/centcom) @@ -2614,22 +2614,22 @@ "aZt" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "aZv" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) "aZw" = (/obj/machinery/vending/hydroseeds,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"aZx" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZx" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "aZy" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "aZz" = (/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "aZL" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 6},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "aZM" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "aZN" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"aZO" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZO" = (/obj/structure/closet/cabinet,/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "aZP" = (/mob/living/simple_mob/animal/passive/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "aZQ" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "aZY" = (/obj/machinery/photocopier,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "aZZ" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "baa" = (/obj/structure/flora/pottedplant{icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"bad" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"bae" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"baf" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"bag" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"bad" = (/obj/structure/closet/cabinet,/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"bae" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"baf" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"bag" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "bak" = (/obj/machinery/the_singularitygen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "bal" = (/obj/machinery/crystal,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "bam" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) diff --git a/maps/virgo/virgo-5.dmm b/maps/virgo/virgo-5.dmm index e664b637e8..5c31c1c921 100644 --- a/maps/virgo/virgo-5.dmm +++ b/maps/virgo/virgo-5.dmm @@ -1413,7 +1413,7 @@ "Bi" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "Bj" = (/obj/machinery/button/remote/airlock{id = "miningdorm3"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "Bk" = (/obj/machinery/button/remote/airlock{id = "miningdorm1"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) -"Bl" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/under/overalls,/obj/item/clothing/under/rank/miner,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/outpost/mining_main/dorms) +"Bl" = (/obj/structure/closet/cabinet{name = "Clothing Storage"},/obj/item/clothing/under/overalls,/obj/item/clothing/under/rank/miner,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/outpost/mining_main/dorms) "Bm" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/outpost/mining_main/dorms) "Bn" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/refinery) "Bo" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/mining_main/refinery) diff --git a/maps/virgo_minitest/virgo_minitest-sector-3.dmm b/maps/virgo_minitest/virgo_minitest-sector-3.dmm index a3a94f7ef8..d1d6b15a0d 100644 --- a/maps/virgo_minitest/virgo_minitest-sector-3.dmm +++ b/maps/virgo_minitest/virgo_minitest-sector-3.dmm @@ -29,11 +29,7 @@ /turf/simulated/wall/wood, /area/awaymission/wwmines) "aj" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/clothing/accessory/jacket, /obj/item/clothing/accessory/jacket, /obj/item/clothing/head/beanie, @@ -43,11 +39,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwmines) "al" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, +/obj/structure/closet/cabinet, /obj/item/weapon/gun/projectile/shotgun/doublebarrel, /obj/item/weapon/storage/box/beanbags, /turf/simulated/floor/wood, diff --git a/vorestation.dme b/vorestation.dme index 5b3984f3e9..75334581ff 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1135,7 +1135,6 @@ #include "code\game\objects\items\devices\instruments.dm" #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" -#include "code\game\objects\items\devices\locker_painter.dm" #include "code\game\objects\items\devices\megaphone.dm" #include "code\game\objects\items\devices\modkit.dm" #include "code\game\objects\items\devices\multitool.dm" @@ -1431,7 +1430,9 @@ #include "code\game\objects\structures\window.dm" #include "code\game\objects\structures\window_spawner.dm" #include "code\game\objects\structures\window_vr.dm" -#include "code\game\objects\structures\crates_lockers\closets.dm" +#include "code\game\objects\structures\crates_lockers\__closets.dm" +#include "code\game\objects\structures\crates_lockers\_closets_appearance_definitions.dm" +#include "code\game\objects\structures\crates_lockers\_closets_appearance_definitions_vr.dm" #include "code\game\objects\structures\crates_lockers\crates.dm" #include "code\game\objects\structures\crates_lockers\crates_vr.dm" #include "code\game\objects\structures\crates_lockers\largecrate.dm" @@ -1445,7 +1446,6 @@ #include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" #include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" -#include "code\game\objects\structures\crates_lockers\closets\l3closet_vr.dm" #include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" #include "code\game\objects\structures\crates_lockers\closets\misc_vr.dm" #include "code\game\objects\structures\crates_lockers\closets\statue.dm" @@ -1688,9 +1688,9 @@ #include "code\modules\ai\ai_holder_targeting_vr.dm" #include "code\modules\ai\interfaces.dm" #include "code\modules\ai\say_list.dm" -#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai.dm" -#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai_vr.dm" -#include "code\modules\ai\ai_holder_subtypes\slime_xenobio_ai.dm" +#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai.dm" +#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai_vr.dm" +#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai.dm" #include "code\modules\alarm\alarm.dm" #include "code\modules\alarm\alarm_handler.dm" #include "code\modules\alarm\atmosphere_alarm.dm" @@ -2128,6 +2128,7 @@ #include "code\modules\food\drinkingglass\glass_boxes.dm" #include "code\modules\food\drinkingglass\glass_types.dm" #include "code\modules\food\drinkingglass\metaglass.dm" +#include "code\modules\food\drinkingglass\metaglass_vr.dm" #include "code\modules\food\drinkingglass\serving_glasses.dm" #include "code\modules\food\drinkingglass\shaker.dm" #include "code\modules\food\drinkingglass\shaker_vr.dm" @@ -2795,6 +2796,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\support_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\tank.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\adv_dark_gygax.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\adv_dark_gygax_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\combat_mecha.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\durand.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\gygax.dm" @@ -3228,6 +3230,7 @@ #include "code\modules\projectiles\guns\magnetic\magnetic.dm" #include "code\modules\projectiles\guns\magnetic\magnetic_construction.dm" #include "code\modules\projectiles\guns\magnetic\magnetic_railgun.dm" +#include "code\modules\projectiles\guns\magnetic\magnetic_railgun_vr.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" #include "code\modules\projectiles\guns\projectile\automatic_vr.dm" #include "code\modules\projectiles\guns\projectile\automatic_yw.dm"